tree-sitter-module
GNU Emacs
tree-sitter-module | GNU Emacs | |
---|---|---|
10 | 243 | |
158 | 4,258 | |
- | 0.8% | |
7.2 | 9.9 | |
about 1 month ago | 3 days ago | |
Shell | Emacs Lisp | |
- | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tree-sitter-module
-
Let's write an Emacs treesitter major mode
BTW:
While Emacs 29.1 comes with "treesitter" built-in, you still need to manually build and install any treesitter language plugin implementing the actual language specific parser. This can be fiddly and frustrating doing it yourself.
I had a quick success with using this convenience script: https://github.com/casouri/tree-sitter-module/. It provides fully-automated builds for the most popular languages (including typescript, c and c++).
This is how it works for "typescript":
1. Clone the repository: https://github.com/casouri/tree-sitter-module/
2. Install "build-essentials" (providing a c/c++ compiler if you're on Linux).
3. run "./build typescript" from within the repo
4. Copy the resulting shared library from "dist/libtree-sitter-typescript.so" into your "~/.emacs.d/tree-sitter/".
5. Open a random typescript file and try "M-x typescript-ts-mode" which should not give you any error but instead nice syntax highlighting.
You might find there is a treesitter plugin for your language available and it is even supported by "tree-sitter-module" but there is still no major mode, yet. Happened to me for Perl 5.
-
Mastering Emacs: What's new in Emacs 29.1
I will look into building my own tree sitter grammars using https://github.com/casouri/tree-sitter-module as you suggest.
Some time ago I followed this guide https://vxlabs.com/2022/06/12/typescript-development-with-em...
-
Getting Emacs 29 to Automatically Use Tree-sitter Modes · robbmann
;; FIRST: git clone https://github.com/casouri/tree-sitter-module ;; bash batch.sh ;; THEN : sudo cp dist/* /usr/local/lib ;; FINALLY: (setq treesit-extra-load-path '("/usr/local/lib")) ;; Treesit ;; Eglot (setq treesit-eglot-modes '((:ts (bash-mode . bash-ts-mode) :pacman "bash-language-server") (:ts (c++-mode . c++-ts-mode) :pacman "ccls") (:ts (c-mode . c-ts-mode) :pacman "ccls") (:ts (cpp-mode . cpp-ts-mode) :pacman "ccls") (:ts (c-sharp-mode . sharp-ts-mode)) (:ts (cmake-mode . cmake-ts-mode)) (:ts (css-mode . css-ts-mode) :pacman "vscode-css-languageserver") (:ts (dockerfile-mode . dockerfile-ts-mode)) (:ts (elixir-mode . elixir-ts-mode)) (:ts (glsl-mode . glsl-ts-mode)) (:ts (go-mode . go-ts-mode) :pacman "gopls") (:ts (heex-mode . heex-ts-mode)) (:ts (html-mode . html-ts-mode) :pacman "vscode-html-languageserver") (:ts (java-mode . java-ts-mode)) (:ts (javascript-mode . js-ts-mode) :pacman "typescript-language-server") (:ts (js-json-mode . json-ts-mode) :pacman "vscode-json-languageserver") (:ts (julia-mode . julia-ts-mode)) (:ts (make-mode . make-ts-mode)) (:ts (markdown-mode . markdown-ts-mode)) (:ts (python-mode . python-ts-mode) :pacman "jedi-language-server") (:ts (typescript-mode . typescript-ts-mode) :pacman "typescript-language-server") (:ts (proto-mode . proto-ts-mode)) (:ts (ruby-mode . ruby-ts-mode)) (:ts (rust-mode . rust-ts-mode) :pacman "rust-analyzer") (:ts (sql-mode . sql-ts-mode)) (:ts (toml-mode . toml-ts-mode)) (:ts (tsx-mode . tsx-ts-mode)) (:ts (verilog-mode . verilog-ts-mode)) (:ts (vhdl-mode . vhdl-ts-mode)) (:ts (wgsl-mode . wgsl-ts-mode)) (:ts (yaml-mode . yaml-ts-mode) :pacman "yaml-language-server"))) ;; Not mature yet: ;; (push '(org-mode . org-ts-mode) major-mode-remap-alist) ;; (push '(perl-mode . perl-ts-mode) major-mode-remap-alist) ;; cpan Perl::LanguageServer (require 'treesit) ;; Function to parse the above and make an install command (if (treesit-available-p) (let ((pacman-install-list (list ))) (dolist (ts-pm treesit-eglot-modes) (let ((majmode-remap (plist-get ts-pm :ts)) (pacman-cmd (plist-get ts-pm :pacman))) ;; bind default major-mode to ts-mode (push majmode-remap major-mode-remap-alist) ;; populate install cmd (if pacman-cmd (unless (member pacman-cmd pacman-install-list) (push pacman-cmd pacman-install-list))))) (let ((install-cmd (concat "pacman -S --needed " (--reduce (concat acc " " it) pacman-install-list)))) (message install-cmd))) (user-error "Treesitter not available"))
- tree-sitter-module: Building script for tree-sitter language definitions
-
Emacs 29: Install Tree-Sitter parser modules with a minor mode
Also this https://github.com/casouri/tree-sitter-module/issues/13
-
Do I still need to install tree-sitter manually, for native tree-sitter in emacs29 to work?
I've downloaded and generated the libraries for the various languages from: https://github.com/casouri/tree-sitter-module
-
Setup Eglot in Emacs29 to recognize Python virtualenv
Third, I'm using tsitter in emacs29. I have https://github.com/casouri/tree-sitter-module installed as a sub-module in ~/.config/emacs, and have a symlink called tree-sitter to ./tree-sitter-module/dist (built by ./tree-sitter-module/batch.sh) . I'm mentioning the tsitter config here since I'm using python-ts-mode which is tree-sitter aware.
-
Is anyone working on a ruby tree sitter mode?
I'd recommend checking out https://github.com/casouri/tree-sitter-module for building the native treesit libraries that are required to enable the various languages.
-
How to use Emacs 29 Tree-sitter?
The author of the built-in tree-sitter implementation has published this repo with a build script to help you build various grammars: https://github.com/casouri/tree-sitter-module
GNU Emacs
-
A Love Letter to Intellectualism
gnu.org - contains everything you need to research his philosophy.
stallman.org - personal website, contains a lot of opinion, but I absolutely respect this man in all what he says.
emacs.org (redirects to https://www.gnu.org/software/emacs/) - his non-philosophical work, one of two mainstream console text editors.
-
The KGB, the Computer and Me – The Cuckoo's Egg Story [video]
Forever, there was a file included in stock Emacs, `spook.el`, which could be hooked up to automatically add random strings of "interesting" keywords to each of your email or Usenet messages (in signatures, or in headers like `X-Spook`).
https://www.gnu.org/software/emacs/manual/html_node/emacs/Ma...
Looks like copyright date of 1988:
https://github.com/emacs-mirror/emacs/blob/master/lisp/play/...
https://github.com/emacs-mirror/emacs/blob/master/etc/spook....
Try `M-x spook RET` in an Emacs buffer.
-
How to combine daily journal with general database of people, places, things, etc.
If you want to spare a couple of detours, you probably could start with Emacs Org-mode according to Greenspun's eleventh rule: "Any sufficiently complicated PIM or note-taking program contains an ad hoc, informally specified, bug-ridden, slow implementation of half of Org mode."
-
Microsoft is exploring adding a command line text editor into Windows, and it wants your feedback
Emacs: winget install GNU.Emacs
-
Using Common Lisp in Emacs
The whole cl-lib thing is a total disaster:
https://github.com/emacs-mirror/emacs/blob/master/lisp/emacs...
They added cl- as a prefix to each Common Lisp symbol.
FIRST is now called cl-first, CAAAR is now cl-caaar .
I would really prefer if GNU Emacs removes all Common Lisp functionality, instead of creating this really wacky stuff, with discussions about this topic every year.
-
Running SQL Queries on Org Tables
Never too late to try! Take your time. Emacs will outlive us all. https://www.gnu.org/software/emacs/
- Emacs and Shellcheck
-
Free Tech Tools and Resources - MAC Lookup, SQL Tutorials, JSON Converter & More
GNU Emacs is a versatile, open-source text editor that offers extensibility and customization—a sort of self-documenting real-time display editor. Our thanks for the suggestion go to CartanAnnullator.
-
VScode vs Others: the War on Code Editors
Emacs
-
Proof of Concept clang plugin that automatically binds C/C++ -> Lua
Their DEFUN and DEFVAR macros for example let us define a function or a variable that will be available as a Lisp function, and can be used as an ordinary C function from the C code. Emacs is written in pure C99 language and works with both GCC and Clang I believe. We can just define a C function via macro, and it is auto exported and made available to Lisp. For example my first patch to Emacs was for this function (we added "count" argument to make it possible to skip enumerating files in a directory for the case when user code is just interesting if a directory is empty or not):
What are some alternatives?
treesit-auto - Automatic installation, usage, and fallback for tree-sitter major modes in Emacs 29
Visual Studio Code - Visual Studio Code
tree-sitter-langs - Language bundle for Emacs's tree-sitter package
Geany - A fast and lightweight IDE
tree-sitter-c-sharp - C# Grammar for tree-sitter
Atom - :atom: The hackable text editor
tree-sitter-typescript - TypeScript grammar for tree-sitter
spacemacs - A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!
nvim-treesitter-textobjects
uemacs - Random version of microemacs with my private modificatons
git-sim - Visually simulate Git operations in your own repos with a single terminal command.
org-roam-ui - A graphical frontend for exploring your org-roam Zettelkasten