forked from helix-editor/helix
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/master' into debug
- Loading branch information
Showing
56 changed files
with
2,625 additions
and
599 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,6 @@ members = [ | |
|
||
[profile.dev] | ||
split-debuginfo = "unpacked" | ||
|
||
[profile.release] | ||
lto = "thin" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# Adding languages | ||
|
||
## Submodules | ||
|
||
To add a new langauge, you should first add a tree-sitter submodule. To do this, | ||
you can run the command | ||
```sh | ||
git submodule add -f <repository> helix-syntax/languages/tree-sitter-<name> | ||
``` | ||
For example, to add tree-sitter-ocaml you would run | ||
```sh | ||
git submodule add -f https://github.com/tree-sitter/tree-sitter-ocaml helix-syntax/languages/tree-sitter-ocaml | ||
``` | ||
Make sure the submodule is shallow by doing | ||
```sh | ||
git config -f .gitmodules submodule.helix-syntax/languages/tree-sitter-<name>.shallow true | ||
``` | ||
|
||
or you can manually add `shallow = true` to `.gitmodules`. | ||
|
||
## languages.toml | ||
|
||
Next, you need to add the language to the [`languages.toml`][languages.toml] found in the root of | ||
the repository; this `languages.toml` file is included at compilation time, and | ||
is distinct from the `language.toml` file in the user's [configuration | ||
directory](../configuration.md). | ||
|
||
These are the available keys and descriptions for the file. | ||
|
||
| Key | Description | | ||
| ---- | ----------- | | ||
| name | The name of the language | | ||
| scope | A string like `source.js` that identifies the language. Currently, we strive to match the scope names used by popular TextMate grammars and by the Linguist library. Usually `source.<name>` or `text.<name>` in case of markup languages | | ||
| injection-regex | regex pattern that will be tested against a language name in order to determine whether this language should be used for a potential [language injection][treesitter-language-injection] site. | | ||
| file-types | The filetypes of the language, for example `["yml", "yaml"]` | | ||
| shebangs | The interpreters from the shebang line, for example `["sh", "bash"]` | | ||
| roots | A set of marker files to look for when trying to find the workspace root. For example `Cargo.lock`, `yarn.lock` | | ||
| auto-format | Whether to autoformat this language when saving | | ||
| comment-token | The token to use as a comment-token | | ||
| indent | The indent to use. Has sub keys `tab-width` and `unit` | | ||
| config | Language server configuration | | ||
|
||
## Queries | ||
|
||
For a language to have syntax-highlighting and indentation among other things, you have to add queries. Add a directory for your language with the path `runtime/queries/<name>/`. The tree-sitter [website](https://tree-sitter.github.io/tree-sitter/syntax-highlighting#queries) gives more info on how to write queries. | ||
|
||
## Common Issues | ||
|
||
- If you get errors when building after switching branches, you may have to remove or update tree-sitter submodules. You can update submodules by running | ||
```sh | ||
git submodule sync; git submodule update --init | ||
``` | ||
- Make sure to not use the `--remote` flag. To remove submodules look inside the `.gitmodules` and remove directories that are not present inside of it. | ||
|
||
- If a parser is segfaulting or you want to remove the parser, make sure to remove the submodule *and* the compiled parser in `runtime/grammar/<name>.so` | ||
|
||
- The indents query is `indents.toml`, *not* `indents.scm`. See [this](https://github.com/helix-editor/helix/issues/114) issue for more information. | ||
|
||
[treesitter-language-injection]: https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injection | ||
[languages.toml]: https://github.com/helix-editor/helix/blob/master/languages.toml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.