2021-08-21 21:19:27 +01:00
#+TITLE : tools/tree-sitter
#+DATE : August 17, 2021
#+SINCE : 3.0.0
#+STARTUP : inlineimages nofold
* Table of Contents :TOC_3:noexport:
- [[#description ][Description ]]
- [[#maintainers ][Maintainers ]]
- [[#module-flags ][Module Flags ]]
- [[#plugins ][Plugins ]]
- [[#hacks ][Hacks ]]
- [[#prerequisites ][Prerequisites ]]
- [[#features ][Features ]]
2021-08-20 23:05:34 +01:00
- [[#language-support ][Language support ]]
- [[#text-objects ][Text Objects ]]
2021-08-21 21:19:27 +01:00
- [[#configuration ][Configuration ]]
- [[#troubleshooting ][Troubleshooting ]]
* Description
2021-08-22 23:13:54 +01:00
This module adds [[https://tree-sitter.github.io/tree-sitter/ ][tree-sitter ]] support to doom:
2021-08-21 21:19:27 +01:00
#+begin_quote
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.
#+end_quote
2021-08-22 23:13:54 +01:00
It includes:
+ Better syntax highlighting of supported languages
+ Structural text objects to manipulate functions statements and other code
2021-08-19 22:05:00 +01:00
structures like any other text object
2021-08-21 21:19:27 +01:00
** Maintainers
- @jeetelongname
** Module Flags
This module provides no flags.
** Plugins
+ [[https://github.com/emacs-tree-sitter/elisp-tree-sitter ][tree-sitter ]]
+ [[https://github.com/emacs-tree-sitter/tree-sitter-langs ][tree-sitter-langs ]]
+ [[https://github.com/meain/evil-textobj-tree-sitter ][evil-textobj-tree-sitter ]]* (=:editor evil +everywhere= )
** TODO Hacks
# A list of internal modifications to included packages; omit if unneeded
* Prerequisites
This module has no prerequisites.
2021-08-20 23:05:34 +01:00
* Features
** Language support
Currently Emacs tree sitter has got [[https://github.com/emacs-tree-sitter/tree-sitter-langs/tree/master/repos ][parsers for these languages ]] with syntax
highlighting support for [[https://emacs-tree-sitter.github.io/syntax-highlighting/ ][these languages ]].
** Text Objects
Not all language support all text objects (yet). [[https://github.com/nvim-treesitter/nvim-treesitter-textobjects#built-in-textobjects][Here is a table of the text
objects languages support]]
2021-08-22 23:13:54 +01:00
Note: only languages with parsers in emacs have text object support currently.
Currently text objects are bound to:
2021-09-21 19:40:00 +01:00
| key | text object |
|-----+---------------------|
| =f= | function definition |
| =F= | function call |
| =C= | class |
| =c= | comment |
| =i= | conditional |
| =l= | loop |
2021-08-20 23:26:12 +01:00
They are used in a container context (not =vf= but =vaf= or =vif= )
2021-08-21 21:19:27 +01:00
* TODO Configuration
# How to configure this module, including common problems and how to address them.
* TODO Troubleshooting
# Common issues and their solution, or places to look for help.