Adding new languages to Helix
+In order to add a new language to Helix, you will need to follow the steps +below.
+Language configuration
+-
+
- Add a new
[[language]]
entry in thelanguages.toml
file and provide the +necessary configuration for the new language. For more information on +language configuration, refer to the +language configuration section of the documentation. +A new language server can be added by extending the[language-server]
table in the same file.
+ - If you are adding a new language or updating an existing language server
+configuration, run the command
cargo xtask docgen
to update the +Language Support documentation.
+
++💡 If you are adding a new Language Server configuration, make sure to update +the +Language Server Wiki +with the installation instructions.
+
Grammar configuration
+-
+
- If a tree-sitter grammar is available for the new language, add a new
+
[[grammar]]
entry to thelanguages.toml
file.
+ - If you are testing the grammar locally, you can use the
source.path
key +with an absolute path to the grammar. However, before submitting a pull +request, make sure to switch to usingsource.git
.
+
Queries
+-
+
- In order to provide syntax highlighting and indentation for the new language, +you will need to add queries. +
- Create a new directory for the language with the path
+
runtime/queries/<name>/
.
+ - Refer to the +tree-sitter website +for more information on writing queries. +
- A list of highlight captures can be found on the themes page. +
++💡 In Helix, the first matching query takes precedence when evaluating +queries, which is different from other editors such as Neovim where the last +matching query supersedes the ones before it. See +this issue +for an example.
+
Common issues
+-
+
- If you encounter errors when running Helix after switching branches, you may
+need to update the tree-sitter grammars. Run the command
hx --grammar fetch
+to fetch the grammars andhx --grammar build
to build any out-of-date +grammars.
+ - If a parser is causing a segfault, or you want to remove it, make sure to
+remove the compiled parser located at
runtime/grammars/<name>.so
.
+ - If you are attempting to add queries and Helix is unable to locate them, ensure that the environment variable
HELIX_RUNTIME
is set to the location of theruntime
folder you're developing in.
+