spacemacs/layers/+tools/tree-sitter/README.org

61 lines
2.4 KiB
Org Mode
Raw Permalink Normal View History

#+TITLE: tree-sitter layer
#+TAGS: layer|tool
* Table of Contents :TOC_5_gh:noexport:
- [[#description][Description]]
- [[#features][Features:]]
- [[#install][Install]]
- [[#configure][Configure]]
* Description
This layer integrates [[https://github.com/emacs-tree-sitter/elisp-tree-sitter][=Emacs Tree-sitter=]] and a few packages built around it.
An Emacs build supporting dynamic modules is required.
Language (i.e. major-mode) support is somewhat limited and varies by feature.
Refer to the README/documentation of the package providing the feature for
specifics.
** Features:
- Syntax highlighting
- Indentation (experimental)
- Folding (experimental)
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need
to add =tree-sitter= to the existing =dotspacemacs-configuration-layers= list
in this file.
* Configure
*Note*: Enabled features /should/ override existing mechanisms seamlessly. For example,
there's no need to separately disable regexp-based syntax highlighting, and in
general you do not need to update key bindings to point to new tree-sitter-based
commands.
Set =tree-sitter-syntax-highlight-enable t= for syntax highlighting, provided
by =tree-sitter-hl-mode= which is bundled with [[https://github.com/emacs-tree-sitter/elisp-tree-sitter][=tree-sitter-mode=]].
Default: =t=.
Set =tree-sitter-indent-enable t= for code indentation, provided by
[[https://codeberg.org/FelipeLema/tree-sitter-indent.el][=tree-sitter-indent=]]. Currently only Rust is supported.
Default: =nil=.
Set =tree-sitter-fold-enable t= for code folding, provided by [[https://github.com/emacs-tree-sitter/ts-fold][=ts-fold=]]. If
you use a =dotspacemacs-editing-style= other than ='vim= or a
=dotspacemacs-folding-method= other than ='evil=, it's likely that you'll find
the integration with =ts-fold= wanting. Contributions are encouraged!
Default: =nil=.
Set =spacemacs-tree-sitter-hl-black-list= for a list of modes that should
not enable highlight by =tree-sitter-hl-mode=, such as
=js2-mode= and =rjsx-mode= for example.
#+BEGIN_SRC elisp
(setq-default dotspacemacs-configuration-layers
(tree-sitter :variables
spacemacs-tree-sitter-hl-black-list '(js2-mode rjsx-mode)
tree-sitter-syntax-highlight-enable t
tree-sitter-fold-enable t
tree-sitter-fold-indicators-enable nil))
#+END_SRC