Unnamed repository; edit this file 'description' to name the repository.
Document tags.scm queries, commands and language support
Michael Davis 7 months ago
parent 727758e · commit 6c71fc0
-rw-r--r--book/src/SUMMARY.md1
-rw-r--r--book/src/generated/lang-support.md564
-rw-r--r--book/src/generated/static-cmd.md8
-rw-r--r--book/src/guides/tags.md34
-rw-r--r--helix-term/src/health.rs11
5 files changed, 333 insertions, 285 deletions
diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md
index 82715b7e..1ed22168 100644
--- a/book/src/SUMMARY.md
+++ b/book/src/SUMMARY.md
@@ -28,3 +28,4 @@
- [Adding textobject queries](./guides/textobject.md)
- [Adding indent queries](./guides/indent.md)
- [Adding injection queries](./guides/injection.md)
+ - [Adding tags queries](./guides/tags.md)
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 5573cc7e..9e1a9045 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -1,282 +1,282 @@
-| Language | Syntax Highlighting | Treesitter Textobjects | Auto Indent | Default language servers |
-| --- | --- | --- | --- | --- |
-| ada | ✓ | ✓ | | `ada_language_server` |
-| adl | ✓ | ✓ | ✓ | |
-| agda | ✓ | | | |
-| alloy | ✓ | | | |
-| amber | ✓ | | | `amber-lsp` |
-| astro | ✓ | | | `astro-ls` |
-| awk | ✓ | ✓ | | `awk-language-server` |
-| bash | ✓ | ✓ | ✓ | `bash-language-server` |
-| bass | ✓ | | | `bass` |
-| beancount | ✓ | | | `beancount-language-server` |
-| bibtex | ✓ | | | `texlab` |
-| bicep | ✓ | | | `bicep-langserver` |
-| bitbake | ✓ | | | `bitbake-language-server` |
-| blade | ✓ | | | |
-| blueprint | ✓ | | | `blueprint-compiler` |
-| c | ✓ | ✓ | ✓ | `clangd` |
-| c-sharp | ✓ | ✓ | | `OmniSharp` |
-| cabal | | | | `haskell-language-server-wrapper` |
-| caddyfile | ✓ | ✓ | ✓ | |
-| cairo | ✓ | ✓ | ✓ | `cairo-language-server` |
-| capnp | ✓ | | ✓ | |
-| cel | ✓ | | | |
-| circom | ✓ | | | `circom-lsp` |
-| clarity | ✓ | | | `clarinet` |
-| clojure | ✓ | | | `clojure-lsp` |
-| cmake | ✓ | ✓ | ✓ | `neocmakelsp`, `cmake-language-server` |
-| codeql | ✓ | ✓ | | `codeql` |
-| comment | ✓ | | | |
-| common-lisp | ✓ | | ✓ | `cl-lsp` |
-| cpon | ✓ | | ✓ | |
-| cpp | ✓ | ✓ | ✓ | `clangd` |
-| crystal | ✓ | ✓ | ✓ | `crystalline`, `ameba-ls` |
-| css | ✓ | | ✓ | `vscode-css-language-server` |
-| csv | ✓ | | | |
-| cue | ✓ | | | `cuelsp` |
-| cylc | ✓ | ✓ | ✓ | |
-| d | ✓ | ✓ | ✓ | `serve-d` |
-| dart | ✓ | ✓ | ✓ | `dart` |
-| dbml | ✓ | | | |
-| debian | ✓ | | | |
-| devicetree | ✓ | | | `dts-lsp` |
-| dhall | ✓ | ✓ | | `dhall-lsp-server` |
-| diff | ✓ | | | |
-| djot | ✓ | | | |
-| docker-compose | ✓ | ✓ | ✓ | `docker-compose-langserver`, `yaml-language-server` |
-| dockerfile | ✓ | ✓ | | `docker-langserver` |
-| dot | ✓ | | | `dot-language-server` |
-| dtd | ✓ | | | |
-| dune | ✓ | | | |
-| dunstrc | ✓ | | | |
-| earthfile | ✓ | ✓ | ✓ | `earthlyls` |
-| edoc | ✓ | | | |
-| eex | ✓ | | | |
-| ejs | ✓ | | | |
-| elisp | ✓ | | | |
-| elixir | ✓ | ✓ | ✓ | `elixir-ls` |
-| elm | ✓ | ✓ | | `elm-language-server` |
-| elvish | ✓ | | | `elvish` |
-| env | ✓ | ✓ | | |
-| erb | ✓ | | | |
-| erlang | ✓ | ✓ | | `erlang_ls`, `elp` |
-| esdl | ✓ | | | |
-| fennel | ✓ | | | `fennel-ls` |
-| fga | ✓ | ✓ | ✓ | |
-| fidl | ✓ | | | |
-| fish | ✓ | ✓ | ✓ | `fish-lsp` |
-| forth | ✓ | | | `forth-lsp` |
-| fortran | ✓ | | ✓ | `fortls` |
-| fsharp | ✓ | | | `fsautocomplete` |
-| gas | ✓ | ✓ | | `asm-lsp` |
-| gdscript | ✓ | ✓ | ✓ | |
-| gemini | ✓ | | | |
-| gherkin | ✓ | | | |
-| ghostty | ✓ | | | |
-| git-attributes | ✓ | | | |
-| git-commit | ✓ | ✓ | | |
-| git-config | ✓ | ✓ | | |
-| git-ignore | ✓ | | | |
-| git-notes | ✓ | | | |
-| git-rebase | ✓ | | | |
-| gjs | ✓ | ✓ | ✓ | `typescript-language-server`, `vscode-eslint-language-server`, `ember-language-server` |
-| gleam | ✓ | ✓ | | `gleam` |
-| glimmer | ✓ | | | `ember-language-server` |
-| glsl | ✓ | ✓ | ✓ | `glsl_analyzer` |
-| gn | ✓ | | | |
-| go | ✓ | ✓ | ✓ | `gopls`, `golangci-lint-langserver` |
-| godot-resource | ✓ | ✓ | | |
-| gomod | ✓ | | | `gopls` |
-| gotmpl | ✓ | | | `gopls` |
-| gowork | ✓ | | | `gopls` |
-| gpr | ✓ | | | `ada_language_server` |
-| graphql | ✓ | ✓ | | `graphql-lsp` |
-| gren | ✓ | ✓ | | |
-| groovy | ✓ | | | |
-| gts | ✓ | ✓ | ✓ | `typescript-language-server`, `vscode-eslint-language-server`, `ember-language-server` |
-| hare | ✓ | | | |
-| haskell | ✓ | ✓ | | `haskell-language-server-wrapper` |
-| haskell-persistent | ✓ | | | |
-| hcl | ✓ | ✓ | ✓ | `terraform-ls` |
-| heex | ✓ | ✓ | | `elixir-ls` |
-| helm | ✓ | | | `helm_ls` |
-| hocon | ✓ | ✓ | ✓ | |
-| hoon | ✓ | | | |
-| hosts | ✓ | | | |
-| html | ✓ | ✓ | | `vscode-html-language-server`, `superhtml` |
-| htmldjango | ✓ | | | `djlsp`, `vscode-html-language-server`, `superhtml` |
-| hurl | ✓ | ✓ | ✓ | |
-| hyprlang | ✓ | | ✓ | `hyprls` |
-| idris | | | | `idris2-lsp` |
-| iex | ✓ | | | |
-| ini | ✓ | | | |
-| ink | ✓ | | | |
-| inko | ✓ | ✓ | ✓ | |
-| janet | ✓ | | | |
-| java | ✓ | ✓ | ✓ | `jdtls` |
-| javascript | ✓ | ✓ | ✓ | `typescript-language-server` |
-| jinja | ✓ | | | |
-| jjconfig | ✓ | ✓ | ✓ | `taplo`, `tombi` |
-| jjdescription | ✓ | | | |
-| jjrevset | ✓ | | | |
-| jjtemplate | ✓ | | | |
-| jq | ✓ | ✓ | | `jq-lsp` |
-| jsdoc | ✓ | | | |
-| json | ✓ | ✓ | ✓ | `vscode-json-language-server` |
-| json-ld | ✓ | ✓ | ✓ | `vscode-json-language-server` |
-| json5 | ✓ | | | |
-| jsonc | ✓ | | ✓ | `vscode-json-language-server` |
-| jsonnet | ✓ | | | `jsonnet-language-server` |
-| jsx | ✓ | ✓ | ✓ | `typescript-language-server` |
-| julia | ✓ | ✓ | ✓ | `julia` |
-| just | ✓ | ✓ | ✓ | `just-lsp` |
-| kdl | ✓ | ✓ | ✓ | |
-| koka | ✓ | | ✓ | `koka` |
-| kotlin | ✓ | ✓ | ✓ | `kotlin-language-server` |
-| koto | ✓ | ✓ | ✓ | `koto-ls` |
-| latex | ✓ | ✓ | | `texlab` |
-| ld | ✓ | | ✓ | |
-| ldif | ✓ | | | |
-| lean | ✓ | | | `lean` |
-| ledger | ✓ | | | |
-| llvm | ✓ | ✓ | ✓ | |
-| llvm-mir | ✓ | ✓ | ✓ | |
-| llvm-mir-yaml | ✓ | | ✓ | |
-| log | ✓ | | | |
-| lpf | ✓ | | | |
-| lua | ✓ | ✓ | ✓ | `lua-language-server` |
-| luau | ✓ | ✓ | ✓ | `luau-lsp` |
-| mail | ✓ | ✓ | | |
-| make | ✓ | | ✓ | |
-| markdoc | ✓ | | | `markdoc-ls` |
-| markdown | ✓ | | | `marksman`, `markdown-oxide` |
-| markdown-rustdoc | ✓ | | | |
-| markdown.inline | ✓ | | | |
-| matlab | ✓ | ✓ | ✓ | |
-| mermaid | ✓ | | | |
-| meson | ✓ | | ✓ | `mesonlsp` |
-| mint | | | | `mint` |
-| mojo | ✓ | ✓ | ✓ | `pixi` |
-| move | ✓ | | | |
-| msbuild | ✓ | | ✓ | |
-| nasm | ✓ | ✓ | | `asm-lsp` |
-| nestedtext | ✓ | ✓ | ✓ | |
-| nginx | ✓ | | | |
-| nickel | ✓ | | ✓ | `nls` |
-| nim | ✓ | ✓ | ✓ | `nimlangserver` |
-| nix | ✓ | ✓ | ✓ | `nil`, `nixd` |
-| nu | ✓ | | | `nu` |
-| nunjucks | ✓ | | | |
-| ocaml | ✓ | | ✓ | `ocamllsp` |
-| ocaml-interface | ✓ | | | `ocamllsp` |
-| odin | ✓ | ✓ | ✓ | `ols` |
-| ohm | ✓ | ✓ | ✓ | |
-| opencl | ✓ | ✓ | ✓ | `clangd` |
-| openscad | ✓ | | | `openscad-lsp` |
-| org | ✓ | | | |
-| pascal | ✓ | ✓ | | `pasls` |
-| passwd | ✓ | | | |
-| pem | ✓ | | | |
-| perl | ✓ | ✓ | ✓ | `perlnavigator` |
-| pest | ✓ | ✓ | ✓ | `pest-language-server` |
-| php | ✓ | ✓ | ✓ | `intelephense` |
-| php-only | ✓ | | | |
-| pkgbuild | ✓ | ✓ | ✓ | `termux-language-server`, `bash-language-server` |
-| pkl | ✓ | | ✓ | `pkl-lsp` |
-| po | ✓ | ✓ | | |
-| pod | ✓ | | | |
-| ponylang | ✓ | ✓ | ✓ | |
-| powershell | ✓ | | | |
-| prisma | ✓ | ✓ | | `prisma-language-server` |
-| prolog | ✓ | | ✓ | `swipl` |
-| properties | ✓ | ✓ | | |
-| protobuf | ✓ | ✓ | ✓ | `buf`, `pb`, `protols` |
-| prql | ✓ | | | |
-| pug | ✓ | | | |
-| purescript | ✓ | ✓ | | `purescript-language-server` |
-| python | ✓ | ✓ | ✓ | `ty`, `ruff`, `jedi-language-server`, `pylsp` |
-| qml | ✓ | ✓ | ✓ | `qmlls` |
-| quarto | ✓ | | ✓ | |
-| quint | ✓ | | | `quint-language-server` |
-| r | ✓ | | | `R` |
-| racket | ✓ | | ✓ | `racket` |
-| regex | ✓ | | | |
-| rego | ✓ | | | `regols` |
-| rescript | ✓ | ✓ | | `rescript-language-server` |
-| rmarkdown | ✓ | | ✓ | `R` |
-| robot | ✓ | | | `robotframework_ls` |
-| ron | ✓ | | ✓ | |
-| rst | ✓ | | | |
-| ruby | ✓ | ✓ | ✓ | `ruby-lsp`, `solargraph` |
-| rust | ✓ | ✓ | ✓ | `rust-analyzer` |
-| rust-format-args | ✓ | | | |
-| rust-format-args-macro | ✓ | ✓ | ✓ | |
-| sage | ✓ | ✓ | | |
-| scala | ✓ | ✓ | ✓ | `metals` |
-| scheme | ✓ | | ✓ | |
-| scss | ✓ | | | `vscode-css-language-server` |
-| slang | ✓ | ✓ | ✓ | `slangd` |
-| slint | ✓ | ✓ | ✓ | `slint-lsp` |
-| smali | ✓ | | ✓ | |
-| smithy | ✓ | | | `cs` |
-| sml | ✓ | | | |
-| snakemake | ✓ | | ✓ | `pylsp` |
-| solidity | ✓ | ✓ | | `solc` |
-| sourcepawn | ✓ | ✓ | | `sourcepawn-studio` |
-| spade | ✓ | | ✓ | `spade-language-server` |
-| spicedb | ✓ | | | |
-| sql | ✓ | ✓ | | |
-| sshclientconfig | ✓ | | | |
-| starlark | ✓ | ✓ | ✓ | `starpls` |
-| strace | ✓ | | | |
-| supercollider | ✓ | | | |
-| svelte | ✓ | | ✓ | `svelteserver` |
-| sway | ✓ | ✓ | ✓ | `forc` |
-| swift | ✓ | ✓ | | `sourcekit-lsp` |
-| systemd | ✓ | | | `systemd-lsp` |
-| t32 | ✓ | | | |
-| tablegen | ✓ | ✓ | ✓ | |
-| tact | ✓ | ✓ | ✓ | |
-| task | ✓ | | | |
-| tcl | ✓ | | ✓ | |
-| teal | ✓ | | | `teal-language-server` |
-| templ | ✓ | | | `templ` |
-| tera | ✓ | | | |
-| textproto | ✓ | ✓ | ✓ | |
-| tfvars | ✓ | | ✓ | `terraform-ls` |
-| thrift | ✓ | | | |
-| tlaplus | ✓ | | | |
-| todotxt | ✓ | | | |
-| toml | ✓ | ✓ | | `taplo`, `tombi` |
-| tsq | ✓ | | | `ts_query_ls` |
-| tsx | ✓ | ✓ | ✓ | `typescript-language-server` |
-| twig | ✓ | | | |
-| typescript | ✓ | ✓ | ✓ | `typescript-language-server` |
-| typespec | ✓ | ✓ | ✓ | `tsp-server` |
-| typst | ✓ | | | `tinymist` |
-| ungrammar | ✓ | | | |
-| unison | ✓ | ✓ | ✓ | |
-| uxntal | ✓ | | | |
-| v | ✓ | ✓ | ✓ | `v-analyzer` |
-| vala | ✓ | ✓ | | `vala-language-server` |
-| vento | ✓ | | | |
-| verilog | ✓ | ✓ | | `svlangserver` |
-| vhdl | ✓ | | | `vhdl_ls` |
-| vhs | ✓ | | | |
-| vue | ✓ | | | `vue-language-server` |
-| wast | ✓ | | | |
-| wat | ✓ | | | `wat_server` |
-| webc | ✓ | | | |
-| werk | ✓ | | | |
-| wesl | ✓ | ✓ | | |
-| wgsl | ✓ | | | `wgsl-analyzer` |
-| wit | ✓ | | ✓ | |
-| wren | ✓ | ✓ | ✓ | |
-| xit | ✓ | | | |
-| xml | ✓ | ✓ | ✓ | |
-| xtc | ✓ | | | |
-| yaml | ✓ | ✓ | ✓ | `yaml-language-server`, `ansible-language-server` |
-| yara | ✓ | | | `yls` |
-| yuck | ✓ | | | |
-| zig | ✓ | ✓ | ✓ | `zls` |
+| Language | Syntax Highlighting | Treesitter Textobjects | Auto Indent | Code Navigation Tags | Default language servers |
+| --- | --- | --- | --- | --- | --- |
+| ada | ✓ | ✓ | | | `ada_language_server` |
+| adl | ✓ | ✓ | ✓ | | |
+| agda | ✓ | | | | |
+| alloy | ✓ | | | | |
+| amber | ✓ | | | | `amber-lsp` |
+| astro | ✓ | | | | `astro-ls` |
+| awk | ✓ | ✓ | | | `awk-language-server` |
+| bash | ✓ | ✓ | ✓ | | `bash-language-server` |
+| bass | ✓ | | | | `bass` |
+| beancount | ✓ | | | | `beancount-language-server` |
+| bibtex | ✓ | | | | `texlab` |
+| bicep | ✓ | | | | `bicep-langserver` |
+| bitbake | ✓ | | | | `bitbake-language-server` |
+| blade | ✓ | | | | |
+| blueprint | ✓ | | | | `blueprint-compiler` |
+| c | ✓ | ✓ | ✓ | ✓ | `clangd` |
+| c-sharp | ✓ | ✓ | | ✓ | `OmniSharp` |
+| cabal | | | | | `haskell-language-server-wrapper` |
+| caddyfile | ✓ | ✓ | ✓ | | |
+| cairo | ✓ | ✓ | ✓ | | `cairo-language-server` |
+| capnp | ✓ | | ✓ | | |
+| cel | ✓ | | | | |
+| circom | ✓ | | | | `circom-lsp` |
+| clarity | ✓ | | | | `clarinet` |
+| clojure | ✓ | | | | `clojure-lsp` |
+| cmake | ✓ | ✓ | ✓ | | `neocmakelsp`, `cmake-language-server` |
+| codeql | ✓ | ✓ | | | `codeql` |
+| comment | ✓ | | | | |
+| common-lisp | ✓ | | ✓ | | `cl-lsp` |
+| cpon | ✓ | | ✓ | | |
+| cpp | ✓ | ✓ | ✓ | ✓ | `clangd` |
+| crystal | ✓ | ✓ | ✓ | ✓ | `crystalline`, `ameba-ls` |
+| css | ✓ | | ✓ | | `vscode-css-language-server` |
+| csv | ✓ | | | | |
+| cue | ✓ | | | | `cuelsp` |
+| cylc | ✓ | ✓ | ✓ | | |
+| d | ✓ | ✓ | ✓ | | `serve-d` |
+| dart | ✓ | ✓ | ✓ | | `dart` |
+| dbml | ✓ | | | | |
+| debian | ✓ | | | | |
+| devicetree | ✓ | | | | `dts-lsp` |
+| dhall | ✓ | ✓ | | | `dhall-lsp-server` |
+| diff | ✓ | | | | |
+| djot | ✓ | | | | |
+| docker-compose | ✓ | ✓ | ✓ | | `docker-compose-langserver`, `yaml-language-server` |
+| dockerfile | ✓ | ✓ | | | `docker-langserver` |
+| dot | ✓ | | | | `dot-language-server` |
+| dtd | ✓ | | | | |
+| dune | ✓ | | | | |
+| dunstrc | ✓ | | | | |
+| earthfile | ✓ | ✓ | ✓ | | `earthlyls` |
+| edoc | ✓ | | | | |
+| eex | ✓ | | | | |
+| ejs | ✓ | | | | |
+| elisp | ✓ | | | ✓ | |
+| elixir | ✓ | ✓ | ✓ | ✓ | `elixir-ls` |
+| elm | ✓ | ✓ | | ✓ | `elm-language-server` |
+| elvish | ✓ | | | | `elvish` |
+| env | ✓ | ✓ | | | |
+| erb | ✓ | | | | |
+| erlang | ✓ | ✓ | | ✓ | `erlang_ls`, `elp` |
+| esdl | ✓ | | | | |
+| fennel | ✓ | | | | `fennel-ls` |
+| fga | ✓ | ✓ | ✓ | | |
+| fidl | ✓ | | | | |
+| fish | ✓ | ✓ | ✓ | | `fish-lsp` |
+| forth | ✓ | | | | `forth-lsp` |
+| fortran | ✓ | | ✓ | | `fortls` |
+| fsharp | ✓ | | | | `fsautocomplete` |
+| gas | ✓ | ✓ | | | `asm-lsp` |
+| gdscript | ✓ | ✓ | ✓ | ✓ | |
+| gemini | ✓ | | | | |
+| gherkin | ✓ | | | | |
+| ghostty | ✓ | | | | |
+| git-attributes | ✓ | | | | |
+| git-commit | ✓ | ✓ | | | |
+| git-config | ✓ | ✓ | | | |
+| git-ignore | ✓ | | | | |
+| git-notes | ✓ | | | | |
+| git-rebase | ✓ | | | | |
+| gjs | ✓ | ✓ | ✓ | ✓ | `typescript-language-server`, `vscode-eslint-language-server`, `ember-language-server` |
+| gleam | ✓ | ✓ | | | `gleam` |
+| glimmer | ✓ | | | | `ember-language-server` |
+| glsl | ✓ | ✓ | ✓ | | `glsl_analyzer` |
+| gn | ✓ | | | | |
+| go | ✓ | ✓ | ✓ | ✓ | `gopls`, `golangci-lint-langserver` |
+| godot-resource | ✓ | ✓ | | | |
+| gomod | ✓ | | | | `gopls` |
+| gotmpl | ✓ | | | | `gopls` |
+| gowork | ✓ | | | | `gopls` |
+| gpr | ✓ | | | | `ada_language_server` |
+| graphql | ✓ | ✓ | | | `graphql-lsp` |
+| gren | ✓ | ✓ | | | |
+| groovy | ✓ | | | | |
+| gts | ✓ | ✓ | ✓ | ✓ | `typescript-language-server`, `vscode-eslint-language-server`, `ember-language-server` |
+| hare | ✓ | | | | |
+| haskell | ✓ | ✓ | | | `haskell-language-server-wrapper` |
+| haskell-persistent | ✓ | | | | |
+| hcl | ✓ | ✓ | ✓ | | `terraform-ls` |
+| heex | ✓ | ✓ | | | `elixir-ls` |
+| helm | ✓ | | | | `helm_ls` |
+| hocon | ✓ | ✓ | ✓ | | |
+| hoon | ✓ | | | | |
+| hosts | ✓ | | | | |
+| html | ✓ | ✓ | | | `vscode-html-language-server`, `superhtml` |
+| htmldjango | ✓ | | | | `djlsp`, `vscode-html-language-server`, `superhtml` |
+| hurl | ✓ | ✓ | ✓ | | |
+| hyprlang | ✓ | | ✓ | | `hyprls` |
+| idris | | | | | `idris2-lsp` |
+| iex | ✓ | | | | |
+| ini | ✓ | | | | |
+| ink | ✓ | | | | |
+| inko | ✓ | ✓ | ✓ | | |
+| janet | ✓ | | | | |
+| java | ✓ | ✓ | ✓ | | `jdtls` |
+| javascript | ✓ | ✓ | ✓ | ✓ | `typescript-language-server` |
+| jinja | ✓ | | | | |
+| jjconfig | ✓ | ✓ | ✓ | | `taplo`, `tombi` |
+| jjdescription | ✓ | | | | |
+| jjrevset | ✓ | | | | |
+| jjtemplate | ✓ | | | | |
+| jq | ✓ | ✓ | | | `jq-lsp` |
+| jsdoc | ✓ | | | | |
+| json | ✓ | ✓ | ✓ | | `vscode-json-language-server` |
+| json-ld | ✓ | ✓ | ✓ | | `vscode-json-language-server` |
+| json5 | ✓ | | | | |
+| jsonc | ✓ | | ✓ | | `vscode-json-language-server` |
+| jsonnet | ✓ | | | | `jsonnet-language-server` |
+| jsx | ✓ | ✓ | ✓ | ✓ | `typescript-language-server` |
+| julia | ✓ | ✓ | ✓ | | `julia` |
+| just | ✓ | ✓ | ✓ | | `just-lsp` |
+| kdl | ✓ | ✓ | ✓ | | |
+| koka | ✓ | | ✓ | | `koka` |
+| kotlin | ✓ | ✓ | ✓ | | `kotlin-language-server` |
+| koto | ✓ | ✓ | ✓ | | `koto-ls` |
+| latex | ✓ | ✓ | | | `texlab` |
+| ld | ✓ | | ✓ | | |
+| ldif | ✓ | | | | |
+| lean | ✓ | | | | `lean` |
+| ledger | ✓ | | | | |
+| llvm | ✓ | ✓ | ✓ | | |
+| llvm-mir | ✓ | ✓ | ✓ | | |
+| llvm-mir-yaml | ✓ | | ✓ | | |
+| log | ✓ | | | | |
+| lpf | ✓ | | | | |
+| lua | ✓ | ✓ | ✓ | | `lua-language-server` |
+| luau | ✓ | ✓ | ✓ | | `luau-lsp` |
+| mail | ✓ | ✓ | | | |
+| make | ✓ | | ✓ | | |
+| markdoc | ✓ | | | | `markdoc-ls` |
+| markdown | ✓ | | | ✓ | `marksman`, `markdown-oxide` |
+| markdown-rustdoc | ✓ | | | | |
+| markdown.inline | ✓ | | | | |
+| matlab | ✓ | ✓ | ✓ | | |
+| mermaid | ✓ | | | | |
+| meson | ✓ | | ✓ | | `mesonlsp` |
+| mint | | | | | `mint` |
+| mojo | ✓ | ✓ | ✓ | | `pixi` |
+| move | ✓ | | | | |
+| msbuild | ✓ | | ✓ | | |
+| nasm | ✓ | ✓ | | | `asm-lsp` |
+| nestedtext | ✓ | ✓ | ✓ | | |
+| nginx | ✓ | | | | |
+| nickel | ✓ | | ✓ | | `nls` |
+| nim | ✓ | ✓ | ✓ | | `nimlangserver` |
+| nix | ✓ | ✓ | ✓ | | `nil`, `nixd` |
+| nu | ✓ | | | | `nu` |
+| nunjucks | ✓ | | | | |
+| ocaml | ✓ | | ✓ | | `ocamllsp` |
+| ocaml-interface | ✓ | | | | `ocamllsp` |
+| odin | ✓ | ✓ | ✓ | | `ols` |
+| ohm | ✓ | ✓ | ✓ | | |
+| opencl | ✓ | ✓ | ✓ | | `clangd` |
+| openscad | ✓ | | | | `openscad-lsp` |
+| org | ✓ | | | | |
+| pascal | ✓ | ✓ | | | `pasls` |
+| passwd | ✓ | | | | |
+| pem | ✓ | | | | |
+| perl | ✓ | ✓ | ✓ | | `perlnavigator` |
+| pest | ✓ | ✓ | ✓ | | `pest-language-server` |
+| php | ✓ | ✓ | ✓ | ✓ | `intelephense` |
+| php-only | ✓ | | | ✓ | |
+| pkgbuild | ✓ | ✓ | ✓ | | `termux-language-server`, `bash-language-server` |
+| pkl | ✓ | | ✓ | | `pkl-lsp` |
+| po | ✓ | ✓ | | | |
+| pod | ✓ | | | | |
+| ponylang | ✓ | ✓ | ✓ | | |
+| powershell | ✓ | | | | |
+| prisma | ✓ | ✓ | | | `prisma-language-server` |
+| prolog | ✓ | | ✓ | | `swipl` |
+| properties | ✓ | ✓ | | | |
+| protobuf | ✓ | ✓ | ✓ | | `buf`, `pb`, `protols` |
+| prql | ✓ | | | | |
+| pug | ✓ | | | | |
+| purescript | ✓ | ✓ | | | `purescript-language-server` |
+| python | ✓ | ✓ | ✓ | ✓ | `ty`, `ruff`, `jedi-language-server`, `pylsp` |
+| qml | ✓ | ✓ | ✓ | | `qmlls` |
+| quarto | ✓ | | ✓ | | |
+| quint | ✓ | | | | `quint-language-server` |
+| r | ✓ | | | | `R` |
+| racket | ✓ | | ✓ | | `racket` |
+| regex | ✓ | | | | |
+| rego | ✓ | | | | `regols` |
+| rescript | ✓ | ✓ | | | `rescript-language-server` |
+| rmarkdown | ✓ | | ✓ | | `R` |
+| robot | ✓ | | | | `robotframework_ls` |
+| ron | ✓ | | ✓ | | |
+| rst | ✓ | | | | |
+| ruby | ✓ | ✓ | ✓ | ✓ | `ruby-lsp`, `solargraph` |
+| rust | ✓ | ✓ | ✓ | ✓ | `rust-analyzer` |
+| rust-format-args | ✓ | | | | |
+| rust-format-args-macro | ✓ | ✓ | ✓ | | |
+| sage | ✓ | ✓ | | | |
+| scala | ✓ | ✓ | ✓ | | `metals` |
+| scheme | ✓ | | ✓ | | |
+| scss | ✓ | | | | `vscode-css-language-server` |
+| slang | ✓ | ✓ | ✓ | | `slangd` |
+| slint | ✓ | ✓ | ✓ | | `slint-lsp` |
+| smali | ✓ | | ✓ | | |
+| smithy | ✓ | | | | `cs` |
+| sml | ✓ | | | | |
+| snakemake | ✓ | | ✓ | | `pylsp` |
+| solidity | ✓ | ✓ | | | `solc` |
+| sourcepawn | ✓ | ✓ | | | `sourcepawn-studio` |
+| spade | ✓ | | ✓ | | `spade-language-server` |
+| spicedb | ✓ | | | ✓ | |
+| sql | ✓ | ✓ | | | |
+| sshclientconfig | ✓ | | | | |
+| starlark | ✓ | ✓ | ✓ | | `starpls` |
+| strace | ✓ | | | | |
+| supercollider | ✓ | | | | |
+| svelte | ✓ | | ✓ | | `svelteserver` |
+| sway | ✓ | ✓ | ✓ | | `forc` |
+| swift | ✓ | ✓ | | | `sourcekit-lsp` |
+| systemd | ✓ | | | | `systemd-lsp` |
+| t32 | ✓ | | | | |
+| tablegen | ✓ | ✓ | ✓ | | |
+| tact | ✓ | ✓ | ✓ | | |
+| task | ✓ | | | | |
+| tcl | ✓ | | ✓ | | |
+| teal | ✓ | | | | `teal-language-server` |
+| templ | ✓ | | | | `templ` |
+| tera | ✓ | | | | |
+| textproto | ✓ | ✓ | ✓ | | |
+| tfvars | ✓ | | ✓ | | `terraform-ls` |
+| thrift | ✓ | | | | |
+| tlaplus | ✓ | | | | |
+| todotxt | ✓ | | | | |
+| toml | ✓ | ✓ | | | `taplo`, `tombi` |
+| tsq | ✓ | | | | `ts_query_ls` |
+| tsx | ✓ | ✓ | ✓ | ✓ | `typescript-language-server` |
+| twig | ✓ | | | | |
+| typescript | ✓ | ✓ | ✓ | ✓ | `typescript-language-server` |
+| typespec | ✓ | ✓ | ✓ | | `tsp-server` |
+| typst | ✓ | | | ✓ | `tinymist` |
+| ungrammar | ✓ | | | | |
+| unison | ✓ | ✓ | ✓ | | |
+| uxntal | ✓ | | | | |
+| v | ✓ | ✓ | ✓ | | `v-analyzer` |
+| vala | ✓ | ✓ | | | `vala-language-server` |
+| vento | ✓ | | | | |
+| verilog | ✓ | ✓ | | | `svlangserver` |
+| vhdl | ✓ | | | | `vhdl_ls` |
+| vhs | ✓ | | | | |
+| vue | ✓ | | | | `vue-language-server` |
+| wast | ✓ | | | | |
+| wat | ✓ | | | | `wat_server` |
+| webc | ✓ | | | | |
+| werk | ✓ | | | | |
+| wesl | ✓ | ✓ | | | |
+| wgsl | ✓ | | | | `wgsl-analyzer` |
+| wit | ✓ | | ✓ | | |
+| wren | ✓ | ✓ | ✓ | | |
+| xit | ✓ | | | | |
+| xml | ✓ | ✓ | ✓ | | |
+| xtc | ✓ | | | | |
+| yaml | ✓ | ✓ | ✓ | | `yaml-language-server`, `ansible-language-server` |
+| yara | ✓ | | | | `yls` |
+| yuck | ✓ | | | | |
+| zig | ✓ | ✓ | ✓ | | `zls` |
diff --git a/book/src/generated/static-cmd.md b/book/src/generated/static-cmd.md
index 0363820e..0fed616a 100644
--- a/book/src/generated/static-cmd.md
+++ b/book/src/generated/static-cmd.md
@@ -106,10 +106,14 @@
| `code_action` | Perform code action | normal: `` <space>a ``, select: `` <space>a `` |
| `buffer_picker` | Open buffer picker | normal: `` <space>b ``, select: `` <space>b `` |
| `jumplist_picker` | Open jumplist picker | normal: `` <space>j ``, select: `` <space>j `` |
-| `symbol_picker` | Open symbol picker | normal: `` <space>s ``, select: `` <space>s `` |
+| `symbol_picker` | Open symbol picker | |
+| `syntax_symbol_picker` | Open symbol picker from syntax information | |
+| `lsp_or_syntax_symbol_picker` | Open symbol picker from LSP or syntax information | normal: `` <space>s ``, select: `` <space>s `` |
| `changed_file_picker` | Open changed file picker | normal: `` <space>g ``, select: `` <space>g `` |
| `select_references_to_symbol_under_cursor` | Select symbol references | normal: `` <space>h ``, select: `` <space>h `` |
-| `workspace_symbol_picker` | Open workspace symbol picker | normal: `` <space>S ``, select: `` <space>S `` |
+| `workspace_symbol_picker` | Open workspace symbol picker | |
+| `syntax_workspace_symbol_picker` | Open workspace symbol picker from syntax information | |
+| `lsp_or_syntax_workspace_symbol_picker` | Open workspace symbol picker from LSP or syntax information | normal: `` <space>S ``, select: `` <space>S `` |
| `diagnostics_picker` | Open diagnostic picker | normal: `` <space>d ``, select: `` <space>d `` |
| `workspace_diagnostics_picker` | Open workspace diagnostic picker | normal: `` <space>D ``, select: `` <space>D `` |
| `last_picker` | Open last picker | normal: `` <space>' ``, select: `` <space>' `` |
diff --git a/book/src/guides/tags.md b/book/src/guides/tags.md
new file mode 100644
index 00000000..00794962
--- /dev/null
+++ b/book/src/guides/tags.md
@@ -0,0 +1,34 @@
+## Adding tags queries
+
+See tree-sitter's documentation on [Code Navigation Systems] for more
+background on tags queries.
+
+Helix provides LSP-like features such as document and workspace symbol pickers
+out-of-the-box for languages with `tags.scm` queries based on syntax trees. To
+be analyzed a language must have a tree-sitter grammar and a `tags.scm` query
+file which pattern matches interesting nodes from syntax trees.
+
+Query files should be placed in `runtime/queries/{language}/tags.scm`
+when contributing to Helix. You may place these under your local runtime
+directory (`~/.config/helix/runtime` in Linux for example) for the sake of
+testing.
+
+The following [captures][tree-sitter-captures] are recognized:
+
+| Capture name |
+|--- |
+| `definition.class` |
+| `definition.constant` |
+| `definition.function` |
+| `definition.interface` |
+| `definition.macro` |
+| `definition.module` |
+| `definition.struct` |
+| `definition.type` |
+
+[Example query files][example-queries] can be found in the Helix GitHub
+repository.
+
+[Code Navigation Systems]: https://tree-sitter.github.io/tree-sitter/4-code-navigation.html
+[tree-sitter-captures]: https://tree-sitter.github.io/tree-sitter/using-parsers/queries/index.html
+[example-queries]: https://github.com/search?q=repo%3Ahelix-editor%2Fhelix+path%3A%2A%2A/tags.scm&type=Code
diff --git a/helix-term/src/health.rs b/helix-term/src/health.rs
index 180e0652..aeb7f724 100644
--- a/helix-term/src/health.rs
+++ b/helix-term/src/health.rs
@@ -12,11 +12,17 @@ pub enum TsFeature {
Highlight,
TextObject,
AutoIndent,
+ Tags,
}
impl TsFeature {
pub fn all() -> &'static [Self] {
- &[Self::Highlight, Self::TextObject, Self::AutoIndent]
+ &[
+ Self::Highlight,
+ Self::TextObject,
+ Self::AutoIndent,
+ Self::Tags,
+ ]
}
pub fn runtime_filename(&self) -> &'static str {
@@ -24,6 +30,7 @@ impl TsFeature {
Self::Highlight => "highlights.scm",
Self::TextObject => "textobjects.scm",
Self::AutoIndent => "indents.scm",
+ Self::Tags => "tags.scm",
}
}
@@ -32,6 +39,7 @@ impl TsFeature {
Self::Highlight => "Syntax Highlighting",
Self::TextObject => "Treesitter Textobjects",
Self::AutoIndent => "Auto Indent",
+ Self::Tags => "Code Navigation Tags",
}
}
@@ -40,6 +48,7 @@ impl TsFeature {
Self::Highlight => "Highlight",
Self::TextObject => "Textobject",
Self::AutoIndent => "Indent",
+ Self::Tags => "Tags",
}
}
}