tree-sitter-module
treesit-auto
tree-sitter-module | treesit-auto | |
---|---|---|
10 | 8 | |
158 | 308 | |
- | - | |
7.2 | 8.3 | |
about 1 month ago | 5 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
treesit-auto
-
Setting up Doom Emacs for Astro Development
Or you can take the red pill and use treesit-auto and automatically install the language grammar.
- treesit-auto: Automatic installation, usage, and fallback for tree-sitter major modes in Emacs 29
-
How to use tree-sitter for syntax highlighting in Emacs 29+?
So far I've been using tree-sitter.el with the tree-sitter-hl-mode for syntax highlighting. As far as I understand, Tree Sitter is now built-into Emacs 29 and above as treesit (https://github.com/emacs-mirror/emacs/blob/master/admin/notes/tree-sitter/starter-guide), which makes tree-sitter.el obsolete. There is also this package https://github.com/renzmann/treesit-auto which seems to handle the installation, mapping and activation of the language modes.
-
Emacs 29 included tree-sitter doesn't highlight as much as third party tree-sitter package
If you want it to use the ts modes by default then you'll have to adjust the major-mode-remap-alist variable. Or give the treesit-auto package a shot.
- treesit-auto: Automatically pick between TreeSitter and default major modes in Emacs 29+
-
(Small) breaking changes in treesit-auto 0.5
Over the last couple weeks while putting the treesit-auto package together it gained adoption much faster than I had expected. While I'm incredibly happy others found it useful, that also means that many assumptions in my hacky code were quickly blown apart. Also, in no small part due to my poor documentation, it was confusing to figure out exactly how/what would be supported when trying to add a new language.
-
treesit-auto 0.3: Now with automatic installation of tree-sitter grammars
GitHub for treesit-auto Original announcement of treesit-auto Blog post that inspired treesit-auto
-
Getting Emacs 29 to Automatically Use Tree-sitter Modes · robbmann
/u/casouri posted an article recently about getting started with tree-sitter. Unfortunately, it mentioned that automatic switching between those tree-sitter modes and the default modes (e.g. between python-mode and python-ts-mode won't be coming just yet, but there was a suggested workaround. I took a slightly different approach from what was outlined, and wound up with treesit-auto.el, which is customizable, and I think hits all the intended behavior.
What are some alternatives?
tree-sitter-langs - Language bundle for Emacs's tree-sitter package
GNU Emacs - Mirror of GNU Emacs
tree-sitter-c-sharp - C# Grammar for tree-sitter
nvim-treesitter - Nvim Treesitter configurations and abstraction layer
tree-sitter-typescript - TypeScript grammar for tree-sitter
tree-sitter - An incremental parsing system for programming tools
nvim-treesitter-textobjects
git-sim - Visually simulate Git operations in your own repos with a single terminal command.
typescript-lan
org-alert - System notifications of org agenda items
TypeScriptCompiler - TypeScript Compiler (by LLVM)
rust-analyzer - A Rust compiler front-end for IDEs