NicolasPetton/pass@5651da5313 -> NicolasPetton/pass@c721604b3b Olivia5k/makefile-executor.el@170d14d834 -> Olivia5k/makefile-executor.el@d1d98eaf52 Silex/docker.el@cc0046e6a5 -> Silex/docker.el@6997c86a24 cjohansson/emacs-ssh-deploy@94b56c0428 -> cjohansson/emacs-ssh-deploy@95fb076c9b editorconfig/editorconfig-emacs@6f6b5c1a95 -> editorconfig/editorconfig-emacs@2fed9599bc emacs-lsp/dap-mode@de41d62fc4 -> emacs-lsp/dap-mode@096070aacf emacs-lsp/lsp-mode@0dfe214573 -> emacs-lsp/lsp-mode@266945b3e4 emacs-pe/docker-tramp.el@930d7b46c1 -> emacs-pe/docker-tramp.el@19d0771db4 emacs-straight/eglot@a399fc0d03 -> emacs-straight/eglot@8ccec6532e emacs-straight/rainbow-mode@8e96388fb4 -> emacs-straight/rainbow-mode@24437ec2c6 emacs-tree-sitter/tree-sitter-langs@944a734b7c -> emacs-tree-sitter/tree-sitter-langs@2f0f97abbd emacsfodder/kurecolor@ac67ceba85 -> emacsfodder/kurecolor@fbf98e1e38 emacsorphanage/quickrun@7a89313c07 -> emacsorphanage/quickrun@6f96318930 meain/evil-textobj-tree-sitter@e8bb9d63de -> meain/evil-textobj-tree-sitter@19979843f5 millejoh/emacs-ipython-notebook@b2410dc96f -> millejoh/emacs-ipython-notebook@998ba22660 nicolaisingh/saveplace-pdf-view@54ed966b84 -> nicolaisingh/saveplace-pdf-view@abfb5e1f46 purcell/envrc@1954e8c0b5 -> purcell/envrc@33d01388ce vedang/pdf-tools@bc2ba117e8 -> vedang/pdf-tools@c69e7656a4 xiongtx/eros@dd89102792 -> xiongtx/eros@a9a92bdc6b zx2c4/password-store@26d2dae04b -> zx2c4/password-store@28cec11f1d I've intentionally omitted magit from this list while I resolve incompatibilities between code-review and later versions of closql (emacsql). I've also omitted treemacs b/c of #7410.
:tools tree-sitter
Description unfold
This module adds tree-sitter support to Doom Emacs.
💬 Tree sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. This allows for features of the editor to become syntax aware.
It includes:
- Better syntax highlighting of supported languages.
- Structural text objects to manipulate functions statements and other code structures like any other text object.
Maintainers
Module flags
This module has no flags.
Packages
- doom-package:evil-textobj-tree-sitter if doom-module::editor evil +everywhere
- doom-package:tree-sitter
- doom-package:tree-sitter-langs
Hacks
No hacks documented for this module.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module has no direct requirements, but some languages may have their own to
fulfill before tree-sitter support works for them. Run $ doom doctor
to find
out what you're missing.
TODO Usage
🔨 This module's usage documentation is incomplete. Complete it?
Language support
Currently Emacs tree sitter has parsers for these languages, and syntax
highlighting support for these languages as well as typescript-tsx-mode
.
To enable tree-sitter support for specific languages, add the +tree-sitter
flag to their respective Doom modules. Check the module readme of your language
for support.
Text Objects
Not all languages support all text objects (yet). Here is a table of the text object languages support.
🚧 Only languages with parsers in Emacs have text object support at the moment.
Currently text objects are bound to:
key | text object |
---|---|
A | parameter list |
f | function definition |
F | function call |
C | class |
c | comment |
v | conditional |
l | loop |
They are used in a container context (not vf, but vaf or vif).
Goto certain nodes
TODO Configuration
🔨 This module's configuration documentation is incomplete. Complete it?
Rebind text objects
Rebinding keys works the same as rebinding any other key, but text-object keys
must be bound on one or both of the +tree-sitter-inner-text-object-map
or
+tree-sitter-outer-text-object-map
keymaps:
(map! (:map +tree-sitter-outer-text-objects-map
"f" (evil-textobj-tree-sitter-get-textobj "call.inner")
"F" (evil-textobj-tree-sitter-get-textobj "function.inner"))
(:map +tree-sitter-inner-text-objects-map
"f" (evil-textobj-tree-sitter-get-textobj "call.inner")
"F" (evil-textobj-tree-sitter-get-textobj "function.inner")))
Add your own text objects
To add your own custom text objects, bind them to +tree-sitter-{inner,
outer}-text-objects-map
:
(map! :map +tree-sitter-outer-text-objects-map
"m" (evil-textobj-tree-sitter-get-textobj "import"
'((python-mode . [(import_statement) @import])
(rust-mode . [(use_declaration) @import]))))
Configuring Tree sitter highlighting
Highlighting is controlled by the variable +tree-sitter-hl-enabled-modes
This list allows you to whitelist, blacklist, fully enable or fully disable
tree-sitter highlighting for all major modes
To use highlighting in select modes add major-modes to
+tree-sitter-hl-enabled-modes
. This disables highlighting in all other modes.
The symbol that should be used is the major mode symbol, not the package
symbol.
(setq +tree-sitter-hl-enabled-modes '(python-mode go-mode))
If you want to disallow highlighting in certain modes then the car of
+tree-sitter-hl-enabled-modes
should be not
. This enables highlighting in
all modes except the ones disallowed.
(setq +tree-sitter-hl-enabled-modes '(not web-mode typescript-tsx-mode))
If +tree-sitter-hl-enabled-modes
is set to nil
or t
it will fully disable
or fully enable highlighting in every tree sitter enabled language respectively.
Troubleshooting
(error "Bad bounding indices: 0, 1")
This means that the text object does not have the underlying query needed. This can be fixed by either adding in a custom query (which would override the current key bound) or contributing upstream!
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
🔨 This module has no appendix yet. Write one?