diff options
| -rw-r--r-- | .github/workflows/lint.yml | 4 | ||||
| -rw-r--r-- | .github/workflows/test-queries.yml | 2 | ||||
| -rw-r--r-- | .stylua.toml | 6 | ||||
| -rw-r--r-- | CONTRIBUTING.md | 27 | ||||
| -rw-r--r-- | Makefile | 7 | ||||
| -rw-r--r-- | README.md | 742 | ||||
| -rw-r--r-- | SUPPORTED_LANGUAGES.md | 305 | ||||
| -rw-r--r-- | TODO.md | 34 | ||||
| -rw-r--r-- | assets/logo.png | bin | 26664 -> 0 bytes | |||
| -rw-r--r-- | autoload/nvim_treesitter.vim | 27 | ||||
| -rw-r--r-- | doc/nvim-treesitter.txt | 484 | ||||
| -rw-r--r-- | lua/nvim-treesitter.lua | 22 | ||||
| -rw-r--r-- | lua/nvim-treesitter/caching.lua | 71 | ||||
| -rw-r--r-- | lua/nvim-treesitter/compat.lua | 39 | ||||
| -rw-r--r-- | lua/nvim-treesitter/config.lua | 144 | ||||
| -rw-r--r-- | lua/nvim-treesitter/configs.lua | 616 | ||||
| -rw-r--r-- | lua/nvim-treesitter/fold.lua | 123 | ||||
| -rw-r--r-- | lua/nvim-treesitter/health.lua | 181 | ||||
| -rw-r--r-- | lua/nvim-treesitter/highlight.lua | 49 | ||||
| -rw-r--r-- | lua/nvim-treesitter/incremental_selection.lua | 176 | ||||
| -rw-r--r-- | lua/nvim-treesitter/indent.lua | 121 | ||||
| -rw-r--r-- | lua/nvim-treesitter/info.lua | 190 | ||||
| -rw-r--r-- | lua/nvim-treesitter/init.lua | 11 | ||||
| -rw-r--r-- | lua/nvim-treesitter/install.lua | 842 | ||||
| -rw-r--r-- | lua/nvim-treesitter/locals.lua | 125 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 4366 | ||||
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 304 | ||||
| -rw-r--r-- | lua/nvim-treesitter/query_predicates.lua | 167 | ||||
| -rw-r--r-- | lua/nvim-treesitter/shell_cmds.lua | 255 | ||||
| -rw-r--r-- | lua/nvim-treesitter/shell_command_selectors.lua | 368 | ||||
| -rw-r--r-- | lua/nvim-treesitter/statusline.lua | 53 | ||||
| -rw-r--r-- | lua/nvim-treesitter/ts_utils.lua | 482 | ||||
| -rw-r--r-- | lua/nvim-treesitter/tsrange.lua | 154 | ||||
| -rw-r--r-- | lua/nvim-treesitter/utils.lua | 235 | ||||
| -rw-r--r-- | parser-info/.gitignore | 2 | ||||
| -rw-r--r-- | parser/.gitignore | 2 | ||||
| -rw-r--r-- | plugin/filetypes.lua | 66 | ||||
| -rw-r--r-- | plugin/nvim-treesitter.lua | 102 | ||||
| -rw-r--r-- | plugin/query_predicates.lua | 141 | ||||
| -rw-r--r-- | runtime/queries/ada/folds.scm (renamed from queries/ada/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ada/highlights.scm (renamed from queries/ada/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ada/injections.scm (renamed from queries/unison/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ada/locals.scm (renamed from queries/ada/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/agda/folds.scm (renamed from queries/agda/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/agda/highlights.scm (renamed from queries/agda/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/agda/injections.scm (renamed from queries/solidity/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/angular/folds.scm (renamed from queries/angular/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/angular/highlights.scm (renamed from queries/angular/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/angular/indents.scm (renamed from queries/angular/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/angular/injections.scm (renamed from queries/angular/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/angular/locals.scm (renamed from queries/angular/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/apex/folds.scm (renamed from queries/apex/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/apex/highlights.scm (renamed from queries/apex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/apex/injections.scm (renamed from queries/apex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/apex/locals.scm (renamed from queries/apex/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/arduino/folds.scm (renamed from queries/arduino/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/arduino/highlights.scm (renamed from queries/arduino/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/arduino/indents.scm (renamed from queries/arduino/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/arduino/injections.scm (renamed from queries/arduino/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/arduino/locals.scm (renamed from queries/arduino/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/asm/highlights.scm (renamed from queries/asm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/asm/injections.scm (renamed from queries/asm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/astro/folds.scm (renamed from queries/astro/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/astro/highlights.scm (renamed from queries/astro/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/astro/indents.scm (renamed from queries/astro/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/astro/injections.scm (renamed from queries/astro/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/astro/locals.scm (renamed from queries/astro/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/authzed/highlights.scm (renamed from queries/authzed/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/authzed/injections.scm (renamed from queries/bass/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/awk/highlights.scm (renamed from queries/awk/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/awk/injections.scm (renamed from queries/awk/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bash/folds.scm (renamed from queries/bash/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bash/highlights.scm (renamed from queries/bash/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bash/injections.scm (renamed from queries/bash/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bash/locals.scm (renamed from queries/bash/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bass/folds.scm (renamed from queries/bass/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bass/highlights.scm (renamed from queries/bass/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bass/indents.scm (renamed from queries/bass/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bass/injections.scm (renamed from queries/scala/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bass/locals.scm (renamed from queries/bass/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/beancount/folds.scm (renamed from queries/beancount/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/beancount/highlights.scm (renamed from queries/beancount/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/beancount/injections.scm (renamed from queries/verilog/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bibtex/folds.scm (renamed from queries/bibtex/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bibtex/highlights.scm (renamed from queries/bibtex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bibtex/indents.scm (renamed from queries/bibtex/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bibtex/injections.scm (renamed from queries/bibtex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bicep/folds.scm (renamed from queries/bicep/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bicep/highlights.scm (renamed from queries/bicep/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bicep/indents.scm (renamed from queries/bicep/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bicep/injections.scm (renamed from queries/bicep/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bicep/locals.scm (renamed from queries/bicep/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bitbake/folds.scm (renamed from queries/bitbake/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bitbake/highlights.scm (renamed from queries/bitbake/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bitbake/indents.scm (renamed from queries/bitbake/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bitbake/injections.scm (renamed from queries/bitbake/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bitbake/locals.scm (renamed from queries/bitbake/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blade/folds.scm (renamed from queries/blade/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blade/highlights.scm (renamed from queries/blade/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blade/indents.scm (renamed from queries/blade/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blade/injections.scm (renamed from queries/blade/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blueprint/highlights.scm (renamed from queries/blueprint/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/blueprint/injections.scm (renamed from queries/ada/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bp/folds.scm (renamed from queries/bp/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bp/highlights.scm (renamed from queries/bp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bp/indents.scm (renamed from queries/bp/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bp/injections.scm (renamed from queries/agda/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/bp/locals.scm (renamed from queries/bp/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/brightscript/folds.scm (renamed from queries/brightscript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/brightscript/highlights.scm (renamed from queries/brightscript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/brightscript/indents.scm (renamed from queries/brightscript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/brightscript/injections.scm (renamed from queries/authzed/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c/folds.scm (renamed from queries/c/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c/highlights.scm (renamed from queries/c/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c/indents.scm (renamed from queries/c/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c/injections.scm (renamed from queries/c/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c/locals.scm (renamed from queries/c/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c_sharp/folds.scm (renamed from queries/c_sharp/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c_sharp/highlights.scm (renamed from queries/c_sharp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c_sharp/injections.scm (renamed from queries/beancount/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/c_sharp/locals.scm (renamed from queries/c_sharp/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/caddy/folds.scm (renamed from queries/caddy/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/caddy/highlights.scm (renamed from queries/caddy/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/caddy/indents.scm (renamed from queries/caddy/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/caddy/injections.scm (renamed from queries/blueprint/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cairo/folds.scm (renamed from queries/cairo/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cairo/highlights.scm (renamed from queries/cairo/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cairo/indents.scm (renamed from queries/cairo/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cairo/injections.scm (renamed from queries/cairo/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cairo/locals.scm (renamed from queries/cairo/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/capnp/folds.scm (renamed from queries/capnp/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/capnp/highlights.scm (renamed from queries/capnp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/capnp/indents.scm (renamed from queries/capnp/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/capnp/injections.scm (renamed from queries/bp/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/capnp/locals.scm (renamed from queries/capnp/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/chatito/folds.scm (renamed from queries/chatito/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/chatito/highlights.scm (renamed from queries/chatito/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/chatito/indents.scm (renamed from queries/chatito/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/chatito/injections.scm (renamed from queries/brightscript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/chatito/locals.scm (renamed from queries/chatito/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/circom/folds.scm (renamed from queries/circom/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/circom/highlights.scm (renamed from queries/circom/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/circom/injections.scm (renamed from queries/c_sharp/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/circom/locals.scm (renamed from queries/circom/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/clojure/folds.scm (renamed from queries/clojure/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/clojure/highlights.scm (renamed from queries/clojure/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/clojure/injections.scm (renamed from queries/caddy/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/clojure/locals.scm (renamed from queries/clojure/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cmake/folds.scm (renamed from queries/cmake/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cmake/highlights.scm (renamed from queries/cmake/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cmake/indents.scm (renamed from queries/cmake/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cmake/injections.scm (renamed from queries/cmake/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/comment/highlights.scm (renamed from queries/comment/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/commonlisp/folds.scm (renamed from queries/commonlisp/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/commonlisp/highlights.scm (renamed from queries/commonlisp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/commonlisp/injections.scm (renamed from queries/commonlisp/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/commonlisp/locals.scm (renamed from queries/commonlisp/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cooklang/highlights.scm (renamed from queries/cooklang/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cooklang/injections.scm (renamed from queries/capnp/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/corn/folds.scm (renamed from queries/corn/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/corn/highlights.scm (renamed from queries/corn/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/corn/indents.scm (renamed from queries/corn/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/corn/injections.scm (renamed from queries/chatito/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/corn/locals.scm (renamed from queries/corn/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpon/folds.scm (renamed from queries/cpon/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpon/highlights.scm (renamed from queries/cpon/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpon/indents.scm (renamed from queries/cpon/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpon/injections.scm (renamed from queries/circom/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpon/locals.scm (renamed from queries/cpon/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpp/folds.scm (renamed from queries/cpp/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpp/highlights.scm (renamed from queries/cpp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpp/indents.scm (renamed from queries/cpp/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cpp/injections.scm (renamed from queries/cpp/injections.scm) | 2 | ||||
| -rw-r--r-- | runtime/queries/cpp/locals.scm (renamed from queries/cpp/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/css/folds.scm (renamed from queries/css/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/css/highlights.scm (renamed from queries/css/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/css/indents.scm (renamed from queries/css/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/css/injections.scm (renamed from queries/clojure/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/csv/highlights.scm (renamed from queries/csv/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cuda/folds.scm (renamed from queries/cuda/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cuda/highlights.scm (renamed from queries/cuda/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cuda/indents.scm (renamed from queries/cuda/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cuda/injections.scm (renamed from queries/cuda/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cuda/locals.scm (renamed from queries/cuda/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cue/folds.scm (renamed from queries/cue/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cue/highlights.scm (renamed from queries/cue/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cue/indents.scm (renamed from queries/cue/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cue/injections.scm (renamed from queries/cooklang/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cue/locals.scm (renamed from queries/cue/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cylc/folds.scm (renamed from queries/cylc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cylc/highlights.scm (renamed from queries/cylc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cylc/indents.scm (renamed from queries/cylc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/cylc/injections.scm (renamed from queries/cylc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/d/folds.scm (renamed from queries/d/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/d/highlights.scm (renamed from queries/d/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/d/indents.scm (renamed from queries/d/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/d/injections.scm (renamed from queries/d/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/d/locals.scm (renamed from queries/d/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dart/folds.scm (renamed from queries/dart/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dart/highlights.scm (renamed from queries/dart/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dart/indents.scm (renamed from queries/dart/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dart/injections.scm (renamed from queries/corn/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dart/locals.scm (renamed from queries/dart/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/desktop/folds.scm (renamed from queries/desktop/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/desktop/highlights.scm (renamed from queries/desktop/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/desktop/injections.scm (renamed from queries/desktop/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/devicetree/folds.scm (renamed from queries/devicetree/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/devicetree/highlights.scm (renamed from queries/devicetree/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/devicetree/indents.scm (renamed from queries/devicetree/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/devicetree/injections.scm (renamed from queries/cpon/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/devicetree/locals.scm (renamed from queries/devicetree/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dhall/folds.scm (renamed from queries/dhall/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dhall/highlights.scm (renamed from queries/dhall/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dhall/injections.scm (renamed from queries/dhall/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/diff/folds.scm (renamed from queries/diff/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/diff/highlights.scm (renamed from queries/diff/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/diff/injections.scm (renamed from queries/css/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/disassembly/highlights.scm (renamed from queries/disassembly/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/disassembly/injections.scm (renamed from queries/disassembly/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/djot/folds.scm (renamed from queries/djot/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/djot/highlights.scm (renamed from queries/djot/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/djot/indents.scm (renamed from queries/djot/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/djot/injections.scm (renamed from queries/djot/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/djot/locals.scm (renamed from queries/djot/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dockerfile/highlights.scm (renamed from queries/dockerfile/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dockerfile/injections.scm (renamed from queries/dockerfile/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dot/highlights.scm (renamed from queries/dot/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dot/indents.scm (renamed from queries/dot/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dot/injections.scm (renamed from queries/dot/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/doxygen/highlights.scm (renamed from queries/doxygen/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/doxygen/indents.scm (renamed from queries/doxygen/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/doxygen/injections.scm (renamed from queries/doxygen/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dtd/folds.scm (renamed from queries/dtd/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dtd/highlights.scm (renamed from queries/dtd/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dtd/injections.scm (renamed from queries/dtd/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/dtd/locals.scm (renamed from queries/dtd/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/earthfile/highlights.scm (renamed from queries/earthfile/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/earthfile/injections.scm (renamed from queries/earthfile/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ebnf/highlights.scm (renamed from queries/ebnf/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ebnf/injections.scm (renamed from queries/cue/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ecma/folds.scm (renamed from queries/ecma/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ecma/highlights.scm (renamed from queries/ecma/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ecma/indents.scm (renamed from queries/ecma/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ecma/injections.scm (renamed from queries/ecma/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ecma/locals.scm (renamed from queries/ecma/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/editorconfig/folds.scm (renamed from queries/editorconfig/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/editorconfig/highlights.scm (renamed from queries/editorconfig/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/editorconfig/injections.scm (renamed from queries/dart/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/eds/folds.scm (renamed from queries/eds/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/eds/highlights.scm (renamed from queries/eds/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/eex/highlights.scm (renamed from queries/eex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/eex/injections.scm (renamed from queries/eex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elixir/folds.scm (renamed from queries/elixir/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elixir/highlights.scm (renamed from queries/elixir/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elixir/indents.scm (renamed from queries/elixir/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elixir/injections.scm (renamed from queries/elixir/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elixir/locals.scm (renamed from queries/elixir/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elm/folds.scm (renamed from queries/elm/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elm/highlights.scm (renamed from queries/elm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elm/injections.scm (renamed from queries/elm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elsa/folds.scm (renamed from queries/elsa/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elsa/highlights.scm (renamed from queries/elsa/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elsa/indents.scm (renamed from queries/elsa/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elsa/injections.scm (renamed from queries/devicetree/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elsa/locals.scm (renamed from queries/elsa/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elvish/highlights.scm (renamed from queries/elvish/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/elvish/injections.scm (renamed from queries/diff/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/embedded_template/highlights.scm (renamed from queries/embedded_template/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/embedded_template/injections.scm (renamed from queries/embedded_template/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/enforce/folds.scm (renamed from queries/enforce/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/enforce/highlights.scm (renamed from queries/enforce/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/enforce/indents.scm (renamed from queries/enforce/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/enforce/injections.scm (renamed from queries/enforce/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/enforce/locals.scm (renamed from queries/enforce/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/erlang/folds.scm (renamed from queries/erlang/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/erlang/highlights.scm (renamed from queries/erlang/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/erlang/injections.scm (renamed from queries/ebnf/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/facility/folds.scm (renamed from queries/facility/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/facility/highlights.scm (renamed from queries/facility/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/facility/indents.scm (renamed from queries/facility/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/facility/injections.scm (renamed from queries/facility/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/faust/highlights.scm (renamed from queries/faust/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/faust/injections.scm (renamed from queries/editorconfig/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fennel/folds.scm (renamed from queries/fennel/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fennel/highlights.scm (renamed from queries/fennel/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fennel/injections.scm (renamed from queries/fennel/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fennel/locals.scm (renamed from queries/fennel/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fidl/folds.scm (renamed from queries/fidl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fidl/highlights.scm (renamed from queries/fidl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fidl/injections.scm (renamed from queries/elsa/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/firrtl/folds.scm (renamed from queries/firrtl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/firrtl/highlights.scm (renamed from queries/firrtl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/firrtl/indents.scm (renamed from queries/firrtl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/firrtl/injections.scm (renamed from queries/elvish/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/firrtl/locals.scm (renamed from queries/firrtl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fish/folds.scm (renamed from queries/fish/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fish/highlights.scm (renamed from queries/fish/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fish/indents.scm (renamed from queries/fish/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fish/injections.scm (renamed from queries/erlang/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fish/locals.scm (renamed from queries/fish/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/foam/folds.scm (renamed from queries/foam/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/foam/highlights.scm (renamed from queries/foam/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/foam/indents.scm (renamed from queries/foam/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/foam/injections.scm (renamed from queries/foam/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/foam/locals.scm (renamed from queries/foam/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/forth/folds.scm (renamed from queries/forth/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/forth/highlights.scm (renamed from queries/forth/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/forth/indents.scm (renamed from queries/forth/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/forth/injections.scm (renamed from queries/faust/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/forth/locals.scm (renamed from queries/forth/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fortran/folds.scm (renamed from queries/fortran/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fortran/highlights.scm (renamed from queries/fortran/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fortran/indents.scm (renamed from queries/fortran/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fortran/injections.scm (renamed from queries/fidl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fsh/highlights.scm (renamed from queries/fsh/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fsh/injections.scm (renamed from queries/fsh/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fsharp/highlights.scm (renamed from queries/fsharp/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fsharp/injections.scm (renamed from queries/fsharp/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/func/highlights.scm (renamed from queries/func/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/func/injections.scm (renamed from queries/firrtl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fusion/folds.scm (renamed from queries/fusion/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fusion/highlights.scm (renamed from queries/fusion/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fusion/indents.scm (renamed from queries/fusion/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fusion/injections.scm (renamed from queries/fusion/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/fusion/locals.scm (renamed from queries/fusion/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gap/folds.scm (renamed from queries/gap/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gap/highlights.scm (renamed from queries/gap/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gap/injections.scm (renamed from queries/fish/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gap/locals.scm (renamed from queries/gap/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gaptst/folds.scm (renamed from queries/gaptst/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gaptst/highlights.scm (renamed from queries/gaptst/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gaptst/injections.scm (renamed from queries/gaptst/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdscript/folds.scm (renamed from queries/gdscript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdscript/highlights.scm (renamed from queries/gdscript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdscript/indents.scm (renamed from queries/gdscript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdscript/injections.scm (renamed from queries/forth/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdscript/locals.scm (renamed from queries/gdscript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdshader/highlights.scm (renamed from queries/gdshader/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gdshader/injections.scm (renamed from queries/fortran/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/git_config/folds.scm (renamed from queries/git_config/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/git_config/highlights.scm (renamed from queries/git_config/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/git_config/injections.scm (renamed from queries/git_config/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/git_rebase/highlights.scm (renamed from queries/git_rebase/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/git_rebase/injections.scm (renamed from queries/git_rebase/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitattributes/highlights.scm (renamed from queries/gitattributes/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitattributes/injections.scm (renamed from queries/func/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitattributes/locals.scm (renamed from queries/gitattributes/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitcommit/highlights.scm (renamed from queries/gitcommit/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitcommit/injections.scm (renamed from queries/gitcommit/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitignore/highlights.scm (renamed from queries/gitignore/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gitignore/injections.scm (renamed from queries/gap/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gleam/folds.scm (renamed from queries/gleam/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gleam/highlights.scm (renamed from queries/gleam/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gleam/indents.scm (renamed from queries/gleam/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gleam/injections.scm (renamed from queries/gleam/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gleam/locals.scm (renamed from queries/gleam/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer/folds.scm (renamed from queries/glimmer/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer/highlights.scm (renamed from queries/glimmer/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer/indents.scm (renamed from queries/glimmer/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer/injections.scm (renamed from queries/glimmer/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer/locals.scm (renamed from queries/glimmer/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_javascript/highlights.scm (renamed from queries/glimmer_javascript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_javascript/indents.scm (renamed from queries/glimmer_javascript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_javascript/injections.scm (renamed from queries/glimmer_javascript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_javascript/locals.scm (renamed from queries/glimmer_javascript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_typescript/highlights.scm (renamed from queries/glimmer_typescript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_typescript/indents.scm (renamed from queries/glimmer_typescript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glimmer_typescript/injections.scm (renamed from queries/glimmer_typescript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glsl/folds.scm (renamed from queries/glsl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glsl/highlights.scm (renamed from queries/glsl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glsl/indents.scm (renamed from queries/glsl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glsl/injections.scm (renamed from queries/glsl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/glsl/locals.scm (renamed from queries/glsl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gn/folds.scm (renamed from queries/gn/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gn/highlights.scm (renamed from queries/gn/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gn/indents.scm (renamed from queries/gn/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gn/injections.scm (renamed from queries/gdscript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gn/locals.scm (renamed from queries/gn/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gnuplot/highlights.scm (renamed from queries/gnuplot/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gnuplot/injections.scm (renamed from queries/gdshader/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/go/folds.scm (renamed from queries/go/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/go/highlights.scm (renamed from queries/go/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/go/indents.scm (renamed from queries/go/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/go/injections.scm (renamed from queries/go/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/go/locals.scm (renamed from queries/go/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/goctl/folds.scm (renamed from queries/goctl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/goctl/highlights.scm (renamed from queries/goctl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/goctl/indents.scm (renamed from queries/goctl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/goctl/injections.scm (renamed from queries/goctl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/godot_resource/folds.scm (renamed from queries/godot_resource/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/godot_resource/highlights.scm (renamed from queries/godot_resource/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/godot_resource/injections.scm (renamed from queries/gitattributes/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/godot_resource/locals.scm (renamed from queries/godot_resource/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gomod/highlights.scm (renamed from queries/gomod/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gomod/injections.scm (renamed from queries/gitignore/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gosum/highlights.scm (renamed from queries/gosum/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gotmpl/folds.scm (renamed from queries/gotmpl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gotmpl/highlights.scm (renamed from queries/gotmpl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gotmpl/injections.scm (renamed from queries/gotmpl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gotmpl/locals.scm (renamed from queries/gotmpl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gowork/highlights.scm (renamed from queries/gowork/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gowork/injections.scm (renamed from queries/gn/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gpg/highlights.scm (renamed from queries/gpg/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gpg/injections.scm (renamed from queries/gnuplot/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/graphql/highlights.scm (renamed from queries/graphql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/graphql/indents.scm (renamed from queries/graphql/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/graphql/injections.scm (renamed from queries/godot_resource/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gren/highlights.scm (renamed from queries/gren/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gren/injections.scm (renamed from queries/gren/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/groovy/folds.scm (renamed from queries/groovy/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/groovy/highlights.scm (renamed from queries/groovy/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/groovy/indents.scm (renamed from queries/groovy/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/groovy/injections.scm (renamed from queries/groovy/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/groovy/locals.scm (renamed from queries/groovy/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/gstlaunch/highlights.scm (renamed from queries/gstlaunch/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hack/highlights.scm (renamed from queries/hack/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hack/injections.scm (renamed from queries/hack/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hare/folds.scm (renamed from queries/hare/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hare/highlights.scm (renamed from queries/hare/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hare/indents.scm (renamed from queries/hare/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hare/injections.scm (renamed from queries/hare/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hare/locals.scm (renamed from queries/hare/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell/folds.scm (renamed from queries/haskell/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell/highlights.scm (renamed from queries/haskell/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell/injections.scm (renamed from queries/haskell/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell/locals.scm (renamed from queries/haskell/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell_persistent/folds.scm (renamed from queries/haskell_persistent/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/haskell_persistent/highlights.scm (renamed from queries/haskell_persistent/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hcl/folds.scm (renamed from queries/hcl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hcl/highlights.scm (renamed from queries/hcl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hcl/indents.scm (renamed from queries/hcl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hcl/injections.scm (renamed from queries/hcl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/heex/folds.scm (renamed from queries/heex/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/heex/highlights.scm (renamed from queries/heex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/heex/indents.scm (renamed from queries/heex/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/heex/injections.scm (renamed from queries/heex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/heex/locals.scm (renamed from queries/heex/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/helm/folds.scm (renamed from queries/helm/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/helm/highlights.scm (renamed from queries/helm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/helm/injections.scm (renamed from queries/helm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/helm/locals.scm (renamed from queries/helm/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hjson/folds.scm (renamed from queries/hjson/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hjson/highlights.scm (renamed from queries/hjson/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hjson/indents.scm (renamed from queries/hjson/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hjson/injections.scm (renamed from queries/gomod/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hjson/locals.scm (renamed from queries/hjson/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsl/folds.scm (renamed from queries/hlsl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsl/highlights.scm (renamed from queries/hlsl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsl/indents.scm (renamed from queries/hlsl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsl/injections.scm (renamed from queries/hlsl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsl/locals.scm (renamed from queries/hlsl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsplaylist/highlights.scm (renamed from queries/hlsplaylist/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hlsplaylist/injections.scm (renamed from queries/gowork/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hocon/folds.scm (renamed from queries/hocon/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hocon/highlights.scm (renamed from queries/hocon/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hocon/injections.scm (renamed from queries/gpg/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hoon/folds.scm (renamed from queries/hoon/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hoon/highlights.scm (renamed from queries/hoon/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hoon/injections.scm (renamed from queries/hoon/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hoon/locals.scm (renamed from queries/hoon/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html/folds.scm (renamed from queries/html/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html/highlights.scm (renamed from queries/html/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html/indents.scm (renamed from queries/html/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html/injections.scm (renamed from queries/html/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html/locals.scm (renamed from queries/html/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html_tags/highlights.scm (renamed from queries/html_tags/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html_tags/indents.scm (renamed from queries/html_tags/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/html_tags/injections.scm (renamed from queries/html_tags/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/htmldjango/folds.scm (renamed from queries/htmldjango/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/htmldjango/highlights.scm (renamed from queries/htmldjango/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/htmldjango/indents.scm (renamed from queries/htmldjango/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/htmldjango/injections.scm (renamed from queries/htmldjango/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/http/folds.scm (renamed from queries/http/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/http/highlights.scm (renamed from queries/http/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/http/injections.scm (renamed from queries/http/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hurl/folds.scm (renamed from queries/hurl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hurl/highlights.scm (renamed from queries/hurl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hurl/indents.scm (renamed from queries/hurl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hurl/injections.scm (renamed from queries/hurl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hyprlang/folds.scm (renamed from queries/hyprlang/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hyprlang/highlights.scm (renamed from queries/hyprlang/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hyprlang/indents.scm (renamed from queries/hyprlang/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/hyprlang/injections.scm (renamed from queries/hyprlang/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idl/highlights.scm (renamed from queries/idl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idl/indents.scm (renamed from queries/idl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idl/injections.scm (renamed from queries/idl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idris/folds.scm (renamed from queries/idris/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idris/highlights.scm (renamed from queries/idris/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idris/injections.scm (renamed from queries/graphql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/idris/locals.scm (renamed from queries/idris/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ini/folds.scm (renamed from queries/ini/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ini/highlights.scm (renamed from queries/ini/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ini/injections.scm (renamed from queries/ini/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/inko/folds.scm (renamed from queries/inko/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/inko/highlights.scm (renamed from queries/inko/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/inko/indents.scm (renamed from queries/inko/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/inko/injections.scm (renamed from queries/inko/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/inko/locals.scm (renamed from queries/inko/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ipkg/folds.scm (renamed from queries/ipkg/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ipkg/highlights.scm (renamed from queries/ipkg/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ipkg/indents.scm (renamed from queries/ipkg/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ipkg/injections.scm (renamed from queries/ipkg/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ipkg/locals.scm (renamed from queries/ipkg/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ispc/folds.scm (renamed from queries/ispc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ispc/highlights.scm (renamed from queries/ispc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ispc/indents.scm (renamed from queries/ispc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ispc/injections.scm (renamed from queries/ispc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ispc/locals.scm (renamed from queries/ispc/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/janet_simple/folds.scm (renamed from queries/janet_simple/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/janet_simple/highlights.scm (renamed from queries/janet_simple/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/janet_simple/injections.scm (renamed from queries/hjson/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/janet_simple/locals.scm (renamed from queries/janet_simple/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/java/folds.scm (renamed from queries/java/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/java/highlights.scm (renamed from queries/java/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/java/indents.scm (renamed from queries/java/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/java/injections.scm (renamed from queries/java/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/java/locals.scm (renamed from queries/java/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javadoc/highlights.scm (renamed from queries/javadoc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javadoc/indents.scm (renamed from queries/javadoc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javadoc/injections.scm (renamed from queries/javadoc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javascript/folds.scm (renamed from queries/javascript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javascript/highlights.scm (renamed from queries/javascript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javascript/indents.scm (renamed from queries/javascript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javascript/injections.scm (renamed from queries/javascript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/javascript/locals.scm (renamed from queries/javascript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jinja/highlights.scm (renamed from queries/jinja/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jinja/injections.scm (renamed from queries/jinja/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jinja_inline/highlights.scm (renamed from queries/jinja_inline/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jinja_inline/injections.scm (renamed from queries/hlsplaylist/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jq/highlights.scm (renamed from queries/jq/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jq/injections.scm (renamed from queries/jq/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jq/locals.scm (renamed from queries/jq/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsdoc/highlights.scm (renamed from queries/jsdoc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json/folds.scm (renamed from queries/json/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json/highlights.scm (renamed from queries/json/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json/indents.scm (renamed from queries/json/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json/locals.scm (renamed from queries/json/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json5/highlights.scm (renamed from queries/json5/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/json5/injections.scm (renamed from queries/hocon/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonc/folds.scm (renamed from queries/jsonc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonc/highlights.scm (renamed from queries/jsonc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonc/indents.scm (renamed from queries/jsonc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonc/injections.scm (renamed from queries/idris/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonc/locals.scm (renamed from queries/jsonc/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonnet/folds.scm (renamed from queries/jsonnet/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonnet/highlights.scm (renamed from queries/jsonnet/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonnet/injections.scm (renamed from queries/janet_simple/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsonnet/locals.scm (renamed from queries/jsonnet/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsx/folds.scm (renamed from queries/jsx/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsx/highlights.scm (renamed from queries/jsx/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsx/indents.scm (renamed from queries/jsx/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/jsx/injections.scm (renamed from queries/jsx/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/julia/folds.scm (renamed from queries/julia/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/julia/highlights.scm (renamed from queries/julia/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/julia/indents.scm (renamed from queries/julia/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/julia/injections.scm (renamed from queries/julia/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/julia/locals.scm (renamed from queries/julia/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/just/folds.scm (renamed from queries/just/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/just/highlights.scm (renamed from queries/just/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/just/indents.scm (renamed from queries/just/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/just/injections.scm (renamed from queries/just/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/just/locals.scm (renamed from queries/just/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kcl/folds.scm (renamed from queries/kcl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kcl/highlights.scm (renamed from queries/kcl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kcl/injections.scm (renamed from queries/kcl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kconfig/folds.scm (renamed from queries/kconfig/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kconfig/highlights.scm (renamed from queries/kconfig/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kconfig/indents.scm (renamed from queries/kconfig/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kconfig/injections.scm (renamed from queries/jinja_inline/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kconfig/locals.scm (renamed from queries/kconfig/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kdl/folds.scm (renamed from queries/kdl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kdl/highlights.scm (renamed from queries/kdl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kdl/indents.scm (renamed from queries/kdl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kdl/injections.scm (renamed from queries/kdl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kdl/locals.scm (renamed from queries/kdl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kotlin/folds.scm (renamed from queries/kotlin/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kotlin/highlights.scm (renamed from queries/kotlin/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kotlin/injections.scm (renamed from queries/kotlin/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kotlin/locals.scm (renamed from queries/kotlin/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/koto/folds.scm (renamed from queries/koto/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/koto/highlights.scm (renamed from queries/koto/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/koto/injections.scm (renamed from queries/json5/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/koto/locals.scm (renamed from queries/koto/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kusto/highlights.scm (renamed from queries/kusto/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/kusto/injections.scm (renamed from queries/jsonc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lalrpop/folds.scm (renamed from queries/lalrpop/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lalrpop/highlights.scm (renamed from queries/lalrpop/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lalrpop/injections.scm (renamed from queries/lalrpop/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lalrpop/locals.scm (renamed from queries/lalrpop/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/latex/folds.scm (renamed from queries/latex/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/latex/highlights.scm (renamed from queries/latex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/latex/injections.scm (renamed from queries/latex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ledger/folds.scm (renamed from queries/ledger/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ledger/highlights.scm (renamed from queries/ledger/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ledger/indents.scm (renamed from queries/ledger/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ledger/injections.scm (renamed from queries/ledger/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/leo/highlights.scm (renamed from queries/leo/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/leo/indents.scm (renamed from queries/leo/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/leo/injections.scm (renamed from queries/jsonnet/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/linkerscript/folds.scm (renamed from queries/linkerscript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/linkerscript/highlights.scm (renamed from queries/linkerscript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/linkerscript/indents.scm (renamed from queries/linkerscript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/linkerscript/injections.scm (renamed from queries/linkerscript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/linkerscript/locals.scm (renamed from queries/linkerscript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquid/highlights.scm (renamed from queries/liquid/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquid/injections.scm (renamed from queries/liquid/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquidsoap/folds.scm (renamed from queries/liquidsoap/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquidsoap/highlights.scm (renamed from queries/liquidsoap/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquidsoap/indents.scm (renamed from queries/liquidsoap/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquidsoap/injections.scm (renamed from queries/kconfig/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/liquidsoap/locals.scm (renamed from queries/liquidsoap/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/llvm/highlights.scm (renamed from queries/llvm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/llvm/injections.scm (renamed from queries/koto/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lua/folds.scm (renamed from queries/lua/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lua/highlights.scm (renamed from queries/lua/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lua/indents.scm (renamed from queries/lua/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lua/injections.scm (renamed from queries/lua/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/lua/locals.scm (renamed from queries/lua/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luadoc/highlights.scm (renamed from queries/luadoc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luap/highlights.scm (renamed from queries/luap/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luau/folds.scm (renamed from queries/luau/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luau/highlights.scm (renamed from queries/luau/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luau/indents.scm (renamed from queries/luau/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luau/injections.scm (renamed from queries/luau/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/luau/locals.scm (renamed from queries/luau/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/m68k/folds.scm (renamed from queries/m68k/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/m68k/highlights.scm (renamed from queries/m68k/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/m68k/injections.scm (renamed from queries/kusto/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/m68k/locals.scm (renamed from queries/m68k/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/make/folds.scm (renamed from queries/make/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/make/highlights.scm (renamed from queries/make/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/make/injections.scm (renamed from queries/make/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown/folds.scm (renamed from queries/markdown/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown/highlights.scm (renamed from queries/markdown/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown/indents.scm (renamed from queries/markdown/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown/injections.scm (renamed from queries/markdown/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown_inline/highlights.scm (renamed from queries/markdown_inline/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/markdown_inline/injections.scm (renamed from queries/markdown_inline/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/matlab/folds.scm (renamed from queries/matlab/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/matlab/highlights.scm (renamed from queries/matlab/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/matlab/indents.scm (renamed from queries/matlab/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/matlab/injections.scm (renamed from queries/leo/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/matlab/locals.scm (renamed from queries/matlab/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/menhir/highlights.scm (renamed from queries/menhir/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/menhir/injections.scm (renamed from queries/menhir/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mermaid/folds.scm (renamed from queries/mermaid/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mermaid/highlights.scm (renamed from queries/mermaid/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mermaid/indents.scm (renamed from queries/mermaid/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mermaid/injections.scm (renamed from queries/liquidsoap/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/meson/folds.scm (renamed from queries/meson/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/meson/highlights.scm (renamed from queries/meson/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/meson/indents.scm (renamed from queries/meson/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/meson/injections.scm (renamed from queries/llvm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mlir/highlights.scm (renamed from queries/mlir/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mlir/injections.scm (renamed from queries/m68k/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/mlir/locals.scm (renamed from queries/mlir/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/muttrc/highlights.scm (renamed from queries/muttrc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/muttrc/injections.scm (renamed from queries/muttrc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nasm/highlights.scm (renamed from queries/nasm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nasm/injections.scm (renamed from queries/matlab/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nginx/folds.scm (renamed from queries/nginx/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nginx/highlights.scm (renamed from queries/nginx/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nginx/injections.scm (renamed from queries/mermaid/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nickel/highlights.scm (renamed from queries/nickel/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nickel/indents.scm (renamed from queries/nickel/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nickel/injections.scm (renamed from queries/meson/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim/folds.scm (renamed from queries/nim/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim/highlights.scm (renamed from queries/nim/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim/injections.scm (renamed from queries/nim/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim/locals.scm (renamed from queries/nim/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim_format_string/highlights.scm (renamed from queries/nim_format_string/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nim_format_string/injections.scm (renamed from queries/nim_format_string/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ninja/folds.scm (renamed from queries/ninja/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ninja/highlights.scm (renamed from queries/ninja/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ninja/indents.scm (renamed from queries/ninja/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ninja/injections.scm (renamed from queries/mlir/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nix/folds.scm (renamed from queries/nix/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nix/highlights.scm (renamed from queries/nix/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nix/indents.scm (renamed from queries/nix/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nix/injections.scm (renamed from queries/nix/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nix/locals.scm (renamed from queries/nix/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nqc/folds.scm (renamed from queries/nqc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nqc/highlights.scm (renamed from queries/nqc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nqc/indents.scm (renamed from queries/nqc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nqc/injections.scm (renamed from queries/nqc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nqc/locals.scm (renamed from queries/nqc/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nu/folds.scm (renamed from queries/nu/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nu/highlights.scm (renamed from queries/nu/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nu/indents.scm (renamed from queries/nu/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/nu/injections.scm (renamed from queries/nu/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objc/folds.scm (renamed from queries/objc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objc/highlights.scm (renamed from queries/objc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objc/indents.scm (renamed from queries/objc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objc/injections.scm (renamed from queries/objc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objc/locals.scm (renamed from queries/objc/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objdump/highlights.scm (renamed from queries/objdump/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/objdump/injections.scm (renamed from queries/objdump/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml/folds.scm (renamed from queries/ocaml/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml/highlights.scm (renamed from queries/ocaml/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml/indents.scm (renamed from queries/ocaml/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml/injections.scm (renamed from queries/nasm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml/locals.scm (renamed from queries/ocaml/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml_interface/folds.scm (renamed from queries/ocaml_interface/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml_interface/highlights.scm (renamed from queries/ocaml_interface/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml_interface/indents.scm (renamed from queries/ocaml_interface/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml_interface/injections.scm (renamed from queries/ocaml_interface/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocaml_interface/locals.scm (renamed from queries/ocaml_interface/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocamllex/highlights.scm (renamed from queries/ocamllex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ocamllex/injections.scm (renamed from queries/ocamllex/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/odin/folds.scm (renamed from queries/odin/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/odin/highlights.scm (renamed from queries/odin/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/odin/indents.scm (renamed from queries/odin/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/odin/injections.scm (renamed from queries/nginx/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/odin/locals.scm (renamed from queries/odin/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pascal/folds.scm (renamed from queries/pascal/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pascal/highlights.scm (renamed from queries/pascal/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pascal/indents.scm (renamed from queries/pascal/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pascal/injections.scm (renamed from queries/pascal/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pascal/locals.scm (renamed from queries/pascal/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/passwd/highlights.scm (renamed from queries/passwd/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pem/folds.scm (renamed from queries/pem/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pem/highlights.scm (renamed from queries/pem/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pem/injections.scm (renamed from queries/nickel/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/perl/folds.scm (renamed from queries/perl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/perl/highlights.scm (renamed from queries/perl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/perl/injections.scm (renamed from queries/perl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php/folds.scm (renamed from queries/php/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php/highlights.scm (renamed from queries/php/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php/indents.scm (renamed from queries/php/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php/injections.scm (renamed from queries/php/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php/locals.scm (renamed from queries/php/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php_only/folds.scm (renamed from queries/php_only/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php_only/highlights.scm (renamed from queries/php_only/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php_only/indents.scm (renamed from queries/php_only/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php_only/injections.scm (renamed from queries/php_only/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/php_only/locals.scm (renamed from queries/php_only/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/phpdoc/highlights.scm (renamed from queries/phpdoc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pioasm/highlights.scm (renamed from queries/pioasm/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pioasm/injections.scm (renamed from queries/pioasm/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/po/folds.scm (renamed from queries/po/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/po/highlights.scm (renamed from queries/po/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/po/injections.scm (renamed from queries/ninja/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pod/highlights.scm (renamed from queries/pod/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/poe_filter/folds.scm (renamed from queries/poe_filter/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/poe_filter/highlights.scm (renamed from queries/poe_filter/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/poe_filter/indents.scm (renamed from queries/poe_filter/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/poe_filter/injections.scm (renamed from queries/ocaml/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pony/folds.scm (renamed from queries/pony/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pony/highlights.scm (renamed from queries/pony/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pony/indents.scm (renamed from queries/pony/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pony/injections.scm (renamed from queries/pony/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pony/locals.scm (renamed from queries/pony/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/powershell/folds.scm (renamed from queries/powershell/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/powershell/highlights.scm (renamed from queries/powershell/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/powershell/indents.scm (renamed from queries/powershell/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/powershell/injections.scm (renamed from queries/powershell/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/powershell/locals.scm (renamed from queries/powershell/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/printf/highlights.scm (renamed from queries/printf/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prisma/folds.scm (renamed from queries/prisma/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prisma/highlights.scm (renamed from queries/prisma/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prisma/injections.scm (renamed from queries/prisma/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/problog/folds.scm (renamed from queries/problog/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/problog/highlights.scm (renamed from queries/problog/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/problog/indents.scm (renamed from queries/problog/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/problog/injections.scm (renamed from queries/problog/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prolog/folds.scm (renamed from queries/prolog/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prolog/highlights.scm (renamed from queries/prolog/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prolog/indents.scm (renamed from queries/prolog/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prolog/injections.scm (renamed from queries/odin/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/promql/highlights.scm (renamed from queries/promql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/promql/injections.scm (renamed from queries/promql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/properties/highlights.scm (renamed from queries/properties/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/properties/injections.scm (renamed from queries/pem/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/properties/locals.scm (renamed from queries/properties/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/proto/folds.scm (renamed from queries/proto/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/proto/highlights.scm (renamed from queries/proto/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/proto/indents.scm (renamed from queries/proto/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/proto/injections.scm (renamed from queries/po/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prql/highlights.scm (renamed from queries/prql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/prql/injections.scm (renamed from queries/prql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/psv/highlights.scm (renamed from queries/psv/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pug/highlights.scm (renamed from queries/pug/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pug/injections.scm (renamed from queries/pug/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/puppet/folds.scm (renamed from queries/puppet/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/puppet/highlights.scm (renamed from queries/puppet/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/puppet/indents.scm (renamed from queries/puppet/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/puppet/injections.scm (renamed from queries/puppet/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/puppet/locals.scm (renamed from queries/puppet/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/purescript/highlights.scm (renamed from queries/purescript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/purescript/injections.scm (renamed from queries/poe_filter/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/purescript/locals.scm (renamed from queries/purescript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pymanifest/highlights.scm (renamed from queries/pymanifest/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/pymanifest/injections.scm (renamed from queries/prolog/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/python/folds.scm (renamed from queries/python/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/python/highlights.scm (renamed from queries/python/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/python/indents.scm (renamed from queries/python/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/python/injections.scm (renamed from queries/python/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/python/locals.scm (renamed from queries/python/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ql/folds.scm (renamed from queries/ql/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ql/highlights.scm (renamed from queries/ql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ql/indents.scm (renamed from queries/ql/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ql/injections.scm (renamed from queries/ql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ql/locals.scm (renamed from queries/ql/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/qmldir/highlights.scm (renamed from queries/qmldir/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/qmldir/injections.scm (renamed from queries/properties/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/qmljs/folds.scm (renamed from queries/qmljs/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/qmljs/highlights.scm (renamed from queries/qmljs/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/qmljs/injections.scm (renamed from queries/qmljs/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/query/folds.scm (renamed from queries/query/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/query/highlights.scm (renamed from queries/query/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/query/indents.scm (renamed from queries/query/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/query/injections.scm (renamed from queries/query/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/query/locals.scm (renamed from queries/query/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/r/highlights.scm (renamed from queries/r/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/r/indents.scm (renamed from queries/r/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/r/injections.scm (renamed from queries/proto/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/r/locals.scm (renamed from queries/r/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/racket/folds.scm (renamed from queries/racket/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/racket/highlights.scm (renamed from queries/racket/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/racket/injections.scm (renamed from queries/racket/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ralph/highlights.scm (renamed from queries/ralph/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ralph/injections.scm (renamed from queries/ralph/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rasi/folds.scm (renamed from queries/rasi/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rasi/highlights.scm (renamed from queries/rasi/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rasi/indents.scm (renamed from queries/rasi/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rasi/injections.scm (renamed from queries/purescript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rasi/locals.scm (renamed from queries/rasi/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/razor/folds.scm (renamed from queries/razor/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/razor/highlights.scm (renamed from queries/razor/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/razor/injections.scm (renamed from queries/razor/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rbs/folds.scm (renamed from queries/rbs/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rbs/highlights.scm (renamed from queries/rbs/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rbs/indents.scm (renamed from queries/rbs/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rbs/injections.scm (renamed from queries/pymanifest/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/re2c/folds.scm (renamed from queries/re2c/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/re2c/highlights.scm (renamed from queries/re2c/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/re2c/indents.scm (renamed from queries/re2c/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/re2c/injections.scm (renamed from queries/re2c/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/re2c/locals.scm (renamed from queries/re2c/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/readline/folds.scm (renamed from queries/readline/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/readline/highlights.scm (renamed from queries/readline/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/readline/indents.scm (renamed from queries/readline/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/readline/injections.scm (renamed from queries/qmldir/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/regex/highlights.scm (renamed from queries/regex/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rego/highlights.scm (renamed from queries/rego/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rego/injections.scm (renamed from queries/r/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/requirements/highlights.scm (renamed from queries/requirements/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/requirements/injections.scm (renamed from queries/rasi/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rescript/folds.scm (renamed from queries/rescript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rescript/highlights.scm (renamed from queries/rescript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rescript/indents.scm (renamed from queries/rescript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rescript/injections.scm (renamed from queries/rescript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rescript/locals.scm (renamed from queries/rescript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rnoweb/folds.scm (renamed from queries/rnoweb/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rnoweb/highlights.scm (renamed from queries/rnoweb/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rnoweb/injections.scm (renamed from queries/rnoweb/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robot/folds.scm (renamed from queries/robot/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robot/highlights.scm (renamed from queries/robot/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robot/indents.scm (renamed from queries/robot/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robot/injections.scm (renamed from queries/robot/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robots/highlights.scm (renamed from queries/robots/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/robots/injections.scm (renamed from queries/rbs/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/roc/highlights.scm (renamed from queries/roc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/roc/indents.scm (renamed from queries/roc/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/roc/injections.scm (renamed from queries/roc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/roc/locals.scm (renamed from queries/roc/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ron/folds.scm (renamed from queries/ron/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ron/highlights.scm (renamed from queries/ron/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ron/indents.scm (renamed from queries/ron/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ron/injections.scm (renamed from queries/ron/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ron/locals.scm (renamed from queries/ron/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rst/highlights.scm (renamed from queries/rst/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rst/injections.scm (renamed from queries/rst/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rst/locals.scm (renamed from queries/rst/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ruby/folds.scm (renamed from queries/ruby/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ruby/highlights.scm (renamed from queries/ruby/highlights.scm) | 3 | ||||
| -rw-r--r-- | runtime/queries/ruby/indents.scm (renamed from queries/ruby/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ruby/injections.scm (renamed from queries/ruby/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ruby/locals.scm (renamed from queries/ruby/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/runescript/highlights.scm (renamed from queries/runescript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/runescript/injections.scm (renamed from queries/readline/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rust/folds.scm (renamed from queries/rust/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rust/highlights.scm (renamed from queries/rust/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rust/indents.scm (renamed from queries/rust/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rust/injections.scm (renamed from queries/rust/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/rust/locals.scm (renamed from queries/rust/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scala/folds.scm (renamed from queries/scala/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scala/highlights.scm (renamed from queries/scala/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scala/injections.scm (renamed from queries/rego/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scala/locals.scm (renamed from queries/scala/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scfg/highlights.scm (renamed from queries/scfg/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scfg/injections.scm (renamed from queries/requirements/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scheme/folds.scm (renamed from queries/scheme/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scheme/highlights.scm (renamed from queries/scheme/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scheme/injections.scm (renamed from queries/robots/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scss/folds.scm (renamed from queries/scss/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scss/highlights.scm (renamed from queries/scss/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scss/indents.scm (renamed from queries/scss/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/scss/injections.scm (renamed from queries/scss/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sflog/highlights.scm (renamed from queries/sflog/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slang/folds.scm (renamed from queries/slang/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slang/highlights.scm (renamed from queries/slang/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slang/indents.scm (renamed from queries/slang/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slang/injections.scm (renamed from queries/slang/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slang/locals.scm (renamed from queries/slang/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slim/folds.scm (renamed from queries/slim/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slim/highlights.scm (renamed from queries/slim/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slim/indents.scm (renamed from queries/slim/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slim/injections.scm (renamed from queries/slim/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slim/locals.scm (renamed from queries/slim/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slint/folds.scm (renamed from queries/slint/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slint/highlights.scm (renamed from queries/slint/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slint/indents.scm (renamed from queries/slint/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slint/injections.scm (renamed from queries/runescript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/slint/locals.scm (renamed from queries/slint/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smali/folds.scm (renamed from queries/smali/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smali/highlights.scm (renamed from queries/smali/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smali/indents.scm (renamed from queries/smali/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smali/injections.scm (renamed from queries/scfg/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smali/locals.scm (renamed from queries/smali/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smithy/highlights.scm (renamed from queries/smithy/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/smithy/injections.scm (renamed from queries/smithy/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/snakemake/folds.scm (renamed from queries/snakemake/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/snakemake/highlights.scm (renamed from queries/snakemake/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/snakemake/indents.scm (renamed from queries/snakemake/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/snakemake/injections.scm (renamed from queries/snakemake/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/snakemake/locals.scm (renamed from queries/snakemake/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/solidity/folds.scm (renamed from queries/solidity/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/solidity/highlights.scm (renamed from queries/solidity/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/solidity/injections.scm (renamed from queries/scheme/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/soql/highlights.scm (renamed from queries/soql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sosl/highlights.scm (renamed from queries/sosl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sourcepawn/highlights.scm (renamed from queries/sourcepawn/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sourcepawn/injections.scm (renamed from queries/sourcepawn/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sourcepawn/locals.scm (renamed from queries/sourcepawn/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sparql/folds.scm (renamed from queries/sparql/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sparql/highlights.scm (renamed from queries/sparql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sparql/indents.scm (renamed from queries/sparql/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sparql/injections.scm (renamed from queries/sparql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sparql/locals.scm (renamed from queries/sparql/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sql/folds.scm (renamed from queries/sql/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sql/highlights.scm (renamed from queries/sql/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sql/indents.scm (renamed from queries/sql/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sql/injections.scm (renamed from queries/sql/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/squirrel/folds.scm (renamed from queries/squirrel/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/squirrel/highlights.scm (renamed from queries/squirrel/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/squirrel/indents.scm (renamed from queries/squirrel/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/squirrel/injections.scm (renamed from queries/squirrel/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/squirrel/locals.scm (renamed from queries/squirrel/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ssh_config/folds.scm (renamed from queries/ssh_config/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ssh_config/highlights.scm (renamed from queries/ssh_config/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ssh_config/indents.scm (renamed from queries/ssh_config/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ssh_config/injections.scm (renamed from queries/ssh_config/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ssh_config/locals.scm (renamed from queries/ssh_config/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/starlark/folds.scm (renamed from queries/starlark/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/starlark/highlights.scm (renamed from queries/starlark/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/starlark/indents.scm (renamed from queries/starlark/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/starlark/injections.scm (renamed from queries/starlark/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/starlark/locals.scm (renamed from queries/starlark/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/strace/highlights.scm (renamed from queries/strace/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/strace/injections.scm (renamed from queries/slint/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/styled/folds.scm (renamed from queries/styled/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/styled/highlights.scm (renamed from queries/styled/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/styled/indents.scm (renamed from queries/styled/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/styled/injections.scm (renamed from queries/styled/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/supercollider/folds.scm (renamed from queries/supercollider/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/supercollider/highlights.scm (renamed from queries/supercollider/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/supercollider/indents.scm (renamed from queries/supercollider/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/supercollider/injections.scm (renamed from queries/supercollider/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/supercollider/locals.scm (renamed from queries/supercollider/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/superhtml/highlights.scm (renamed from queries/superhtml/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/superhtml/injections.scm (renamed from queries/superhtml/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/surface/folds.scm (renamed from queries/surface/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/surface/highlights.scm (renamed from queries/surface/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/surface/indents.scm (renamed from queries/surface/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/surface/injections.scm (renamed from queries/surface/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/svelte/folds.scm (renamed from queries/svelte/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/svelte/highlights.scm (renamed from queries/svelte/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/svelte/indents.scm (renamed from queries/svelte/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/svelte/injections.scm (renamed from queries/svelte/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/svelte/locals.scm (renamed from queries/svelte/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sway/folds.scm (renamed from queries/sway/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sway/highlights.scm (renamed from queries/sway/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sway/indents.scm (renamed from queries/sway/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sway/injections.scm (renamed from queries/sway/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sway/locals.scm (renamed from queries/sway/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/swift/folds.scm (renamed from queries/swift/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/swift/highlights.scm (renamed from queries/swift/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/swift/indents.scm (renamed from queries/swift/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/swift/injections.scm (renamed from queries/swift/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/swift/locals.scm (renamed from queries/swift/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sxhkdrc/folds.scm (renamed from queries/sxhkdrc/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sxhkdrc/highlights.scm (renamed from queries/sxhkdrc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/sxhkdrc/injections.scm (renamed from queries/sxhkdrc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/systemtap/folds.scm (renamed from queries/systemtap/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/systemtap/highlights.scm (renamed from queries/systemtap/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/systemtap/injections.scm (renamed from queries/systemtap/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/systemtap/locals.scm (renamed from queries/systemtap/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/t32/folds.scm (renamed from queries/t32/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/t32/highlights.scm (renamed from queries/t32/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/t32/indents.scm (renamed from queries/t32/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/t32/injections.scm (renamed from queries/smali/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/t32/locals.scm (renamed from queries/t32/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tablegen/folds.scm (renamed from queries/tablegen/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tablegen/highlights.scm (renamed from queries/tablegen/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tablegen/indents.scm (renamed from queries/tablegen/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tablegen/injections.scm (renamed from queries/tablegen/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tablegen/locals.scm (renamed from queries/tablegen/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tact/folds.scm (renamed from queries/tact/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tact/highlights.scm (renamed from queries/tact/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tact/indents.scm (renamed from queries/tact/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tact/injections.scm (renamed from queries/strace/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tact/locals.scm (renamed from queries/tact/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tcl/folds.scm (renamed from queries/tcl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tcl/highlights.scm (renamed from queries/tcl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tcl/indents.scm (renamed from queries/tcl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tcl/injections.scm (renamed from queries/t32/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/teal/folds.scm (renamed from queries/teal/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/teal/highlights.scm (renamed from queries/teal/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/teal/indents.scm (renamed from queries/teal/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/teal/injections.scm (renamed from queries/teal/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/teal/locals.scm (renamed from queries/teal/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/templ/folds.scm (renamed from queries/templ/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/templ/highlights.scm (renamed from queries/templ/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/templ/injections.scm (renamed from queries/templ/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tera/highlights.scm (renamed from queries/tera/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tera/injections.scm (renamed from queries/tera/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/terraform/folds.scm (renamed from queries/terraform/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/terraform/highlights.scm (renamed from queries/terraform/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/terraform/indents.scm (renamed from queries/terraform/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/terraform/injections.scm (renamed from queries/terraform/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/textproto/folds.scm (renamed from queries/textproto/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/textproto/highlights.scm (renamed from queries/textproto/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/textproto/indents.scm (renamed from queries/textproto/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/textproto/injections.scm (renamed from queries/tact/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/thrift/folds.scm (renamed from queries/thrift/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/thrift/highlights.scm (renamed from queries/thrift/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/thrift/indents.scm (renamed from queries/thrift/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/thrift/injections.scm (renamed from queries/tcl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/thrift/locals.scm (renamed from queries/thrift/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tiger/folds.scm (renamed from queries/tiger/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tiger/highlights.scm (renamed from queries/tiger/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tiger/indents.scm (renamed from queries/tiger/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tiger/injections.scm (renamed from queries/tiger/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tiger/locals.scm (renamed from queries/tiger/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tlaplus/folds.scm (renamed from queries/tlaplus/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tlaplus/highlights.scm (renamed from queries/tlaplus/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tlaplus/injections.scm (renamed from queries/tlaplus/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tlaplus/locals.scm (renamed from queries/tlaplus/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tmux/highlights.scm (renamed from queries/tmux/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tmux/injections.scm (renamed from queries/tmux/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/todotxt/highlights.scm (renamed from queries/todotxt/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/toml/folds.scm (renamed from queries/toml/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/toml/highlights.scm (renamed from queries/toml/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/toml/indents.scm (renamed from queries/toml/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/toml/injections.scm (renamed from queries/textproto/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/toml/locals.scm (renamed from queries/toml/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsv/highlights.scm (renamed from queries/tsv/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsx/folds.scm (renamed from queries/tsx/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsx/highlights.scm (renamed from queries/tsx/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsx/indents.scm (renamed from queries/tsx/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsx/injections.scm (renamed from queries/tsx/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/tsx/locals.scm (renamed from queries/tsx/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/turtle/folds.scm (renamed from queries/turtle/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/turtle/highlights.scm (renamed from queries/turtle/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/turtle/indents.scm (renamed from queries/turtle/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/turtle/injections.scm (renamed from queries/thrift/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/turtle/locals.scm (renamed from queries/turtle/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/twig/highlights.scm (renamed from queries/twig/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/twig/injections.scm (renamed from queries/twig/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typescript/folds.scm (renamed from queries/typescript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typescript/highlights.scm (renamed from queries/typescript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typescript/indents.scm (renamed from queries/typescript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typescript/injections.scm (renamed from queries/typescript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typescript/locals.scm (renamed from queries/typescript/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typespec/highlights.scm (renamed from queries/typespec/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typespec/indents.scm (renamed from queries/typespec/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typespec/injections.scm (renamed from queries/typespec/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typoscript/folds.scm (renamed from queries/typoscript/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typoscript/highlights.scm (renamed from queries/typoscript/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typoscript/indents.scm (renamed from queries/typoscript/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typoscript/injections.scm (renamed from queries/toml/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typst/folds.scm (renamed from queries/typst/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typst/highlights.scm (renamed from queries/typst/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typst/indents.scm (renamed from queries/typst/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/typst/injections.scm (renamed from queries/turtle/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/udev/highlights.scm (renamed from queries/udev/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/udev/injections.scm (renamed from queries/udev/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/udev/locals.scm (renamed from queries/udev/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ungrammar/folds.scm (renamed from queries/ungrammar/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ungrammar/highlights.scm (renamed from queries/ungrammar/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ungrammar/indents.scm (renamed from queries/ungrammar/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ungrammar/injections.scm (renamed from queries/typoscript/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ungrammar/locals.scm (renamed from queries/ungrammar/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/unison/folds.scm (renamed from queries/unison/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/unison/highlights.scm (renamed from queries/unison/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/unison/injections.scm (renamed from queries/ungrammar/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/usd/folds.scm (renamed from queries/usd/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/usd/highlights.scm (renamed from queries/usd/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/usd/indents.scm (renamed from queries/usd/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/usd/injections.scm (renamed from queries/usd/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/usd/locals.scm (renamed from queries/usd/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/uxntal/folds.scm (renamed from queries/uxntal/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/uxntal/highlights.scm (renamed from queries/uxntal/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/uxntal/indents.scm (renamed from queries/uxntal/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/uxntal/injections.scm (renamed from queries/uxntal/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/uxntal/locals.scm (renamed from queries/uxntal/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/v/folds.scm (renamed from queries/v/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/v/highlights.scm (renamed from queries/v/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/v/indents.scm (renamed from queries/v/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/v/injections.scm (renamed from queries/v/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/v/locals.scm (renamed from queries/v/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vala/folds.scm (renamed from queries/vala/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vala/highlights.scm (renamed from queries/vala/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vala/injections.scm (renamed from queries/vala/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vento/highlights.scm (renamed from queries/vento/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vento/injections.scm (renamed from queries/vento/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/verilog/folds.scm (renamed from queries/verilog/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/verilog/highlights.scm (renamed from queries/verilog/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/verilog/injections.scm (renamed from queries/vhs/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vhdl/folds.scm (renamed from queries/vhdl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vhdl/highlights.scm (renamed from queries/vhdl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vhdl/injections.scm (renamed from queries/vhdl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vhs/highlights.scm (renamed from queries/vhs/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vhs/injections.scm (renamed from queries/wit/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vim/folds.scm (renamed from queries/vim/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vim/highlights.scm (renamed from queries/vim/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vim/injections.scm (renamed from queries/vim/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vim/locals.scm (renamed from queries/vim/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vimdoc/highlights.scm (renamed from queries/vimdoc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vimdoc/injections.scm (renamed from queries/vimdoc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vrl/folds.scm (renamed from queries/vrl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vrl/highlights.scm (renamed from queries/vrl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vrl/indents.scm (renamed from queries/vrl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vrl/injections.scm (renamed from queries/vrl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vrl/locals.scm (renamed from queries/vrl/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vue/folds.scm (renamed from queries/vue/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vue/highlights.scm (renamed from queries/vue/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vue/indents.scm (renamed from queries/vue/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/vue/injections.scm (renamed from queries/vue/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl/folds.scm (renamed from queries/wgsl/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl/highlights.scm (renamed from queries/wgsl/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl/indents.scm (renamed from queries/wgsl/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl/injections.scm (renamed from queries/wgsl/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl_bevy/folds.scm (renamed from queries/wgsl_bevy/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl_bevy/highlights.scm (renamed from queries/wgsl_bevy/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wgsl_bevy/indents.scm (renamed from queries/wgsl_bevy/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wing/folds.scm (renamed from queries/wing/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wing/highlights.scm (renamed from queries/wing/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wing/injections.scm (renamed from queries/wing/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wing/locals.scm (renamed from queries/wing/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wit/folds.scm (renamed from queries/wit/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wit/highlights.scm (renamed from queries/wit/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/wit/injections.scm (renamed from queries/xcompose/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xcompose/highlights.scm (renamed from queries/xcompose/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xcompose/injections.scm (renamed from queries/typst/injections.scm) | 4 | ||||
| -rw-r--r-- | runtime/queries/xcompose/locals.scm (renamed from queries/xcompose/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xml/folds.scm (renamed from queries/xml/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xml/highlights.scm (renamed from queries/xml/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xml/indents.scm (renamed from queries/xml/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xml/injections.scm (renamed from queries/xml/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xml/locals.scm (renamed from queries/xml/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xresources/folds.scm (renamed from queries/xresources/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xresources/highlights.scm (renamed from queries/xresources/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xresources/injections.scm (renamed from queries/xresources/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/xresources/locals.scm (renamed from queries/xresources/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yaml/folds.scm (renamed from queries/yaml/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yaml/highlights.scm (renamed from queries/yaml/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yaml/indents.scm (renamed from queries/yaml/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yaml/injections.scm (renamed from queries/yaml/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yaml/locals.scm (renamed from queries/yaml/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yang/folds.scm (renamed from queries/yang/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yang/highlights.scm (renamed from queries/yang/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yang/indents.scm (renamed from queries/yang/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yang/injections.scm (renamed from queries/yang/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yuck/folds.scm (renamed from queries/yuck/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yuck/highlights.scm (renamed from queries/yuck/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yuck/indents.scm (renamed from queries/yuck/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yuck/injections.scm (renamed from queries/yuck/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/yuck/locals.scm (renamed from queries/yuck/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zathurarc/highlights.scm (renamed from queries/zathurarc/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zathurarc/injections.scm (renamed from queries/zathurarc/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zig/folds.scm (renamed from queries/zig/folds.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zig/highlights.scm (renamed from queries/zig/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zig/indents.scm (renamed from queries/zig/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zig/injections.scm (renamed from queries/zig/injections.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/zig/locals.scm (renamed from queries/zig/locals.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ziggy/highlights.scm (renamed from queries/ziggy/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ziggy/indents.scm (renamed from queries/ziggy/indents.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ziggy_schema/highlights.scm (renamed from queries/ziggy_schema/highlights.scm) | 0 | ||||
| -rw-r--r-- | runtime/queries/ziggy_schema/indents.scm (renamed from queries/ziggy_schema/indents.scm) | 0 | ||||
| -rwxr-xr-x | scripts/check-queries.lua | 80 | ||||
| -rwxr-xr-x | scripts/ci-install.sh | 4 | ||||
| -rwxr-xr-x | scripts/format-queries.lua | 76 | ||||
| -rw-r--r-- | scripts/minimal_init.lua | 36 | ||||
| -rwxr-xr-x | scripts/update-lockfile.sh | 16 | ||||
| -rwxr-xr-x | scripts/update-readme.lua | 90 | ||||
| -rwxr-xr-x | scripts/write-lockfile.lua | 56 | ||||
| -rw-r--r-- | tests/indent/algorithm_spec.lua | 32 | ||||
| -rw-r--r-- | tests/indent/angular_spec.lua | 38 | ||||
| -rw-r--r-- | tests/indent/c_spec.lua | 97 | ||||
| -rw-r--r-- | tests/indent/capnp_spec.lua | 28 | ||||
| -rw-r--r-- | tests/indent/common.lua | 79 | ||||
| -rw-r--r-- | tests/indent/cpp_spec.lua | 69 | ||||
| -rw-r--r-- | tests/indent/css_spec.lua | 18 | ||||
| -rw-r--r-- | tests/indent/dart_spec.lua | 59 | ||||
| -rw-r--r-- | tests/indent/dot_spec.lua | 24 | ||||
| -rw-r--r-- | tests/indent/gdscript_spec.lua | 14 | ||||
| -rw-r--r-- | tests/indent/gleam_spec.lua | 210 | ||||
| -rw-r--r-- | tests/indent/go_spec.lua | 20 | ||||
| -rw-r--r-- | tests/indent/graphql_spec.lua | 12 | ||||
| -rw-r--r-- | tests/indent/html_spec.lua | 38 | ||||
| -rw-r--r-- | tests/indent/java_spec.lua | 52 | ||||
| -rw-r--r-- | tests/indent/javascript_spec.lua | 126 | ||||
| -rw-r--r-- | tests/indent/jsx_spec.lua | 38 | ||||
| -rw-r--r-- | tests/indent/julia_spec.lua | 10 | ||||
| -rw-r--r-- | tests/indent/lua_spec.lua | 70 | ||||
| -rw-r--r-- | tests/indent/meson_spec.lua | 30 | ||||
| -rw-r--r-- | tests/indent/nickel_spec.lua | 28 | ||||
| -rw-r--r-- | tests/indent/nix_spec.lua | 24 | ||||
| -rw-r--r-- | tests/indent/nu_spec.lua | 10 | ||||
| -rw-r--r-- | tests/indent/php_spec.lua | 121 | ||||
| -rw-r--r-- | tests/indent/python_spec.lua | 160 | ||||
| -rw-r--r-- | tests/indent/ql_spec.lua | 18 | ||||
| -rw-r--r-- | tests/indent/query_spec.lua | 36 | ||||
| -rw-r--r-- | tests/indent/r_spec.lua | 48 | ||||
| -rw-r--r-- | tests/indent/rescript_spec.lua | 40 | ||||
| -rw-r--r-- | tests/indent/ruby_spec.lua | 24 | ||||
| -rw-r--r-- | tests/indent/rust_spec.lua | 110 | ||||
| -rw-r--r-- | tests/indent/smali_spec.lua | 29 | ||||
| -rw-r--r-- | tests/indent/sql_spec.lua | 12 | ||||
| -rw-r--r-- | tests/indent/sway_spec.lua | 20 | ||||
| -rw-r--r-- | tests/indent/swift_spec.lua | 39 | ||||
| -rw-r--r-- | tests/indent/t32_spec.lua | 144 | ||||
| -rw-r--r-- | tests/indent/terraform_spec.lua | 65 | ||||
| -rw-r--r-- | tests/indent/tiger_spec.lua | 272 | ||||
| -rw-r--r-- | tests/indent/usd_spec.lua | 16 | ||||
| -rw-r--r-- | tests/indent/vue_spec.lua | 23 | ||||
| -rw-r--r-- | tests/indent/wgsl_spec.lua | 36 | ||||
| -rw-r--r-- | tests/indent/yaml_spec.lua | 16 | ||||
| -rw-r--r-- | tests/indent/yang_spec.lua | 20 | ||||
| -rw-r--r-- | tests/indent/yuck_spec.lua | 16 | ||||
| -rw-r--r-- | tests/indent/zig_spec.lua | 16 | ||||
| -rw-r--r-- | tests/query/highlights/lua/test.lua | 4 | ||||
| -rw-r--r-- | tests/query/highlights_spec.lua | 47 | ||||
| -rw-r--r-- | tests/query/injection_spec.lua | 38 | ||||
| -rw-r--r-- | tests/unit/ts_utils_spec.lua | 114 |
1247 files changed, 5522 insertions, 8500 deletions
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cd0e51982..e51833814 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,7 +3,7 @@ name: Linting and style checking on: pull_request: branches: - - "master" + - "main" jobs: luacheck: @@ -37,7 +37,7 @@ jobs: name: Lint queries runs-on: ubuntu-latest env: - NVIM_TAG: stable + NVIM_TAG: nightly steps: - uses: actions/checkout@v4 - name: Prepare diff --git a/.github/workflows/test-queries.yml b/.github/workflows/test-queries.yml index 8fe1f082a..5e9be1e38 100644 --- a/.github/workflows/test-queries.yml +++ b/.github/workflows/test-queries.yml @@ -85,4 +85,4 @@ jobs: run: cp -r ~/AppData/Local/nvim/pack/nvim-treesitter/start/nvim-treesitter/parser/* parser - name: Check query files - run: $NVIM -l scripts/check-queries.lua + run: $NVIM -l ./scripts/check-queries.lua diff --git a/.stylua.toml b/.stylua.toml index ecb6dca5a..a2b344750 100644 --- a/.stylua.toml +++ b/.stylua.toml @@ -1,6 +1,6 @@ -column_width = 120 +column_width = 100 line_endings = "Unix" indent_type = "Spaces" indent_width = 2 -quote_style = "AutoPreferDouble" -call_parentheses = "None" +quote_style = "AutoPreferSingle" +call_parentheses = "Always" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 23321f0f7..473a26cb5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,10 +5,7 @@ First of all, thank you very much for contributing to `nvim-treesitter`. If you haven't already, you should really come and reach out to us on our [Matrix channel], so we can help you with any question you might have! -As you know, `nvim-treesitter` is roughly split in two parts: - -- Parser configurations : for various things like `locals`, `highlights` -- What we like to call _modules_ : tiny Lua modules that provide a given feature, based on parser configurations +The main goal of `nvim-treesitter` is to provide a framework to easily install parsers and queries. Depending on which part of the plugin you want to contribute to, please read the appropriate section. @@ -25,25 +22,9 @@ cargo install stylua ln -s ../../scripts/pre-push .git/hooks/pre-push ``` -## Adding new modules - -If you want to see a new functionality added to `nvim-treesitter` feel free to first open an issue -to that we can track our solution! -Thus far, there is basically two types of modules: - -- Little modules (like `incremental selection`) that are built in `nvim-treesitter`, we call them - `builtin modules`. -- Bigger modules (like `completion-treesitter`, or `nvim-tree-docs`), or modules that integrate - with other plugins, that we call `remote modules`. - -In any case, you can build your own module! To help you started in the process, we have a template -repository designed to build new modules [here](https://github.com/nvim-treesitter/module-template). -Feel free to use it, and contact us over on our -on the "Neovim tree-sitter" [Matrix channel]. - ## Parser configurations -Contributing to parser configurations is basically modifying one of the `queries/*/*.scm`. +Contributing to parser configurations is basically modifying one of the `runtime/queries/*/*.scm`. Each of these `scheme` files contains a _tree-sitter query_ for a given purpose. Before going any further, we highly suggest that you [read more about tree-sitter queries](https://tree-sitter.github.io/tree-sitter/using-parsers#pattern-matching-with-queries). @@ -60,13 +41,11 @@ For these types there is a _norm_ you will have to follow so that features work Here are some global advices: - If your language is listed [here](https://github.com/nvim-treesitter/nvim-treesitter#supported-languages), - you can install the [playground plugin](https://github.com/nvim-treesitter/playground). -- If your language is listed [here](https://github.com/nvim-treesitter/nvim-treesitter#supported-languages), you can debug and experiment with your queries there. - If not, you should consider installing the [tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/tree/master/cli), you should then be able to open a local playground using `tree-sitter build-wasm && tree-sitter web-ui` within the parsers repo. -- Examples of queries can be found in [queries/](queries/) +- Examples of queries can be found in [runtime/queries/](runtime/queries/) - Matches in the bottom will override queries that are above of them. #### Inheriting languages diff --git a/Makefile b/Makefile deleted file mode 100644 index 338c75463..000000000 --- a/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# https://github.com/luarocks/luarocks/wiki/Creating-a-Makefile-that-plays-nice-with-LuaRocks -build: - echo "Do nothing" - -install: - mkdir -p $(INST_LUADIR) - cp -r lua/* $(INST_LUADIR) @@ -1,5 +1,7 @@ +<h1 align="center"> + <img src="https://github.com/nvim-treesitter/nvim-treesitter/assets/2361214/0513b223-c902-4f12-92ee-8ac4d8d6f41f" alt="nvim-treesitter"> +</h1> <div align="center"> - <h1>nvim-treesitter</h1> <p> <a href="https://matrix.to/#/#nvim-treesitter:matrix.org"> <img alt="Matrix Chat" src="https://img.shields.io/matrix/nvim-treesitter:matrix.org" /> @@ -13,608 +15,111 @@ </p> </div> -<div align="center"> - <p> - <img src="assets/logo.png" align="center" alt="Logo" /> - </p> - <p> - <a href="https://github.com/tree-sitter/tree-sitter">Treesitter</a> - configurations and abstraction layer for - <a href="https://github.com/neovim/neovim/">Neovim</a>. - </p> - <p> - <i> - Logo by <a href="https://github.com/steelsojka">@steelsojka</a> - </i> - </p> -</div> - -The goal of `nvim-treesitter` is both to provide a simple and easy way to use the interface for [tree-sitter](https://github.com/tree-sitter/tree-sitter) in Neovim and to provide some basic functionality such as highlighting based on it: - - - -Traditional highlighting (left) vs Treesitter-based highlighting (right). -More examples can be found in [our gallery](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Gallery). - -**Warning: Treesitter and nvim-treesitter highlighting are an experimental feature of Neovim. -Please consider the experience with this plug-in as experimental until Tree-Sitter support in Neovim is stable! -We recommend using the nightly builds of Neovim if possible. -You can find the current roadmap [here](https://github.com/nvim-treesitter/nvim-treesitter/issues/4767). -The roadmap and all features of this plugin are open to change, and any suggestion will be highly appreciated!** - -Nvim-treesitter is based on three interlocking features: [**language parsers**](#language-parsers), [**queries**](#adding-queries), and [**modules**](#available-modules), where _modules_ provide features – e.g., highlighting – based on _queries_ for syntax objects extracted from a given buffer by _language parsers_. -Users will generally only need to interact with parsers and modules as explained in the next section. -For more detailed information on setting these up, see ["Advanced setup"](#advanced-setup). - ---- - -### Table of contents +# WARNING -- [Quickstart](#quickstart) -- [Supported languages](#supported-languages) -- [Available modules](#available-modules) -- [Advanced setup](#advanced-setup) -- [Extra features](#extra-features) -- [Troubleshooting](#troubleshooting) +**This branch is a [full, incompatible, rewrite of `nvim-treesitter`](https://github.com/nvim-treesitter/nvim-treesitter/issues/4767) and [work in progress](TODO.md). This branch REQUIRES (the latest commit on) Neovim `master`.** ---- +The `nvim-treesitter` plugin provides +1. functions for installing, updating, and removing [**tree-sitter parsers**](SUPPORTED_LANGUAGES.md); +2. a collection of **queries** for enabling tree-sitter features built into Neovim for these languages. # Quickstart ## Requirements -- **Neovim 0.10** or later ([nightly](https://github.com/neovim/neovim#install-from-source) recommended) +- Neovim 0.10.0 or later (nightly) - `tar` and `curl` in your path (or alternatively `git`) -- A C compiler in your path and libstdc++ installed ([Windows users please read this!](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Windows-support)). +- a C compiler in your path and libstdc++ installed ([Windows users please read this!](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Windows-support)) +- optional: `tree-sitter` CLI and `node` ## Installation You can install `nvim-treesitter` with your favorite package manager (or using the native `package` feature of vim, see `:h packages`). **NOTE: This plugin is only guaranteed to work with specific versions of language parsers** (as specified in the `lockfile.json`). **When upgrading the plugin, you must make sure that all installed parsers are updated to the latest version** via `:TSUpdate`. -It is strongly recommended to automate this; e.g., if you are using [vim-plug](https://github.com/junegunn/vim-plug), put this in your `init.vim` file: +It is strongly recommended to automate this; e.g., using [lazy.nvim](https://github.com/folke/lazy.nvim) -```vim -Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} -``` - -For other plugin managers such as `packer.nvim`, see this [Installation page from the wiki](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Installation) (Note that this page is community maintained). - -## Language parsers - -Treesitter uses a different _parser_ for every language, which needs to be generated via `tree-sitter-cli` from a `grammar.js` file, then compiled to a `.so` library that needs to be placed in neovim's `runtimepath` (typically under `parser/{language}.so`). -To simplify this, `nvim-treesitter` provides commands to automate this process. -If the language is already [supported by `nvim-treesitter`](#supported-languages), you can install it with - -```vim -:TSInstall <language_to_install> +```lua +require('lazy').setup( + { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', lazy = false } +) ``` -This command supports tab expansion. -You can also get a list of all available languages and their installation status with `:TSInstallInfo`. -Parsers not on this list can be added manually by following the steps described under ["Adding parsers"](#adding-parsers) below. - -To make sure a parser is at the latest compatible version (as specified in `nvim-treesitter`'s `lockfile.json`), use `:TSUpdate {language}`. To update all parsers unconditionally, use `:TSUpdate all` or just `:TSUpdate`. +**NOTE: This plugin does not support lazy-loading.** -## Modules +## Setup -Each module provides a distinct tree-sitter-based feature such as [highlighting](#highlight), [indentation](#indentation), or [folding](#folding); see [`:h nvim-treesitter-modules`](doc/nvim-treesitter.txt) or ["Available modules"](#available-modules) below for a list of modules and their options. - -Following examples assume that you are configuring neovim with lua. If you are using vimscript, see `:h lua-heredoc`. -All modules are disabled by default and need to be activated explicitly in your `init.lua`, e.g., via +`nvim-treesitter` can be configured by calling `setup`. The following snippet lists the available options and their default values. **You do not need to call `setup` for `nvim-treesitter` to work using default values.** ```lua -require'nvim-treesitter.configs'.setup { - -- A list of parser names, or "all" (the listed parsers MUST always be installed) - ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline" }, +require'nvim-treesitter'.setup { + -- A list of parser names or tiers ('core', 'stable', 'community', 'unstable') + ensure_install = { }, + + -- List of parsers to ignore installing + ignore_install = { }, - -- Install parsers synchronously (only applied to `ensure_installed`) + -- Install parsers synchronously (only applied to `ensure_install`) sync_install = false, -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally - auto_install = true, - - -- List of parsers to ignore installing (or "all") - ignore_install = { "javascript" }, - - ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) - -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + auto_install = false, - highlight = { - enable = true, - - -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to - -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is - -- the name of the parser) - -- list of language that will be disabled - disable = { "c", "rust" }, - -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files - disable = function(lang, buf) - local max_filesize = 100 * 1024 -- 100 KB - local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) - if ok and stats and stats.size > max_filesize then - return true - end - end, - - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, + -- Directory to install parsers and queries to + install_dir = vim.fn.stdpath('data') .. '/site' } ``` -Each module can also be enabled or disabled interactively through the following commands: - -```vim -:TSBufEnable {module} " enable module on current buffer -:TSBufDisable {module} " disable module on current buffer -:TSEnable {module} [{ft}] " enable module on every buffer. If filetype is specified, enable only for this filetype. -:TSDisable {module} [{ft}] " disable module on every buffer. If filetype is specified, disable only for this filetype. -:TSModuleInfo [{module}] " list information about modules state for each filetype -``` - Check [`:h nvim-treesitter-commands`](doc/nvim-treesitter.txt) for a list of all available commands. -It may be necessary to reload the buffer (e.g., via `:e`) after enabling a module interactively. # Supported languages For `nvim-treesitter` to support a specific feature for a specific language requires both a parser for that language and an appropriate language-specific query file for that feature. -The following is a list of languages for which a parser can be installed through `:TSInstall`; a checked box means that `nvim-treesitter` also contains queries at least for the `highlight` module. - -Experimental parsers are parsers that have a maintainer but are not stable enough for -daily use yet. +A list of the currently supported languages can be found [on this page](SUPPORTED_LANGUAGES.md). We are looking for maintainers to add more parsers and to write query files for their languages. Check our [tracking issue](https://github.com/nvim-treesitter/nvim-treesitter/issues/2282) for open language requests. -<!--This section of the README is automatically updated by a CI job--> -<!--parserinfo--> -- [x] [ada](https://github.com/briot/tree-sitter-ada) (maintained by @briot) -- [x] [agda](https://github.com/tree-sitter/tree-sitter-agda) (maintained by @Decodetalkers) -- [x] [angular](https://github.com/dlvandenberg/tree-sitter-angular) (experimental, maintained by @dlvandenberg) -- [x] [apex](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland) -- [x] [arduino](https://github.com/ObserverOfTime/tree-sitter-arduino) (maintained by @ObserverOfTime) -- [x] [asm](https://github.com/RubixDev/tree-sitter-asm) (maintained by @RubixDev) -- [x] [astro](https://github.com/virchau13/tree-sitter-astro) (maintained by @virchau13) -- [x] [authzed](https://github.com/mleonidas/tree-sitter-authzed) (maintained by @mattpolzin) -- [ ] [awk](https://github.com/Beaglefoot/tree-sitter-awk) -- [x] [bash](https://github.com/tree-sitter/tree-sitter-bash) (maintained by @TravonteD) -- [x] [bass](https://github.com/vito/tree-sitter-bass) (maintained by @amaanq) -- [x] [beancount](https://github.com/polarmutex/tree-sitter-beancount) (maintained by @polarmutex) -- [x] [bibtex](https://github.com/latex-lsp/tree-sitter-bibtex) (maintained by @theHamsta, @clason) -- [x] [bicep](https://github.com/amaanq/tree-sitter-bicep) (maintained by @amaanq) -- [x] [bitbake](https://github.com/amaanq/tree-sitter-bitbake) (maintained by @amaanq) -- [x] [blade](https://github.com/EmranMR/tree-sitter-blade) (maintained by @calebdw) -- [x] [blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint.git) (experimental, maintained by @gabmus) -- [x] [bp](https://github.com/ambroisie/tree-sitter-bp) (maintained by @ambroisie) -- [x] [brightscript](https://github.com/ajdelcimmuto/tree-sitter-brightscript) (maintained by @ajdelcimmuto) -- [x] [c](https://github.com/tree-sitter/tree-sitter-c) (maintained by @amaanq) -- [x] [c_sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) (maintained by @amaanq) -- [x] [caddy](https://github.com/opa-oz/tree-sitter-caddy) (maintained by @opa-oz) -- [x] [cairo](https://github.com/amaanq/tree-sitter-cairo) (maintained by @amaanq) -- [x] [capnp](https://github.com/amaanq/tree-sitter-capnp) (maintained by @amaanq) -- [x] [chatito](https://github.com/ObserverOfTime/tree-sitter-chatito) (maintained by @ObserverOfTime) -- [x] [circom](https://github.com/Decurity/tree-sitter-circom) (maintained by @alexandr-martirosyan) -- [x] [clojure](https://github.com/sogaiu/tree-sitter-clojure) (maintained by @NoahTheDuke) -- [x] [cmake](https://github.com/uyha/tree-sitter-cmake) (maintained by @uyha) -- [x] [comment](https://github.com/stsewd/tree-sitter-comment) (maintained by @stsewd) -- [x] [commonlisp](https://github.com/theHamsta/tree-sitter-commonlisp) (maintained by @theHamsta) -- [x] [cooklang](https://github.com/addcninblue/tree-sitter-cooklang) (maintained by @addcninblue) -- [x] [corn](https://github.com/jakestanger/tree-sitter-corn) (maintained by @jakestanger) -- [x] [cpon](https://github.com/amaanq/tree-sitter-cpon) (maintained by @amaanq) -- [x] [cpp](https://github.com/tree-sitter/tree-sitter-cpp) (maintained by @theHamsta) -- [x] [css](https://github.com/tree-sitter/tree-sitter-css) (maintained by @TravonteD) -- [x] [csv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq) -- [x] [cuda](https://github.com/theHamsta/tree-sitter-cuda) (maintained by @theHamsta) -- [x] [cue](https://github.com/eonpatapon/tree-sitter-cue) (maintained by @amaanq) -- [x] [cylc](https://github.com/elliotfontaine/tree-sitter-cylc) (maintained by @elliotfontaine) -- [x] [d](https://github.com/gdamore/tree-sitter-d) (maintained by @amaanq) -- [x] [dart](https://github.com/UserNobody14/tree-sitter-dart) (maintained by @akinsho) -- [x] [desktop](https://github.com/ValdezFOmar/tree-sitter-desktop) (maintained by @ValdezFOmar) -- [x] [devicetree](https://github.com/joelspadin/tree-sitter-devicetree) (maintained by @jedrzejboczar) -- [x] [dhall](https://github.com/jbellerb/tree-sitter-dhall) (maintained by @amaanq) -- [x] [diff](https://github.com/the-mikedavis/tree-sitter-diff) (maintained by @gbprod) -- [x] [disassembly](https://github.com/ColinKennedy/tree-sitter-disassembly) (maintained by @ColinKennedy) -- [x] [djot](https://github.com/treeman/tree-sitter-djot) (maintained by @NoahTheDuke) -- [x] [dockerfile](https://github.com/camdencheek/tree-sitter-dockerfile) (maintained by @camdencheek) -- [x] [dot](https://github.com/rydesun/tree-sitter-dot) (maintained by @rydesun) -- [x] [doxygen](https://github.com/amaanq/tree-sitter-doxygen) (maintained by @amaanq) -- [x] [dtd](https://github.com/tree-sitter-grammars/tree-sitter-xml) (maintained by @ObserverOfTime) -- [x] [earthfile](https://github.com/glehmann/tree-sitter-earthfile) (maintained by @glehmann) -- [x] [ebnf](https://github.com/RubixDev/ebnf) (experimental, maintained by @RubixDev) -- [x] [editorconfig](https://github.com/ValdezFOmar/tree-sitter-editorconfig) (maintained by @ValdezFOmar) -- [x] [eds](https://github.com/uyha/tree-sitter-eds) (maintained by @uyha) -- [x] [eex](https://github.com/connorlay/tree-sitter-eex) (maintained by @connorlay) -- [x] [elixir](https://github.com/elixir-lang/tree-sitter-elixir) (maintained by @connorlay) -- [x] [elm](https://github.com/elm-tooling/tree-sitter-elm) (maintained by @zweimach) -- [x] [elsa](https://github.com/glapa-grossklag/tree-sitter-elsa) (maintained by @glapa-grossklag, @amaanq) -- [x] [elvish](https://github.com/elves/tree-sitter-elvish) (maintained by @elves) -- [ ] [embedded_template](https://github.com/tree-sitter/tree-sitter-embedded-template) -- [x] [enforce](https://github.com/simonvic/tree-sitter-enforce) (maintained by @simonvic) -- [x] [erlang](https://github.com/WhatsApp/tree-sitter-erlang) (maintained by @filmor) -- [x] [facility](https://github.com/FacilityApi/tree-sitter-facility) (maintained by @bryankenote) -- [x] [faust](https://github.com/khiner/tree-sitter-faust) (maintained by @khiner) -- [x] [fennel](https://github.com/alexmozaidze/tree-sitter-fennel) (maintained by @alexmozaidze) -- [x] [fidl](https://github.com/google/tree-sitter-fidl) (maintained by @chaopeng) -- [x] [firrtl](https://github.com/amaanq/tree-sitter-firrtl) (maintained by @amaanq) -- [x] [fish](https://github.com/ram02z/tree-sitter-fish) (maintained by @ram02z) -- [x] [foam](https://github.com/FoamScience/tree-sitter-foam) (experimental, maintained by @FoamScience) -- [x] [forth](https://github.com/AlexanderBrevig/tree-sitter-forth) (maintained by @amaanq) -- [x] [fortran](https://github.com/stadelmanma/tree-sitter-fortran) (maintained by @amaanq) -- [x] [fsh](https://github.com/mgramigna/tree-sitter-fsh) (maintained by @mgramigna) -- [x] [fsharp](https://github.com/ionide/tree-sitter-fsharp) (maintained by @nsidorenco) -- [x] [func](https://github.com/amaanq/tree-sitter-func) (maintained by @amaanq) -- [x] [fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) (maintained by @jirgn) -- [x] [GAP system](https://github.com/gap-system/tree-sitter-gap) (maintained by @reiniscirpons) -- [x] [GAP system test files](https://github.com/gap-system/tree-sitter-gaptst) (maintained by @reiniscirpons) -- [x] [Godot (gdscript)](https://github.com/PrestonKnopp/tree-sitter-gdscript) (maintained by @PrestonKnopp) -- [x] [gdshader](https://github.com/GodOfAvacyn/tree-sitter-gdshader) (maintained by @godofavacyn) -- [x] [git_config](https://github.com/the-mikedavis/tree-sitter-git-config) (maintained by @amaanq) -- [x] [git_rebase](https://github.com/the-mikedavis/tree-sitter-git-rebase) (maintained by @gbprod) -- [x] [gitattributes](https://github.com/ObserverOfTime/tree-sitter-gitattributes) (maintained by @ObserverOfTime) -- [x] [gitcommit](https://github.com/gbprod/tree-sitter-gitcommit) (maintained by @gbprod) -- [x] [gitignore](https://github.com/shunsambongi/tree-sitter-gitignore) (maintained by @theHamsta) -- [x] [gleam](https://github.com/gleam-lang/tree-sitter-gleam) (maintained by @amaanq) -- [x] [Glimmer and Ember](https://github.com/ember-tooling/tree-sitter-glimmer) (maintained by @NullVoxPopuli) -- [x] [glimmer_javascript](https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript) (maintained by @NullVoxPopuli) -- [x] [glimmer_typescript](https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript) (maintained by @NullVoxPopuli) -- [x] [glsl](https://github.com/theHamsta/tree-sitter-glsl) (maintained by @theHamsta) -- [x] [GN (Generate Ninja)](https://github.com/amaanq/tree-sitter-gn) (maintained by @amaanq) -- [x] [gnuplot](https://github.com/dpezto/tree-sitter-gnuplot) (maintained by @dpezto) -- [x] [go](https://github.com/tree-sitter/tree-sitter-go) (maintained by @theHamsta, @WinWisely268) -- [x] [goctl](https://github.com/chaozwn/tree-sitter-goctl) (maintained by @chaozwn) -- [x] [Godot Resources (gdresource)](https://github.com/PrestonKnopp/tree-sitter-godot-resource) (maintained by @pierpo) -- [x] [gomod](https://github.com/camdencheek/tree-sitter-go-mod) (maintained by @camdencheek) -- [x] [gosum](https://github.com/amaanq/tree-sitter-go-sum) (maintained by @amaanq) -- [x] [gotmpl](https://github.com/ngalaiko/tree-sitter-go-template) (maintained by @qvalentin) -- [x] [gowork](https://github.com/omertuc/tree-sitter-go-work) (maintained by @omertuc) -- [x] [gpg](https://github.com/ObserverOfTime/tree-sitter-gpg-config) (maintained by @ObserverOfTime) -- [x] [graphql](https://github.com/bkegley/tree-sitter-graphql) (maintained by @bkegley) -- [x] [gren](https://github.com/MaeBrooks/tree-sitter-gren) (maintained by @MaeBrooks) -- [x] [groovy](https://github.com/murtaza64/tree-sitter-groovy) (maintained by @murtaza64) -- [x] [gstlaunch](https://github.com/theHamsta/tree-sitter-gstlaunch) (maintained by @theHamsta) -- [ ] [hack](https://github.com/slackhq/tree-sitter-hack) -- [x] [hare](https://github.com/amaanq/tree-sitter-hare) (maintained by @amaanq) -- [x] [haskell](https://github.com/tree-sitter/tree-sitter-haskell) (maintained by @mrcjkb) -- [x] [haskell_persistent](https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent) (maintained by @lykahb) -- [x] [hcl](https://github.com/MichaHoffmann/tree-sitter-hcl) (maintained by @MichaHoffmann) -- [x] [heex](https://github.com/connorlay/tree-sitter-heex) (maintained by @connorlay) -- [x] [helm](https://github.com/ngalaiko/tree-sitter-go-template) (maintained by @qvalentin) -- [x] [hjson](https://github.com/winston0410/tree-sitter-hjson) (maintained by @winston0410) -- [x] [hlsl](https://github.com/theHamsta/tree-sitter-hlsl) (maintained by @theHamsta) -- [x] [hlsplaylist](https://github.com/Freed-Wu/tree-sitter-hlsplaylist) (maintained by @Freed-Wu) -- [x] [hocon](https://github.com/antosha417/tree-sitter-hocon) (maintained by @antosha417) -- [x] [hoon](https://github.com/urbit-pilled/tree-sitter-hoon) (experimental, maintained by @urbit-pilled) -- [x] [html](https://github.com/tree-sitter/tree-sitter-html) (maintained by @TravonteD) -- [x] [htmldjango](https://github.com/interdependence/tree-sitter-htmldjango) (experimental, maintained by @ObserverOfTime) -- [x] [http](https://github.com/rest-nvim/tree-sitter-http) (maintained by @amaanq, @NTBBloodbath) -- [x] [hurl](https://github.com/pfeiferj/tree-sitter-hurl) (maintained by @pfeiferj) -- [x] [hyprlang](https://github.com/luckasRanarison/tree-sitter-hyprlang) (maintained by @luckasRanarison) -- [x] [idl](https://github.com/cathaysia/tree-sitter-idl) (maintained by @cathaysia) -- [x] [idris](https://github.com/kayhide/tree-sitter-idris) (maintained by @srghma) -- [x] [ini](https://github.com/justinmk/tree-sitter-ini) (experimental, maintained by @theHamsta) -- [x] [inko](https://github.com/inko-lang/tree-sitter-inko) (maintained by @yorickpeterse) -- [x] [ipkg](https://github.com/srghma/tree-sitter-ipkg) (maintained by @srghma) -- [x] [ispc](https://github.com/fab4100/tree-sitter-ispc) (maintained by @fab4100) -- [x] [janet_simple](https://github.com/sogaiu/tree-sitter-janet-simple) (maintained by @sogaiu) -- [x] [java](https://github.com/tree-sitter/tree-sitter-java) (maintained by @p00f) -- [x] [javadoc](https://github.com/rmuir/tree-sitter-javadoc) (maintained by @rmuir) -- [x] [javascript](https://github.com/tree-sitter/tree-sitter-javascript) (maintained by @steelsojka) -- [x] [jinja](https://github.com/cathaysia/tree-sitter-jinja) (maintained by @cathaysia) -- [x] [jinja_inline](https://github.com/cathaysia/tree-sitter-jinja) (maintained by @cathaysia) -- [x] [jq](https://github.com/flurie/tree-sitter-jq) (maintained by @ObserverOfTime) -- [x] [jsdoc](https://github.com/tree-sitter/tree-sitter-jsdoc) (maintained by @steelsojka) -- [x] [json](https://github.com/tree-sitter/tree-sitter-json) (maintained by @steelsojka) -- [x] [json5](https://github.com/Joakker/tree-sitter-json5) (maintained by @Joakker) -- [x] [JSON with comments](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git) (maintained by @WhyNotHugo) -- [x] [jsonnet](https://github.com/sourcegraph/tree-sitter-jsonnet) (maintained by @nawordar) -- [x] [julia](https://github.com/tree-sitter/tree-sitter-julia) (maintained by @fredrikekre) -- [x] [just](https://github.com/IndianBoy42/tree-sitter-just) (maintained by @Hubro) -- [x] [kcl](https://github.com/kcl-lang/tree-sitter-kcl) (maintained by @bertbaron) -- [x] [kconfig](https://github.com/amaanq/tree-sitter-kconfig) (maintained by @amaanq) -- [x] [kdl](https://github.com/amaanq/tree-sitter-kdl) (maintained by @amaanq) -- [x] [kotlin](https://github.com/fwcd/tree-sitter-kotlin) (maintained by @SalBakraa) -- [x] [koto](https://github.com/koto-lang/tree-sitter-koto) (maintained by @irh) -- [x] [kusto](https://github.com/Willem-J-an/tree-sitter-kusto) (maintained by @Willem-J-an) -- [x] [lalrpop](https://github.com/traxys/tree-sitter-lalrpop) (maintained by @traxys) -- [x] [latex](https://github.com/latex-lsp/tree-sitter-latex) (maintained by @theHamsta, @clason) -- [x] [ledger](https://github.com/cbarrete/tree-sitter-ledger) (maintained by @cbarrete) -- [x] [leo](https://github.com/r001/tree-sitter-leo) (maintained by @r001) -- [x] [linkerscript](https://github.com/amaanq/tree-sitter-linkerscript) (maintained by @amaanq) -- [x] [liquid](https://github.com/hankthetank27/tree-sitter-liquid) (maintained by @hankthetank27) -- [x] [liquidsoap](https://github.com/savonet/tree-sitter-liquidsoap) (maintained by @toots) -- [x] [llvm](https://github.com/benwilliamgraham/tree-sitter-llvm) (maintained by @benwilliamgraham) -- [x] [lua](https://github.com/MunifTanjim/tree-sitter-lua) (maintained by @muniftanjim) -- [x] [luadoc](https://github.com/amaanq/tree-sitter-luadoc) (maintained by @amaanq) -- [x] [lua patterns](https://github.com/amaanq/tree-sitter-luap) (maintained by @amaanq) -- [x] [luau](https://github.com/amaanq/tree-sitter-luau) (maintained by @amaanq) -- [x] [m68k](https://github.com/grahambates/tree-sitter-m68k) (maintained by @grahambates) -- [x] [make](https://github.com/alemuller/tree-sitter-make) (maintained by @lewis6991) -- [x] [markdown (basic highlighting)](https://github.com/MDeiml/tree-sitter-markdown) (experimental, maintained by @MDeiml) -- [x] [markdown_inline (needed for full highlighting)](https://github.com/MDeiml/tree-sitter-markdown) (experimental, maintained by @MDeiml) -- [x] [matlab](https://github.com/acristoffers/tree-sitter-matlab) (maintained by @acristoffers) -- [x] [menhir](https://github.com/Kerl13/tree-sitter-menhir) (maintained by @Kerl13) -- [ ] [mermaid](https://github.com/monaqa/tree-sitter-mermaid) (experimental) -- [x] [meson](https://github.com/Decodetalkers/tree-sitter-meson) (maintained by @Decodetalkers) -- [x] [mlir](https://github.com/artagnon/tree-sitter-mlir) (experimental, maintained by @artagnon) -- [x] [muttrc](https://github.com/neomutt/tree-sitter-muttrc) (maintained by @Freed-Wu) -- [x] [nasm](https://github.com/naclsn/tree-sitter-nasm) (maintained by @ObserverOfTime) -- [x] [nginx](https://github.com/opa-oz/tree-sitter-nginx) (maintained by @opa-oz) -- [ ] [nickel](https://github.com/nickel-lang/tree-sitter-nickel) -- [x] [nim](https://github.com/alaviss/tree-sitter-nim) (maintained by @aMOPel) -- [x] [nim_format_string](https://github.com/aMOPel/tree-sitter-nim-format-string) (maintained by @aMOPel) -- [x] [ninja](https://github.com/alemuller/tree-sitter-ninja) (maintained by @alemuller) -- [x] [nix](https://github.com/cstrahan/tree-sitter-nix) (maintained by @leo60228) -- [x] [norg](https://github.com/nvim-neorg/tree-sitter-norg) (maintained by @JoeyGrajciar, @vhyrro) -- [x] [nqc](https://github.com/amaanq/tree-sitter-nqc) (maintained by @amaanq) -- [x] [nu](https://github.com/nushell/tree-sitter-nu) (maintained by @abhisheksingh0x558) -- [x] [objc](https://github.com/amaanq/tree-sitter-objc) (maintained by @amaanq) -- [x] [objdump](https://github.com/ColinKennedy/tree-sitter-objdump) (maintained by @ColinKennedy) -- [x] [ocaml](https://github.com/tree-sitter/tree-sitter-ocaml) (maintained by @undu) -- [x] [ocaml_interface](https://github.com/tree-sitter/tree-sitter-ocaml) (maintained by @undu) -- [x] [ocamllex](https://github.com/atom-ocaml/tree-sitter-ocamllex) (maintained by @undu) -- [x] [odin](https://github.com/amaanq/tree-sitter-odin) (maintained by @amaanq) -- [x] [pascal](https://github.com/Isopod/tree-sitter-pascal) (maintained by @Isopod) -- [x] [passwd](https://github.com/ath3/tree-sitter-passwd) (maintained by @amaanq) -- [x] [pem](https://github.com/ObserverOfTime/tree-sitter-pem) (maintained by @ObserverOfTime) -- [x] [perl](https://github.com/tree-sitter-perl/tree-sitter-perl) (maintained by @RabbiVeesh, @LeoNerd) -- [x] [php](https://github.com/tree-sitter/tree-sitter-php) (maintained by @tk-shirasaka, @calebdw) -- [x] [php_only](https://github.com/tree-sitter/tree-sitter-php) (maintained by @tk-shirasaka, @calebdw) -- [x] [phpdoc](https://github.com/claytonrcarter/tree-sitter-phpdoc) (experimental, maintained by @mikehaertl) -- [x] [pioasm](https://github.com/leo60228/tree-sitter-pioasm) (maintained by @leo60228) -- [x] [po](https://github.com/erasin/tree-sitter-po) (maintained by @amaanq) -- [x] [pod](https://github.com/tree-sitter-perl/tree-sitter-pod) (maintained by @RabbiVeesh, @LeoNerd) -- [x] [Path of Exile item filter](https://github.com/ObserverOfTime/tree-sitter-poe-filter) (experimental, maintained by @ObserverOfTime) -- [x] [pony](https://github.com/amaanq/tree-sitter-pony) (maintained by @amaanq, @mfelsche) -- [x] [powershell](https://github.com/airbus-cert/tree-sitter-powershell) (maintained by @L2jLiga) -- [x] [printf](https://github.com/ObserverOfTime/tree-sitter-printf) (maintained by @ObserverOfTime) -- [x] [prisma](https://github.com/victorhqc/tree-sitter-prisma) (maintained by @elianiva) -- [x] [problog](https://github.com/foxyseta/tree-sitter-prolog) (maintained by @foxyseta) -- [x] [prolog](https://github.com/foxyseta/tree-sitter-prolog) (maintained by @foxyseta) -- [x] [promql](https://github.com/MichaHoffmann/tree-sitter-promql) (maintained by @MichaHoffmann) -- [x] [properties](https://github.com/tree-sitter-grammars/tree-sitter-properties) (maintained by @ObserverOfTime) -- [x] [proto](https://github.com/treywood/tree-sitter-proto) (maintained by @treywood) -- [x] [prql](https://github.com/PRQL/tree-sitter-prql) (maintained by @matthias-Q) -- [x] [psv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq) -- [x] [pug](https://github.com/zealot128/tree-sitter-pug) (experimental, maintained by @zealot128) -- [x] [puppet](https://github.com/amaanq/tree-sitter-puppet) (maintained by @amaanq) -- [x] [purescript](https://github.com/postsolar/tree-sitter-purescript) (maintained by @postsolar) -- [x] [PyPA manifest](https://github.com/ObserverOfTime/tree-sitter-pymanifest) (maintained by @ObserverOfTime) -- [x] [python](https://github.com/tree-sitter/tree-sitter-python) (maintained by @stsewd, @theHamsta) -- [x] [ql](https://github.com/tree-sitter/tree-sitter-ql) (maintained by @pwntester) -- [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq) -- [x] [qmljs](https://github.com/yuja/tree-sitter-qmljs) (maintained by @Decodetalkers) -- [x] [Tree-Sitter query language](https://github.com/nvim-treesitter/tree-sitter-query) (maintained by @steelsojka) -- [x] [r](https://github.com/r-lib/tree-sitter-r) (maintained by @ribru17) -- [ ] [racket](https://github.com/6cdh/tree-sitter-racket) -- [x] [ralph](https://github.com/alephium/tree-sitter-ralph) (maintained by @tdroxler) -- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte) -- [x] [razor](https://github.com/tris203/tree-sitter-razor) (maintained by @tris203) -- [x] [rbs](https://github.com/joker1007/tree-sitter-rbs) (maintained by @joker1007) -- [x] [re2c](https://github.com/amaanq/tree-sitter-re2c) (maintained by @amaanq) -- [x] [readline](https://github.com/ribru17/tree-sitter-readline) (maintained by @ribru17) -- [x] [regex](https://github.com/tree-sitter/tree-sitter-regex) (maintained by @theHamsta) -- [x] [rego](https://github.com/FallenAngel97/tree-sitter-rego) (maintained by @FallenAngel97) -- [x] [pip requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) (maintained by @ObserverOfTime) -- [x] [rescript](https://github.com/rescript-lang/tree-sitter-rescript) (maintained by @ribru17) -- [x] [rnoweb](https://github.com/bamonroe/tree-sitter-rnoweb) (maintained by @bamonroe) -- [x] [robot](https://github.com/Hubro/tree-sitter-robot) (maintained by @Hubro) -- [x] [robots](https://github.com/opa-oz/tree-sitter-robots-txt) (maintained by @opa-oz) -- [x] [roc](https://github.com/faldor20/tree-sitter-roc) (maintained by @nat-418) -- [x] [ron](https://github.com/amaanq/tree-sitter-ron) (maintained by @amaanq) -- [x] [rst](https://github.com/stsewd/tree-sitter-rst) (maintained by @stsewd) -- [x] [ruby](https://github.com/tree-sitter/tree-sitter-ruby) (maintained by @TravonteD) -- [x] [runescript](https://github.com/2004Scape/tree-sitter-runescript) (maintained by @2004Scape) -- [x] [rust](https://github.com/tree-sitter/tree-sitter-rust) (maintained by @amaanq) -- [x] [scala](https://github.com/tree-sitter/tree-sitter-scala) (maintained by @stevanmilic) -- [x] [scfg](https://github.com/rockorager/tree-sitter-scfg) (maintained by @WhyNotHugo) -- [ ] [scheme](https://github.com/6cdh/tree-sitter-scheme) -- [x] [scss](https://github.com/serenadeai/tree-sitter-scss) (maintained by @elianiva) -- [x] [sflog](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland) -- [x] [slang](https://github.com/theHamsta/tree-sitter-slang) (experimental, maintained by @theHamsta) -- [x] [slim](https://github.com/theoo/tree-sitter-slim) (maintained by @theoo) -- [x] [slint](https://github.com/slint-ui/tree-sitter-slint) (maintained by @hunger) -- [x] [smali](https://github.com/tree-sitter-grammars/tree-sitter-smali) (maintained by @amaanq) -- [x] [smithy](https://github.com/indoorvivants/tree-sitter-smithy) (maintained by @amaanq, @keynmol) -- [ ] [snakemake](https://github.com/osthomas/tree-sitter-snakemake) (experimental) -- [x] [solidity](https://github.com/JoranHonig/tree-sitter-solidity) (maintained by @amaanq) -- [x] [soql](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland) -- [x] [sosl](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland) -- [x] [sourcepawn](https://github.com/nilshelmig/tree-sitter-sourcepawn) (maintained by @Sarrus1) -- [x] [sparql](https://github.com/GordianDziwis/tree-sitter-sparql) (maintained by @GordianDziwis) -- [x] [sql](https://github.com/derekstride/tree-sitter-sql) (maintained by @derekstride) -- [x] [squirrel](https://github.com/amaanq/tree-sitter-squirrel) (maintained by @amaanq) -- [x] [ssh_config](https://github.com/ObserverOfTime/tree-sitter-ssh-config) (maintained by @ObserverOfTime) -- [x] [starlark](https://github.com/amaanq/tree-sitter-starlark) (maintained by @amaanq) -- [x] [strace](https://github.com/sigmaSd/tree-sitter-strace) (maintained by @amaanq) -- [x] [styled](https://github.com/mskelton/tree-sitter-styled) (maintained by @mskelton) -- [x] [supercollider](https://github.com/madskjeldgaard/tree-sitter-supercollider) (maintained by @madskjeldgaard) -- [x] [superhtml](https://github.com/kristoff-it/superhtml) (maintained by @rockorager) -- [x] [surface](https://github.com/connorlay/tree-sitter-surface) (maintained by @connorlay) -- [x] [svelte](https://github.com/tree-sitter-grammars/tree-sitter-svelte) (maintained by @amaanq) -- [x] [sway](https://github.com/FuelLabs/tree-sitter-sway.git) (maintained by @ribru17) -- [x] [swift](https://github.com/alex-pinkus/tree-sitter-swift) (maintained by @alex-pinkus) -- [x] [sxhkdrc](https://github.com/RaafatTurki/tree-sitter-sxhkdrc) (maintained by @RaafatTurki) -- [x] [systemtap](https://github.com/ok-ryoko/tree-sitter-systemtap) (maintained by @ok-ryoko) -- [x] [t32](https://gitlab.com/xasc/tree-sitter-t32.git) (maintained by @xasc) -- [x] [tablegen](https://github.com/amaanq/tree-sitter-tablegen) (maintained by @amaanq) -- [x] [tact](https://github.com/tact-lang/tree-sitter-tact) (maintained by @novusnota) -- [x] [tcl](https://github.com/tree-sitter-grammars/tree-sitter-tcl) (maintained by @lewis6991) -- [x] [teal](https://github.com/euclidianAce/tree-sitter-teal) (maintained by @euclidianAce) -- [x] [templ](https://github.com/vrischmann/tree-sitter-templ) (maintained by @vrischmann) -- [x] [tera](https://github.com/uncenter/tree-sitter-tera) (maintained by @uncenter) -- [x] [terraform](https://github.com/MichaHoffmann/tree-sitter-hcl) (maintained by @MichaHoffmann) -- [x] [textproto](https://github.com/PorterAtGoogle/tree-sitter-textproto) (maintained by @Porter) -- [x] [thrift](https://github.com/duskmoon314/tree-sitter-thrift) (maintained by @amaanq, @duskmoon314) -- [x] [tiger](https://github.com/ambroisie/tree-sitter-tiger) (maintained by @ambroisie) -- [x] [tlaplus](https://github.com/tlaplus-community/tree-sitter-tlaplus) (maintained by @ahelwer, @susliko) -- [x] [tmux](https://github.com/Freed-Wu/tree-sitter-tmux) (maintained by @Freed-Wu) -- [x] [todotxt](https://github.com/arnarg/tree-sitter-todotxt) (experimental, maintained by @arnarg) -- [x] [toml](https://github.com/tree-sitter-grammars/tree-sitter-toml) (maintained by @tk-shirasaka) -- [x] [tsv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq) -- [x] [tsx](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka) -- [x] [turtle](https://github.com/GordianDziwis/tree-sitter-turtle) (maintained by @GordianDziwis) -- [x] [twig](https://github.com/gbprod/tree-sitter-twig) (maintained by @gbprod) -- [x] [typescript](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka) -- [x] [typespec](https://github.com/happenslol/tree-sitter-typespec) (maintained by @happenslol) -- [x] [typoscript](https://github.com/Teddytrombone/tree-sitter-typoscript) (maintained by @Teddytrombone) -- [x] [typst](https://github.com/uben0/tree-sitter-typst) (maintained by @uben0, @RaafatTurki) -- [x] [udev](https://github.com/ObserverOfTime/tree-sitter-udev) (maintained by @ObserverOfTime) -- [x] [ungrammar](https://github.com/Philipp-M/tree-sitter-ungrammar) (maintained by @Philipp-M, @amaanq) -- [x] [unison](https://github.com/kylegoetz/tree-sitter-unison) (maintained by @tapegram) -- [x] [usd](https://github.com/ColinKennedy/tree-sitter-usd) (maintained by @ColinKennedy) -- [x] [uxn tal](https://github.com/amaanq/tree-sitter-uxntal) (maintained by @amaanq) -- [x] [v](https://github.com/vlang/v-analyzer) (maintained by @kkharji, @amaanq) -- [x] [vala](https://github.com/vala-lang/tree-sitter-vala) (maintained by @Prince781) -- [x] [vento](https://github.com/ventojs/tree-sitter-vento) (maintained by @wrapperup, @oscarotero) -- [x] [verilog](https://github.com/gmlarumbe/tree-sitter-systemverilog) (maintained by @zhangwwpeng) -- [x] [vhdl](https://github.com/jpt13653903/tree-sitter-vhdl) (maintained by @jpt13653903) -- [x] [vhs](https://github.com/charmbracelet/tree-sitter-vhs) (maintained by @caarlos0) -- [x] [vim](https://github.com/neovim/tree-sitter-vim) (maintained by @clason) -- [x] [vimdoc](https://github.com/neovim/tree-sitter-vimdoc) (maintained by @clason) -- [x] [vrl](https://github.com/belltoy/tree-sitter-vrl) (maintained by @belltoy) -- [x] [vue](https://github.com/tree-sitter-grammars/tree-sitter-vue) (maintained by @WhyNotHugo, @lucario387) -- [x] [wgsl](https://github.com/szebniok/tree-sitter-wgsl) (maintained by @szebniok) -- [x] [wgsl_bevy](https://github.com/theHamsta/tree-sitter-wgsl-bevy) (maintained by @theHamsta) -- [x] [wing](https://github.com/winglang/tree-sitter-wing) (maintained by @gshpychka, @MarkMcCulloh) -- [x] [wit](https://github.com/liamwh/tree-sitter-wit) (maintained by @liamwh) -- [x] [xcompose](https://github.com/ObserverOfTime/tree-sitter-xcompose) (maintained by @ObserverOfTime) -- [x] [xml](https://github.com/tree-sitter-grammars/tree-sitter-xml) (maintained by @ObserverOfTime) -- [x] [xresources](https://github.com/ValdezFOmar/tree-sitter-xresources) (maintained by @ValdezFOmar) -- [x] [yaml](https://github.com/tree-sitter-grammars/tree-sitter-yaml) (maintained by @amaanq) -- [x] [yang](https://github.com/Hubro/tree-sitter-yang) (maintained by @Hubro) -- [x] [yuck](https://github.com/Philipp-M/tree-sitter-yuck) (maintained by @Philipp-M, @amaanq) -- [x] [zathurarc](https://github.com/Freed-Wu/tree-sitter-zathurarc) (maintained by @Freed-Wu) -- [x] [zig](https://github.com/tree-sitter-grammars/tree-sitter-zig) (maintained by @amaanq) -- [x] [ziggy](https://github.com/kristoff-it/ziggy) (maintained by @rockorager) -- [x] [ziggy_schema](https://github.com/kristoff-it/ziggy) (maintained by @rockorager) -<!--parserinfo--> - For related information on the supported languages, including related plugins, see [this wiki page](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Supported-Languages-Information). -# Available modules - -Modules provide the top-level features of `nvim-treesitter`. -The following is a list of modules included in `nvim-treesitter` and their configuration via `init.lua` (where multiple modules can be combined in a single call to `setup`). -Note that not all modules work for all languages (depending on the queries available for them). -Additional modules can be provided as [external plugins](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Extra-modules-and-plugins). - -#### Highlight - -Consistent syntax highlighting. - -```lua -require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, -} -``` - -To customize the syntax highlighting of a capture, simply define or link a highlight group of the same name: +# Supported features -```lua --- Highlight the @foo.bar capture group with the "Identifier" highlight group -vim.api.nvim_set_hl(0, "@foo.bar", { link = "Identifier" }) -``` - -For a language-specific highlight, append the name of the language: - -```lua --- Highlight @foo.bar as "Identifier" only in Lua files -vim.api.nvim_set_hl(0, "@foo.bar.lua", { link = "Identifier" }) -``` - -See `:h treesitter-highlight-groups` for details. - -#### Incremental selection - -Incremental selection based on the named nodes from the grammar. - -```lua -require'nvim-treesitter.configs'.setup { - incremental_selection = { - enable = true, - keymaps = { - init_selection = "gnn", -- set to `false` to disable one of the mappings - node_incremental = "grn", - scope_incremental = "grc", - node_decremental = "grm", - }, - }, -} -``` +`nvim-treesitter` provides queries for the following features. **These are not automatically enabled.** -#### Indentation +## Highlighting -Indentation based on treesitter for the `=` operator. -**NOTE: This is an experimental feature**. +Treesitter highlighting is provided by Neovim, see `:h treesitter-highlight`. To enable it for a filetype, put `vim.treesitter.start()` in a `ftplugin/<filetype>.lua` in your config directory, or place the following in your `init.lua`: ```lua -require'nvim-treesitter.configs'.setup { - indent = { - enable = true - } -} +vim.api.nvim_create_autocmd('FileType', { + pattern = { '<filetype>' }, + callback = function() vim.treesitter.start() end, +}) ``` -#### Folding +## Folds -Tree-sitter based folding (implemented in Neovim itself, see `:h vim.treesitter.foldexpr()`). To enable it for the current window, set +Treesitter-based folding is provided by Neovim. To enable it, put the following in your `ftplugin` or `FileType` autocommand: ```lua -vim.wo.foldmethod = 'expr' vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' ``` -This will respect your `foldminlines` and `foldnestmax` settings. - -# Advanced setup - -## Changing the parser install directory +## Indentation -If you want to install the parsers to a custom directory you can specify this -directory with `parser_install_dir` option in that is passed to `setup`. -`nvim-treesitter` will then install the parser files into this directory. - -This directory must be writeable and must be explicitly prepended to the -`runtimepath`. For example: +Treesitter-based indentation is provided by this plugin but considered **experimental**. To enable it, put the following in your `ftplugin` or `FileType` autocommand: ```lua - -- It MUST be at the beginning of runtimepath. Otherwise the parsers from Neovim itself - -- is loaded that may not be compatible with the queries from the 'nvim-treesitter' plugin. - vim.opt.runtimepath:prepend("/some/path/to/store/parsers") - - require'nvim-treesitter.configs'.setup { - parser_install_dir = "/some/path/to/store/parsers", - - ... - - } +vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" ``` -If this option is not included in the setup options, or is explicitly set to -`nil` then the default install directories will be used. If this value is set -the default directories will be ignored. +(Note the specific quotes used.) -Bear in mind that any parser installed into a parser folder on the runtime path -will still be considered installed. (For example if -"~/.local/share/nvim/site/parser/c.so" exists then the "c" parser will be -considered installed, even though it is not in `parser_install_dir`) +## Injections -The default paths are: +Injections are used for multi-language documents, see `:h treesitter-language-injections`. No setup is needed. -1. first the package folder. Where `nvim-treesitter` is installed. -2. second the site directory. This is the "site" subdirectory of `stdpath("data")`. +# Advanced setup ## Adding parsers @@ -625,139 +130,56 @@ If you have a parser that is not on the list of supported languages (either as a 3. Add the following snippet to your `init.lua`: ```lua -local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +local parser_config = require "nvim-treesitter.parsers".configs parser_config.zimbu = { install_info = { url = "~/projects/tree-sitter-zimbu", -- local path or git repo files = {"src/parser.c"}, -- note that some parsers also require src/scanner.c or src/scanner.cc -- optional entries: - branch = "main", -- default branch in case of git repo if different from master + branch = "develop", -- only needed if different from default branch generate_requires_npm = false, -- if stand-alone parser without npm dependencies requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c }, - filetype = "zu", -- if filetype does not match the parser name } ``` +If you use a git repository for your parser and want to use a specific version, you can set the `revision` key +in the `install_info` table for you parser config. -If you wish to set a specific parser for a filetype, you should use `vim.treesitter.language.register()`: +4. If the parser name differs from the filetype(s) used by Neovim, you need to register the parser via ```lua -vim.treesitter.language.register('python', 'someft') -- the someft filetype will use the python parser and queries. +vim.treesitter.language.register('zimbu', { 'zu' }) ``` -Note this requires Nvim v0.9. +If Neovim does not detect your language's filetype by default, you can use [Neovim's `vim.filetype.add()`](<https://neovim.io/doc/user/lua.html#vim.filetype.add()>) to add a custom detection rule. -4. Start `nvim` and `:TSInstall zimbu`. +5. Start `nvim` and `:TSInstall zimbu`. You can also skip step 2 and use `:TSInstallFromGrammar zimbu` to install directly from a `grammar.js` in the top-level directory specified by `url`. Once the parser is installed, you can update it (from the latest revision of the `main` branch if `url` is a Github repository) with `:TSUpdate zimbu`. -Note that neither `:TSInstall` nor `:TSInstallFromGrammar` copy query files from the grammar repository. -If you want your installed grammar to be useful, you must manually [add query files](#adding-queries) to your local nvim-treesitter installation. -Note also that module functionality is only triggered if your language's filetype is correctly identified. -If Neovim does not detect your language's filetype by default, you can use [Neovim's `vim.filetype.add()`](<https://neovim.io/doc/user/lua.html#vim.filetype.add()>) to add a custom detection rule. - -If you use a git repository for your parser and want to use a specific version, you can set the `revision` key -in the `install_info` table for you parser config. ## Adding queries -Queries are what `nvim-treesitter` uses to extract information from the syntax tree; -they are located in the `queries/{language}/*` runtime directories (see `:h rtp`), -like the `queries` folder of this plugin, e.g. `queries/{language}/{locals,highlights,textobjects}.scm`. -Other modules may require additional queries such as `folding.scm`. You can find a -list of all supported capture names in [CONTRIBUTING.md](https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md#parser-configurations). - -The first query file on `runtimepath` will be used (see `:h treesitter-query`). -If you want to make a query on the user config extend other queries instead of -replacing them, see `:h treesitter-query-modeline-extends`. - -If you want to completely override a query, you can use `:h vim.treesitter.query.set()`. -For example, to override the `injections` queries from `c` with your own: - -```lua -vim.treesitter.query.set("c", "injections", "(comment) @comment") -``` - -Note: when using `query.set()`, all queries in the runtime directories will be ignored. - -## Adding modules - -If you wish you write your own module, you need to support - -- tree-sitter language detection support; -- attaching and detaching to buffers; -- all nvim-treesitter commands. - -At the top level, you can use the `define_modules` function to define one or more modules or module groups: +Queries can be placed anywhere in your `runtimepath` under `queries/<language>`, with earlier directories taking precedence unless the queries are marked with `; extends`; see `:h treesitter-query`. +E.g., to add queries for `zimbu`, put `highlights.scm` etc. under ```lua -require'nvim-treesitter'.define_modules { - my_cool_plugin = { - attach = function(bufnr, lang) - -- Do cool stuff here - end, - detach = function(bufnr) - -- Undo cool stuff here - end, - is_supported = function(lang) - -- Check if the language is supported - end - } -} +vim.fn.stdpath('data') .. 'site/queries/zimbu' ``` -with the following properties: - -- `module_path` specifies a require path (string) that exports a module with an `attach` and `detach` function. This is not required if the functions are on this definition. -- `enable` determines if the module is enabled by default. This is usually overridden by the user. -- `disable` takes a list of languages that this module is disabled for. This is usually overridden by the user. -- `is_supported` takes a function that takes a language and determines if this module supports that language. -- `attach` takes a function that attaches to a buffer. This is required if `module_path` is not provided. -- `detach` takes a function that detaches from a buffer. This is required if `module_path` is not provided. - -# Extra features - -### Statusline indicator - -```vim -echo nvim_treesitter#statusline(90) " 90 can be any length -module->expression_statement->call->identifier -``` - -### Utilities - -You can get some utility functions with - -```lua -local ts_utils = require 'nvim-treesitter.ts_utils' -``` - -Check [`:h nvim-treesitter-utils`](doc/nvim-treesitter.txt) for more information. - # Troubleshooting Before doing anything, make sure you have the latest version of this plugin and run `:checkhealth nvim-treesitter`. It can also help to update the parsers via `:TSUpdate`. -#### Feature `X` does not work for `{language}`... - -First, check the `health#nvim_treesitter#check` and the `health#treesitter#check` sections of `:checkhealth` for any warning. -If there is one, it's highly likely that this is the cause of the problem. +#### Feature `{X}` does not work for `{language}`... -Next check the `## Parser/Features` subsection of the `health#nvim_treesitter#check` section of `:checkhealth` to ensure the desired module is enabled for your language. -If not, you might be missing query files; see [Adding queries](#adding-queries). +1. Check the `nvim-treesitter` section of `:checkhealth` for any warning, and make sure that the query for `{X}` is listed for `{language}`. -Finally, ensure Neovim is correctly identifying your language's filetype using the `:echo &filetype` command while one of your language's files is open in Neovim. -If not, add a short Vimscript file to nvim-treesitter's `ftdetect` runtime directory following [Neovim's documentation](https://neovim.io/doc/user/filetype.html#new-filetype) on filetype detection. -You can also quickly & temporarily set the filetype for a single buffer with the `:set filetype=langname` command to test whether it fixes the problem. +2. Ensure that the feature is enabled as explained above. -If everything is okay, then it might be an actual error. -In that case, feel free to [open an issue here](https://github.com/nvim-treesitter/nvim-treesitter/issues/new/choose). - -#### I get `module 'vim.treesitter.query' not found` - -Make sure you have the latest version of Neovim. +3. Ensure Neovim is correctly identifying your language's filetype using the `:echo &filetype` command while one of your language's files is open in Neovim. #### I get `Error detected while processing .../plugin/nvim-treesitter.vim` every time I open Neovim @@ -773,32 +195,10 @@ or due to an outdated parser. - Make sure you have the parsers up to date with `:TSUpdate` - Make sure you don't have more than one `parser` runtime directory. - You can execute this command `:echo nvim_get_runtime_file('parser', v:true)` to find all runtime directories. + You can execute this command `:= vim.api.nvim_get_runtime_file('parser', true)` to find all runtime directories. If you get more than one path, remove the ones that are outside this plugin (`nvim-treesitter` directory), so the correct version of the parser is used. -#### I experience weird highlighting issues similar to [#78](https://github.com/nvim-treesitter/nvim-treesitter/issues/78) - -This is a well known issue, which arises when the tree and the buffer have gotten out of sync. -As this is an upstream issue, we don't have any definite fix. -To get around this, you can force reparsing the buffer with - -```vim -:write | edit | TSBufEnable highlight -``` - -This will save, restore and enable highlighting for the current buffer. - -#### I experience bugs when using `nvim-treesitter`'s `foldexpr` similar to [#194](https://github.com/nvim-treesitter/nvim-treesitter/issues/194) - -This might happen, and is known to happen, with `vim-clap`. -To avoid these kind of errors, please use `setlocal` instead of `set` for the respective filetypes. - -#### I run into errors like `module 'nvim-treesitter.configs' not found` at startup - -This is because of `rtp` management in `nvim`, adding `packadd -nvim-treesitter` should fix the issue. - #### I want to use Git instead of curl for downloading the parsers In your Lua config: @@ -828,24 +228,12 @@ require("nvim-treesitter.install").prefer_git = true In your Lua config: ```lua -for _, config in pairs(require("nvim-treesitter.parsers").get_parser_configs()) do +for _, config in pairs(require("nvim-treesitter.parsers").configs) do config.install_info.url = config.install_info.url:gsub("https://github.com/", "something else") end -require'nvim-treesitter.configs'.setup { +require'nvim-treesitter'.setup { -- -- } ``` - -#### Using an existing parser for another filetype - -For example, to use the `bash` tree-sitter to highlight file with -`filetype=apkbuild`, use: - -```lua -vim.treesitter.language.register("bash", "apkbuild") -``` - -The `bash` tree-sitter must be installed following the usual procedure [as -described above](#language-parsers). diff --git a/SUPPORTED_LANGUAGES.md b/SUPPORTED_LANGUAGES.md new file mode 100644 index 000000000..a388c9c9a --- /dev/null +++ b/SUPPORTED_LANGUAGES.md @@ -0,0 +1,305 @@ +# Supported languages + +The following is a list of languages for which a parser can be installed through `:TSInstall`. + +Legend: +- **Tier:** _core_, _stable_, _community_, or _unstable_ +- **CLI:** `:TSInstall` requires `tree-sitter` CLI installed +- **NPM:** `:TSInstallFromGrammar` requires `node` installed +- **Queries** available for **H**ighlights, **I**ndents, **F**olds, In**J**ections + +<!--This section of the README is automatically updated by a CI job--> +<!--parserinfo--> +Language | Tier | Queries | CLI | NPM | Maintainer +-------- |:----:|:-------:|:---:|:---:| ---------- +[ada](https://github.com/briot/tree-sitter-ada) | | `HF  ` | | | @briot +[agda](https://github.com/tree-sitter/tree-sitter-agda) | | `HF  ` | | | @Decodetalkers +[angular](https://github.com/dlvandenberg/tree-sitter-angular) | unstable | `HFIJ` | | ✓ | @dlvandenberg +[apex](https://github.com/aheber/tree-sitter-sfapex) | community | `HF  ` | | | @aheber +[arduino](https://github.com/ObserverOfTime/tree-sitter-arduino) | | `HFIJ` | | | @ObserverOfTime +[asm](https://github.com/RubixDev/tree-sitter-asm) | community | `H  J` | | | @RubixDev +[astro](https://github.com/virchau13/tree-sitter-astro) | | `HFIJ` | | | @virchau13 +[authzed](https://github.com/mleonidas/tree-sitter-authzed) | community | `H  J` | | | @mattpolzin +[awk](https://github.com/Beaglefoot/tree-sitter-awk) | | `H  J` | | | +[bash](https://github.com/tree-sitter/tree-sitter-bash) | | `HF J` | | | @TravonteD +[bass](https://github.com/vito/tree-sitter-bass) | | `HFIJ` | | | @amaanq +[beancount](https://github.com/polarmutex/tree-sitter-beancount) | | `HF J` | | | @polarmutex +[bibtex](https://github.com/latex-lsp/tree-sitter-bibtex) | community | `HFI ` | | | @theHamsta, @clason +[bicep](https://github.com/amaanq/tree-sitter-bicep) | | `HFIJ` | | | @amaanq +[bitbake](https://github.com/amaanq/tree-sitter-bitbake) | stable | `HFIJ` | | | @amaanq +[blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint.git) | unstable | `H   ` | | | @gabmus +[c](https://github.com/tree-sitter/tree-sitter-c) | core | `HFIJ` | | | @amaanq +[c_sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) | | `HF J` | | | @Luxed +[cairo](https://github.com/amaanq/tree-sitter-cairo) | stable | `HFIJ` | | | @amaanq +[capnp](https://github.com/amaanq/tree-sitter-capnp) | | `HFIJ` | | | @amaanq +[chatito](https://github.com/ObserverOfTime/tree-sitter-chatito) | | `HFIJ` | | | @ObserverOfTime +[clojure](https://github.com/sogaiu/tree-sitter-clojure) | | `HF J` | | | @NoahTheDuke +[cmake](https://github.com/uyha/tree-sitter-cmake) | | `HFI ` | | | @uyha +[comment](https://github.com/stsewd/tree-sitter-comment) | stable | `H   ` | | | @stsewd +[commonlisp](https://github.com/theHamsta/tree-sitter-commonlisp) | | `HF  ` | | ✓ | @theHamsta +[cooklang](https://github.com/addcninblue/tree-sitter-cooklang) | community | `H   ` | | | @addcninblue +[corn](https://github.com/jakestanger/tree-sitter-corn) | community | `HFI ` | | | @jakestanger +[cpon](https://github.com/amaanq/tree-sitter-cpon) | | `HFIJ` | | | @amaanq +[cpp](https://github.com/tree-sitter/tree-sitter-cpp) | | `HFIJ` | | ✓ | @theHamsta +[css](https://github.com/tree-sitter/tree-sitter-css) | | `HFIJ` | | | @TravonteD +[csv](https://github.com/amaanq/tree-sitter-csv) | stable | `H   ` | | | @amaanq +[cuda](https://github.com/theHamsta/tree-sitter-cuda) | | `HFIJ` | | ✓ | @theHamsta +[cue](https://github.com/eonpatapon/tree-sitter-cue) | | `HFIJ` | | | @amaanq +[d](https://github.com/gdamore/tree-sitter-d) | stable | `HFIJ` | | | @amaanq +[dart](https://github.com/UserNobody14/tree-sitter-dart) | | `HFIJ` | | | @akinsho +[devicetree](https://github.com/joelspadin/tree-sitter-devicetree) | | `HFIJ` | | | @jedrzejboczar +[dhall](https://github.com/jbellerb/tree-sitter-dhall) | | `HF J` | | | @amaanq +[diff](https://github.com/the-mikedavis/tree-sitter-diff) | | `H   ` | | | @gbprod +[disassembly](https://github.com/ColinKennedy/tree-sitter-disassembly) | community | `H  J` | | | @ColinKennedy +[djot](https://github.com/treeman/tree-sitter-djot) | community | `HFIJ` | | | @NoahTheDuke +[dockerfile](https://github.com/camdencheek/tree-sitter-dockerfile) | | `H  J` | | | @camdencheek +[dot](https://github.com/rydesun/tree-sitter-dot) | | `H IJ` | | | @rydesun +[doxygen](https://github.com/amaanq/tree-sitter-doxygen) | stable | `H IJ` | | | @amaanq +[dtd](https://github.com/tree-sitter-grammars/tree-sitter-xml) | stable | `HF J` | | | @ObserverOfTime +[earthfile](https://github.com/glehmann/tree-sitter-earthfile) | community | `H  J` | | | @glehmann +[ebnf](https://github.com/RubixDev/ebnf) | unstable | `H   ` | | | @RubixDev +[eds](https://github.com/uyha/tree-sitter-eds) | community | `HF  ` | | | @uyha +[eex](https://github.com/connorlay/tree-sitter-eex) | | `H  J` | | | @connorlay +[elixir](https://github.com/elixir-lang/tree-sitter-elixir) | | `HFIJ` | | | @connorlay +[elm](https://github.com/elm-tooling/tree-sitter-elm) | | `H  J` | | | @zweimach +[elsa](https://github.com/glapa-grossklag/tree-sitter-elsa) | | `HFIJ` | | | @glapa-grossklag, @amaanq +[elvish](https://github.com/elves/tree-sitter-elvish) | | `H  J` | | | @elves +[embedded_template](https://github.com/tree-sitter/tree-sitter-embedded-template) | | `H  J` | | | +[erlang](https://github.com/WhatsApp/tree-sitter-erlang) | | `HF  ` | | | @filmor +[facility](https://github.com/FacilityApi/tree-sitter-facility) | community | `HFIJ` | | | @bryankenote +[faust](https://github.com/khiner/tree-sitter-faust) | community | `H  J` | | | @khiner +[fennel](https://github.com/alexmozaidze/tree-sitter-fennel) | | `HF J` | | ✓ | @alexmozaidze +[fidl](https://github.com/google/tree-sitter-fidl) | community | `HF J` | | | @chaopeng +[firrtl](https://github.com/amaanq/tree-sitter-firrtl) | | `HFIJ` | | | @amaanq +[fish](https://github.com/ram02z/tree-sitter-fish) | | `HFIJ` | | | @ram02z +[foam](https://github.com/FoamScience/tree-sitter-foam) | unstable | `HFIJ` | | | @FoamScience +[forth](https://github.com/AlexanderBrevig/tree-sitter-forth) | stable | `HFIJ` | | | @amaanq +[fortran](https://github.com/stadelmanma/tree-sitter-fortran) | | `HFI ` | | | @amaanq +[fsh](https://github.com/mgramigna/tree-sitter-fsh) | | `H   ` | | | @mgramigna +[func](https://github.com/amaanq/tree-sitter-func) | | `H   ` | | | @amaanq +[fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) | | `HFI ` | | | @jirgn +[gdscript](https://github.com/PrestonKnopp/tree-sitter-gdscript)[^gdscript] | | `HFIJ` | | | @PrestonKnopp +[gdshader](https://github.com/GodOfAvacyn/tree-sitter-gdshader) | community | `H  J` | | | @godofavacyn +[git_config](https://github.com/the-mikedavis/tree-sitter-git-config)[^git_config] | | `HF J` | | | @amaanq +[git_rebase](https://github.com/the-mikedavis/tree-sitter-git-rebase) | | `H  J` | | | @gbprod +[gitattributes](https://github.com/ObserverOfTime/tree-sitter-gitattributes) | | `H  J` | | | @ObserverOfTime +[gitcommit](https://github.com/gbprod/tree-sitter-gitcommit) | | `H  J` | | | @gbprod +[gitignore](https://github.com/shunsambongi/tree-sitter-gitignore) | | `H   ` | | | @theHamsta +[gleam](https://github.com/gleam-lang/tree-sitter-gleam) | | `HFIJ` | | | @amaanq +[glimmer](https://github.com/alexlafroscia/tree-sitter-glimmer)[^glimmer] | | `HFI ` | | | @NullVoxPopuli +[glsl](https://github.com/theHamsta/tree-sitter-glsl) | | `HFIJ` | | ✓ | @theHamsta +[gn](https://github.com/amaanq/tree-sitter-gn) | stable | `HFIJ` | | | @amaanq +[gnuplot](https://github.com/dpezto/tree-sitter-gnuplot) | community | `H  J` | | | @dpezto +[go](https://github.com/tree-sitter/tree-sitter-go) | | `HFIJ` | | | @theHamsta, @WinWisely268 +[godot_resource](https://github.com/PrestonKnopp/tree-sitter-godot-resource)[^godot_resource] | | `HF J` | | | @pierpo +[gomod](https://github.com/camdencheek/tree-sitter-go-mod) | | `H  J` | | | @camdencheek +[gosum](https://github.com/amaanq/tree-sitter-go-sum) | | `H   ` | | | @amaanq +[gotmpl](https://github.com/ngalaiko/tree-sitter-go-template) | community | `H  J` | | | @qvalentin +[gowork](https://github.com/omertuc/tree-sitter-go-work) | | `H  J` | | | @omertuc +[gpg](https://github.com/ObserverOfTime/tree-sitter-gpg-config) | stable | `H  J` | | | @ObserverOfTime +[graphql](https://github.com/bkegley/tree-sitter-graphql) | | `H IJ` | | | @bkegley +[groovy](https://github.com/murtaza64/tree-sitter-groovy) | community | `HFIJ` | | | @murtaza64 +[gstlaunch](https://github.com/theHamsta/tree-sitter-gstlaunch) | stable | `H   ` | | | @theHamsta +[hack](https://github.com/slackhq/tree-sitter-hack) | | `H   ` | | | +[hare](https://github.com/amaanq/tree-sitter-hare) | | `HFIJ` | | | @amaanq +[haskell](https://github.com/tree-sitter/tree-sitter-haskell) | | `HF J` | | | @mrcjkb +[haskell_persistent](https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent) | | `HF  ` | | | @lykahb +[hcl](https://github.com/MichaHoffmann/tree-sitter-hcl) | | `HFIJ` | | | @MichaHoffmann +[heex](https://github.com/connorlay/tree-sitter-heex) | | `HFIJ` | | | @connorlay +[helm](https://github.com/ngalaiko/tree-sitter-go-template) | community | `H  J` | | | @qvalentin +[hjson](https://github.com/winston0410/tree-sitter-hjson) | | `HFIJ` | | ✓ | @winston0410 +[hlsl](https://github.com/theHamsta/tree-sitter-hlsl) | | `HFIJ` | | ✓ | @theHamsta +[hlsplaylist](https://github.com/Freed-Wu/tree-sitter-hlsplaylist) | community | `H  J` | | | @Freed-Wu +[hocon](https://github.com/antosha417/tree-sitter-hocon) | | `HF J` | | ✓ | @antosha417 +[hoon](https://github.com/urbit-pilled/tree-sitter-hoon) | unstable | `HF  ` | | | @urbit-pilled +[html](https://github.com/tree-sitter/tree-sitter-html) | | `HFIJ` | | | @TravonteD +[htmldjango](https://github.com/interdependence/tree-sitter-htmldjango) | unstable | `HFIJ` | | | @ObserverOfTime +[http](https://github.com/rest-nvim/tree-sitter-http) | | `H  J` | | | @amaanq, @NTBBloodbath +[hurl](https://github.com/pfeiferj/tree-sitter-hurl) | community | `HFIJ` | | | @pfeiferj +[hyprlang](https://github.com/luckasRanarison/tree-sitter-hyprlang) | community | `HFIJ` | | | @luckasRanarison +[idl](https://github.com/cathaysia/tree-sitter-idl) | community | `H  J` | | | @cathaysa +[ini](https://github.com/justinmk/tree-sitter-ini) | unstable | `HF  ` | | | @theHamsta +[inko](https://github.com/inko-lang/tree-sitter-inko) | community | `HFIJ` | | | @yorickpeterse +[ispc](https://github.com/fab4100/tree-sitter-ispc) | | `HFIJ` | | ✓ | @fab4100 +[janet_simple](https://github.com/sogaiu/tree-sitter-janet-simple) | | `HF J` | | | @sogaiu +[java](https://github.com/tree-sitter/tree-sitter-java) | | `HFIJ` | | | @p00f +[javascript](https://github.com/tree-sitter/tree-sitter-javascript) | | `HFIJ` | | | @steelsojka +[jq](https://github.com/flurie/tree-sitter-jq) | | `H  J` | | | @ObserverOfTime +[jsdoc](https://github.com/tree-sitter/tree-sitter-jsdoc) | | `H   ` | | | @steelsojka +[json](https://github.com/tree-sitter/tree-sitter-json) | | `HFI ` | | | @steelsojka +[json5](https://github.com/Joakker/tree-sitter-json5) | | `H  J` | | | @Joakker +[jsonc](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git)[^jsonc] | | `HFIJ` | | ✓ | @WhyNotHugo +[jsonnet](https://github.com/sourcegraph/tree-sitter-jsonnet) | | `HF  ` | | | @nawordar +[julia](https://github.com/tree-sitter/tree-sitter-julia) | community | `HFIJ` | | | @theHamsta +[just](https://github.com/IndianBoy42/tree-sitter-just) | community | `HFIJ` | | | @Hubro +[kconfig](https://github.com/amaanq/tree-sitter-kconfig) | stable | `HFIJ` | | | @amaanq +[kdl](https://github.com/amaanq/tree-sitter-kdl) | | `HFIJ` | | | @amaanq +[kotlin](https://github.com/fwcd/tree-sitter-kotlin) | | `HF J` | | | @SalBakraa +[koto](https://github.com/koto-lang/tree-sitter-koto) | community | `HF J` | | | @irh +[kusto](https://github.com/Willem-J-an/tree-sitter-kusto) | community | `H  J` | | | @Willem-J-an +[lalrpop](https://github.com/traxys/tree-sitter-lalrpop) | | `H  J` | | | @traxys +[latex](https://github.com/latex-lsp/tree-sitter-latex) | community | `HF J` | ✓ | | @theHamsta, @clason +[ledger](https://github.com/cbarrete/tree-sitter-ledger) | | `HFIJ` | | | @cbarrete +[leo](https://github.com/r001/tree-sitter-leo) | community | `H IJ` | | | @r001 +[linkerscript](https://github.com/amaanq/tree-sitter-linkerscript) | stable | `HFIJ` | | | @amaanq +[liquid](https://github.com/hankthetank27/tree-sitter-liquid) | community | `H  J` | | | @hankthetank27 +[liquidsoap](https://github.com/savonet/tree-sitter-liquidsoap) | community | `HFI ` | | | @toots +[llvm](https://github.com/benwilliamgraham/tree-sitter-llvm) | | `H   ` | | | @benwilliamgraham +[lua](https://github.com/MunifTanjim/tree-sitter-lua) | core | `HFIJ` | | | @muniftanjim +[luadoc](https://github.com/amaanq/tree-sitter-luadoc) | | `H   ` | | | @amaanq +[luap](https://github.com/amaanq/tree-sitter-luap)[^luap] | | `H   ` | | | @amaanq +[luau](https://github.com/amaanq/tree-sitter-luau) | | `HFIJ` | | | @amaanq +[m68k](https://github.com/grahambates/tree-sitter-m68k) | | `HF J` | | | @grahambates +[make](https://github.com/alemuller/tree-sitter-make) | | `HF J` | | | @lewis6991 +[markdown](https://github.com/MDeiml/tree-sitter-markdown)[^markdown] | core | `HFIJ` | | | @MDeiml +[markdown_inline](https://github.com/MDeiml/tree-sitter-markdown)[^markdown_inline] | core | `H  J` | | | @MDeiml +[matlab](https://github.com/acristoffers/tree-sitter-matlab) | | `HFIJ` | | | @acristoffers +[menhir](https://github.com/Kerl13/tree-sitter-menhir) | | `H  J` | | | @Kerl13 +[mermaid](https://github.com/monaqa/tree-sitter-mermaid) | unstable | `H   ` | | | +[meson](https://github.com/Decodetalkers/tree-sitter-meson) | | `HFIJ` | | | @Decodetalkers +[mlir](https://github.com/artagnon/tree-sitter-mlir) | unstable | `H   ` | ✓ | | @artagnon +[muttrc](https://github.com/neomutt/tree-sitter-muttrc) | community | `H  J` | | | @Freed-Wu +[nasm](https://github.com/naclsn/tree-sitter-nasm) | stable | `H  J` | | | @ObserverOfTime +[nickel](https://github.com/nickel-lang/tree-sitter-nickel) | | `H I ` | | | +[nim](https://github.com/alaviss/tree-sitter-nim) | community | `HF J` | | | @aMOPel +[nim_format_string](https://github.com/aMOPel/tree-sitter-nim-format-string) | community | `H  J` | | | @aMOPel +[ninja](https://github.com/alemuller/tree-sitter-ninja) | | `HFI ` | | | @alemuller +[nix](https://github.com/cstrahan/tree-sitter-nix) | | `HF J` | | | @leo60228 +[norg](https://github.com/nvim-neorg/tree-sitter-norg) | unstable | `    ` | | | @JoeyGrajciar, @vhyrro +[nqc](https://github.com/amaanq/tree-sitter-nqc) | stable | `HFIJ` | | | @amaanq +[objc](https://github.com/amaanq/tree-sitter-objc) | | `HFIJ` | | | @amaanq +[objdump](https://github.com/ColinKennedy/tree-sitter-objdump) | community | `H  J` | | | @ColinKennedy +[ocaml](https://github.com/tree-sitter/tree-sitter-ocaml) | | `HFIJ` | | | @undu +[ocaml_interface](https://github.com/tree-sitter/tree-sitter-ocaml) | | `HFIJ` | | | @undu +[ocamllex](https://github.com/atom-ocaml/tree-sitter-ocamllex) | | `H  J` | ✓ | | @undu +[odin](https://github.com/amaanq/tree-sitter-odin) | | `HFIJ` | | | @amaanq +[org](https://github.com/milisims/tree-sitter-org) | | `    ` | | | +[pascal](https://github.com/Isopod/tree-sitter-pascal.git) | | `HFIJ` | | | @Isopod +[passwd](https://github.com/ath3/tree-sitter-passwd) | | `H   ` | | | @amaanq +[pem](https://github.com/ObserverOfTime/tree-sitter-pem) | stable | `HF J` | | | @ObserverOfTime +[perl](https://github.com/tree-sitter-perl/tree-sitter-perl) | | `HF J` | | | @RabbiVeesh, @LeoNerd +[php](https://github.com/tree-sitter/tree-sitter-php)[^php] | | `HFIJ` | | | @tk-shirasaka +[php_only](https://github.com/tree-sitter/tree-sitter-php)[^php_only] | | `HFIJ` | | | @tk-shirasaka +[phpdoc](https://github.com/claytonrcarter/tree-sitter-phpdoc) | unstable | `H   ` | | ✓ | @mikehaertl +[pioasm](https://github.com/leo60228/tree-sitter-pioasm) | | `H  J` | | | @leo60228 +[po](https://github.com/erasin/tree-sitter-po) | | `HF J` | | | @amaanq +[pod](https://github.com/tree-sitter-perl/tree-sitter-pod) | community | `H   ` | | | @RabbiVeesh, @LeoNerd +[poe_filter](https://github.com/ObserverOfTime/tree-sitter-poe-filter)[^poe_filter] | unstable | `HFIJ` | | | @ObserverOfTime +[pony](https://github.com/amaanq/tree-sitter-pony) | | `HFIJ` | | | @amaanq, @mfelsche +[printf](https://github.com/ObserverOfTime/tree-sitter-printf) | stable | `H   ` | | | @ObserverOfTime +[prisma](https://github.com/victorhqc/tree-sitter-prisma) | | `HF  ` | | | @elianiva +[promql](https://github.com/MichaHoffmann/tree-sitter-promql) | unstable | `H  J` | | | @MichaHoffmann +[properties](https://github.com/ObserverOfTime/tree-sitter-properties)[^properties] | stable | `H  J` | | | @ObserverOfTime +[proto](https://github.com/treywood/tree-sitter-proto) | | `HF  ` | | | @treywood +[prql](https://github.com/PRQL/tree-sitter-prql) | | `H  J` | | | @matthias-Q +[psv](https://github.com/amaanq/tree-sitter-csv) | stable | `H   ` | | | @amaanq +[pug](https://github.com/zealot128/tree-sitter-pug) | unstable | `H  J` | | | @zealot128 +[puppet](https://github.com/amaanq/tree-sitter-puppet) | | `HFIJ` | | | @amaanq +[purescript](https://github.com/postsolar/tree-sitter-purescript) | community | `H  J` | | | @postsolar +[pymanifest](https://github.com/ObserverOfTime/tree-sitter-pymanifest) | stable | `H  J` | | | @ObserverOfTime +[python](https://github.com/tree-sitter/tree-sitter-python) | | `HFIJ` | | | @stsewd, @theHamsta +[ql](https://github.com/tree-sitter/tree-sitter-ql) | | `HFIJ` | | | @pwntester +[qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) | | `H  J` | | | @amaanq +[qmljs](https://github.com/yuja/tree-sitter-qmljs) | | `HF J` | | | @Decodetalkers +[query](https://github.com/nvim-treesitter/tree-sitter-query)[^query] | core | `HFIJ` | | | @steelsojka +[r](https://github.com/r-lib/tree-sitter-r) | | `H IJ` | | | @echasnovski +[racket](https://github.com/6cdh/tree-sitter-racket) | unstable | `HF J` | | | +[rasi](https://github.com/Fymyte/tree-sitter-rasi) | | `HFIJ` | | | @Fymyte +[rbs](https://github.com/joker1007/tree-sitter-rbs) | community | `HFIJ` | | | @joker1007 +[re2c](https://github.com/amaanq/tree-sitter-re2c) | stable | `HFIJ` | | | @amaanq +[readline](https://github.com/ribru17/tree-sitter-readline) | community | `HFIJ` | | | @ribru17 +[regex](https://github.com/tree-sitter/tree-sitter-regex) | | `H   ` | | | @theHamsta +[rego](https://github.com/FallenAngel97/tree-sitter-rego) | | `H  J` | | | @FallenAngel97 +[requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) | stable | `H  J` | | | @ObserverOfTime +[rnoweb](https://github.com/bamonroe/tree-sitter-rnoweb) | | `HF J` | | | @bamonroe +[robot](https://github.com/Hubro/tree-sitter-robot) | community | `HFI ` | | | @Hubro +[roc](https://github.com/nat-418/tree-sitter-roc) | community | `H  J` | | | @nat-418 +[ron](https://github.com/amaanq/tree-sitter-ron) | | `HFIJ` | | | @amaanq +[rst](https://github.com/stsewd/tree-sitter-rst) | | `H  J` | | | @stsewd +[ruby](https://github.com/tree-sitter/tree-sitter-ruby) | | `HFIJ` | | | @TravonteD +[rust](https://github.com/tree-sitter/tree-sitter-rust) | | `HFIJ` | | | @amaanq +[scala](https://github.com/tree-sitter/tree-sitter-scala) | | `HF J` | | | @stevanmilic +[scfg](https://git.sr.ht/~rockorager/tree-sitter-scfg) | community | `H  J` | ✓ | | @WhyNotHugo +[scheme](https://github.com/6cdh/tree-sitter-scheme) | unstable | `HF J` | | | +[scss](https://github.com/serenadeai/tree-sitter-scss) | | `HFI ` | | | @elianiva +[slang](https://github.com/theHamsta/tree-sitter-slang)[^slang] | unstable | `HFIJ` | | ✓ | @theHamsta +[slint](https://github.com/slint-ui/tree-sitter-slint) | community | `HFIJ` | | | @hunger +[smali](https://github.com/tree-sitter-grammars/tree-sitter-smali) | community | `HFIJ` | | | @amaanq +[smithy](https://github.com/indoorvivants/tree-sitter-smithy) | | `H   ` | | | @amaanq, @keynmol +[snakemake](https://github.com/osthomas/tree-sitter-snakemake) | unstable | `HFIJ` | | | +[solidity](https://github.com/JoranHonig/tree-sitter-solidity) | | `HF  ` | | | @amaanq +[soql](https://github.com/aheber/tree-sitter-sfapex) | community | `H   ` | | | @aheber +[sosl](https://github.com/aheber/tree-sitter-sfapex) | | `H   ` | | | @aheber +[sourcepawn](https://github.com/nilshelmig/tree-sitter-sourcepawn) | community | `H  J` | | | @Sarrus1 +[sparql](https://github.com/BonaBeavis/tree-sitter-sparql) | | `HFIJ` | | | @BonaBeavis +[sql](https://github.com/derekstride/tree-sitter-sql) | | `H IJ` | | | @derekstride +[squirrel](https://github.com/amaanq/tree-sitter-squirrel) | | `HFIJ` | | | @amaanq +[ssh_config](https://github.com/ObserverOfTime/tree-sitter-ssh-config) | stable | `HFIJ` | | | @ObserverOfTime +[starlark](https://github.com/amaanq/tree-sitter-starlark) | | `HFIJ` | | | @amaanq +[strace](https://github.com/sigmaSd/tree-sitter-strace) | stable | `H  J` | | | @amaanq +[styled](https://github.com/mskelton/tree-sitter-styled) | community | `HFIJ` | | | @mskelton +[supercollider](https://github.com/madskjeldgaard/tree-sitter-supercollider) | | `HFIJ` | | | @madskjeldgaard +[surface](https://github.com/connorlay/tree-sitter-surface) | | `HFIJ` | | | @connorlay +[svelte](https://github.com/tree-sitter-grammars/tree-sitter-svelte) | stable | `HFIJ` | | | @amaanq +[swift](https://github.com/alex-pinkus/tree-sitter-swift) | | `H I ` | ✓ | | @alex-pinkus +[sxhkdrc](https://github.com/RaafatTurki/tree-sitter-sxhkdrc) | | `HF J` | | | @RaafatTurki +[systemtap](https://github.com/ok-ryoko/tree-sitter-systemtap) | community | `HF J` | | | @ok-ryoko +[t32](https://gitlab.com/xasc/tree-sitter-t32.git) | community | `HFIJ` | | | @xasc +[tablegen](https://github.com/amaanq/tree-sitter-tablegen) | | `HFIJ` | | | @amaanq +[tcl](https://github.com/tree-sitter-grammars/tree-sitter-tcl) | stable | `HFI ` | | | @lewis6991 +[teal](https://github.com/euclidianAce/tree-sitter-teal) | | `HFIJ` | ✓ | | @euclidianAce +[templ](https://github.com/vrischmann/tree-sitter-templ) | community | `H  J` | | | @vrischmann +[terraform](https://github.com/MichaHoffmann/tree-sitter-hcl) | | `HFIJ` | | | @MichaHoffmann +[textproto](https://github.com/PorterAtGoogle/tree-sitter-textproto) | community | `HFI ` | | | @Porter +[thrift](https://github.com/duskmoon314/tree-sitter-thrift) | | `HFIJ` | | | @amaanq, @duskmoon314 +[tiger](https://github.com/ambroisie/tree-sitter-tiger) | | `HFIJ` | | | @ambroisie +[tlaplus](https://github.com/tlaplus-community/tree-sitter-tlaplus) | | `HF J` | | | @ahelwer, @susliko +[tmux](https://github.com/Freed-Wu/tree-sitter-tmux) | community | `H  J` | | | @Freed-Wu +[todotxt](https://github.com/arnarg/tree-sitter-todotxt.git) | unstable | `H   ` | | | @arnarg +[toml](https://github.com/tree-sitter-grammars/tree-sitter-toml) | | `HFIJ` | | ✓ | @tk-shirasaka +[tsv](https://github.com/amaanq/tree-sitter-csv) | stable | `H   ` | | | @amaanq +[tsx](https://github.com/tree-sitter/tree-sitter-typescript) | | `HFIJ` | | ✓ | @steelsojka +[turtle](https://github.com/BonaBeavis/tree-sitter-turtle) | | `HFIJ` | | | @BonaBeavis +[twig](https://github.com/gbprod/tree-sitter-twig) | | `H  J` | | | @gbprod +[typescript](https://github.com/tree-sitter/tree-sitter-typescript) | | `HFIJ` | | ✓ | @steelsojka +[typoscript](https://github.com/Teddytrombone/tree-sitter-typoscript) | community | `HFIJ` | | | @Teddytrombone +[typst](https://github.com/uben0/tree-sitter-typst) | community | `HFIJ` | | | @uben0, @RaafatTurki +[udev](https://github.com/ObserverOfTime/tree-sitter-udev) | stable | `H  J` | | | @ObserverOfTime +[ungrammar](https://github.com/Philipp-M/tree-sitter-ungrammar) | | `HFIJ` | | | @Philipp-M, @amaanq +[unison](https://github.com/kylegoetz/tree-sitter-unison) | unstable | `H  J` | ✓ | | @tapegram +[usd](https://github.com/ColinKennedy/tree-sitter-usd) | | `HFI ` | | | @ColinKennedy +[uxntal](https://github.com/amaanq/tree-sitter-uxntal) | | `HFIJ` | | | @amaanq +[v](https://github.com/vlang/v-analyzer) | | `HFIJ` | | | @kkharji, @amaanq +[vala](https://github.com/vala-lang/tree-sitter-vala) | | `HF  ` | | | @Prince781 +[vento](https://github.com/ventojs/tree-sitter-vento) | community | `H  J` | | | @wrapperup, @oscarotero +[verilog](https://github.com/tree-sitter/tree-sitter-verilog) | | `HF J` | | | @zegervdv +[vhs](https://github.com/charmbracelet/tree-sitter-vhs) | | `H   ` | | | @caarlos0 +[vim](https://github.com/neovim/tree-sitter-vim) | core | `HF J` | | | @clason +[vimdoc](https://github.com/neovim/tree-sitter-vimdoc) | core | `H  J` | | | @clason +[vue](https://github.com/tree-sitter-grammars/tree-sitter-vue) | stable | `HFIJ` | | | @WhyNotHugo, @lucario387 +[wgsl](https://github.com/szebniok/tree-sitter-wgsl) | | `HFI ` | | | @szebniok +[wgsl_bevy](https://github.com/theHamsta/tree-sitter-wgsl-bevy) | | `HFI ` | | ✓ | @theHamsta +[wing](https://github.com/winglang/tree-sitter-wing) | community | `HF  ` | | | @gshpychka, @MarkMcCulloh +[wit](https://github.com/liamwh/tree-sitter-wit) | community | `H  J` | | | @liamwh +[xcompose](https://github.com/ObserverOfTime/tree-sitter-xcompose) | stable | `H  J` | | | @ObserverOfTime +[xml](https://github.com/tree-sitter-grammars/tree-sitter-xml) | stable | `HFIJ` | | | @ObserverOfTime +[yaml](https://github.com/tree-sitter-grammars/tree-sitter-yaml) | stable | `HFIJ` | | | @amaanq +[yang](https://github.com/Hubro/tree-sitter-yang) | | `HFIJ` | | | @Hubro +[yuck](https://github.com/Philipp-M/tree-sitter-yuck) | | `HFIJ` | | | @Philipp-M, @amaanq +[zathurarc](https://github.com/Freed-Wu/tree-sitter-zathurarc) | community | `H  J` | | | @Freed-Wu +[zig](https://github.com/maxxnino/tree-sitter-zig) | | `HFIJ` | | | @maxxnino +[^gdscript]: Godot +[^git_config]: git_config +[^glimmer]: Glimmer and Ember +[^godot_resource]: Godot Resources +[^jsonc]: JSON with comments +[^luap]: Lua patterns +[^markdown]: basic highlighting +[^markdown_inline]: needed for full highlighting +[^php]: PHP with embedded HTML +[^php_only]: PHP without embedded HTML +[^poe_filter]: Path of Exile item filter +[^properties]: Java properties files +[^query]: Tree-sitter query language +[^slang]: Shader Slang +<!--parserinfo--> diff --git a/TODO.md b/TODO.md new file mode 100644 index 000000000..5b5dba199 --- /dev/null +++ b/TODO.md @@ -0,0 +1,34 @@ +# Roadmap + +This document lists the planned and finished changes in this rewrite towards [Nvim-treesitter 1.0](https://github.com/nvim-treesitter/nvim-treesitter/issues/4767). + +## TODO + +- [ ] **`query_predicates.lua`:** upstream/remove +- [ ] **`parsers.lua`:** modularize? +- [ ] **`parsers.lua`:** assign tiers +- [ ] **`install.lua`:** fix messages, add sync support (@lewis6991) +- [ ] **`install.lua`:** simplify compilation: + - hardcode one compiler + args per platform + - provide `install.compile_command` for overriding (function that takes files, ...?) + - allow using repo makefile (norg!)? + - ...or switch to makefile completely? +- [ ] **`locals.lua`:** refactor, move to `nvim-treesitter-refactor` +- [ ] **update-lockfile:** allow specifying version in addition to commit hash (for Tier 1) +- [ ] **update-lockfile:** one commit per parser/tier? +- [ ] **documentation:** consolidate, autogenerate? +- [ ] **documentation:** migration guide +- [ ] **textobjects:** include simple(!) function, queries? (check Helix) +- [ ] **downstream:** adapt to breaking changes (`nvim-treesitter-textobjects`, `nvim-treesitter-refactor`) + +## DONE + +- [X] remove module framework +- [X] remove extra utilities +- [X] refactor `indent.lua` into standalone +- [X] refactor commands, predicates, filetypes registration to plugin/ +- [X] support installing tiers of parsers +- [X] install parsers to standard directory by default +- [X] remove bundled queries from runtimepath; copy on parser install +- [X] general refactor and cleanup +- [X] remove locals from highlighting (cf. https://github.com/nvim-treesitter/nvim-treesitter/issues/3944#issuecomment-1458782497) diff --git a/assets/logo.png b/assets/logo.png Binary files differdeleted file mode 100644 index a60e536bc..000000000 --- a/assets/logo.png +++ /dev/null diff --git a/autoload/nvim_treesitter.vim b/autoload/nvim_treesitter.vim deleted file mode 100644 index 90953985e..000000000 --- a/autoload/nvim_treesitter.vim +++ /dev/null @@ -1,27 +0,0 @@ -function! nvim_treesitter#statusline(...) abort - return luaeval("require'nvim-treesitter.statusline'.statusline(_A)", get(a:, 1, {})) -endfunction - -function! nvim_treesitter#foldexpr() abort - return luaeval(printf('require"nvim-treesitter.fold".get_fold_indic(%d)', v:lnum)) -endfunction - -function! nvim_treesitter#installable_parsers(arglead, cmdline, cursorpos) abort - return join(luaeval("require'nvim-treesitter.parsers'.available_parsers()") + ['all'], "\n") -endfunction - -function! nvim_treesitter#installed_parsers(arglead, cmdline, cursorpos) abort - return join(luaeval("require'nvim-treesitter.info'.installed_parsers()") + ['all'], "\n") -endfunction - -function! nvim_treesitter#available_modules(arglead, cmdline, cursorpos) abort - return join(luaeval("require'nvim-treesitter.configs'.available_modules()"), "\n") -endfunction - -function! nvim_treesitter#available_query_groups(arglead, cmdline, cursorpos) abort - return join(luaeval("require'nvim-treesitter.query'.available_query_groups()"), "\n") -endfunction - -function! nvim_treesitter#indent() abort - return luaeval(printf('require"nvim-treesitter.indent".get_indent(%d)', v:lnum)) -endfunction diff --git a/doc/nvim-treesitter.txt b/doc/nvim-treesitter.txt index f7a91b849..7054121b5 100644 --- a/doc/nvim-treesitter.txt +++ b/doc/nvim-treesitter.txt @@ -1,6 +1,4 @@ -*nvim-treesitter* Treesitter configurations and abstraction layer for Neovim. - -Minimum version of neovim: nightly +*nvim-treesitter.txt* Treesitter parser and query installer for Neovim Authors: Kiyan Yazdani <yazdani.kiyan@protonmail.com> @@ -15,38 +13,37 @@ Authors: ============================================================================== INTRODUCTION *nvim-treesitter-intro* -nvim-treesitter wraps the Neovim treesitter API to provide functionalities -such as highlighting and incremental selection, and a command to easily -install parsers. +Nvim-treesitter provides functionalities for managing treesitter parsers and +compatible queries for core features (highlighting, injections, fold, indent). + +WARNING: This is work in progress and requires the latest commit on Neovim +`master`. ============================================================================== QUICK START *nvim-treesitter-quickstart* Install the parser for your language -> +>vim :TSInstall {language} < To get a list of supported languages -> +>vim :TSInstallInfo < -By default, everything is disabled. -To enable supported features, put this in your `init.lua` file: +To install supported parsers and queries, put this in your `init.lua` file: -> +>lua require'nvim-treesitter.configs'.setup { -- A directory to install the parsers into. - -- If this is excluded or nil parsers are installed - -- to either the package dir, or the "site" dir. - -- If a custom path is used (not nil) it must be added to the runtimepath. - parser_install_dir = "/some/path/to/store/parsers", + -- Defaults to the `stdpath('data')/site` dir. + install_dir = "/some/path/to/store/parsers", - -- A list of parser names, or "all" - ensure_installed = { "c", "lua", "rust" }, + -- A list of parser names, or "core", "stable", "community", "unstable" + ensure_install = { "core", "rust" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, @@ -54,174 +51,66 @@ To enable supported features, put this in your `init.lua` file: -- Automatically install missing parsers when entering buffer auto_install = false, - -- List of parsers to ignore installing (for "all") + -- List of parsers to ignore installing (for "core" etc.) ignore_install = { "javascript" }, - highlight = { - -- `false` will disable the whole extension - enable = true, - - -- list of language that will be disabled - disable = { "c", "rust" }, - - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, - } - vim.opt.runtimepath:append("/some/path/to/store/parsers") < - -See |nvim-treesitter-modules| for a list of all available modules and its options. +See |nvim-treesitter-commands| for a list of all available commands. ============================================================================== -MODULES *nvim-treesitter-modules* - -|nvim-treesitter| provides several functionalities via modules (and submodules), -each module makes use of the query files defined for each language, - -All modules are disabled by default, and some provide default keymaps. -Each module corresponds to an entry in the dictionary passed to the -`nvim-treesitter.configs.setup` function, this should be in your `init.lua` file. - -> - require'nvim-treesitter.configs'.setup { - -- Modules and its options go here - highlight = { enable = true }, - incremental_selection = { enable = true }, - textobjects = { enable = true }, - } -< +COMMANDS *nvim-treesitter-commands* -All modules share some common options, like `enable` and `disable`. -When `enable` is `true` this will enable the module for all supported languages, -if you want to disable the module for some languages you can pass a list to the `disable` option. + *:TSInstall* +:TSInstall {language} ... ~ -> - require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - disable = { "cpp", "lua" }, - }, - } -< +Install one or more treesitter parsers. +You can use |:TSInstall| `all` to install all parsers. Use |:TSInstall!| to +force the reinstallation of already installed parsers. + *:TSInstallSync* +:TSInstallSync {language} ... ~ -For more fine-grained control, `disable` can also take a function and -whenever it returns `true`, the module is disabled for that buffer. -The function is called once when a module starts in a buffer and receives the -language and buffer number as arguments: +Perform the |:TSInstall| operation synchronously. -> - require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - disable = function(lang, bufnr) -- Disable in large C++ buffers - return lang == "cpp" and vim.api.nvim_buf_line_count(bufnr) > 50000 - end, - }, - } -< + *:TSInstallInfo* +:TSInstallInfo ~ -Options that define or accept a keymap use the same format you use to define -keymaps in Neovim, so you can write keymaps as `gd`, `<space>a`, `<leader>a` -`<C-a>` (control + a), `<A-n>` (alt + n), `<CR>` (enter), etc. +List information about currently installed parsers -External plugins can provide their own modules with their own options, -those can also be configured using the `nvim-treesitter.configs.setup` -function. + *:TSUpdate* +:TSUpdate {language} ... ~ ------------------------------------------------------------------------------- -HIGHLIGHT *nvim-treesitter-highlight-mod* +Update the installed parser for one more {language} or all installed parsers +if {language} is omitted. The specified parser is installed if it is not already +installed. -Consistent syntax highlighting. + *:TSUpdateSync* +:TSUpdateSync {language} ... ~ -Query files: `highlights.scm`. -Supported options: +Perform the |:TSUpdate| operation synchronously. -- enable: `true` or `false`. -- disable: list of languages. -- additional_vim_regex_highlighting: `true` or `false`, or a list of languages. - Set this to `true` if you depend on 'syntax' being enabled - (like for indentation). Using this option may slow down your editor, - and you may see some duplicate highlights. - Defaults to `false`. + *:TSUninstall* +:TSUninstall {language} ... ~ -> - require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - custom_captures = { - -- Highlight the @foo.bar capture group with the "Identifier" highlight group. - ["foo.bar"] = "Identifier", - }, - -- Setting this to true or a list of languages will run `:h syntax` and tree-sitter at the same time. - additional_vim_regex_highlighting = false, - }, - } -< +Deletes the parser for one or more {language}. You can use 'all' for language +to uninstall all parsers. -You can also set custom highlight captures -> - lua <<EOF - require"nvim-treesitter.highlight".set_custom_captures { - -- Highlight the @foo.bar capture group with the "Identifier" highlight group. - ["foo.bar"] = "Identifier", - } - EOF -< -Note: The api is not stable yet. +============================================================================== +INDENTATION *nvim-treesitter-indentation* ------------------------------------------------------------------------------- -INCREMENTAL SELECTION *nvim-treesitter-incremental-selection-mod* +Indentation based on treesitter for the |=| operator. +NOTE: this is an experimental feature and will be upstreamed to Neovim when +stable. -Incremental selection based on the named nodes from the grammar. +To enable it for a supported parser, add the following to a corresponding +`FileType` autocommand or `ftplugin/<lang>.lua`: >lua -Query files: `locals.scm`. -Supported options: -- enable: `true` or `false`. -- disable: list of languages. -- keymaps: - - init_selection: in normal mode, start incremental selection. - Defaults to `gnn`. - - node_incremental: in visual mode, increment to the upper named parent. - Defaults to `grn`. - - scope_incremental: in visual mode, increment to the upper scope - (as defined in `locals.scm`). Defaults to `grc`. - - node_decremental: in visual mode, decrement to the previous named node. - Defaults to `grm`. + vim.bo.indentexpr = 'v.lua:require'nvim-treesitter'.indentexpr()' -> - require'nvim-treesitter.configs'.setup { - incremental_selection = { - enable = true, - keymaps = { - init_selection = "gnn", - node_incremental = "grn", - scope_incremental = "grc", - node_decremental = "grm", - }, - }, - } < ------------------------------------------------------------------------------- -INDENTATION *nvim-treesitter-indentation-mod* - -Indentation based on treesitter for the |=| operator. -NOTE: this is an experimental feature. +Indentation for a language is controlled by `indents.scm` queries. The +following captures are supported: -Query files: `indents.scm`. -Supported options: -- enable: `true` or `false`. -- disable: list of languages. -> - require'nvim-treesitter.configs'.setup { - indent = { - enable = true - }, - } `@indent` *nvim-treesitter-indentation-queries* Queries can use the following captures: `@indent.begin` and `@indent.dedent`, @@ -233,7 +122,7 @@ the indentation to 0. The `@indent.begin` specifies that the next line should be indented. Multiple indents on the same line get collapsed. Eg. -> +>query ( (if_statement) (ERROR "else") @indent.begin @@ -244,13 +133,13 @@ permits the next line to indent even when the block intended to be indented has no content yet, improving interactive typing. eg for python: -> +>query ((if_statement) @indent.begin (#set! indent.immediate 1)) < Will allow: -> +>python if True:<CR> # Auto indent to here @@ -291,7 +180,7 @@ and finally < To specify the delimiters to use `indent.open_delimiter` and `indent.close_delimiter` should be used. Eg. -> +>query ((argument_list) @indent.align (#set! indent.open_delimiter "(") (#set! indent.close_delimiter ")")) @@ -302,13 +191,13 @@ the same indent as the natural next line. For example in python: -> +>python if (a > b and c < d): pass Is not correct, whereas -> +>python if (a > b and c < d): pass @@ -316,7 +205,7 @@ Is not correct, whereas Would be correctly indented. This behavior may be chosen using `indent.avoid_last_matching_next`. Eg. -> +>query (if_statement condition: (parenthesized_expression) @indent.align (#set! indent.open_delimiter "(") @@ -328,263 +217,4 @@ Could be used to specify that the last line of an `@indent.align` capture should be additionally indented to avoid clashing with the indent of the first line of the block inside an if. -============================================================================== -COMMANDS *nvim-treesitter-commands* - - *:TSInstall* -:TSInstall {language} ...~ - -Install one or more treesitter parsers. -You can use |:TSInstall| `all` to install all parsers. Use |:TSInstall!| to -force the reinstallation of already installed parsers. - *:TSInstallSync* -:TSInstallSync {language} ...~ - -Perform the |:TSInstall| operation synchronously. - - *:TSInstallInfo* -:TSInstallInfo~ - -List information about currently installed parsers - - *:TSUpdate* -:TSUpdate {language} ...~ - -Update the installed parser for one more {language} or all installed parsers -if {language} is omitted. The specified parser is installed if it is not already -installed. - - *:TSUpdateSync* -:TSUpdateSync {language} ...~ - -Perform the |:TSUpdate| operation synchronously. - - *:TSUninstall* -:TSUninstall {language} ...~ - -Deletes the parser for one or more {language}. You can use 'all' for language -to uninstall all parsers. - - *:TSBufEnable* -:TSBufEnable {module}~ - -Enable {module} on the current buffer. -A list of modules can be found at |:TSModuleInfo| - - *:TSBufDisable* -:TSBufDisable {module}~ - -Disable {module} on the current buffer. -A list of modules can be found at |:TSModuleInfo| - - *:TSBufToggle* -:TSBufToggle {module}~ - -Toggle (enable if disabled, disable if enabled) {module} on the current -buffer. -A list of modules can be found at |:TSModuleInfo| - - *:TSEnable* -:TSEnable {module} [{language}]~ - -Enable {module} for the session. -If {language} is specified, enable module for the session only for this -particular language. -A list of modules can be found at |:TSModuleInfo| -A list of languages can be found at |:TSInstallInfo| - - *:TSDisable* -:TSDisable {module} [{language}]~ - -Disable {module} for the session. -If {language} is specified, disable module for the session only for this -particular language. -A list of modules can be found at |:TSModuleInfo| -A list of languages can be found at |:TSInstallInfo| - - *:TSToggle* -:TSToggle {module} [{language}]~ - -Toggle (enable if disabled, disable if enabled) {module} for the session. -If {language} is specified, toggle module for the session only for this -particular language. -A list of modules can be found at |:TSModuleInfo| -A list of languages can be found at |:TSInstallInfo| - - *:TSModuleInfo* -:TSModuleInfo [{module}]~ - -List the state for the given module or all modules for the current session in -a new buffer. - -These highlight groups are used by default: -> - highlight default TSModuleInfoGood guifg=LightGreen gui=bold - highlight default TSModuleInfoBad guifg=Crimson - highlight default link TSModuleInfoHeader Type - highlight default link TSModuleInfoNamespace Statement - highlight default link TSModuleInfoParser Identifier -< - - *:TSEditQuery* -:TSEditQuery {query-group} [{lang}]~ - -Edit the query file for a {query-group} (e.g. highlights, locals) for given -{lang}. If there are multiple files, the user is prompted to select one of them. -If no such file exists, a buffer for a new file in the user's config directory -is created. If {lang} is not specified, the language of the current buffer -is used. - - *:TSEditQueryUserAfter* -:TSEditQueryUserAfter {query-group} [{lang}]~ - -Same as |:TSEditQuery| but edits a file in the `after` directory of the -user's config directory. Useful to add custom extensions for the queries -provided by a plugin. - -============================================================================== -UTILS *nvim-treesitter-utils* - -Nvim treesitter has some wrapper functions that you can retrieve with: -> - local ts_utils = require 'nvim-treesitter.ts_utils' -< -Methods - *ts_utils.get_node_at_cursor* -get_node_at_cursor(winnr)~ - -`winnr` will be 0 if nil. -Returns the node under the cursor. - - *ts_utils.is_parent* -is_parent(dest, source)~ - -Determines whether `dest` is a parent of `source`. -Returns a boolean. - - *ts_utils.get_named_children* -get_named_children(node)~ - -Returns a table of named children of `node`. - - *ts_utils.get_next_node* -get_next_node(node, allow_switch_parent, allow_next_parent)~ - -Returns the next node within the same parent. -If no node is found, returns `nil`. -If `allow_switch_parent` is true, it will allow switching parent -when the node is the last node. -If `allow_next_parent` is true, it will allow next parent if -the node is the last node and the next parent doesn't have children. - - *ts_utils.get_previous_node* -get_previous_node(node, allow_switch_parents, allow_prev_parent)~ - -Returns the previous node within the same parent. -`allow_switch_parent` and `allow_prev_parent` follow the same rule -as |ts_utils.get_next_node| but if the node is the first node. - - *ts_utils.goto_node* -goto_node(node, goto_end, avoid_set_jump)~ - -Sets cursor to the position of `node` in the current windows. -If `goto_end` is truthy, the cursor is set to the end the node range. -Setting `avoid_set_jump` to `true`, avoids setting the current cursor position -to the jump list. - - *ts_utils.swap_nodes* -swap_nodes(node_or_range1, node_or_range2, bufnr, cursor_to_second)~ - -Swaps the nodes or ranges. -set `cursor_to_second` to true to move the cursor to the second node - - *ts_utils.memoize_by_buf_tick* -memoize_by_buf_tick(fn, options)~ - -Caches the return value for a function and returns the cache value if the tick -of the buffer has not changed from the previous. - - `fn`: a function that takes any arguments - and returns a value to store. - `options?`: <table> - - `bufnr`: a function/value that extracts the bufnr from the given arguments. - - `key`: a function/value that extracts the cache key from the given arguments. - `returns`: a function to call with bufnr as argument to - retrieve the value from the cache - - *ts_utils.node_to_lsp_range* -node_to_lsp_range(node)~ - -Get an lsp formatted range from a node range - - *ts_utils.node_length* -node_length(node)~ - -Get the byte length of node range - - *ts_utils.update_selection* -update_selection(buf, node)~ - -Set the selection to the node range - - *ts_utils.highlight_range* -highlight_range(range, buf, hl_namespace, hl_group)~ - -Set a highlight that spans the given range - - *ts_utils.highlight_node* -highlight_node(node, buf, hl_namespace, hl_group)~ - -Set a highlight that spans the given node's range - -============================================================================== -FUNCTIONS *nvim-treesitter-functions* - - *nvim_treesitter#statusline()* -nvim_treesitter#statusline(opts)~ - -Returns a string describing the current position in the file. This -could be used as a statusline indicator. -Default options (lua syntax): -> - { - indicator_size = 100, - type_patterns = {'class', 'function', 'method'}, - transform_fn = function(line, _node) return line:gsub('%s*[%[%(%{]*%s*$', '') end, - separator = ' -> ', - allow_duplicates = false - } -< -- `indicator_size` - How long should the string be. If longer, it is cut from - the beginning. -- `type_patterns` - Which node type patterns to match. -- `transform_fn` - Function used to transform the single item in line. By - default it removes opening brackets and spaces from end. Takes two arguments: - the text of the line in question, and the corresponding treesitter node. -- `separator` - Separator between nodes. -- `allow_duplicates` - Whether or not to remove duplicate components. - - *nvim_treesitter#foldexpr()* -nvim_treesitter#foldexpr()~ - -Functions to be used to determine the fold level at a given line number. -To use it: > - set foldmethod=expr - set foldexpr=nvim_treesitter#foldexpr() -< - -This will respect your 'foldminlines' and 'foldnestmax' settings. - -Note: This is highly experimental, and folding can break on some types of - edits. If you encounter such breakage, hitting `zx` should fix folding. - In any case, feel free to open an issue with the reproducing steps. - -============================================================================== -PERFORMANCE *nvim-treesitter-performance* - -`nvim-treesitter` checks the 'runtimepath' on startup in order to discover -available parsers and queries and index them. As a consequence, a very long -'runtimepath' might result in delayed startup times. - - vim:tw=78:ts=8:expandtab:noet:ft=help:norl: diff --git a/lua/nvim-treesitter.lua b/lua/nvim-treesitter.lua deleted file mode 100644 index 963fe7309..000000000 --- a/lua/nvim-treesitter.lua +++ /dev/null @@ -1,22 +0,0 @@ -local install = require "nvim-treesitter.install" -local utils = require "nvim-treesitter.utils" -local info = require "nvim-treesitter.info" -local configs = require "nvim-treesitter.configs" -local statusline = require "nvim-treesitter.statusline" - --- Registers all query predicates -require "nvim-treesitter.query_predicates" - -local M = {} - -function M.setup() - utils.setup_commands("install", install.commands) - utils.setup_commands("info", info.commands) - utils.setup_commands("configs", configs.commands) - configs.init() -end - -M.define_modules = configs.define_modules -M.statusline = statusline.statusline - -return M diff --git a/lua/nvim-treesitter/caching.lua b/lua/nvim-treesitter/caching.lua deleted file mode 100644 index 7733202ed..000000000 --- a/lua/nvim-treesitter/caching.lua +++ /dev/null @@ -1,71 +0,0 @@ -local api = vim.api - -local M = {} - --- Creates a cache table for buffers keyed by a type name. --- Cache entries attach to the buffer and cleanup entries --- as buffers are detached. -function M.create_buffer_cache() - local cache = {} - - ---@type table<integer, table<string, any>> - local items = setmetatable({}, { - __index = function(tbl, key) - rawset(tbl, key, {}) - return rawget(tbl, key) - end, - }) - - ---@type table<integer, boolean> - local loaded_buffers = {} - - ---@param type_name string - ---@param bufnr integer - ---@param value any - function cache.set(type_name, bufnr, value) - if not loaded_buffers[bufnr] then - loaded_buffers[bufnr] = true - -- Clean up the cache if the buffer is detached - -- to avoid memory leaks - api.nvim_buf_attach(bufnr, false, { - on_detach = function() - cache.clear_buffer(bufnr) - loaded_buffers[bufnr] = nil - return true - end, - on_reload = function() end, -- this is needed to prevent on_detach being called on buffer reload - }) - end - - items[bufnr][type_name] = value - end - - ---@param type_name string - ---@param bufnr integer - ---@return any - function cache.get(type_name, bufnr) - return items[bufnr][type_name] - end - - ---@param type_name string - ---@param bufnr integer - ---@return boolean - function cache.has(type_name, bufnr) - return cache.get(type_name, bufnr) ~= nil - end - - ---@param type_name string - ---@param bufnr integer - function cache.remove(type_name, bufnr) - items[bufnr][type_name] = nil - end - - ---@param bufnr integer - function cache.clear_buffer(bufnr) - items[bufnr] = nil - end - - return cache -end - -return M diff --git a/lua/nvim-treesitter/compat.lua b/lua/nvim-treesitter/compat.lua deleted file mode 100644 index 0ad010030..000000000 --- a/lua/nvim-treesitter/compat.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Shim module to address deprecations across nvim versions -local ts = vim.treesitter -local tsq = ts.query - -local M = {} - -function M.get_query_files(lang, query_group, is_included) - return (tsq.get_files or tsq.get_query_files)(lang, query_group, is_included) -end - -function M.get_query(lang, query_name) - return (tsq.get or tsq.get_query)(lang, query_name) -end - -function M.parse_query(lang, query) - return (tsq.parse or tsq.parse_query)(lang, query) -end - -function M.get_range(node, source, metadata) - return (ts.get_range or tsq.get_range)(node, source, metadata) -end - -function M.get_node_text(node, bufnr) - return (ts.get_node_text or tsq.get_node_text)(node, bufnr) -end - -function M.require_language(lang, opts) - return (ts.language.add or ts.language.require_language)(lang, opts) -end - -function M.flatten(t) - if vim.fn.has "nvim-0.11" == 1 then - return vim.iter(t):flatten():totable() - else - return vim.tbl_flatten(t) - end -end - -return M diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua new file mode 100644 index 000000000..e43ad13c2 --- /dev/null +++ b/lua/nvim-treesitter/config.lua @@ -0,0 +1,144 @@ +local utils = require('nvim-treesitter.utils') + +local M = {} + +---@class TSConfig +---@field sync_install boolean +---@field auto_install boolean +---@field ensure_install string[] +---@field ignore_install string[] +---@field install_dir string + +---@type TSConfig +local config = { + sync_install = false, + auto_install = false, + ensure_install = {}, + ignore_install = {}, + install_dir = utils.join_path(vim.fn.stdpath('data'), 'site'), +} + +---Setup call for users to override configuration configurations. +---@param user_data TSConfig|nil user configuration table +function M.setup(user_data) + if user_data then + if user_data.install_dir then + user_data.install_dir = vim.fs.normalize(user_data.install_dir) + --TODO(clason): insert after/before site, or leave to user? + vim.opt.runtimepath:append(user_data.install_dir) + end + config = vim.tbl_deep_extend('force', config, user_data) + end + + if config.auto_install then + vim.api.nvim_create_autocmd('FileType', { + callback = function(args) + local ft = vim.bo[args.buf].filetype + local lang = vim.treesitter.language.get_lang(ft) or ft + if + require('nvim-treesitter.parsers').configs[lang] + and not vim.list_contains(M.installed_parsers(), lang) + and not vim.list_contains(config.ignore_install, lang) + then + require('nvim-treesitter.install').install(lang) + end + end, + }) + end + + if #config.ensure_install > 0 then + local to_install = M.norm_languages(config.ensure_install, { ignored = true, installed = true }) + + if #to_install > 0 then + require('nvim-treesitter.install').install(to_install, { + with_sync = config.sync_install, + }) + end + end +end + +-- Returns the install path for parsers, parser info, and queries. +-- If the specified directory does not exist, it is created. +---@param dir_name string +---@return string +function M.get_install_dir(dir_name) + local dir = utils.join_path(config.install_dir, dir_name) + + if not vim.loop.fs_stat(dir) then + local ok, error = pcall(vim.fn.mkdir, dir, 'p', '0755') + if not ok then + vim.notify(error, vim.log.levels.ERROR) + end + end + return dir +end + +---@return string[] +function M.installed_parsers() + local install_dir = M.get_install_dir('parser') + + local installed = {} --- @type string[] + for f in vim.fs.dir(install_dir) do + local lang = assert(f:match('(.*)%..*')) + installed[#installed + 1] = lang + end + + return installed +end + +---Normalize languages +---@param languages? string[]|string +---@param skip? table +---@return string[] +function M.norm_languages(languages, skip) + if not languages then + return {} + end + local parsers = require('nvim-treesitter.parsers') + + -- Turn into table + if type(languages) == 'string' then + languages = { languages } + end + + if vim.list_contains(languages, 'all') then + if skip and skip.missing then + return M.installed_parsers() + end + languages = parsers.get_available() + end + + for i, tier in ipairs(parsers.tiers) do + if vim.list_contains(languages, tier) then + languages = vim.iter.filter(function(l) + return l ~= tier + end, languages) + vim.list_extend(languages, parsers.get_available(i)) + end + end + + if skip and skip.ignored then + local ignored = config.ignore_install + languages = vim.iter.filter(function(v) + return not vim.list_contains(ignored, v) + end, languages) + end + + if skip and skip.installed then + local installed = M.installed_parsers() + languages = vim.iter.filter(function(v) + return not vim.list_contains(installed, v) + end, languages) + end + + if skip and skip.missing then + local installed = M.installed_parsers() + languages = vim.iter.filter(function(v) + return vim.list_contains(installed, v) + end, languages) + end + + return languages +end + +return M diff --git a/lua/nvim-treesitter/configs.lua b/lua/nvim-treesitter/configs.lua deleted file mode 100644 index a3ec30fb2..000000000 --- a/lua/nvim-treesitter/configs.lua +++ /dev/null @@ -1,616 +0,0 @@ -local api = vim.api - -local queries = require "nvim-treesitter.query" -local ts = require "nvim-treesitter.compat" -local parsers = require "nvim-treesitter.parsers" -local utils = require "nvim-treesitter.utils" -local caching = require "nvim-treesitter.caching" - -local M = {} - ----@class TSConfig ----@field modules {[string]:TSModule} ----@field sync_install boolean ----@field ensure_installed string[]|string ----@field ignore_install string[] ----@field auto_install boolean ----@field parser_install_dir string|nil - ----@type TSConfig -local config = { - modules = {}, - sync_install = false, - ensure_installed = {}, - auto_install = false, - ignore_install = {}, - parser_install_dir = nil, -} - --- List of modules that need to be setup on initialization. ----@type TSModule[][] -local queued_modules_defs = {} --- Whether we've initialized the plugin yet. -local is_initialized = false - ----@class TSModule ----@field module_path string ----@field enable boolean|string[]|function(string): boolean ----@field disable boolean|string[]|function(string): boolean ----@field keymaps table<string, string> ----@field is_supported function(string): boolean ----@field attach function(string) ----@field detach function(string) ----@field enabled_buffers table<integer, boolean> ----@field additional_vim_regex_highlighting boolean|string[] - ----@type {[string]: TSModule} -local builtin_modules = { - highlight = { - module_path = "nvim-treesitter.highlight", - -- @deprecated: use `highlight.set_custom_captures` instead - custom_captures = {}, - enable = false, - is_supported = function(lang) - return queries.has_highlights(lang) - end, - additional_vim_regex_highlighting = false, - }, - incremental_selection = { - module_path = "nvim-treesitter.incremental_selection", - enable = false, - keymaps = { - init_selection = "gnn", -- set to `false` to disable one of the mappings - node_incremental = "grn", - scope_incremental = "grc", - node_decremental = "grm", - }, - is_supported = function() - return true - end, - }, - indent = { - module_path = "nvim-treesitter.indent", - enable = false, - is_supported = queries.has_indents, - }, -} - -local attached_buffers_by_module = caching.create_buffer_cache() - ----Resolves a module by requiring the `module_path` or using the module definition. ----@param mod_name string ----@return TSModule|nil -local function resolve_module(mod_name) - local config_mod = M.get_module(mod_name) - - if not config_mod then - return - end - - if type(config_mod.attach) == "function" and type(config_mod.detach) == "function" then - return config_mod - elseif type(config_mod.module_path) == "string" then - return require(config_mod.module_path) - end -end - ----Enables and attaches the module to a buffer for lang. ----@param mod string path to module ----@param bufnr integer|nil buffer number, defaults to current buffer ----@param lang string|nil language, defaults to current language -local function enable_module(mod, bufnr, lang) - local module = M.get_module(mod) - if not module then - return - end - - bufnr = bufnr or api.nvim_get_current_buf() - lang = lang or parsers.get_buf_lang(bufnr) - - if not module.enable then - if module.enabled_buffers then - module.enabled_buffers[bufnr] = true - else - module.enabled_buffers = { [bufnr] = true } - end - end - - M.attach_module(mod, bufnr, lang) -end - ----Enables autocomands for the module. ----After the module is loaded `loaded` will be set to true for the module. ----@param mod string path to module -local function enable_mod_conf_autocmd(mod) - local config_mod = M.get_module(mod) - if not config_mod or config_mod.loaded then - return - end - - api.nvim_create_autocmd("FileType", { - group = api.nvim_create_augroup("NvimTreesitter-" .. mod, {}), - callback = function(args) - require("nvim-treesitter.configs").reattach_module(mod, args.buf) - end, - desc = "Reattach module", - }) - - config_mod.loaded = true -end - ----Enables the module globally and for all current buffers. ----After enabled, `enable` will be set to true for the module. ----@param mod string path to module -local function enable_all(mod) - local config_mod = M.get_module(mod) - if not config_mod then - return - end - - enable_mod_conf_autocmd(mod) - config_mod.enable = true - config_mod.enabled_buffers = nil - - for _, bufnr in pairs(api.nvim_list_bufs()) do - enable_module(mod, bufnr) - end -end - ----Disables and detaches the module for a buffer. ----@param mod string path to module ----@param bufnr integer buffer number, defaults to current buffer -local function disable_module(mod, bufnr) - local module = M.get_module(mod) - if not module then - return - end - - bufnr = bufnr or api.nvim_get_current_buf() - if module.enabled_buffers then - module.enabled_buffers[bufnr] = false - end - M.detach_module(mod, bufnr) -end - ----Disables autocomands for the module. ----After the module is unloaded `loaded` will be set to false for the module. ----@param mod string path to module -local function disable_mod_conf_autocmd(mod) - local config_mod = M.get_module(mod) - if not config_mod or not config_mod.loaded then - return - end - api.nvim_clear_autocmds { event = "FileType", group = "NvimTreesitter-" .. mod } - config_mod.loaded = false -end - ----Disables the module globally and for all current buffers. ----After disabled, `enable` will be set to false for the module. ----@param mod string path to module -local function disable_all(mod) - local config_mod = M.get_module(mod) - if not config_mod then - return - end - - config_mod.enabled_buffers = nil - disable_mod_conf_autocmd(mod) - config_mod.enable = false - - for _, bufnr in pairs(api.nvim_list_bufs()) do - disable_module(mod, bufnr) - end -end - ----Toggles a module for a buffer ----@param mod string path to module ----@param bufnr integer buffer number, defaults to current buffer ----@param lang string language, defaults to current language -local function toggle_module(mod, bufnr, lang) - bufnr = bufnr or api.nvim_get_current_buf() - lang = lang or parsers.get_buf_lang(bufnr) - - if attached_buffers_by_module.has(mod, bufnr) then - disable_module(mod, bufnr) - else - enable_module(mod, bufnr, lang) - end -end - --- Toggles the module globally and for all current buffers. --- @param mod path to module -local function toggle_all(mod) - local config_mod = M.get_module(mod) - if not config_mod then - return - end - - if config_mod.enable then - disable_all(mod) - else - enable_all(mod) - end -end - ----Recurses through all modules including submodules ----@param accumulator function called for each module ----@param root {[string]: TSModule}|nil root configuration table to start at ----@param path string|nil prefix path -local function recurse_modules(accumulator, root, path) - root = root or config.modules - - for name, module in pairs(root) do - local new_path = path and (path .. "." .. name) or name - - if M.is_module(module) then - accumulator(name, module, new_path, root) - elseif type(module) == "table" then - recurse_modules(accumulator, module, new_path) - end - end -end - --- Shows current configuration of all nvim-treesitter modules ----@param process_function function used as the `process` parameter ---- for vim.inspect (https://github.com/kikito/inspect.lua#optionsprocess) -local function config_info(process_function) - process_function = process_function - or function(item, path) - if path[#path] == vim.inspect.METATABLE then - return - end - if path[#path] == "is_supported" then - return - end - return item - end - print(vim.inspect(config, { process = process_function })) -end - ----@param query_group string ----@param lang string -function M.edit_query_file(query_group, lang) - lang = lang or parsers.get_buf_lang() - local files = ts.get_query_files(lang, query_group, true) - if #files == 0 then - utils.notify "No query file found! Creating a new one!" - M.edit_query_file_user_after(query_group, lang) - elseif #files == 1 then - vim.cmd(":edit " .. files[1]) - else - vim.ui.select(files, { prompt = "Select a file:" }, function(file) - if file then - vim.cmd(":edit " .. file) - end - end) - end -end - ----@param query_group string ----@param lang string -function M.edit_query_file_user_after(query_group, lang) - lang = lang or parsers.get_buf_lang() - local folder = utils.join_path(vim.fn.stdpath "config", "after", "queries", lang) - local file = utils.join_path(folder, query_group .. ".scm") - if vim.fn.isdirectory(folder) ~= 1 then - vim.ui.select({ "Yes", "No" }, { prompt = '"' .. folder .. '" does not exist. Create it?' }, function(choice) - if choice == "Yes" then - vim.fn.mkdir(folder, "p", "0755") - vim.cmd(":edit " .. file) - end - end) - else - vim.cmd(":edit " .. file) - end -end - -M.commands = { - TSBufEnable = { - run = enable_module, - args = { - "-nargs=1", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSBufDisable = { - run = disable_module, - args = { - "-nargs=1", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSBufToggle = { - run = toggle_module, - args = { - "-nargs=1", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSEnable = { - run = enable_all, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSDisable = { - run = disable_all, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSToggle = { - run = toggle_all, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, - TSConfigInfo = { - run = config_info, - args = { - "-nargs=0", - }, - }, - TSEditQuery = { - run = M.edit_query_file, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#available_query_groups", - }, - }, - TSEditQueryUserAfter = { - run = M.edit_query_file_user_after, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#available_query_groups", - }, - }, -} - ----@param mod string module ----@param lang string the language of the buffer ----@param bufnr integer the buffer -function M.is_enabled(mod, lang, bufnr) - if not parsers.has_parser(lang) then - return false - end - - local module_config = M.get_module(mod) - if not module_config then - return false - end - - local buffer_enabled = module_config.enabled_buffers and module_config.enabled_buffers[bufnr] - local config_enabled = module_config.enable or buffer_enabled - if not config_enabled or not module_config.is_supported(lang) then - return false - end - - local disable = module_config.disable - if type(disable) == "function" then - if disable(lang, bufnr) then - return false - end - elseif type(disable) == "table" then - -- Otherwise it's a list of languages - for _, parser in pairs(disable) do - if lang == parser then - return false - end - end - end - - return true -end - ----Setup call for users to override module configurations. ----@param user_data TSConfig module overrides -function M.setup(user_data) - config.modules = vim.tbl_deep_extend("force", config.modules, user_data) - config.ignore_install = user_data.ignore_install or {} - config.parser_install_dir = user_data.parser_install_dir or nil - if config.parser_install_dir then - config.parser_install_dir = vim.fn.expand(config.parser_install_dir, ":p") - end - - config.auto_install = user_data.auto_install or false - if config.auto_install then - require("nvim-treesitter.install").setup_auto_install() - end - - local ensure_installed = user_data.ensure_installed or {} - if #ensure_installed > 0 then - if user_data.sync_install then - require("nvim-treesitter.install").ensure_installed_sync(ensure_installed) - else - require("nvim-treesitter.install").ensure_installed(ensure_installed) - end - end - - config.modules.ensure_installed = nil - config.ensure_installed = ensure_installed - - recurse_modules(function(_, _, new_path) - local data = utils.get_at_path(config.modules, new_path) - if data.enable then - enable_all(new_path) - end - end, config.modules) -end - --- Defines a table of modules that can be attached/detached to buffers --- based on language support. A module consist of the following properties: ----* @enable Whether the modules is enabled. Can be true or false. ----* @disable A list of languages to disable the module for. Only relevant if enable is true. ----* @keymaps A list of user mappings for a given module if relevant. ----* @is_supported A function which, given a ft, will return true if the ft works on the module. ----* @module_path A string path to a module file using `require`. The exported module must contain ---- an `attach` and `detach` function. This path is not required if `attach` and `detach` ---- functions are provided directly on the module definition. ----* @attach An attach function that is called for each buffer that the module is enabled for. This is required ---- if a `module_path` is not specified. ----* @detach A detach function that is called for each buffer that the module is enabled for. This is required ---- if a `module_path` is not specified. --- --- Modules are not setup until `init` is invoked by the plugin. This allows modules to be defined in any order --- and can be loaded lazily. --- ----* @example ----require"nvim-treesitter".define_modules { ---- my_cool_module = { ---- attach = function() ---- do_some_cool_setup() ---- end, ---- detach = function() ---- do_some_cool_teardown() ---- end ---- } ----} ----@param mod_defs TSModule[] -function M.define_modules(mod_defs) - if not is_initialized then - table.insert(queued_modules_defs, mod_defs) - return - end - - recurse_modules(function(key, mod, _, group) - group[key] = vim.tbl_extend("keep", mod, { - enable = false, - disable = {}, - is_supported = function() - return true - end, - }) - end, mod_defs) - - config.modules = vim.tbl_deep_extend("keep", config.modules, mod_defs) - - for _, mod in ipairs(M.available_modules(mod_defs)) do - local module_config = M.get_module(mod) - if module_config and module_config.enable then - enable_mod_conf_autocmd(mod) - end - end -end - ----Attaches a module to a buffer ----@param mod_name string the module name ----@param bufnr integer the buffer ----@param lang string the language of the buffer -function M.attach_module(mod_name, bufnr, lang) - bufnr = bufnr or api.nvim_get_current_buf() - lang = lang or parsers.get_buf_lang(bufnr) - local resolved_mod = resolve_module(mod_name) - - if resolved_mod and not attached_buffers_by_module.has(mod_name, bufnr) and M.is_enabled(mod_name, lang, bufnr) then - attached_buffers_by_module.set(mod_name, bufnr, true) - resolved_mod.attach(bufnr, lang) - end -end - --- Detaches a module to a buffer ----@param mod_name string the module name ----@param bufnr integer the buffer -function M.detach_module(mod_name, bufnr) - local resolved_mod = resolve_module(mod_name) - bufnr = bufnr or api.nvim_get_current_buf() - - if resolved_mod and attached_buffers_by_module.has(mod_name, bufnr) then - attached_buffers_by_module.remove(mod_name, bufnr) - resolved_mod.detach(bufnr) - end -end - --- Same as attach_module, but if the module is already attached, detach it first. ----@param mod_name string the module name ----@param bufnr integer the buffer ----@param lang string the language of the buffer -function M.reattach_module(mod_name, bufnr, lang) - M.detach_module(mod_name, bufnr) - M.attach_module(mod_name, bufnr, lang) -end - --- Gets available modules ----@param root {[string]:TSModule}|nil table to find modules ----@return string[] modules list of module paths -function M.available_modules(root) - local modules = {} - - recurse_modules(function(_, _, path) - table.insert(modules, path) - end, root) - - return modules -end - ----Gets a module config by path ----@param mod_path string path to the module ----@return TSModule|nil: the module or nil -function M.get_module(mod_path) - local mod = utils.get_at_path(config.modules, mod_path) - - return M.is_module(mod) and mod or nil -end - --- Determines whether the provided table is a module. --- A module should contain an attach and detach function. ----@param mod table|nil the module table ----@return boolean -function M.is_module(mod) - return type(mod) == "table" - and ((type(mod.attach) == "function" and type(mod.detach) == "function") or type(mod.module_path) == "string") -end - --- Initializes built-in modules and any queued modules --- registered by plugins or the user. -function M.init() - is_initialized = true - M.define_modules(builtin_modules) - - for _, mod_def in ipairs(queued_modules_defs) do - M.define_modules(mod_def) - end -end - --- If parser_install_dir is not nil is used or created. --- If parser_install_dir is nil try the package dir of the nvim-treesitter --- plugin first, followed by the "site" dir from "runtimepath". "site" dir will --- be created if it doesn't exist. Using only the package dir won't work when --- the plugin is installed with Nix, since the "/nix/store" is read-only. ----@param folder_name string|nil ----@return string|nil, string|nil -function M.get_parser_install_dir(folder_name) - folder_name = folder_name or "parser" - - local install_dir = config.parser_install_dir or utils.get_package_path() - local parser_dir = utils.join_path(install_dir, folder_name) - - return utils.create_or_reuse_writable_dir( - parser_dir, - utils.join_space("Could not create parser dir '", parser_dir, "': "), - utils.join_space( - "Parser dir '", - parser_dir, - "' should be read/write (see README on how to configure an alternative install location)" - ) - ) -end - -function M.get_parser_info_dir() - return M.get_parser_install_dir "parser-info" -end - -function M.get_ignored_parser_installs() - return config.ignore_install or {} -end - -function M.get_ensure_installed_parsers() - if type(config.ensure_installed) == "string" then - return { config.ensure_installed } - end - return config.ensure_installed or {} -end - -return M diff --git a/lua/nvim-treesitter/fold.lua b/lua/nvim-treesitter/fold.lua deleted file mode 100644 index 759599876..000000000 --- a/lua/nvim-treesitter/fold.lua +++ /dev/null @@ -1,123 +0,0 @@ -local api = vim.api -local tsutils = require "nvim-treesitter.ts_utils" -local query = require "nvim-treesitter.query" -local parsers = require "nvim-treesitter.parsers" - -local M = {} - --- This is cached on buf tick to avoid computing that multiple times --- Especially not for every line in the file when `zx` is hit -local folds_levels = tsutils.memoize_by_buf_tick(function(bufnr) - local max_fold_level = api.nvim_win_get_option(0, "foldnestmax") - local trim_level = function(level) - if level > max_fold_level then - return max_fold_level - end - return level - end - - local parser = parsers.get_parser(bufnr) - - if not parser then - return {} - end - - local matches = query.get_capture_matches_recursively(bufnr, function(lang) - if query.has_folds(lang) then - return "@fold", "folds" - elseif query.has_locals(lang) then - return "@scope", "locals" - end - end) - - -- start..stop is an inclusive range - - ---@type table<number, number> - local start_counts = {} - ---@type table<number, number> - local stop_counts = {} - - local prev_start = -1 - local prev_stop = -1 - - local min_fold_lines = api.nvim_win_get_option(0, "foldminlines") - - for _, match in ipairs(matches) do - local start, stop, stop_col ---@type integer, integer, integer - if match.metadata and match.metadata.range then - start, _, stop, stop_col = unpack(match.metadata.range) ---@type integer, integer, integer, integer - else - start, _, stop, stop_col = match.node:range() ---@type integer, integer, integer, integer - end - - if stop_col == 0 then - stop = stop - 1 - end - - local fold_length = stop - start + 1 - local should_fold = fold_length > min_fold_lines - - -- Fold only multiline nodes that are not exactly the same as previously met folds - -- Checking against just the previously found fold is sufficient if nodes - -- are returned in preorder or postorder when traversing tree - if should_fold and not (start == prev_start and stop == prev_stop) then - start_counts[start] = (start_counts[start] or 0) + 1 - stop_counts[stop] = (stop_counts[stop] or 0) + 1 - prev_start = start - prev_stop = stop - end - end - - ---@type string[] - local levels = {} - local current_level = 0 - - -- We now have the list of fold opening and closing, fill the gaps and mark where fold start - for lnum = 0, api.nvim_buf_line_count(bufnr) do - local prefix = "" - - local last_trimmed_level = trim_level(current_level) - current_level = current_level + (start_counts[lnum] or 0) - local trimmed_level = trim_level(current_level) - current_level = current_level - (stop_counts[lnum] or 0) - local next_trimmed_level = trim_level(current_level) - - -- Determine if it's the start/end of a fold - -- NB: vim's fold-expr interface does not have a mechanism to indicate that - -- two (or more) folds start at this line, so it cannot distinguish between - -- ( \n ( \n )) \n (( \n ) \n ) - -- versus - -- ( \n ( \n ) \n ( \n ) \n ) - -- If it did have such a mechanism, (trimmed_level - last_trimmed_level) - -- would be the correct number of starts to pass on. - if trimmed_level - last_trimmed_level > 0 then - prefix = ">" - elseif trimmed_level - next_trimmed_level > 0 then - -- Ending marks tend to confuse vim more than it helps, particularly when - -- the fold level changes by at least 2; we can uncomment this if - -- vim's behavior gets fixed. - -- prefix = "<" - prefix = "" - end - - levels[lnum + 1] = prefix .. tostring(trimmed_level) - end - - return levels -end) - ----@param lnum integer ----@return string -function M.get_fold_indic(lnum) - if not parsers.has_parser() or not lnum then - return "0" - end - - local buf = api.nvim_get_current_buf() - - local levels = folds_levels(buf) or {} - - return levels[lnum] or "0" -end - -return M diff --git a/lua/nvim-treesitter/health.lua b/lua/nvim-treesitter/health.lua index 32741b136..e8c945f6c 100644 --- a/lua/nvim-treesitter/health.lua +++ b/lua/nvim-treesitter/health.lua @@ -1,116 +1,119 @@ -local api = vim.api -local fn = vim.fn - -local queries = require "nvim-treesitter.query" -local info = require "nvim-treesitter.info" -local shell = require "nvim-treesitter.shell_command_selectors" -local install = require "nvim-treesitter.install" -local utils = require "nvim-treesitter.utils" -local ts = require "nvim-treesitter.compat" - -local health = vim.health or require "health" - --- "report_" prefix has been deprecated, use the recommended replacements if they exist. -local _start = health.start or health.report_start -local _ok = health.ok or health.report_ok -local _warn = health.warn or health.report_warn -local _error = health.error or health.report_error +local shell = require('nvim-treesitter.shell_cmds') +local install = require('nvim-treesitter.install') +local config = require('nvim-treesitter.config') +local tsq = vim.treesitter.query local M = {} local NVIM_TREESITTER_MINIMUM_ABI = 13 +---@return string|nil +local function ts_cli_version() + if vim.fn.executable('tree-sitter') == 1 then + local handle = io.popen('tree-sitter -V') + if not handle then + return + end + local result = handle:read('*a') + handle:close() + return vim.split(result, '\n')[1]:match('[^tree%psitter ].*') + end +end + local function install_health() - _start "Installation" + vim.health.start('Installation') - if fn.has "nvim-0.10" ~= 1 then - _error "Nvim-treesitter requires Nvim 0.10 or newer" + if vim.fn.has('nvim-0.10') ~= 1 then + vim.health.error('Nvim-treesitter requires Neovim Nightly') end - if fn.executable "tree-sitter" == 0 then - _warn( - "`tree-sitter` executable not found (parser generator, only needed for :TSInstallFromGrammar," - .. " not required for :TSInstall)" + if vim.fn.executable('tree-sitter') == 0 then + vim.health.warn( + '`tree-sitter` executable not found (parser generator, only needed for :TSInstallFromGrammar,' + .. ' not required for :TSInstall)' ) else - _ok( - "`tree-sitter` found " - .. (utils.ts_cli_version() or "(unknown version)") - .. " (parser generator, only needed for :TSInstallFromGrammar)" + vim.health.ok( + '`tree-sitter` found ' + .. (ts_cli_version() or '(unknown version)') + .. ' (parser generator, only needed for :TSInstallFromGrammar)' ) end - if fn.executable "node" == 0 then - _warn("`node` executable not found (only needed for :TSInstallFromGrammar," .. " not required for :TSInstall)") + if vim.fn.executable('node') == 0 then + vim.health.warn( + '`node` executable not found (only needed for :TSInstallFromGrammar,' + .. ' not required for :TSInstall)' + ) else - local handle = io.popen "node --version" - local result = handle:read "*a" + local handle = assert(io.popen('node --version')) + local result = handle:read('*a') handle:close() - local version = vim.split(result, "\n")[1] - _ok("`node` found " .. version .. " (only needed for :TSInstallFromGrammar)") + local version = vim.split(result, '\n')[1] + vim.health.ok('`node` found ' .. version .. ' (only needed for :TSInstallFromGrammar)') end - if fn.executable "git" == 0 then - _error("`git` executable not found.", { - "Install it with your package manager.", - "Check that your `$PATH` is set correctly.", + if vim.fn.executable('git') == 0 then + vim.health.error('`git` executable not found.', { + 'Install it with your package manager.', + 'Check that your `$PATH` is set correctly.', }) else - _ok "`git` executable found." + vim.health.ok('`git` executable found.') end local cc = shell.select_executable(install.compilers) if not cc then - _error("`cc` executable not found.", { - "Check that any of " + vim.health.error('`cc` executable not found.', { + 'Check that any of ' .. vim.inspect(install.compilers) - .. " is in your $PATH" + .. ' is in your $PATH' .. ' or set the environment variable CC or `require"nvim-treesitter.install".compilers` explicitly!', }) else - local version = vim.fn.systemlist(cc .. (cc == "cl" and "" or " --version"))[1] - _ok( - "`" + local version = vim.fn.systemlist(cc .. (cc == 'cl' and '' or ' --version'))[1] + vim.health.ok( + '`' .. cc - .. "` executable found. Selected from " + .. '` executable found. Selected from ' .. vim.inspect(install.compilers) - .. (version and ("\nVersion: " .. version) or "") + .. (version and ('\nVersion: ' .. version) or '') ) end if vim.treesitter.language_version then if vim.treesitter.language_version >= NVIM_TREESITTER_MINIMUM_ABI then - _ok( - "Neovim was compiled with tree-sitter runtime ABI version " + vim.health.ok( + 'Neovim was compiled with tree-sitter runtime ABI version ' .. vim.treesitter.language_version - .. " (required >=" + .. ' (required >=' .. NVIM_TREESITTER_MINIMUM_ABI - .. "). Parsers must be compatible with runtime ABI." + .. '). Parsers must be compatible with runtime ABI.' ) else - _error( - "Neovim was compiled with tree-sitter runtime ABI version " + vim.health.error( + 'Neovim was compiled with tree-sitter runtime ABI version ' .. vim.treesitter.language_version - .. ".\n" - .. "nvim-treesitter expects at least ABI version " + .. '.\n' + .. 'nvim-treesitter expects at least ABI version ' .. NVIM_TREESITTER_MINIMUM_ABI - .. "\n" - .. "Please make sure that Neovim is linked against are recent tree-sitter runtime when building" - .. " or raise an issue at your Neovim packager. Parsers must be compatible with runtime ABI." + .. '\n' + .. 'Please make sure that Neovim is linked against are recent tree-sitter runtime when building' + .. ' or raise an issue at your Neovim packager. Parsers must be compatible with runtime ABI.' ) end end - _start("OS Info:\n" .. vim.inspect(vim.loop.os_uname())) + vim.health.start('OS Info:\n' .. vim.inspect(vim.loop.os_uname())) end local function query_status(lang, query_group) - local ok, err = pcall(queries.get_query, lang, query_group) + local ok, err = pcall(tsq.get, lang, query_group) if not ok then - return "x", err + return 'x', err elseif not err then - return "." + return '.' else - return "✓" + return '✓' end end @@ -118,59 +121,53 @@ function M.check() local error_collection = {} -- Installation dependency checks install_health() - queries.invalidate_query_cache() -- Parser installation checks - local parser_installation = { "Parser/Features" .. string.rep(" ", 9) .. "H L F I J" } - for _, parser_name in pairs(info.installed_parsers()) do - local installed = #api.nvim_get_runtime_file("parser/" .. parser_name .. ".so", false) - - -- Only append information about installed parsers - if installed >= 1 then - local multiple_parsers = installed > 1 and "+" or "" - local out = " - " .. parser_name .. multiple_parsers .. string.rep(" ", 20 - (#parser_name + #multiple_parsers)) - for _, query_group in pairs(queries.built_in_query_groups) do - local status, err = query_status(parser_name, query_group) - out = out .. status .. " " - if err then - table.insert(error_collection, { parser_name, query_group, err }) - end + local parser_installation = { 'Parser/Features' .. string.rep(' ', 9) .. 'H L F I J' } + for _, parser_name in pairs(config.installed_parsers()) do + local out = ' - ' .. parser_name .. string.rep(' ', 20 - #parser_name) + for _, query_group in pairs(M.bundled_queries) do + local status, err = query_status(parser_name, query_group) + out = out .. status .. ' ' + if err then + table.insert(error_collection, { parser_name, query_group, err }) end - table.insert(parser_installation, vim.fn.trim(out, " ", 2)) end + table.insert(parser_installation, vim.fn.trim(out, ' ', 2)) end local legend = [[ - Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections - +) multiple parsers found, only one will be used - x) errors found in the query, try to run :TSUpdate {lang}]] + Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[J]ections + x) errors found in the query, try to run :TSUpdate {lang}]] table.insert(parser_installation, legend) -- Finally call the report function - _start(table.concat(parser_installation, "\n")) + vim.health.start(table.concat(parser_installation, '\n')) if #error_collection > 0 then - _start "The following errors have been detected:" + vim.health.start('The following errors have been detected:') for _, p in ipairs(error_collection) do local lang, type, err = unpack(p) local lines = {} - table.insert(lines, lang .. "(" .. type .. "): " .. err) - local files = ts.get_query_files(lang, type) + table.insert(lines, lang .. '(' .. type .. '): ' .. err) + local files = tsq.get_files(lang, type) if #files > 0 then - table.insert(lines, lang .. "(" .. type .. ") is concatenated from the following files:") + table.insert(lines, lang .. '(' .. type .. ') is concatenated from the following files:') for _, file in ipairs(files) do - local fd = io.open(file, "r") + local fd = io.open(file, 'r') if fd then - local ok, file_err = pcall(ts.parse_query, lang, fd:read "*a") + local ok, file_err = pcall(tsq.parse, lang, fd:read('*a')) if ok then - table.insert(lines, '| [OK]:"' .. file .. '"') + table.insert(lines, '| [OK]:"' .. file .. '"') else - table.insert(lines, '| [ERROR]:"' .. file .. '", failed to load: ' .. file_err) + table.insert(lines, '| [ERR]:"' .. file .. '", failed to load: ' .. file_err) end fd:close() end end end - _error(table.concat(lines, "\n")) + vim.health.error(table.concat(lines, '\n')) end end end +M.bundled_queries = { 'highlights', 'locals', 'folds', 'indents', 'injections' } + return M diff --git a/lua/nvim-treesitter/highlight.lua b/lua/nvim-treesitter/highlight.lua deleted file mode 100644 index 5a3cc2e86..000000000 --- a/lua/nvim-treesitter/highlight.lua +++ /dev/null @@ -1,49 +0,0 @@ -local configs = require "nvim-treesitter.configs" - -local M = {} - ----@param config TSModule ----@param lang string ----@return boolean -local function should_enable_vim_regex(config, lang) - local additional_hl = config.additional_vim_regex_highlighting - local is_table = type(additional_hl) == "table" - - ---@diagnostic disable-next-line: param-type-mismatch - return additional_hl and (not is_table or vim.tbl_contains(additional_hl, lang)) -end - ----@param bufnr integer ----@param lang string -function M.attach(bufnr, lang) - local config = configs.get_module "highlight" - vim.treesitter.start(bufnr, lang) - if config and should_enable_vim_regex(config, lang) then - vim.bo[bufnr].syntax = "ON" - end -end - ----@param bufnr integer -function M.detach(bufnr) - vim.treesitter.stop(bufnr) -end - ----@deprecated -function M.start(...) - vim.notify( - "`nvim-treesitter.highlight.start` is deprecated: use `nvim-treesitter.highlight.attach` or `vim.treesitter.start`", - vim.log.levels.WARN - ) - M.attach(...) -end - ----@deprecated -function M.stop(...) - vim.notify( - "`nvim-treesitter.highlight.stop` is deprecated: use `nvim-treesitter.highlight.detach` or `vim.treesitter.stop`", - vim.log.levels.WARN - ) - M.detach(...) -end - -return M diff --git a/lua/nvim-treesitter/incremental_selection.lua b/lua/nvim-treesitter/incremental_selection.lua deleted file mode 100644 index 570f9eed9..000000000 --- a/lua/nvim-treesitter/incremental_selection.lua +++ /dev/null @@ -1,176 +0,0 @@ -local api = vim.api - -local configs = require "nvim-treesitter.configs" -local ts_utils = require "nvim-treesitter.ts_utils" -local locals = require "nvim-treesitter.locals" -local parsers = require "nvim-treesitter.parsers" -local queries = require "nvim-treesitter.query" -local utils = require "nvim-treesitter.utils" - -local M = {} - ----@type table<integer, table<TSNode|nil>> -local selections = {} - -function M.init_selection() - local buf = api.nvim_get_current_buf() - parsers.get_parser():parse { vim.fn.line "w0" - 1, vim.fn.line "w$" } - local node = ts_utils.get_node_at_cursor() - selections[buf] = { [1] = node } - ts_utils.update_selection(buf, node) -end - --- Get the range of the current visual selection. --- --- The range starts with 1 and the ending is inclusive. ----@return integer, integer, integer, integer -local function visual_selection_range() - local _, csrow, cscol, _ = unpack(vim.fn.getpos "v") ---@type integer, integer, integer, integer - local _, cerow, cecol, _ = unpack(vim.fn.getpos ".") ---@type integer, integer, integer, integer - - local start_row, start_col, end_row, end_col ---@type integer, integer, integer, integer - - if csrow < cerow or (csrow == cerow and cscol <= cecol) then - start_row = csrow - start_col = cscol - end_row = cerow - end_col = cecol - else - start_row = cerow - start_col = cecol - end_row = csrow - end_col = cscol - end - - return start_row, start_col, end_row, end_col -end - ----@param node TSNode ----@return boolean -local function range_matches(node) - local csrow, cscol, cerow, cecol = visual_selection_range() - local srow, scol, erow, ecol = ts_utils.get_vim_range { node:range() } - return srow == csrow and scol == cscol and erow == cerow and ecol == cecol -end - ----@param get_parent fun(node: TSNode): TSNode|nil ----@return fun():nil -local function select_incremental(get_parent) - return function() - local buf = api.nvim_get_current_buf() - local nodes = selections[buf] - - local csrow, cscol, cerow, cecol = visual_selection_range() - -- Initialize incremental selection with current selection - if not nodes or #nodes == 0 or not range_matches(nodes[#nodes]) then - local parser = parsers.get_parser() - parser:parse { vim.fn.line "w0" - 1, vim.fn.line "w$" } - local node = parser:named_node_for_range( - { csrow - 1, cscol - 1, cerow - 1, cecol }, - { ignore_injections = false } - ) - ts_utils.update_selection(buf, node) - if nodes and #nodes > 0 then - table.insert(selections[buf], node) - else - selections[buf] = { [1] = node } - end - return - end - - -- Find a node that changes the current selection. - local node = nodes[#nodes] ---@type TSNode - while true do - local parent = get_parent(node) - if not parent or parent == node then - -- Keep searching in the parent tree - local root_parser = parsers.get_parser() - root_parser:parse { vim.fn.line "w0" - 1, vim.fn.line "w$" } - local current_parser = root_parser:language_for_range { csrow - 1, cscol - 1, cerow - 1, cecol } - if root_parser == current_parser then - node = root_parser:named_node_for_range { csrow - 1, cscol - 1, cerow - 1, cecol } - ts_utils.update_selection(buf, node) - return - end - -- NOTE: parent() method is private - local parent_parser = current_parser:parent() - parent = parent_parser:named_node_for_range { csrow - 1, cscol - 1, cerow - 1, cecol } - end - node = parent - local srow, scol, erow, ecol = ts_utils.get_vim_range { node:range() } - local same_range = (srow == csrow and scol == cscol and erow == cerow and ecol == cecol) - if not same_range then - table.insert(selections[buf], node) - if node ~= nodes[#nodes] then - table.insert(nodes, node) - end - ts_utils.update_selection(buf, node) - return - end - end - end -end - -M.node_incremental = select_incremental(function(node) - return node:parent() or node -end) - -M.scope_incremental = select_incremental(function(node) - local lang = parsers.get_buf_lang() - if queries.has_locals(lang) then - return locals.containing_scope(node:parent() or node) - else - return node - end -end) - -function M.node_decremental() - local buf = api.nvim_get_current_buf() - local nodes = selections[buf] - if not nodes or #nodes < 2 then - return - end - - table.remove(selections[buf]) - local node = nodes[#nodes] ---@type TSNode - ts_utils.update_selection(buf, node) -end - -local FUNCTION_DESCRIPTIONS = { - init_selection = "Start selecting nodes with nvim-treesitter", - node_incremental = "Increment selection to named node", - scope_incremental = "Increment selection to surrounding scope", - node_decremental = "Shrink selection to previous named node", -} - ----@param bufnr integer -function M.attach(bufnr) - local config = configs.get_module "incremental_selection" - for funcname, mapping in pairs(config.keymaps) do - if mapping then - local mode = funcname == "init_selection" and "n" or "x" - local rhs = M[funcname] ---@type function - - if not rhs then - utils.notify("Unknown keybinding: " .. funcname .. debug.traceback(), vim.log.levels.ERROR) - else - vim.keymap.set(mode, mapping, rhs, { buffer = bufnr, silent = true, desc = FUNCTION_DESCRIPTIONS[funcname] }) - end - end - end -end - -function M.detach(bufnr) - local config = configs.get_module "incremental_selection" - for f, mapping in pairs(config.keymaps) do - if mapping then - local mode = f == "init_selection" and "n" or "x" - local ok, err = pcall(vim.keymap.del, mode, mapping, { buffer = bufnr }) - if not ok then - utils.notify(string.format('%s "%s" for mode %s', err, mapping, mode), vim.log.levels.ERROR) - end - end - end -end - -return M diff --git a/lua/nvim-treesitter/indent.lua b/lua/nvim-treesitter/indent.lua index 19e7ef1ee..6b674dc63 100644 --- a/lua/nvim-treesitter/indent.lua +++ b/lua/nvim-treesitter/indent.lua @@ -1,5 +1,4 @@ local ts = vim.treesitter -local parsers = require "nvim-treesitter.parsers" local M = {} @@ -14,13 +13,13 @@ M.comment_parsers = { } local function getline(lnum) - return vim.api.nvim_buf_get_lines(0, lnum - 1, lnum, false)[1] or "" + return vim.api.nvim_buf_get_lines(0, lnum - 1, lnum, false)[1] or '' end ---@param lnum integer ---@return integer local function get_indentcols_at_line(lnum) - local _, indentcols = getline(lnum):find "^%s*" + local _, indentcols = getline(lnum):find('^%s*') return indentcols or 0 end @@ -62,8 +61,8 @@ local function find_delimiter(bufnr, node, delimiter) local line = vim.api.nvim_buf_get_lines(bufnr, linenr, linenr + 1, false)[1] local end_char = { child:end_() } local trimmed_after_delim - local escaped_delimiter = delimiter:gsub("[%-%.%+%[%]%(%)%$%^%%%?%*]", "%%%1") - trimmed_after_delim, _ = line:sub(end_char[2] + 1):gsub("[%s" .. escaped_delimiter .. "]*", "") + local escaped_delimiter = delimiter:gsub('[%-%.%+%[%]%(%)%$%^%%%?%*]', '%%%1') + trimmed_after_delim = line:sub(end_char[2] + 1):gsub('[%s' .. escaped_delimiter .. ']*', '') return child, #trimmed_after_delim == 0 end end @@ -75,7 +74,7 @@ end ---@param hash_fn fun(...): any ---@return F local function memoize(fn, hash_fn) - local cache = setmetatable({}, { __mode = "kv" }) ---@type table<any,any> + local cache = setmetatable({}, { __mode = 'kv' }) ---@type table<any,any> return function(...) local key = hash_fn(...) @@ -91,47 +90,47 @@ end local get_indents = memoize(function(bufnr, root, lang) local map = { - ["indent.auto"] = {}, - ["indent.begin"] = {}, - ["indent.end"] = {}, - ["indent.dedent"] = {}, - ["indent.branch"] = {}, - ["indent.ignore"] = {}, - ["indent.align"] = {}, - ["indent.zero"] = {}, + ['indent.auto'] = {}, + ['indent.begin'] = {}, + ['indent.end'] = {}, + ['indent.dedent'] = {}, + ['indent.branch'] = {}, + ['indent.ignore'] = {}, + ['indent.align'] = {}, + ['indent.zero'] = {}, } - --TODO(clason): remove when dropping Nvim 0.8 compat - local query = (ts.query.get or ts.get_query)(lang, "indents") + local query = ts.query.get(lang, 'indents') if not query then return map end for id, node, metadata in query:iter_captures(root, bufnr) do - if query.captures[id]:sub(1, 1) ~= "_" then + if query.captures[id]:sub(1, 1) ~= '_' then map[query.captures[id]][node:id()] = metadata or {} end end return map end, function(bufnr, root, lang) - return tostring(bufnr) .. root:id() .. "_" .. lang + return tostring(bufnr) .. root:id() .. '_' .. lang end) ---@param lnum number (1-indexed) +---@return integer function M.get_indent(lnum) local bufnr = vim.api.nvim_get_current_buf() - local parser = parsers.get_parser(bufnr) + local parser = ts.get_parser(bufnr) if not parser or not lnum then return -1 end - --TODO(clason): replace when dropping Nvim 0.8 compat - local root_lang = parsers.get_buf_lang(bufnr) + local ft = vim.bo[bufnr].filetype + local root_lang = vim.treesitter.language.get_lang(ft) or ft -- some languages like Python will actually have worse results when re-parsing at opened new line if not M.avoid_force_reparsing[root_lang] then -- Reparse in case we got triggered by ":h indentkeys" - parser:parse { vim.fn.line "w0" - 1, vim.fn.line "w$" } + parser:parse({ vim.fn.line('w0') - 1, vim.fn.line('w$') }) end -- Get language tree with smallest range around node that's not a comment parser @@ -155,15 +154,14 @@ function M.get_indent(lnum) end local q = get_indents(vim.api.nvim_get_current_buf(), root, lang_tree:lang()) - local is_empty_line = string.match(getline(lnum), "^%s*$") ~= nil local node ---@type TSNode - if is_empty_line then + if getline(lnum):find('^%s*$') then local prevlnum = vim.fn.prevnonblank(lnum) local indentcols = get_indentcols_at_line(prevlnum) local prevline = vim.trim(getline(prevlnum)) -- The final position can be trailing spaces, which should not affect indentation node = get_last_node_at_line(root, prevlnum, indentcols + #prevline - 1) - if node:type():match "comment" then + if node:type():match('comment') then -- The final node we capture of the previous line can be a comment node, which should also be ignored -- Unless the last line is an entire line of comment, ignore the comment range and find the last node again local first_node = get_first_node_at_line(root, prevlnum, indentcols) @@ -176,7 +174,7 @@ function M.get_indent(lnum) node = get_last_node_at_line(root, prevlnum, col) end end - if q["indent.end"][node:id()] then + if q['indent.end'][node:id()] then node = get_first_node_at_line(root, lnum) end else @@ -192,18 +190,18 @@ function M.get_indent(lnum) end -- tracks to ensure multiple indent levels are not applied for same line - local is_processed_by_row = {} + local is_processed_by_row = {} --- @type table<integer,boolean> - if q["indent.zero"][node:id()] then + if q['indent.zero'][node:id()] then return 0 end while node do -- do 'autoindent' if not marked as @indent if - not q["indent.begin"][node:id()] - and not q["indent.align"][node:id()] - and q["indent.auto"][node:id()] + not q['indent.begin'][node:id()] + and not q['indent.align'][node:id()] + and q['indent.auto'][node:id()] and node:start() < lnum - 1 and lnum - 1 <= node:end_() then @@ -214,8 +212,8 @@ function M.get_indent(lnum) -- If a node spans from L1,C1 to L2,C2, we know that lines where L1 < line <= L2 would -- have their indentations contained by the node. if - not q["indent.begin"][node:id()] - and q["indent.ignore"][node:id()] + not q['indent.begin'][node:id()] + and q['indent.ignore'][node:id()] and node:start() < lnum - 1 and lnum - 1 <= node:end_() then @@ -228,7 +226,10 @@ function M.get_indent(lnum) if not is_processed_by_row[srow] - and ((q["indent.branch"][node:id()] and srow == lnum - 1) or (q["indent.dedent"][node:id()] and srow ~= lnum - 1)) + and ( + (q['indent.branch'][node:id()] and srow == lnum - 1) + or (q['indent.dedent'][node:id()] and srow ~= lnum - 1) + ) then indent = indent - indent_size is_processed = true @@ -244,16 +245,16 @@ function M.get_indent(lnum) if should_process and ( - q["indent.begin"][node:id()] - and (srow ~= erow or is_in_err or q["indent.begin"][node:id()]["indent.immediate"]) - and (srow ~= lnum - 1 or q["indent.begin"][node:id()]["indent.start_at_same_line"]) + q['indent.begin'][node:id()] + and (srow ~= erow or is_in_err or q['indent.begin'][node:id()]['indent.immediate']) + and (srow ~= lnum - 1 or q['indent.begin'][node:id()]['indent.start_at_same_line']) ) then indent = indent + indent_size is_processed = true end - if is_in_err and not q["indent.align"][node:id()] then + if is_in_err and not q['indent.align'][node:id()] then -- only when the node is in error, promote the -- first child's aligned indent to the error node -- to work around ((ERROR "X" . (_)) @aligned_indent (#set! "delimiter" "AB")) @@ -261,34 +262,41 @@ function M.get_indent(lnum) -- (ERROR "X" @aligned_indent (#set! "delimiter" "AB") . (_)) -- and we will fish it out here. for c in node:iter_children() do - if q["indent.align"][c:id()] then - q["indent.align"][node:id()] = q["indent.align"][c:id()] + if q['indent.align'][c:id()] then + q['indent.align'][node:id()] = q['indent.align'][c:id()] break end end end -- do not indent for nodes that starts-and-ends on same line and starts on target line (lnum) - if should_process and q["indent.align"][node:id()] and (srow ~= erow or is_in_err) and (srow ~= lnum - 1) then - local metadata = q["indent.align"][node:id()] + if + should_process + and q['indent.align'][node:id()] + and (srow ~= erow or is_in_err) + and (srow ~= lnum - 1) + then + local metadata = q['indent.align'][node:id()] local o_delim_node, o_is_last_in_line ---@type TSNode|nil, boolean|nil local c_delim_node, c_is_last_in_line ---@type TSNode|nil, boolean|nil, boolean|nil local indent_is_absolute = false - if metadata["indent.open_delimiter"] then - o_delim_node, o_is_last_in_line = find_delimiter(bufnr, node, metadata["indent.open_delimiter"]) + if metadata['indent.open_delimiter'] then + o_delim_node, o_is_last_in_line = + find_delimiter(bufnr, node, metadata['indent.open_delimiter']) else o_delim_node = node end - if metadata["indent.close_delimiter"] then - c_delim_node, c_is_last_in_line = find_delimiter(bufnr, node, metadata["indent.close_delimiter"]) + if metadata['indent.close_delimiter'] then + c_delim_node, c_is_last_in_line = + find_delimiter(bufnr, node, metadata['indent.close_delimiter']) else c_delim_node = node end if o_delim_node then local o_srow, o_scol = o_delim_node:start() - local c_srow = nil + local c_srow = nil --- @type integer? if c_delim_node then - c_srow, _ = c_delim_node:start() + c_srow = c_delim_node:start() end if o_is_last_in_line then -- hanging indent (previous line ended with starting delimiter) @@ -310,7 +318,7 @@ function M.get_indent(lnum) -- Then its indent level shouldn't be affected by `@aligned_indent` node indent = math.max(indent - indent_size, 0) else - indent = o_scol + (metadata["indent.increment"] or 1) + indent = o_scol + (metadata['indent.increment'] or 1) indent_is_absolute = true end end @@ -321,7 +329,7 @@ function M.get_indent(lnum) -- then this last line may need additional indent to avoid clashes -- with the next. `indent.avoid_last_matching_next` controls this behavior, -- for example this is needed for function parameters. - avoid_last_matching_next = metadata["indent.avoid_last_matching_next"] or false + avoid_last_matching_next = metadata['indent.avoid_last_matching_next'] or false end if avoid_last_matching_next then -- last line must be indented more in cases where @@ -350,17 +358,4 @@ function M.get_indent(lnum) return indent end ----@type table<integer, string> -local indent_funcs = {} - ----@param bufnr integer -function M.attach(bufnr) - indent_funcs[bufnr] = vim.bo.indentexpr - vim.bo.indentexpr = "nvim_treesitter#indent()" -end - -function M.detach(bufnr) - vim.bo.indentexpr = indent_funcs[bufnr] -end - return M diff --git a/lua/nvim-treesitter/info.lua b/lua/nvim-treesitter/info.lua deleted file mode 100644 index 6e94b357d..000000000 --- a/lua/nvim-treesitter/info.lua +++ /dev/null @@ -1,190 +0,0 @@ -local api = vim.api -local configs = require "nvim-treesitter.configs" -local parsers = require "nvim-treesitter.parsers" - -local M = {} - -local function install_info() - local max_len = 0 - for _, ft in pairs(parsers.available_parsers()) do - if #ft > max_len then - max_len = #ft - end - end - - local parser_list = parsers.available_parsers() - table.sort(parser_list) - for _, lang in pairs(parser_list) do - local is_installed = #api.nvim_get_runtime_file("parser/" .. lang .. ".so", false) > 0 - api.nvim_out_write(lang .. string.rep(" ", max_len - #lang + 1)) - if is_installed then - api.nvim_out_write "[✓] installed\n" - elseif pcall(vim.treesitter.inspect_lang, lang) then - api.nvim_out_write "[✗] not installed (but still loaded. Restart Neovim!)\n" - else - api.nvim_out_write "[✗] not installed\n" - end - end -end - --- Sort a list of modules into namespaces. --- {'mod1', 'mod2.sub1', 'mod2.sub2', 'mod3'} --- -> --- { default = {'mod1', 'mod3'}, mod2 = {'sub1', 'sub2'}} ----@param modulelist string[] ----@return table -local function namespace_modules(modulelist) - local modules = {} - for _, module in ipairs(modulelist) do - if module:find "%." then - local namespace, submodule = module:match "^(.*)%.(.*)$" - if not modules[namespace] then - modules[namespace] = {} - end - table.insert(modules[namespace], submodule) - else - if not modules.default then - modules.default = {} - end - table.insert(modules.default, module) - end - end - return modules -end - ----@param list string[] ----@return integer length -local function longest_string_length(list) - local length = 0 - for _, value in ipairs(list) do - if #value > length then - length = #value - end - end - return length -end - ----@param curbuf integer ----@param origbuf integer ----@param parserlist string[] ----@param namespace string ----@param modulelist string[] -local function append_module_table(curbuf, origbuf, parserlist, namespace, modulelist) - local maxlen_parser = longest_string_length(parserlist) - table.sort(modulelist) - - -- header - local header = ">> " .. namespace .. string.rep(" ", maxlen_parser - #namespace - 1) - for _, module in pairs(modulelist) do - header = header .. module .. " " - end - api.nvim_buf_set_lines(curbuf, -1, -1, true, { header }) - - -- actual table - for _, parser in ipairs(parserlist) do - local padding = string.rep(" ", maxlen_parser - #parser + 2) - local line = parser .. padding - local namespace_prefix = (namespace == "default") and "" or namespace .. "." - for _, module in pairs(modulelist) do - local modlen = #module - module = namespace_prefix .. module - if configs.is_enabled(module, parser, origbuf) then - line = line .. "✓" - else - line = line .. "✗" - end - line = line .. string.rep(" ", modlen + 1) - end - api.nvim_buf_set_lines(curbuf, -1, -1, true, { line }) - end - - api.nvim_buf_set_lines(curbuf, -1, -1, true, { "" }) -end - -local function print_info_modules(parserlist, module) - local origbuf = api.nvim_get_current_buf() - api.nvim_command "enew" - local curbuf = api.nvim_get_current_buf() - - local modules - if module then - modules = namespace_modules { module } - else - modules = namespace_modules(configs.available_modules()) - end - - ---@type string[] - local namespaces = {} - for k, _ in pairs(modules) do - table.insert(namespaces, k) - end - table.sort(namespaces) - - table.sort(parserlist) - for _, namespace in ipairs(namespaces) do - append_module_table(curbuf, origbuf, parserlist, namespace, modules[namespace]) - end - - api.nvim_buf_set_option(curbuf, "modified", false) - api.nvim_buf_set_option(curbuf, "buftype", "nofile") - vim.cmd [[ - syntax match TSModuleInfoGood /✓/ - syntax match TSModuleInfoBad /✗/ - syntax match TSModuleInfoHeader /^>>.*$/ contains=TSModuleInfoNamespace - syntax match TSModuleInfoNamespace /^>> \w*/ contained - syntax match TSModuleInfoParser /^[^> ]*\ze / - ]] - - local highlights = { - TSModuleInfoGood = { fg = "LightGreen", bold = true, default = true }, - TSModuleInfoBad = { fg = "Crimson", default = true }, - TSModuleInfoHeader = { link = "Type", default = true }, - TSModuleInfoNamespace = { link = "Statement", default = true }, - TSModuleInfoParser = { link = "Identifier", default = true }, - } - for k, v in pairs(highlights) do - api.nvim_set_hl(0, k, v) - end -end - -local function module_info(module) - if module and not configs.get_module(module) then - return - end - - local parserlist = parsers.available_parsers() - if module then - print_info_modules(parserlist, module) - else - print_info_modules(parserlist) - end -end - ----@return string[] -function M.installed_parsers() - local installed = {} - for _, p in pairs(parsers.available_parsers()) do - if parsers.has_parser(p) then - table.insert(installed, p) - end - end - return installed -end - -M.commands = { - TSInstallInfo = { - run = install_info, - args = { - "-nargs=0", - }, - }, - TSModuleInfo = { - run = module_info, - args = { - "-nargs=?", - "-complete=custom,nvim_treesitter#available_modules", - }, - }, -} - -return M diff --git a/lua/nvim-treesitter/init.lua b/lua/nvim-treesitter/init.lua new file mode 100644 index 000000000..aac1c6ba6 --- /dev/null +++ b/lua/nvim-treesitter/init.lua @@ -0,0 +1,11 @@ +local M = {} + +function M.setup(...) + require('nvim-treesitter.config').setup(...) +end + +function M.indentexpr() + return require('nvim-treesitter.indent').get_indent(vim.v.lnum) +end + +return M diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua index cd12dbb81..745c2dd1f 100644 --- a/lua/nvim-treesitter/install.lua +++ b/lua/nvim-treesitter/install.lua @@ -1,13 +1,10 @@ local api = vim.api -local fn = vim.fn -local luv = vim.loop +local uv = vim.loop -local utils = require "nvim-treesitter.utils" -local parsers = require "nvim-treesitter.parsers" -local info = require "nvim-treesitter.info" -local configs = require "nvim-treesitter.configs" -local shell = require "nvim-treesitter.shell_command_selectors" -local compat = require "nvim-treesitter.compat" +local utils = require('nvim-treesitter.utils') +local parsers = require('nvim-treesitter.parsers') +local config = require('nvim-treesitter.config') +local shell = require('nvim-treesitter.shell_cmds') local M = {} @@ -17,16 +14,20 @@ local M = {} ---@type table<string, LockfileInfo> local lockfile = {} -M.compilers = { vim.fn.getenv "CC", "cc", "gcc", "clang", "cl", "zig" } -M.prefer_git = fn.has "win32" == 1 +M.compilers = { uv.os_getenv('CC'), 'cc', 'gcc', 'clang', 'cl', 'zig' } +M.prefer_git = uv.os_uname().sysname == 'Windows_NT' M.command_extra_args = {} M.ts_generate_args = nil local started_commands = 0 local finished_commands = 0 local failed_commands = 0 -local complete_std_output = {} -local complete_error_output = {} +local stdout_output = {} +local stderr_output = {} + +--- +--- JOB API functions +--- local function reset_progress_counter() if started_commands ~= finished_commands then @@ -35,199 +36,104 @@ local function reset_progress_counter() started_commands = 0 finished_commands = 0 failed_commands = 0 - complete_std_output = {} - complete_error_output = {} + stdout_output = {} + stderr_output = {} end local function get_job_status() - return "[nvim-treesitter] [" + return '[nvim-treesitter] [' .. finished_commands - .. "/" + .. '/' .. started_commands - .. (failed_commands > 0 and ", failed: " .. failed_commands or "") - .. "]" + .. (failed_commands > 0 and ', failed: ' .. failed_commands or '') + .. ']' end ----@param lang string ----@return function -local function reattach_if_possible_fn(lang, error_on_fail) - return function() - for _, buf in ipairs(vim.api.nvim_list_bufs()) do - if parsers.get_buf_lang(buf) == lang then - vim._ts_remove_language(lang) - local ok, err - if vim.treesitter.language.add then - local ft = vim.bo[buf].filetype - ok, err = pcall(vim.treesitter.language.add, lang, { filetype = ft }) - else - ok, err = pcall(compat.require_language, lang) - end - if not ok and error_on_fail then - vim.notify("Could not load parser for " .. lang .. ": " .. vim.inspect(err)) - end - for _, mod in ipairs(require("nvim-treesitter.configs").available_modules()) do - if ok then - require("nvim-treesitter.configs").reattach_module(mod, buf, lang) - else - require("nvim-treesitter.configs").detach_module(mod, buf) - end - end - end +---@param cmd Command +---@return string command +local function get_command(cmd) + local options = '' + if cmd.opts and cmd.opts.args then + if M.command_extra_args[cmd.cmd] then + vim.list_extend(cmd.opts.args, M.command_extra_args[cmd.cmd]) + end + for _, opt in ipairs(cmd.opts.args) do + options = string.format('%s %s', options, opt) end end -end - ----@param lang string ----@param validate boolean|nil ----@return InstallInfo -local function get_parser_install_info(lang, validate) - local parser_config = parsers.get_parser_configs()[lang] - - if not parser_config then - error('Parser not available for language "' .. lang .. '"') - end - - local install_info = parser_config.install_info - - if validate then - vim.validate { - url = { install_info.url, "string" }, - files = { install_info.files, "table" }, - } - end - - return install_info -end - -local function load_lockfile() - local filename = utils.join_path(utils.get_package_path(), "lockfile.json") - lockfile = vim.fn.filereadable(filename) == 1 and vim.fn.json_decode(vim.fn.readfile(filename)) or {} -end - -local function is_ignored_parser(lang) - return vim.tbl_contains(configs.get_ignored_parser_installs(), lang) -end - ----@param lang string ----@return string|nil -local function get_revision(lang) - if #lockfile == 0 then - load_lockfile() - end - - local install_info = get_parser_install_info(lang) - if install_info.revision then - return install_info.revision - end - - if lockfile[lang] then - return lockfile[lang].revision - end -end - ----@param lang string ----@return string|nil -local function get_installed_revision(lang) - local lang_file = utils.join_path(configs.get_parser_info_dir(), lang .. ".revision") - if vim.fn.filereadable(lang_file) == 1 then - return vim.fn.readfile(lang_file)[1] - end -end --- Clean path for use in a prefix comparison ----@param input string ----@return string -local function clean_path(input) - local pth = vim.fn.fnamemodify(input, ":p") - if fn.has "win32" == 1 then - pth = pth:gsub("/", "\\") + local command = string.format('%s %s', cmd.cmd, options) + if cmd.opts and cmd.opts.cwd then + command = shell.make_directory_change_for_command(cmd.opts.cwd, command) end - return pth + return command end --- Checks if parser is installed with nvim-treesitter ----@param lang string +---@param cmd_list Command[] ---@return boolean -local function is_installed(lang) - local matched_parsers = vim.api.nvim_get_runtime_file("parser/" .. lang .. ".so", true) or {} - local install_dir = configs.get_parser_install_dir() - if not install_dir then - return false - end - install_dir = clean_path(install_dir) - for _, path in ipairs(matched_parsers) do - local abspath = clean_path(path) - if vim.startswith(abspath, install_dir) then - return true +local function iter_cmd_sync(cmd_list) + for _, cmd in ipairs(cmd_list) do + if cmd.info then + vim.notify(cmd.info) end - end - return false -end ----@param lang string ----@return boolean -local function needs_update(lang) - local revision = get_revision(lang) - return not revision or revision ~= get_installed_revision(lang) -end - ----@return string[] -local function outdated_parsers() - return vim.tbl_filter(function(lang) ---@param lang string - return is_installed(lang) and needs_update(lang) - end, info.installed_parsers()) -end - ----@param handle userdata ----@param is_stderr boolean -local function onread(handle, is_stderr) - return function(_, data) - if data then - if is_stderr then - complete_error_output[handle] = (complete_error_output[handle] or "") .. data - else - complete_std_output[handle] = (complete_std_output[handle] or "") .. data + if type(cmd.cmd) == 'function' then + cmd.cmd() + else + local ret = vim.fn.system(get_command(cmd)) + if vim.v.shell_error ~= 0 then + vim.notify(ret) + api.nvim_err_writeln( + (cmd.err and cmd.err .. '\n' or '') + .. 'Failed to execute the following command:\n' + .. vim.inspect(cmd) + ) + return false end end end + + return true end -function M.iter_cmd(cmd_list, i, lang, success_message) +local function iter_cmd(cmd_list, i, lang, success_message) if i == 1 then started_commands = started_commands + 1 end if i == #cmd_list + 1 then finished_commands = finished_commands + 1 - return print(get_job_status() .. " " .. success_message) + return vim.notify(get_job_status() .. ' ' .. success_message) end local attr = cmd_list[i] if attr.info then - print(get_job_status() .. " " .. attr.info) + vim.notify(get_job_status() .. ' ' .. attr.info) end if attr.opts and attr.opts.args and M.command_extra_args[attr.cmd] then vim.list_extend(attr.opts.args, M.command_extra_args[attr.cmd]) end - if type(attr.cmd) == "function" then + if type(attr.cmd) == 'function' then local ok, err = pcall(attr.cmd) if ok then - M.iter_cmd(cmd_list, i + 1, lang, success_message) + iter_cmd(cmd_list, i + 1, lang, success_message) else failed_commands = failed_commands + 1 finished_commands = finished_commands + 1 return api.nvim_err_writeln( - (attr.err or ("Failed to execute the following command:\n" .. vim.inspect(attr))) .. "\n" .. vim.inspect(err) + (attr.err or ('Failed to execute the following command:\n' .. vim.inspect(attr))) + .. '\n' + .. vim.inspect(err) ) end else local handle - local stdout = luv.new_pipe(false) - local stderr = luv.new_pipe(false) + local stdout = uv.new_pipe(false) + local stderr = uv.new_pipe(false) attr.opts.stdio = { nil, stdout, stderr } ---@type userdata - handle = luv.spawn( + handle = uv.spawn( attr.cmd, attr.opts, vim.schedule_wrap(function(code) @@ -241,87 +147,151 @@ function M.iter_cmd(cmd_list, i, lang, success_message) if code ~= 0 then failed_commands = failed_commands + 1 finished_commands = finished_commands + 1 - if complete_std_output[handle] and complete_std_output[handle] ~= "" then - print(complete_std_output[handle]) + if stdout_output[handle] and stdout_output[handle] ~= '' then + vim.notify(stdout_output[handle]) end - local err_msg = complete_error_output[handle] or "" + local err_msg = stderr_output[handle] or '' api.nvim_err_writeln( - "nvim-treesitter[" + 'nvim-treesitter[' .. lang - .. "]: " - .. (attr.err or ("Failed to execute the following command:\n" .. vim.inspect(attr))) - .. "\n" + .. ']: ' + .. (attr.err or ('Failed to execute the following command:\n' .. vim.inspect(attr))) + .. '\n' .. err_msg ) return end - M.iter_cmd(cmd_list, i + 1, lang, success_message) + iter_cmd(cmd_list, i + 1, lang, success_message) end) ) - luv.read_start(stdout, onread(handle, false)) - luv.read_start(stderr, onread(handle, true)) + uv.read_start(stdout, function(_, data) + if data then + stdout_output[handle] = (stdout_output[handle] or '') .. data + end + end) + uv.read_start(stderr, function(_, data) + if data then + stderr_output[handle] = (stderr_output[handle] or '') .. data + end + end) end end ----@param cmd Command ----@return string command -local function get_command(cmd) - local options = "" - if cmd.opts and cmd.opts.args then - if M.command_extra_args[cmd.cmd] then - vim.list_extend(cmd.opts.args, M.command_extra_args[cmd.cmd]) - end - for _, opt in ipairs(cmd.opts.args) do - options = string.format("%s %s", options, opt) - end +--- +--- PARSER INFO +--- + +---@param lang string +---@param validate boolean|nil +---@return InstallInfo +local function get_parser_install_info(lang, validate) + local parser_config = parsers.configs[lang] + + if not parser_config then + error('Parser not available for language "' .. lang .. '"') end - local command = string.format("%s %s", cmd.cmd, options) - if cmd.opts and cmd.opts.cwd then - command = shell.make_directory_change_for_command(cmd.opts.cwd, command) + local install_info = parser_config.install_info + + if validate then + vim.validate({ + url = { install_info.url, 'string' }, + files = { install_info.files, 'table' }, + }) end - return command + + return install_info end ----@param cmd_list Command[] +---@param lang string +---@return string|nil +local function get_revision(lang) + if #lockfile == 0 then + local filename = utils.get_package_path('lockfile.json') + local file = assert(io.open(filename, 'r')) + lockfile = vim.json.decode(file:read('*all')) + file:close() + end + + local install_info = get_parser_install_info(lang) + if install_info.revision then + return install_info.revision + end + + if lockfile[lang] then + return lockfile[lang].revision + end +end + +---@param lang string +---@return string|nil +local function get_installed_revision(lang) + local lang_file = utils.join_path(config.get_install_dir('parser-info'), lang .. '.revision') + local file = assert(io.open(lang_file, 'r')) + local revision = file:read('*a') + file:close() + return revision +end + +---@param lang string ---@return boolean -local function iter_cmd_sync(cmd_list) - for _, cmd in ipairs(cmd_list) do - if cmd.info then - print(cmd.info) +local function needs_update(lang) + local revision = get_revision(lang) + return not revision or revision ~= get_installed_revision(lang) +end + +function M.info() + local installed = config.installed_parsers() + local parser_list = parsers.get_available() + + local max_len = 0 + for _, lang in pairs(parser_list) do + if #lang > max_len then + max_len = #lang end + end - if type(cmd.cmd) == "function" then - cmd.cmd() + for _, lang in pairs(parser_list) do + local parser = (lang .. string.rep(' ', max_len - #lang + 1)) + local output + if vim.list_contains(installed, lang) then + output = { parser .. '[✓] installed', 'DiagnosticOk' } + elseif #api.nvim_get_runtime_file('parser/' .. lang .. '.*', true) > 0 then + output = { parser .. '[·] not installed (but available from runtimepath)', 'DiagnosticInfo' } else - local ret = vim.fn.system(get_command(cmd)) - if vim.v.shell_error ~= 0 then - print(ret) - api.nvim_err_writeln( - (cmd.err and cmd.err .. "\n" or "") .. "Failed to execute the following command:\n" .. vim.inspect(cmd) - ) - return false - end + output = { parser .. '[✗] not installed' } end + api.nvim_echo({ output }, false, {}) end - - return true end ----@param cache_folder string ----@param install_folder string +--- +--- PARSER MANAGEMENT FUNCTIONS +--- + ---@param lang string ----@param repo InstallInfo +---@param cache_dir string +---@param install_dir string +---@param force boolean ---@param with_sync boolean ---@param generate_from_grammar boolean -local function run_install(cache_folder, install_folder, lang, repo, with_sync, generate_from_grammar) - parsers.reset_cache() +local function install_lang(lang, cache_dir, install_dir, force, with_sync, generate_from_grammar) + if vim.list_contains(config.installed_parsers(), lang) then + if not force then + local yesno = + vim.fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ') + print('\n ') + if yesno:sub(1, 1) ~= 'y' then + return + end + end + end - local path_sep = utils.get_path_sep() + local repo = get_parser_install_info(lang) - local project_name = "tree-sitter-" .. lang - local maybe_local_path = vim.fn.expand(repo.url) + local project_name = 'tree-sitter-' .. lang + local maybe_local_path = vim.fs.normalize(repo.url) local from_local_path = vim.fn.isdirectory(maybe_local_path) == 1 if from_local_path then repo.url = maybe_local_path @@ -337,48 +307,45 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync, else local repo_location = project_name if repo.location then - repo_location = repo_location .. "/" .. repo.location + repo_location = utils.join_path(repo_location, repo.location) end - repo_location = repo_location:gsub("/", path_sep) - compile_location = utils.join_path(cache_folder, repo_location) + compile_location = utils.join_path(cache_dir, repo_location) end - local parser_lib_name = utils.join_path(install_folder, lang) .. ".so" + local parser_lib_name = utils.join_path(install_dir, lang) .. '.so' generate_from_grammar = repo.requires_generate_from_grammar or generate_from_grammar - if generate_from_grammar and vim.fn.executable "tree-sitter" ~= 1 then - api.nvim_err_writeln "tree-sitter CLI not found: `tree-sitter` is not executable!" + if generate_from_grammar and vim.fn.executable('tree-sitter') ~= 1 then + api.nvim_err_writeln('tree-sitter CLI not found: `tree-sitter` is not executable') if repo.requires_generate_from_grammar then api.nvim_err_writeln( - "tree-sitter CLI is needed because `" + 'tree-sitter CLI is needed because the parser for `' .. lang - .. "` is marked that it needs " - .. "to be generated from the grammar definitions to be compatible with nvim!" + .. '` needs to be generated from grammar' ) end return else if not M.ts_generate_args then - local ts_cli_version = utils.ts_cli_version() - if ts_cli_version and vim.split(ts_cli_version, " ")[1] > "0.20.2" then - M.ts_generate_args = { "generate", "--no-bindings", "--abi", vim.treesitter.language_version } - else - M.ts_generate_args = { "generate", "--no-bindings" } - end + M.ts_generate_args = { 'generate', '--no-bindings', '--abi', vim.treesitter.language_version } end end - if generate_from_grammar and vim.fn.executable "node" ~= 1 then - api.nvim_err_writeln "Node JS not found: `node` is not executable!" + if generate_from_grammar and vim.fn.executable('node') ~= 1 then + api.nvim_err_writeln('Node JS not found: `node` is not executable') return end local cc = shell.select_executable(M.compilers) if not cc then - api.nvim_err_writeln('No C compiler found! "' .. table.concat( - vim.tbl_filter(function(c) ---@param c string - return type(c) == "string" - end, M.compilers), - '", "' - ) .. '" are not executable.') + api.nvim_err_writeln( + 'No C compiler found! "' + .. table.concat( + vim.tbl_filter(function(c) ---@param c string + return type(c) == 'string' + end, M.compilers), + '", "' + ) + .. '" are not executable.' + ) return end @@ -400,25 +367,33 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync, ---@type Command[] local command_list = {} if not from_local_path then - vim.list_extend(command_list, { shell.select_install_rm_cmd(cache_folder, project_name) }) + vim.list_extend(command_list, { + { + cmd = function() + vim.fn.delete(utils.join_path(cache_dir, project_name), 'rf') + end, + }, + }) vim.list_extend( command_list, - shell.select_download_commands(repo, project_name, cache_folder, revision, M.prefer_git) + shell.select_download_commands(repo, project_name, cache_dir, revision, M.prefer_git) ) end if generate_from_grammar then if repo.generate_requires_npm then - if vim.fn.executable "npm" ~= 1 then - api.nvim_err_writeln("`" .. lang .. "` requires NPM to be installed from grammar.js") + if vim.fn.executable('npm') ~= 1 then + api.nvim_err_writeln('`' .. lang .. '` requires NPM to be installed from grammar.js') return end vim.list_extend(command_list, { { - cmd = "npm", - info = "Installing NPM dependencies of " .. lang .. " parser", - err = "Error during `npm install` (required for parser generation of " .. lang .. " with npm dependencies)", + cmd = 'npm', + info = 'Installing NPM dependencies of ' .. lang .. ' parser', + err = 'Error during `npm install` (required for parser generation of ' + .. lang + .. ' with npm dependencies)', opts = { - args = { "install" }, + args = { 'install' }, cwd = compile_location, }, }, @@ -426,8 +401,8 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync, end vim.list_extend(command_list, { { - cmd = vim.fn.exepath "tree-sitter", - info = "Generating source files from grammar.js...", + cmd = vim.fn.exepath('tree-sitter'), + info = 'Generating source files from grammar.js...', err = 'Error during "tree-sitter generate"', opts = { args = M.ts_generate_args, @@ -438,344 +413,153 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync, end vim.list_extend(command_list, { shell.select_compile_command(repo, cc, compile_location), - shell.select_mv_cmd("parser.so", parser_lib_name, compile_location), { cmd = function() - vim.fn.writefile({ revision or "" }, utils.join_path(configs.get_parser_info_dir() or "", lang .. ".revision")) + uv.fs_copyfile(utils.join_path(compile_location, 'parser.so'), parser_lib_name) end, }, - { -- auto-attach modules after installation - cmd = reattach_if_possible_fn(lang, true), + { + cmd = function() + local file = assert( + io.open( + utils.join_path(config.get_install_dir('parser-info') or '', lang .. '.revision'), + 'w' + ) + ) + file:write(revision or '') + file:close() + end, }, }) if not from_local_path then - vim.list_extend(command_list, { shell.select_install_rm_cmd(cache_folder, project_name) }) + vim.list_extend(command_list, { + { + cmd = function() + vim.fn.delete(utils.join_path(cache_dir, project_name), 'rf') + end, + }, + }) end if with_sync then if iter_cmd_sync(command_list) == true then - print("Treesitter parser for " .. lang .. " has been installed") + vim.notify('Parser for ' .. lang .. ' has been installed') end else - M.iter_cmd(command_list, 1, lang, "Treesitter parser for " .. lang .. " has been installed") + iter_cmd(command_list, 1, lang, 'Parser for ' .. lang .. ' has been installed') end end ----@param lang string ----@param ask_reinstall boolean|string ----@param cache_folder string ----@param install_folder string ----@param with_sync boolean ----@param generate_from_grammar boolean -local function install_lang(lang, ask_reinstall, cache_folder, install_folder, with_sync, generate_from_grammar) - if is_installed(lang) and ask_reinstall ~= "force" then - if not ask_reinstall then - return - end - - local yesno = fn.input(lang .. " parser already available: would you like to reinstall ? y/n: ") - print "\n " - if not string.match(yesno, "^y.*") then - return - end - end - - local ok, install_info = pcall(get_parser_install_info, lang, true) - if not ok then - vim.notify("Installation not possible: " .. install_info, vim.log.levels.ERROR) - if not parsers.get_parser_configs()[lang] then - vim.notify( - "See https://github.com/nvim-treesitter/nvim-treesitter/#adding-parsers on how to add a new parser!", - vim.log.levels.INFO - ) - end - return - end - - run_install(cache_folder, install_folder, lang, install_info, with_sync, generate_from_grammar) -end - ---@class InstallOptions ---@field with_sync boolean ----@field ask_reinstall boolean|string +---@field force boolean ---@field generate_from_grammar boolean ----@field exclude_configured_parsers boolean +---@field skip table -- Install a parser +---@param languages? string[]|string ---@param options? InstallOptions ----@return function -local function install(options) +function M.install(languages, options) options = options or {} local with_sync = options.with_sync - local ask_reinstall = options.ask_reinstall + local force = options.force local generate_from_grammar = options.generate_from_grammar - local exclude_configured_parsers = options.exclude_configured_parsers - - return function(...) - if fn.executable "git" == 0 then - return api.nvim_err_writeln "Git is required on your system to run this command" - end + local skip = options.skip - local cache_folder, err = utils.get_cache_dir() - if err then - return api.nvim_err_writeln(err) - end - assert(cache_folder) + reset_progress_counter() - local install_folder - install_folder, err = configs.get_parser_install_dir() - if err then - return api.nvim_err_writeln(err) - end - install_folder = install_folder and clean_path(install_folder) - assert(install_folder) + if vim.fn.executable('git') == 0 then + api.nvim_err_writeln('Git is required on your system to run this command') + return + end - local languages ---@type string[] - local ask ---@type boolean|string - if ... == "all" then - languages = parsers.available_parsers() - ask = false - else - languages = compat.flatten { ... } - ask = ask_reinstall - end + local cache_dir = vim.fn.stdpath('cache') + local install_dir = config.get_install_dir('parser') - if exclude_configured_parsers then - languages = utils.difference(languages, configs.get_ignored_parser_installs()) - end + if languages == 'all' then + force = true + end - if #languages > 1 then - reset_progress_counter() - end + languages = config.norm_languages(languages, skip) - for _, lang in ipairs(languages) do - install_lang(lang, ask, cache_folder, install_folder, with_sync, generate_from_grammar) - end + for _, lang in ipairs(languages) do + install_lang(lang, cache_dir, install_dir, force, with_sync, generate_from_grammar) + uv.fs_symlink( + utils.get_package_path('runtime', 'queries', lang), + utils.join_path(config.get_install_dir('queries'), lang), + { dir = true, junction = true } -- needed on Windows (non-junction links require admin) + ) end end -function M.setup_auto_install() - local function try_install_curr_lang() - local lang = parsers.get_buf_lang() - if parsers.get_parser_configs()[lang] and not is_installed(lang) and not is_ignored_parser(lang) then - install() { lang } - end - end - - try_install_curr_lang() - - vim.api.nvim_create_autocmd("FileType", { - pattern = { "*" }, - group = vim.api.nvim_create_augroup("NvimTreesitter-auto_install", { clear = true }), - callback = try_install_curr_lang, - }) -end +---@class UpdateOptions +---@field with_sync boolean -function M.update(options) +---@param languages? string[]|string +---@param options? UpdateOptions +function M.update(languages, options) options = options or {} - return function(...) - M.lockfile = {} - reset_progress_counter() - if ... and ... ~= "all" then - ---@type string[] - local languages = compat.flatten { ... } - local installed = 0 - for _, lang in ipairs(languages) do - if (not is_installed(lang)) or (needs_update(lang)) then - installed = installed + 1 - install { - ask_reinstall = "force", - with_sync = options.with_sync, - }(lang) - end - end - if installed == 0 then - utils.notify "Parsers are up-to-date!" - end - else - local parsers_to_update = outdated_parsers() or info.installed_parsers() - if #parsers_to_update == 0 then - utils.notify "All parsers are up-to-date!" - end - for _, lang in pairs(parsers_to_update) do - install { - ask_reinstall = "force", - exclude_configured_parsers = true, - with_sync = options.with_sync, - }(lang) - end - end - end -end -function M.uninstall(...) - if vim.tbl_contains({ "all" }, ...) then - reset_progress_counter() - local installed = info.installed_parsers() - M.uninstall(installed) - elseif ... then - local ensure_installed_parsers = configs.get_ensure_installed_parsers() - if ensure_installed_parsers == "all" then - ensure_installed_parsers = parsers.available_parsers() - end - ensure_installed_parsers = utils.difference(ensure_installed_parsers, configs.get_ignored_parser_installs()) + reset_progress_counter() + M.lockfile = {} - ---@type string[] - local languages = compat.flatten { ... } - for _, lang in ipairs(languages) do - local install_dir, err = configs.get_parser_install_dir() - if err then - return api.nvim_err_writeln(err) - end - install_dir = install_dir and clean_path(install_dir) + languages = config.norm_languages(languages or 'all', { ignored = true, missing = true }) + languages = vim.iter.filter(needs_update, languages) --- @type string[] - if vim.tbl_contains(ensure_installed_parsers, lang) then - vim.notify( - "Uninstalling " - .. lang - .. '. But the parser is still configured in "ensure_installed" setting of nvim-treesitter.' - .. " Please consider updating your config!", - vim.log.levels.ERROR - ) - end + if #languages > 0 then + M.install(languages, { + force = true, + with_sync = options.with_sync, + }) + else + vim.notify('All parsers are up-to-date') + end +end - local parser_lib = utils.join_path(install_dir, lang) .. ".so" - local all_parsers = vim.api.nvim_get_runtime_file("parser/" .. lang .. ".so", true) - if vim.fn.filereadable(parser_lib) == 1 then - local command_list = { - shell.select_rm_file_cmd(parser_lib, "Uninstalling parser for " .. lang), - { - cmd = function() - local all_parsers_after_deletion = vim.api.nvim_get_runtime_file("parser/" .. lang .. ".so", true) - if #all_parsers_after_deletion > 0 then - vim.notify( - "Tried to uninstall parser for " - .. lang - .. "! But the parser is still installed (not by nvim-treesitter):" - .. table.concat(all_parsers_after_deletion, ", "), - vim.log.levels.ERROR - ) - end - end, - }, - { -- auto-reattach or detach modules after uninstallation - cmd = reattach_if_possible_fn(lang, false), - }, - } - M.iter_cmd(command_list, 1, lang, "Treesitter parser for " .. lang .. " has been uninstalled") - elseif #all_parsers > 0 then - vim.notify( - "Parser for " - .. lang - .. " is installed! But not by nvim-treesitter! Please manually remove the following files: " - .. table.concat(all_parsers, ", "), - vim.log.levels.ERROR - ) - end - end +--- @param lang string +--- @param parser string +--- @param queries string +local function uninstall(lang, parser, queries) + if vim.fn.filereadable(parser) ~= 1 then + return end + + iter_cmd({ + { + cmd = function() + uv.fs_unlink(parser) + end, + }, + { + cmd = function() + uv.fs_unlink(queries) + end, + }, + }, 1, lang, 'Parser for ' .. lang .. ' has been uninstalled') end -function M.write_lockfile(verbose, skip_langs) - local sorted_parsers = {} ---@type Parser[] - -- Load previous lockfile - load_lockfile() - skip_langs = skip_langs or {} +--- @param languages string[]|string +function M.uninstall(languages) + reset_progress_counter() - for k, v in pairs(parsers.get_parser_configs()) do - table.insert(sorted_parsers, { name = k, parser = v }) - end + languages = config.norm_languages(languages or 'all', { missing = true }) - ---@param a Parser - ---@param b Parser - table.sort(sorted_parsers, function(a, b) - return a.name < b.name - end) + local parser_dir = config.get_install_dir('parser') + local query_dir = config.get_install_dir('queries') + local installed = config.installed_parsers() - for _, v in ipairs(sorted_parsers) do - if not vim.tbl_contains(skip_langs, v.name) then - -- I'm sure this can be done in aync way with iter_cmd - local sha ---@type string - if v.parser.install_info.branch then - sha = vim.split( - vim.fn.systemlist( - "git ls-remote " .. v.parser.install_info.url .. " | grep refs/heads/" .. v.parser.install_info.branch - )[1], - "\t" - )[1] - else - sha = vim.split(vim.fn.systemlist("git ls-remote " .. v.parser.install_info.url)[1], "\t")[1] - end - lockfile[v.name] = { revision = sha } - if verbose then - print(v.name .. ": " .. sha) - end + for _, lang in ipairs(languages) do + if not vim.list_contains(installed, lang) then + vim.notify( + 'Parser for ' .. lang .. ' is is not managed by nvim-treesitter', + vim.log.levels.ERROR + ) else - print("Skipping " .. v.name) + local parser = utils.join_path(parser_dir, lang) .. '.so' + local queries = utils.join_path(query_dir, lang) + uninstall(lang, parser, queries) end end - - if verbose then - print(vim.inspect(lockfile)) - end - vim.fn.writefile( - vim.fn.split(vim.fn.json_encode(lockfile), "\n"), - utils.join_path(utils.get_package_path(), "lockfile.json") - ) end -M.ensure_installed = install { exclude_configured_parsers = true } -M.ensure_installed_sync = install { with_sync = true, exclude_configured_parsers = true } - -M.commands = { - TSInstall = { - run = install { ask_reinstall = true }, - ["run!"] = install { ask_reinstall = "force" }, - args = { - "-nargs=+", - "-bang", - "-complete=custom,nvim_treesitter#installable_parsers", - }, - }, - TSInstallFromGrammar = { - run = install { generate_from_grammar = true, ask_reinstall = true }, - ["run!"] = install { generate_from_grammar = true, ask_reinstall = "force" }, - args = { - "-nargs=+", - "-bang", - "-complete=custom,nvim_treesitter#installable_parsers", - }, - }, - TSInstallSync = { - run = install { with_sync = true, ask_reinstall = true }, - ["run!"] = install { with_sync = true, ask_reinstall = "force" }, - args = { - "-nargs=+", - "-bang", - "-complete=custom,nvim_treesitter#installable_parsers", - }, - }, - TSUpdate = { - run = M.update {}, - args = { - "-nargs=*", - "-complete=custom,nvim_treesitter#installed_parsers", - }, - }, - TSUpdateSync = { - run = M.update { with_sync = true }, - args = { - "-nargs=*", - "-complete=custom,nvim_treesitter#installed_parsers", - }, - }, - TSUninstall = { - run = M.uninstall, - args = { - "-nargs=+", - "-complete=custom,nvim_treesitter#installed_parsers", - }, - }, -} - return M diff --git a/lua/nvim-treesitter/locals.lua b/lua/nvim-treesitter/locals.lua index fed835bbd..fa8496469 100644 --- a/lua/nvim-treesitter/locals.lua +++ b/lua/nvim-treesitter/locals.lua @@ -1,29 +1,46 @@ -- Functions to handle locals -- Locals are a generalization of definition and scopes --- its the way nvim-treesitter uses to "understand" the code +-- it's the way nvim-treesitter uses to "understand" the code -local queries = require "nvim-treesitter.query" -local ts_utils = require "nvim-treesitter.ts_utils" -local ts = vim.treesitter +local query = require('nvim-treesitter.query') local api = vim.api +local ts = vim.treesitter local M = {} -function M.collect_locals(bufnr) - return queries.collect_group_results(bufnr, "locals") +local function get_named_children(node) + local nodes = {} ---@type TSNode[] + for i = 0, node:named_child_count() - 1, 1 do + nodes[i + 1] = node:named_child(i) + end + return nodes +end + +---@param node TSNode +---@return TSNode result +local function get_root_for_node(node) + local parent = node + local result = node + + while parent ~= nil do + result = parent + parent = result:parent() + end + + return result end -- Iterates matches from a locals query file. -- @param bufnr the buffer -- @param root the root node function M.iter_locals(bufnr, root) - return queries.iter_group_results(bufnr, "locals", root) + return query.iter_group_results(bufnr, 'locals', root) end ---@param bufnr integer ---@return any -function M.get_locals(bufnr) - return queries.get_matches(bufnr, "locals") +function M.collect_locals(bufnr) + return query.collect_group_results(bufnr, 'locals') end -- Creates unique id for a node based on text and range @@ -32,17 +49,17 @@ end ---@return string: a string id function M.get_definition_id(scope, node_text) -- Add a valid starting character in case node text doesn't start with a valid one. - return table.concat({ "k", node_text or "", scope:range() }, "_") + return table.concat({ 'k', node_text or '', scope:range() }, '_') end function M.get_definitions(bufnr) - local locals = M.get_locals(bufnr) + local locals = M.collect_locals(bufnr) local defs = {} for _, loc in ipairs(locals) do - if loc["local"]["definition"] then - table.insert(defs, loc["local"]["definition"]) + if loc['local.definition'] then + table.insert(defs, loc['local.definition']) end end @@ -50,13 +67,13 @@ function M.get_definitions(bufnr) end function M.get_scopes(bufnr) - local locals = M.get_locals(bufnr) + local locals = M.collect_locals(bufnr) local scopes = {} for _, loc in ipairs(locals) do - if loc["local"]["scope"] and loc["local"]["scope"].node then - table.insert(scopes, loc["local"]["scope"].node) + if loc['local.scope'] and loc['local.scope'].node then + table.insert(scopes, loc['local.scope'].node) end end @@ -64,13 +81,13 @@ function M.get_scopes(bufnr) end function M.get_references(bufnr) - local locals = M.get_locals(bufnr) + local locals = M.collect_locals(bufnr) local refs = {} for _, loc in ipairs(locals) do - if loc["local"]["reference"] and loc["local"]["reference"].node then - table.insert(refs, loc["local"]["reference"].node) + if loc['local.reference'] and loc['local.reference'].node then + table.insert(refs, loc['local.reference'].node) end end @@ -103,7 +120,7 @@ function M.iter_scope_tree(node, bufnr) return end - local scope = M.containing_scope(last_node, bufnr, false) or ts_utils.get_root_for_node(node) + local scope = M.containing_scope(last_node, bufnr, false) or get_root_for_node(node) last_node = scope:parent() @@ -117,8 +134,8 @@ end function M.get_local_nodes(local_def) local result = {} - M.recurse_local_nodes(local_def, function(def, _node, kind) - table.insert(result, vim.tbl_extend("keep", { kind = kind }, def)) + M.recurse_local_nodes(local_def, function(def, _, kind) + table.insert(result, vim.tbl_extend('keep', { kind = kind }, def)) end) return result @@ -135,7 +152,7 @@ end ---@param full_match? string The full match path to append to ---@param last_match? string The last match function M.recurse_local_nodes(local_def, accumulator, full_match, last_match) - if type(local_def) ~= "table" then + if type(local_def) ~= 'table' then return end @@ -143,11 +160,36 @@ function M.recurse_local_nodes(local_def, accumulator, full_match, last_match) accumulator(local_def, local_def.node, full_match, last_match) else for match_key, def in pairs(local_def) do - M.recurse_local_nodes(def, accumulator, full_match and (full_match .. "." .. match_key) or match_key, match_key) + M.recurse_local_nodes( + def, + accumulator, + full_match and (full_match .. '.' .. match_key) or match_key, + match_key + ) end end end +---Memoize a function using hash_fn to hash the arguments. +---@generic F: function +---@param fn F +---@param hash_fn fun(...): any +---@return F +local function memoize(fn, hash_fn) + local cache = setmetatable({}, { __mode = 'kv' }) ---@type table<any,any> + + return function(...) + local key = hash_fn(...) + if cache[key] == nil then + local v = fn(...) ---@type any + cache[key] = v ~= nil and v or vim.NIL + end + + local v = cache[key] + return v ~= vim.NIL and v or nil + end +end + -- Get a single dimension table to look definition nodes. -- Keys are generated by using the range of the containing scope and the text of the definition node. -- This makes looking up a definition for a given scope a simple key lookup. @@ -161,7 +203,7 @@ end -- ---@param bufnr integer: the buffer ---@return table result: a table for looking up definitions -M.get_definitions_lookup_table = ts_utils.memoize_by_buf_tick(function(bufnr) +M.get_definitions_lookup_table = memoize(function(bufnr) local definitions = M.get_definitions(bufnr) local result = {} @@ -178,6 +220,8 @@ M.get_definitions_lookup_table = ts_utils.memoize_by_buf_tick(function(bufnr) end return result +end, function(bufnr) + return tostring(bufnr) end) -- Gets all the scopes of a definition based on the scope type @@ -196,10 +240,10 @@ function M.get_definition_scopes(node, bufnr, scope_type) -- Definition is valid for the containing scope -- and the containing scope of that scope - if scope_type == "parent" then + if scope_type == 'parent' then scope_count = 2 -- Definition is valid in all parent scopes - elseif scope_type == "global" then + elseif scope_type == 'global' then scope_count = nil end @@ -235,7 +279,7 @@ function M.find_definition(node, bufnr) end end - return node, ts_utils.get_root_for_node(node), nil + return node, get_root_for_node(node), nil end -- Finds usages of a node in a given scope. @@ -250,12 +294,15 @@ function M.find_usages(node, scope_node, bufnr) return {} end - local scope_node = scope_node or ts_utils.get_root_for_node(node) + scope_node = scope_node or get_root_for_node(node) local usages = {} for match in M.iter_locals(bufnr, scope_node) do - match = match["local"] - if match.reference and match.reference.node and ts.get_node_text(match.reference.node, bufnr) == node_text then + if + match.reference + and match.reference.node + and ts.get_node_text(match.reference.node, bufnr) == node_text + then local def_node, _, kind = M.find_definition(match.reference.node, bufnr) if kind == nil or def_node == node then @@ -272,8 +319,8 @@ end ---@param allow_scope? boolean ---@return TSNode|nil function M.containing_scope(node, bufnr, allow_scope) - local bufnr = bufnr or api.nvim_get_current_buf() - local allow_scope = allow_scope == nil or allow_scope == true + bufnr = bufnr or api.nvim_get_current_buf() + allow_scope = allow_scope == nil or allow_scope == true local scopes = M.get_scopes(bufnr) if not node or not scopes then @@ -301,7 +348,7 @@ function M.nested_scope(node, cursor_pos) local col = cursor_pos.col ---@type integer local scope = M.containing_scope(node) - for _, child in ipairs(ts_utils.get_named_children(scope)) do + for _, child in ipairs(get_named_children(scope)) do local row_, col_ = child:start() if vim.tbl_contains(scopes, child) and ((row_ + 1 == row and col_ > col) or row_ + 1 > row) then return child @@ -318,6 +365,9 @@ function M.next_scope(node) end local scope = M.containing_scope(node) + if not scope then + return + end local parent = scope:parent() if not parent then @@ -325,7 +375,7 @@ function M.next_scope(node) end local is_prev = true - for _, child in ipairs(ts_utils.get_named_children(parent)) do + for _, child in ipairs(get_named_children(parent)) do if child == scope then is_prev = false elseif not is_prev and vim.tbl_contains(scopes, child) then @@ -345,6 +395,9 @@ function M.previous_scope(node) end local scope = M.containing_scope(node) + if not scope then + return + end local parent = scope:parent() if not parent then @@ -352,7 +405,7 @@ function M.previous_scope(node) end local is_prev = true - local children = ts_utils.get_named_children(parent) + local children = get_named_children(parent) for i = #children, 1, -1 do if children[i] == scope then is_prev = false diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 31b691209..69e9500fe 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1,43 +1,3 @@ -local api = vim.api -local ts = vim.treesitter - -for ft, lang in pairs { - automake = "make", - javascriptreact = "javascript", - ecma = "javascript", - jsx = "javascript", - gyp = "python", - html_tags = "html", - ["typescript.tsx"] = "tsx", - ["terraform-vars"] = "terraform", - ["html.handlebars"] = "glimmer", - systemverilog = "verilog", - dosini = "ini", - confini = "ini", - svg = "xml", - xsd = "xml", - xslt = "xml", - expect = "tcl", - mysql = "sql", - sbt = "scala", - neomuttrc = "muttrc", - clientscript = "runescript", - --- short-hand list from https://github.com/helix-editor/helix/blob/master/languages.toml - rs = "rust", - ex = "elixir", - js = "javascript", - ts = "typescript", - ["c-sharp"] = "csharp", - hs = "haskell", - py = "python", - erl = "erlang", - typ = "typst", - pl = "perl", - uxn = "uxntal", -} do - ts.language.register(lang, ft) -end - ---@class InstallInfo ---@field url string ---@field branch string|nil @@ -47,2798 +7,2830 @@ end ---@field requires_generate_from_grammar boolean|nil ---@field location string|nil ---@field use_makefile boolean|nil ----@field cxx_standard string|nil ---@class ParserInfo ---@field install_info InstallInfo ----@field filetype string +---@field filetype string[] ---@field maintainers string[] ----@field experimental boolean|nil ----@field readme_name string|nil +---@field tier integer|nil +---@field readme_note string|nil ----@type ParserInfo[] -local list = setmetatable({}, { - __newindex = function(table, parsername, parserconfig) - rawset(table, parsername, parserconfig) - if parserconfig.filetype or vim.fn.has "nvim-0.11" == 0 then - ts.language.register(parsername, parserconfig.filetype or parsername) - end - end, -}) +local M = {} -list.ada = { - install_info = { - url = "https://github.com/briot/tree-sitter-ada", - files = { "src/parser.c" }, - }, - maintainers = { "@briot" }, -} +M.tiers = { 'core', 'stable', 'community', 'unstable' } -list.agda = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-agda", - files = { "src/parser.c", "src/scanner.c" }, +---@type ParserInfo[] +M.configs = { + ada = { + install_info = { + url = 'https://github.com/briot/tree-sitter-ada', + files = { 'src/parser.c' }, + }, + maintainers = { '@briot' }, }, - maintainers = { "@Decodetalkers" }, -} -list.angular = { - install_info = { - url = "https://github.com/dlvandenberg/tree-sitter-angular", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + agda = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-agda', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Decodetalkers' }, }, - filetype = "htmlangular", - maintainers = { "@dlvandenberg" }, - experimental = true, -} -list.apex = { - install_info = { - url = "https://github.com/aheber/tree-sitter-sfapex", - files = { "src/parser.c" }, - location = "apex", + angular = { + install_info = { + url = 'https://github.com/dlvandenberg/tree-sitter-angular', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@dlvandenberg' }, + tier = 4, }, - maintainers = { "@aheber", "@xixiaofinland" }, -} -list.arduino = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-arduino", - files = { "src/parser.c", "src/scanner.c" }, + apex = { + install_info = { + url = 'https://github.com/aheber/tree-sitter-sfapex', + files = { 'src/parser.c' }, + location = 'apex', + }, + maintainers = { '@aheber', '@xixiafinland' }, + tier = 3, }, - maintainers = { "@ObserverOfTime" }, -} -list.asm = { - install_info = { - url = "https://github.com/RubixDev/tree-sitter-asm", - files = { "src/parser.c" }, + arduino = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-arduino', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ObserverOfTime' }, }, - maintainers = { "@RubixDev" }, -} -list.astro = { - install_info = { - url = "https://github.com/virchau13/tree-sitter-astro", - files = { "src/parser.c", "src/scanner.c" }, + asm = { + install_info = { + url = 'https://github.com/RubixDev/tree-sitter-asm', + files = { 'src/parser.c' }, + }, + maintainers = { '@RubixDev' }, + tier = 3, }, - maintainers = { "@virchau13" }, -} -list.authzed = { - install_info = { - url = "https://github.com/mleonidas/tree-sitter-authzed", - files = { "src/parser.c" }, + astro = { + install_info = { + url = 'https://github.com/virchau13/tree-sitter-astro', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@virchau13' }, }, - maintainers = { "@mattpolzin" }, -} -list.awk = { - install_info = { - url = "https://github.com/Beaglefoot/tree-sitter-awk", - files = { "src/parser.c", "src/scanner.c" }, + authzed = { + install_info = { + url = 'https://github.com/mleonidas/tree-sitter-authzed', + files = { 'src/parser.c' }, + }, + maintainers = { '@mattpolzin' }, + tier = 3, }, -} -list.bash = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-bash", - files = { "src/parser.c", "src/scanner.c" }, + awk = { + install_info = { + url = 'https://github.com/Beaglefoot/tree-sitter-awk', + files = { 'src/parser.c', 'src/scanner.c' }, + }, }, - filetype = "sh", - maintainers = { "@TravonteD" }, -} -list.bass = { - install_info = { - url = "https://github.com/vito/tree-sitter-bass", - files = { "src/parser.c" }, + bash = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-bash', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@TravonteD' }, }, - maintainers = { "@amaanq" }, -} -list.beancount = { - install_info = { - url = "https://github.com/polarmutex/tree-sitter-beancount", - files = { "src/parser.c", "src/scanner.c" }, + bass = { + install_info = { + url = 'https://github.com/vito/tree-sitter-bass', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@polarmutex" }, -} -list.bibtex = { - install_info = { - url = "https://github.com/latex-lsp/tree-sitter-bibtex", - files = { "src/parser.c" }, + beancount = { + install_info = { + url = 'https://github.com/polarmutex/tree-sitter-beancount', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@polarmutex' }, }, - filetype = "bib", - maintainers = { "@theHamsta", "@clason" }, -} -list.bicep = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-bicep", - files = { "src/parser.c", "src/scanner.c" }, + bibtex = { + install_info = { + url = 'https://github.com/latex-lsp/tree-sitter-bibtex', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta', '@clason' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.bitbake = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-bitbake", - files = { "src/parser.c", "src/scanner.c" }, + bicep = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-bicep', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@amaanq" }, -} -list.blade = { - install_info = { - url = "https://github.com/EmranMR/tree-sitter-blade", - files = { "src/parser.c" }, + bitbake = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-bitbake', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@calebdw" }, -} -list.blueprint = { - install_info = { - url = "https://gitlab.com/gabmus/tree-sitter-blueprint.git", - files = { "src/parser.c" }, + blade = { + install_info = { + url = 'https://github.com/EmranMR/tree-sitter-blade', + files = { 'src/parser.c' }, + }, + maintainers = { '@calebdw' }, + tier = 2, }, - maintainers = { "@gabmus" }, - experimental = true, -} - -list.bp = { - install_info = { - url = "https://github.com/ambroisie/tree-sitter-bp", - files = { "src/parser.c" }, + blueprint = { + install_info = { + url = 'https://gitlab.com/gabmus/tree-sitter-blueprint.git', + files = { 'src/parser.c' }, + }, + maintainers = { '@gabmus' }, + tier = 4, }, - maintainers = { "@ambroisie" }, -} -list.brightscript = { - install_info = { - url = "https://github.com/ajdelcimmuto/tree-sitter-brightscript", - files = { "src/parser.c" }, + bp = { + install_info = { + url = 'https://github.com/ambroisie/tree-sitter-bp', + files = { 'src/parser.c' }, + }, + maintainers = { '@ambroisie' }, + tier = 3, + readme_note = 'Android Blueprint', }, - maintainers = { "@ajdelcimmuto" }, -} - -list.c = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-c", - files = { "src/parser.c" }, + brightscript = { + install_info = { + url = 'https://github.com/ajdelcimmuto/tree-sitter-brightscript', + files = { 'src/parser.c' }, + }, + maintainers = { '@ajdelcimmuto' }, + tier = 2, }, - maintainers = { "@amaanq" }, -} - -list.c_sharp = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-c-sharp", - files = { "src/parser.c", "src/scanner.c" }, + c = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-c', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 1, }, - filetype = "cs", - maintainers = { "@amaanq" }, -} -list.caddy = { - install_info = { - url = "https://github.com/opa-oz/tree-sitter-caddy", - files = { "src/parser.c", "src/scanner.c" }, + c_sharp = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-c-sharp', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@opa-oz" }, -} -list.cairo = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-cairo", - files = { "src/parser.c", "src/scanner.c" }, + cairo = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-cairo', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@amaanq" }, -} -list.capnp = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-capnp", - files = { "src/parser.c" }, + caddy = { + install_info = { + url = 'https://github.com/opa-oz/tree-sitter-caddy', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@opa-oz' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.chatito = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-chatito", - files = { "src/parser.c" }, + capnp = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-capnp', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@ObserverOfTime" }, -} -list.circom = { - install_info = { - url = "https://github.com/Decurity/tree-sitter-circom", - files = { "src/parser.c" }, + chatito = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-chatito', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, }, - maintainers = { "@alexandr-martirosyan" }, -} -list.clojure = { - install_info = { - url = "https://github.com/sogaiu/tree-sitter-clojure", - files = { "src/parser.c" }, + circom = { + install_info = { + url = 'https://github.com/Decurity/tree-sitter-circom', + files = { 'src/parser.c' }, + }, + maintainers = { '@alexandr-martirosyan' }, + tier = 3, }, - maintainers = { "@NoahTheDuke" }, -} -list.cmake = { - install_info = { - url = "https://github.com/uyha/tree-sitter-cmake", - files = { "src/parser.c", "src/scanner.c" }, + clojure = { + install_info = { + url = 'https://github.com/sogaiu/tree-sitter-clojure', + files = { 'src/parser.c' }, + }, + maintainers = { '@NoahTheDuke' }, }, - maintainers = { "@uyha" }, -} -list.comment = { - install_info = { - url = "https://github.com/stsewd/tree-sitter-comment", - files = { "src/parser.c", "src/scanner.c" }, + cmake = { + install_info = { + url = 'https://github.com/uyha/tree-sitter-cmake', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@uyha' }, }, - maintainers = { "@stsewd" }, -} -list.commonlisp = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-commonlisp", - files = { "src/parser.c" }, - generate_requires_npm = true, + comment = { + install_info = { + url = 'https://github.com/stsewd/tree-sitter-comment', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@stsewd' }, + tier = 2, }, - filetype = "lisp", - maintainers = { "@theHamsta" }, -} -list.cooklang = { - install_info = { - url = "https://github.com/addcninblue/tree-sitter-cooklang", - files = { "src/parser.c", "src/scanner.c" }, + commonlisp = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-commonlisp', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@addcninblue" }, - filetype = "cook", -} -list.corn = { - install_info = { - url = "https://github.com/jakestanger/tree-sitter-corn", - files = { "src/parser.c" }, + cooklang = { + install_info = { + url = 'https://github.com/addcninblue/tree-sitter-cooklang', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@addcninblue' }, + tier = 3, }, - maintainers = { "@jakestanger" }, -} -list.cpon = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-cpon", - files = { "src/parser.c" }, + corn = { + install_info = { + url = 'https://github.com/jakestanger/tree-sitter-corn', + files = { 'src/parser.c' }, + }, + maintainers = { '@jakestanger' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.cpp = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-cpp", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + cpon = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-cpon', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@theHamsta" }, -} -list.css = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-css", - files = { "src/parser.c", "src/scanner.c" }, + cpp = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-cpp', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@TravonteD" }, -} -list.csv = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-csv", - files = { "src/parser.c" }, - location = "csv", + css = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-css', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@TravonteD' }, }, - maintainers = { "@amaanq" }, -} -list.cuda = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-cuda", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + csv = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-csv', + files = { 'src/parser.c' }, + location = 'csv', + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@theHamsta" }, -} -list.cue = { - install_info = { - url = "https://github.com/eonpatapon/tree-sitter-cue", - files = { "src/parser.c", "src/scanner.c" }, + cuda = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-cuda', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@amaanq" }, -} -list.cylc = { - install_info = { - url = "https://github.com/elliotfontaine/tree-sitter-cylc", - files = { "src/parser.c" }, + cue = { + install_info = { + url = 'https://github.com/eonpatapon/tree-sitter-cue', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@elliotfontaine" }, -} -list.d = { - install_info = { - url = "https://github.com/gdamore/tree-sitter-d", - files = { "src/parser.c", "src/scanner.c" }, + cylc = { + install_info = { + url = 'https://github.com/elliotfontaine/tree-sitter-cylc', + files = { 'src/parser.c' }, + }, + maintainers = { '@elliotfontaine' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.dart = { - install_info = { - url = "https://github.com/UserNobody14/tree-sitter-dart", - files = { "src/parser.c", "src/scanner.c" }, + d = { + install_info = { + url = 'https://github.com/gdamore/tree-sitter-d', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + tier = 2, + maintainers = { '@amaanq' }, }, - maintainers = { "@akinsho" }, -} -list.desktop = { - install_info = { - url = "https://github.com/ValdezFOmar/tree-sitter-desktop", - files = { "src/parser.c" }, + dart = { + install_info = { + url = 'https://github.com/UserNobody14/tree-sitter-dart', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@akinsho' }, }, - maintainers = { "@ValdezFOmar" }, -} -list.devicetree = { - install_info = { - url = "https://github.com/joelspadin/tree-sitter-devicetree", - files = { "src/parser.c" }, + desktop = { + install_info = { + url = 'https://github.com/ValdezFOmar/tree-sitter-desktop', + files = { 'src/parser.c' }, + }, + maintainers = { '@ValdezFOmar' }, + tier = 3, }, - filetype = "dts", - maintainers = { "@jedrzejboczar" }, -} -list.dhall = { - install_info = { - url = "https://github.com/jbellerb/tree-sitter-dhall", - files = { "src/parser.c", "src/scanner.c" }, + devicetree = { + install_info = { + url = 'https://github.com/joelspadin/tree-sitter-devicetree', + files = { 'src/parser.c' }, + }, + maintainers = { '@jedrzejboczar' }, }, - maintainers = { "@amaanq" }, -} -list.diff = { - install_info = { - url = "https://github.com/the-mikedavis/tree-sitter-diff", - files = { "src/parser.c" }, + dhall = { + install_info = { + url = 'https://github.com/jbellerb/tree-sitter-dhall', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - filetype = "gitdiff", - maintainers = { "@gbprod" }, -} -list.disassembly = { - install_info = { - url = "https://github.com/ColinKennedy/tree-sitter-disassembly", - files = { "src/parser.c", "src/scanner.c" }, + diff = { + install_info = { + url = 'https://github.com/the-mikedavis/tree-sitter-diff', + files = { 'src/parser.c' }, + }, + maintainers = { '@gbprod' }, }, - maintainers = { "@ColinKennedy" }, -} -list.djot = { - install_info = { - url = "https://github.com/treeman/tree-sitter-djot", - files = { "src/parser.c", "src/scanner.c" }, + disassembly = { + install_info = { + url = 'https://github.com/ColinKennedy/tree-sitter-disassembly', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ColinKennedy' }, + tier = 3, }, - maintainers = { "@NoahTheDuke" }, -} -list.dockerfile = { - install_info = { - url = "https://github.com/camdencheek/tree-sitter-dockerfile", - files = { "src/parser.c", "src/scanner.c" }, + djot = { + install_info = { + url = 'https://github.com/treeman/tree-sitter-djot', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@NoahTheDuke' }, + tier = 3, }, - maintainers = { "@camdencheek" }, -} -list.dot = { - install_info = { - url = "https://github.com/rydesun/tree-sitter-dot", - files = { "src/parser.c" }, + dockerfile = { + install_info = { + url = 'https://github.com/camdencheek/tree-sitter-dockerfile', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@camdencheek' }, }, - maintainers = { "@rydesun" }, -} -list.doxygen = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-doxygen", - files = { "src/parser.c", "src/scanner.c" }, + dot = { + install_info = { + url = 'https://github.com/rydesun/tree-sitter-dot', + files = { 'src/parser.c' }, + }, + maintainers = { '@rydesun' }, }, - maintainers = { "@amaanq" }, -} -list.dtd = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-xml", - files = { "src/parser.c", "src/scanner.c" }, - location = "dtd", + doxygen = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-doxygen', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@ObserverOfTime" }, -} -list.earthfile = { - install_info = { - url = "https://github.com/glehmann/tree-sitter-earthfile", - files = { "src/parser.c", "src/scanner.c" }, + dtd = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'dtd', + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@glehmann" }, -} -list.ebnf = { - install_info = { - url = "https://github.com/RubixDev/ebnf", - files = { "src/parser.c" }, - location = "crates/tree-sitter-ebnf", + earthfile = { + install_info = { + url = 'https://github.com/glehmann/tree-sitter-earthfile', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@glehmann' }, + tier = 3, }, - maintainers = { "@RubixDev" }, - experimental = true, -} - -list.editorconfig = { - install_info = { - url = "https://github.com/ValdezFOmar/tree-sitter-editorconfig", - files = { "src/parser.c", "src/scanner.c" }, + ebnf = { + install_info = { + url = 'https://github.com/RubixDev/ebnf', + files = { 'src/parser.c' }, + location = 'crates/tree-sitter-ebnf', + }, + maintainers = { '@RubixDev' }, + tier = 4, }, - maintainers = { "@ValdezFOmar" }, -} -list.eds = { - install_info = { - url = "https://github.com/uyha/tree-sitter-eds", - files = { "src/parser.c" }, + editorconfig = { + install_info = { + url = 'https://github.com/ValdezFOmar/tree-sitter-editorconfig', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ValdezFOmar' }, + tier = 3, }, - maintainers = { "@uyha" }, -} -list.eex = { - install_info = { - url = "https://github.com/connorlay/tree-sitter-eex", - files = { "src/parser.c" }, + eds = { + install_info = { + url = 'https://github.com/uyha/tree-sitter-eds', + files = { 'src/parser.c' }, + }, + maintainers = { '@uyha' }, + tier = 3, }, - filetype = "eelixir", - maintainers = { "@connorlay" }, -} -list.elixir = { - install_info = { - url = "https://github.com/elixir-lang/tree-sitter-elixir", - files = { "src/parser.c", "src/scanner.c" }, + eex = { + install_info = { + url = 'https://github.com/connorlay/tree-sitter-eex', + files = { 'src/parser.c' }, + }, + maintainers = { '@connorlay' }, }, - maintainers = { "@connorlay" }, -} -list.elm = { - install_info = { - url = "https://github.com/elm-tooling/tree-sitter-elm", - files = { "src/parser.c", "src/scanner.c" }, + elixir = { + install_info = { + url = 'https://github.com/elixir-lang/tree-sitter-elixir', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@connorlay' }, }, - maintainers = { "@zweimach" }, -} -list.elsa = { - install_info = { - url = "https://github.com/glapa-grossklag/tree-sitter-elsa", - files = { "src/parser.c" }, + elm = { + install_info = { + url = 'https://github.com/elm-tooling/tree-sitter-elm', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@zweimach' }, }, - maintainers = { "@glapa-grossklag", "@amaanq" }, -} -list.elvish = { - install_info = { - url = "https://github.com/elves/tree-sitter-elvish", - files = { "src/parser.c" }, + elsa = { + install_info = { + url = 'https://github.com/glapa-grossklag/tree-sitter-elsa', + files = { 'src/parser.c' }, + }, + maintainers = { '@glapa-grossklag', '@amaanq' }, }, - maintainers = { "@elves" }, -} -list.embedded_template = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-embedded-template", - files = { "src/parser.c" }, + elvish = { + install_info = { + url = 'https://github.com/elves/tree-sitter-elvish', + files = { 'src/parser.c' }, + }, + maintainers = { '@elves' }, }, - filetype = "eruby", -} -list.enforce = { - install_info = { - url = "https://github.com/simonvic/tree-sitter-enforce", - files = { "src/parser.c" }, + embedded_template = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-embedded-template', + files = { 'src/parser.c' }, + }, }, - maintainers = { "@simonvic" }, -} -list.erlang = { - install_info = { - url = "https://github.com/WhatsApp/tree-sitter-erlang", - files = { "src/parser.c", "src/scanner.c" }, + enforce = { + install_info = { + url = 'https://github.com/simonvic/tree-sitter-enforce', + files = { 'src/parser.c' }, + }, + maintainers = { '@simonvic' }, + tier = 3, }, - maintainers = { "@filmor" }, -} -list.facility = { - install_info = { - url = "https://github.com/FacilityApi/tree-sitter-facility", - files = { "src/parser.c" }, + erlang = { + install_info = { + url = 'https://github.com/WhatsApp/tree-sitter-erlang', + files = { 'src/parser.c', 'src/parser.c' }, + }, + maintainers = { '@filmor' }, }, - filetype = "fsd", - maintainers = { "@bryankenote" }, -} -list.faust = { - install_info = { - url = "https://github.com/khiner/tree-sitter-faust", - files = { "src/parser.c" }, + facility = { + install_info = { + url = 'https://github.com/FacilityApi/tree-sitter-facility', + files = { 'src/parser.c' }, + }, + maintainers = { '@bryankenote' }, + tier = 3, }, - filetype = "dsp", - maintainers = { "@khiner" }, -} -list.fennel = { - install_info = { - url = "https://github.com/alexmozaidze/tree-sitter-fennel", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + faust = { + install_info = { + url = 'https://github.com/khiner/tree-sitter-faust', + files = { 'src/parser.c' }, + }, + maintainers = { '@khiner' }, + tier = 3, }, - maintainers = { "@alexmozaidze" }, -} -list.fidl = { - install_info = { - url = "https://github.com/google/tree-sitter-fidl", - files = { "src/parser.c" }, + fennel = { + install_info = { + url = 'https://github.com/alexmozaidze/tree-sitter-fennel', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@alexmozaidze' }, }, - maintainers = { "@chaopeng" }, -} -list.firrtl = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-firrtl", - files = { "src/parser.c", "src/scanner.c" }, + fidl = { + install_info = { + url = 'https://github.com/google/tree-sitter-fidl', + files = { 'src/parser.c' }, + }, + maintainers = { '@chaopeng' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.fish = { - install_info = { - url = "https://github.com/ram02z/tree-sitter-fish", - files = { "src/parser.c", "src/scanner.c" }, + firrtl = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-firrtl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@ram02z" }, -} -list.foam = { - install_info = { - url = "https://github.com/FoamScience/tree-sitter-foam", - files = { "src/parser.c", "src/scanner.c" }, + fish = { + install_info = { + url = 'https://github.com/ram02z/tree-sitter-fish', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ram02z' }, }, - maintainers = { "@FoamScience" }, - -- Queries might change over time on the grammar's side - -- Otherwise everything runs fine - experimental = true, -} -list.forth = { - install_info = { - url = "https://github.com/AlexanderBrevig/tree-sitter-forth", - files = { "src/parser.c" }, + foam = { + install_info = { + url = 'https://github.com/FoamScience/tree-sitter-foam', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@FoamScience' }, + tier = 4, }, - maintainers = { "@amaanq" }, -} -list.fortran = { - install_info = { - url = "https://github.com/stadelmanma/tree-sitter-fortran", - files = { "src/parser.c", "src/scanner.c" }, + forth = { + install_info = { + url = 'https://github.com/AlexanderBrevig/tree-sitter-forth', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@amaanq" }, -} -list.fsh = { - install_info = { - url = "https://github.com/mgramigna/tree-sitter-fsh", - files = { "src/parser.c" }, + fortran = { + install_info = { + url = 'https://github.com/stadelmanma/tree-sitter-fortran', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@mgramigna" }, -} -list.fsharp = { - install_info = { - url = "https://github.com/ionide/tree-sitter-fsharp", - files = { "src/parser.c", "src/scanner.c" }, - location = "fsharp", + fsh = { + install_info = { + url = 'https://github.com/mgramigna/tree-sitter-fsh', + files = { 'src/parser.c' }, + }, + maintainers = { '@mgramigna' }, }, - maintainers = { "@nsidorenco" }, -} -list.func = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-func", - files = { "src/parser.c" }, + fsharp = { + install_info = { + url = 'https://github.com/ionide/tree-sitter-fsharp', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'fsharp', + }, + maintainers = { '@nsidorenco' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.fusion = { - install_info = { - url = "https://gitlab.com/jirgn/tree-sitter-fusion.git", - files = { "src/parser.c", "src/scanner.c" }, + func = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-func', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@jirgn" }, -} -list.gap = { - install_info = { - url = "https://github.com/gap-system/tree-sitter-gap", - files = { "src/parser.c", "src/scanner.c" }, + fusion = { + install_info = { + url = 'https://gitlab.com/jirgn/tree-sitter-fusion.git', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@jirgn' }, }, - maintainers = { "@reiniscirpons" }, - readme_name = "GAP system", -} -list.gaptst = { - install_info = { - url = "https://github.com/gap-system/tree-sitter-gaptst", - files = { "src/parser.c", "src/scanner.c" }, + gap = { + install_info = { + url = 'https://github.com/gap-system/tree-sitter-gap', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@reiniscirpons' }, + readme_name = 'GAP system', + tier = 3, }, - maintainers = { "@reiniscirpons" }, - readme_name = "GAP system test files", -} -list.gdscript = { - install_info = { - url = "https://github.com/PrestonKnopp/tree-sitter-gdscript", - files = { "src/parser.c", "src/scanner.c" }, + gaptst = { + install_info = { + url = 'https://github.com/gap-system/tree-sitter-gaptst', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@reiniscirpons' }, + readme_name = 'GAP system test files', + requires = { 'gap' }, + tier = 3, }, - maintainers = { "@PrestonKnopp" }, - readme_name = "Godot (gdscript)", -} -list.gdshader = { - install_info = { - url = "https://github.com/GodOfAvacyn/tree-sitter-gdshader", - files = { "src/parser.c" }, + gdscript = { + install_info = { + url = 'https://github.com/PrestonKnopp/tree-sitter-gdscript', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@PrestonKnopp' }, + readme_note = 'Godot', }, - filetype = "gdshaderinc", - maintainers = { "@godofavacyn" }, -} -list.git_rebase = { - install_info = { - url = "https://github.com/the-mikedavis/tree-sitter-git-rebase", - files = { "src/parser.c" }, + gdshader = { + install_info = { + url = 'https://github.com/GodOfAvacyn/tree-sitter-gdshader', + files = { 'src/parser.c' }, + }, + maintainers = { '@godofavacyn' }, + tier = 3, }, - filetype = "gitrebase", - maintainers = { "@gbprod" }, -} -list.gitattributes = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-gitattributes", - files = { "src/parser.c" }, + git_rebase = { + install_info = { + url = 'https://github.com/the-mikedavis/tree-sitter-git-rebase', + files = { 'src/parser.c' }, + }, + maintainers = { '@gbprod' }, }, - maintainers = { "@ObserverOfTime" }, -} -list.gitcommit = { - install_info = { - url = "https://github.com/gbprod/tree-sitter-gitcommit", - files = { "src/parser.c", "src/scanner.c" }, + gitattributes = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-gitattributes', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, }, - maintainers = { "@gbprod" }, -} -list.git_config = { - install_info = { - url = "https://github.com/the-mikedavis/tree-sitter-git-config", - files = { "src/parser.c" }, + gitcommit = { + install_info = { + url = 'https://github.com/gbprod/tree-sitter-gitcommit', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@gbprod' }, }, - filetype = "gitconfig", - maintainers = { "@amaanq" }, - readme_name = "git_config", -} -list.gitignore = { - install_info = { - url = "https://github.com/shunsambongi/tree-sitter-gitignore", - files = { "src/parser.c" }, + git_config = { + install_info = { + url = 'https://github.com/the-mikedavis/tree-sitter-git-config', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + readme_note = 'git_config', }, - maintainers = { "@theHamsta" }, -} -list.gleam = { - install_info = { - url = "https://github.com/gleam-lang/tree-sitter-gleam", - files = { "src/parser.c", "src/scanner.c" }, + gitignore = { + install_info = { + url = 'https://github.com/shunsambongi/tree-sitter-gitignore', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@amaanq" }, -} -list.glimmer = { - install_info = { - url = "https://github.com/ember-tooling/tree-sitter-glimmer", - files = { "src/parser.c", "src/scanner.c" }, + gleam = { + install_info = { + url = 'https://github.com/gleam-lang/tree-sitter-gleam', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - filetype = "handlebars", - maintainers = { "@NullVoxPopuli" }, - readme_name = "Glimmer and Ember", -} -list.glimmer_javascript = { - install_info = { - url = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + glimmer = { + install_info = { + url = 'https://github.com/ember-tooling/tree-sitter-glimmer', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@NullVoxPopuli' }, + readme_note = 'Glimmer and Ember', }, - filetype = "javascript.glimmer", - maintainers = { "@NullVoxPopuli" }, -} -list.glimmer_typescript = { - install_info = { - url = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + glimmer_javascript = { + install_info = { + url = 'https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@NullVoxPopuli' }, + requires = { 'javascript' }, + tier = 3, }, - filetype = "typescript.glimmer", - maintainers = { "@NullVoxPopuli" }, -} -list.glsl = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-glsl", - files = { "src/parser.c" }, - generate_requires_npm = true, + glimmer_typescript = { + install_info = { + url = 'https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@NullVoxPopuli' }, + requires = { 'typescript' }, + tier = 3, }, - maintainers = { "@theHamsta" }, -} -list.gn = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-gn", - files = { "src/parser.c", "src/scanner.c" }, + glsl = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-glsl', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@amaanq" }, - readme_name = "GN (Generate Ninja)", -} -list.gnuplot = { - install_info = { - url = "https://github.com/dpezto/tree-sitter-gnuplot", - files = { "src/parser.c" }, + gn = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-gn', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + readme_name = 'GN (Generate Ninja)', + tier = 2, }, - maintainers = { "@dpezto" }, -} -list.go = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-go", - files = { "src/parser.c" }, + gnuplot = { + install_info = { + url = 'https://github.com/dpezto/tree-sitter-gnuplot', + files = { 'src/parser.c' }, + }, + maintainers = { '@dpezto' }, + tier = 3, }, - maintainers = { "@theHamsta", "@WinWisely268" }, -} -list.goctl = { - install_info = { - url = "https://github.com/chaozwn/tree-sitter-goctl", - files = { "src/parser.c" }, + go = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-go', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta', '@WinWisely268' }, }, - maintainers = { "@chaozwn" }, -} -list.godot_resource = { - install_info = { - url = "https://github.com/PrestonKnopp/tree-sitter-godot-resource", - files = { "src/parser.c", "src/scanner.c" }, + goctl = { + install_info = { + url = 'https://github.com/chaozwn/tree-sitter-goctl', + files = { 'src/parser.c' }, + }, + maintainers = { '@chaozwn' }, + tier = 3, }, - filetype = "gdresource", - maintainers = { "@pierpo" }, - readme_name = "Godot Resources (gdresource)", -} -list.gomod = { - install_info = { - url = "https://github.com/camdencheek/tree-sitter-go-mod", - files = { "src/parser.c" }, + godot_resource = { + install_info = { + url = 'https://github.com/PrestonKnopp/tree-sitter-godot-resource', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@pierpo' }, + readme_note = 'Godot Resources', }, - maintainers = { "@camdencheek" }, -} -list.gosum = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-go-sum", - files = { "src/parser.c" }, + gomod = { + install_info = { + url = 'https://github.com/camdencheek/tree-sitter-go-mod', + files = { 'src/parser.c' }, + }, + maintainers = { '@camdencheek' }, }, - maintainers = { "@amaanq" }, -} -list.gowork = { - install_info = { - url = "https://github.com/omertuc/tree-sitter-go-work", - files = { "src/parser.c" }, + gosum = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-go-sum', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@omertuc" }, -} -list.gotmpl = { - install_info = { - url = "https://github.com/ngalaiko/tree-sitter-go-template", - files = { "src/parser.c" }, + gowork = { + install_info = { + url = 'https://github.com/omertuc/tree-sitter-go-work', + files = { 'src/parser.c' }, + }, + maintainers = { '@omertuc' }, }, - maintainers = { "@qvalentin" }, -} -list.gpg = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-gpg-config", - files = { "src/parser.c" }, + graphql = { + install_info = { + url = 'https://github.com/bkegley/tree-sitter-graphql', + files = { 'src/parser.c' }, + }, + maintainers = { '@bkegley' }, }, - maintainers = { "@ObserverOfTime" }, -} -list.gren = { - install_info = { - files = { "src/parser.c", "src/scanner.c" }, - url = "https://github.com/MaeBrooks/tree-sitter-gren", + gotmpl = { + install_info = { + url = 'https://github.com/ngalaiko/tree-sitter-go-template', + files = { 'src/parser.c' }, + }, + maintainers = { '@qvalentin' }, + tier = 3, }, - maintainers = { "@MaeBrooks" }, -} -list.groovy = { - install_info = { - url = "https://github.com/murtaza64/tree-sitter-groovy", - files = { "src/parser.c" }, + gpg = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-gpg-config', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@murtaza64" }, -} -list.graphql = { - install_info = { - url = "https://github.com/bkegley/tree-sitter-graphql", - files = { "src/parser.c" }, + gren = { + install_info = { + files = { 'src/parser.c', 'src/scanner.c' }, + url = 'https://github.com/MaeBrooks/tree-sitter-gren', + }, + maintainers = { '@MaeBrooks' }, + tier = 3, }, - maintainers = { "@bkegley" }, -} -list.gstlaunch = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-gstlaunch", - files = { "src/parser.c" }, + groovy = { + install_info = { + url = 'https://github.com/murtaza64/tree-sitter-groovy', + files = { 'src/parser.c' }, + }, + maintainers = { '@murtaza64' }, + tier = 3, }, - maintainers = { "@theHamsta" }, -} -list.hack = { - install_info = { - url = "https://github.com/slackhq/tree-sitter-hack", - files = { "src/parser.c", "src/scanner.c" }, + gstlaunch = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-gstlaunch', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta' }, + tier = 2, }, -} -list.hare = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-hare", - files = { "src/parser.c" }, + hack = { + install_info = { + url = 'https://github.com/slackhq/tree-sitter-hack', + files = { 'src/parser.c', 'src/scanner.c' }, + }, }, - maintainers = { "@amaanq" }, -} -list.haskell = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-haskell", - files = { "src/parser.c", "src/scanner.c" }, + hare = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-hare', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@mrcjkb" }, -} -list.haskell_persistent = { - install_info = { - url = "https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent", - files = { "src/parser.c", "src/scanner.c" }, + haskell = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-haskell', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@mrcjkb' }, }, - filetype = "haskellpersistent", - maintainers = { "@lykahb" }, -} -list.hcl = { - install_info = { - url = "https://github.com/MichaHoffmann/tree-sitter-hcl", - files = { "src/parser.c", "src/scanner.c" }, + haskell_persistent = { + install_info = { + url = 'https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + filetype = 'haskell.persistent', + maintainers = { '@lykahb' }, }, - maintainers = { "@MichaHoffmann" }, -} -list.heex = { - install_info = { - url = "https://github.com/connorlay/tree-sitter-heex", - files = { "src/parser.c" }, + hcl = { + install_info = { + url = 'https://github.com/MichaHoffmann/tree-sitter-hcl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@MichaHoffmann' }, }, - maintainers = { "@connorlay" }, -} -list.helm = { - install_info = { - url = "https://github.com/ngalaiko/tree-sitter-go-template", - location = "dialects/helm", - files = { "src/parser.c" }, + heex = { + install_info = { + url = 'https://github.com/connorlay/tree-sitter-heex', + files = { 'src/parser.c' }, + }, + maintainers = { '@connorlay' }, }, - maintainers = { "@qvalentin" }, -} -list.hjson = { - install_info = { - url = "https://github.com/winston0410/tree-sitter-hjson", - files = { "src/parser.c" }, - generate_requires_npm = true, + helm = { + install_info = { + url = 'https://github.com/ngalaiko/tree-sitter-go-template', + location = 'dialects/helm', + files = { 'src/parser.c' }, + }, + maintainers = { '@qvalentin' }, + tier = 3, }, - maintainers = { "@winston0410" }, -} -list.hlsl = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-hlsl", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + hjson = { + install_info = { + url = 'https://github.com/winston0410/tree-sitter-hjson', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@winston0410' }, }, - maintainers = { "@theHamsta" }, -} -list.hocon = { - install_info = { - url = "https://github.com/antosha417/tree-sitter-hocon", - files = { "src/parser.c" }, - generate_requires_npm = true, + hlsl = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-hlsl', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@antosha417" }, -} -list.hoon = { - install_info = { - url = "https://github.com/urbit-pilled/tree-sitter-hoon", - files = { "src/parser.c", "src/scanner.c" }, + hlsplaylist = { + install_info = { + url = 'https://github.com/Freed-Wu/tree-sitter-hlsplaylist', + files = { 'src/parser.c' }, + }, + maintainers = { '@Freed-Wu' }, + tier = 3, }, - maintainers = { "@urbit-pilled" }, - experimental = true, -} -list.html = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-html", - files = { "src/parser.c", "src/scanner.c" }, + hocon = { + install_info = { + url = 'https://github.com/antosha417/tree-sitter-hocon', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@antosha417' }, }, - maintainers = { "@TravonteD" }, -} -list.htmldjango = { - install_info = { - url = "https://github.com/interdependence/tree-sitter-htmldjango", - files = { "src/parser.c" }, + hoon = { + install_info = { + url = 'https://github.com/urbit-pilled/tree-sitter-hoon', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@urbit-pilled' }, + tier = 4, }, - maintainers = { "@ObserverOfTime" }, - experimental = true, -} -list.http = { - install_info = { - url = "https://github.com/rest-nvim/tree-sitter-http", - files = { "src/parser.c" }, + html = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-html', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@TravonteD' }, }, - maintainers = { "@amaanq", "@NTBBloodbath" }, -} -list.hurl = { - install_info = { - url = "https://github.com/pfeiferj/tree-sitter-hurl", - files = { "src/parser.c" }, + htmldjango = { + install_info = { + url = 'https://github.com/interdependence/tree-sitter-htmldjango', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 4, }, - maintainers = { "@pfeiferj" }, -} -list.hyprlang = { - install_info = { - url = "https://github.com/luckasRanarison/tree-sitter-hyprlang", - files = { "src/parser.c" }, + http = { + install_info = { + url = 'https://github.com/rest-nvim/tree-sitter-http', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq', '@NTBBloodbath' }, }, - maintainers = { "@luckasRanarison" }, -} -list.idl = { - install_info = { - url = "https://github.com/cathaysia/tree-sitter-idl", - files = { "src/parser.c" }, + hurl = { + install_info = { + url = 'https://github.com/pfeiferj/tree-sitter-hurl', + files = { 'src/parser.c' }, + }, + maintainers = { '@pfeiferj' }, + tier = 3, }, - maintainers = { "@cathaysia" }, -} -list.idris = { - install_info = { - url = "https://github.com/kayhide/tree-sitter-idris", - files = { "src/parser.c", "src/scanner.c" }, + hyprlang = { + install_info = { + url = 'https://github.com/luckasRanarison/tree-sitter-hyprlang', + files = { 'src/parser.c' }, + }, + maintainers = { '@luckasRanarison' }, + tier = 3, }, - filetype = "idris2", - maintainers = { "@srghma" }, -} -list.ini = { - install_info = { - url = "https://github.com/justinmk/tree-sitter-ini", - files = { "src/parser.c" }, + idl = { + install_info = { + url = 'https://github.com/cathaysia/tree-sitter-idl', + files = { 'src/parser.c' }, + }, + maintainers = { '@cathaysia' }, + tier = 3, }, - maintainers = { "@theHamsta" }, - experimental = true, -} -list.inko = { - install_info = { - url = "https://github.com/inko-lang/tree-sitter-inko", - files = { "src/parser.c" }, + idris = { + install_info = { + url = 'https://github.com/kayhide/tree-sitter-idris', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@srghma' }, + tier = 3, }, - maintainers = { "@yorickpeterse" }, -} -list.ipkg = { - install_info = { - url = "https://github.com/srghma/tree-sitter-ipkg", - files = { "src/parser.c", "src/scanner.c" }, + ini = { + install_info = { + url = 'https://github.com/justinmk/tree-sitter-ini', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta' }, + tier = 4, }, - maintainers = { "@srghma" }, -} -list.ispc = { - install_info = { - url = "https://github.com/fab4100/tree-sitter-ispc", - files = { "src/parser.c" }, - generate_requires_npm = true, + inko = { + install_info = { + url = 'https://github.com/inko-lang/tree-sitter-inko', + files = { 'src/parser.c' }, + }, + maintainers = { '@yorickpeterse' }, + tier = 3, }, - maintainers = { "@fab4100" }, -} -list.janet_simple = { - install_info = { - url = "https://github.com/sogaiu/tree-sitter-janet-simple", - files = { "src/parser.c", "src/scanner.c" }, + ipkg = { + install_info = { + url = 'https://github.com/srghma/tree-sitter-ipkg', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@srghma' }, + tier = 3, }, - filetype = "janet", - maintainers = { "@sogaiu" }, -} -list.java = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-java", - files = { "src/parser.c" }, + ispc = { + install_info = { + url = 'https://github.com/fab4100/tree-sitter-ispc', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@fab4100' }, }, - maintainers = { "@p00f" }, -} -list.javadoc = { - install_info = { - url = "https://github.com/rmuir/tree-sitter-javadoc", - files = { "src/parser.c", "src/scanner.c" }, + janet_simple = { + install_info = { + url = 'https://github.com/sogaiu/tree-sitter-janet-simple', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@sogaiu' }, }, - maintainers = { "@rmuir" }, -} -list.javascript = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-javascript", - files = { "src/parser.c", "src/scanner.c" }, + java = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-java', + files = { 'src/parser.c' }, + }, + maintainers = { '@p00f' }, }, - maintainers = { "@steelsojka" }, -} -list.jinja = { - install_info = { - url = "https://github.com/cathaysia/tree-sitter-jinja", - location = "tree-sitter-jinja", - files = { "src/parser.c", "src/scanner.c" }, + javadoc = { + install_info = { + url = 'https://github.com/rmuir/tree-sitter-javadoc', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@rmuir' }, + tier = 2, }, - maintainers = { "@cathaysia" }, -} -list.jinja_inline = { - install_info = { - url = "https://github.com/cathaysia/tree-sitter-jinja", - location = "tree-sitter-jinja_inline", - files = { "src/parser.c", "src/scanner.c" }, + javascript = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-javascript', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@steelsojka' }, }, - maintainers = { "@cathaysia" }, -} -list.jq = { - install_info = { - url = "https://github.com/flurie/tree-sitter-jq", - files = { "src/parser.c" }, + jinja = { + install_info = { + url = 'https://github.com/cathaysia/tree-sitter-jinja', + location = 'tree-sitter-jinja', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@cathaysia' }, + readme_note = 'basic highlighting', + tier = 3, }, - maintainers = { "@ObserverOfTime" }, -} -list.jsdoc = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-jsdoc", - files = { "src/parser.c", "src/scanner.c" }, + jinja_inline = { + install_info = { + url = 'https://github.com/cathaysia/tree-sitter-jinja', + location = 'tree-sitter-jinja_inline', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@cathaysia' }, + readme_note = 'needed for full highlighting', + tier = 3, }, - maintainers = { "@steelsojka" }, -} -list.json = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-json", - files = { "src/parser.c" }, + jq = { + install_info = { + url = 'https://github.com/flurie/tree-sitter-jq', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, }, - maintainers = { "@steelsojka" }, -} -list.json5 = { - install_info = { - url = "https://github.com/Joakker/tree-sitter-json5", - files = { "src/parser.c" }, + jsdoc = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-jsdoc', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@steelsojka' }, }, - maintainers = { "@Joakker" }, -} -list.jsonc = { - install_info = { - url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git", - files = { "src/parser.c" }, - generate_requires_npm = true, + json = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-json', + files = { 'src/parser.c' }, + }, + maintainers = { '@steelsojka' }, }, - maintainers = { "@WhyNotHugo" }, - readme_name = "JSON with comments", -} -list.jsonnet = { - install_info = { - url = "https://github.com/sourcegraph/tree-sitter-jsonnet", - files = { "src/parser.c", "src/scanner.c" }, + json5 = { + install_info = { + url = 'https://github.com/Joakker/tree-sitter-json5', + files = { 'src/parser.c' }, + }, + maintainers = { '@Joakker' }, }, - maintainers = { "@nawordar" }, -} -list.julia = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-julia", - files = { "src/parser.c", "src/scanner.c" }, + jsonc = { + install_info = { + url = 'https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git', + files = { 'src/parser.c' }, + generate_requires_npm = true, + }, + maintainers = { '@WhyNotHugo' }, + readme_note = 'JSON with comments', }, - maintainers = { "@fredrikekre" }, -} -list.just = { - install_info = { - url = "https://github.com/IndianBoy42/tree-sitter-just", - files = { "src/parser.c", "src/scanner.c" }, + jsonnet = { + install_info = { + url = 'https://github.com/sourcegraph/tree-sitter-jsonnet', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@nawordar' }, }, - maintainers = { "@Hubro" }, -} -list.kcl = { - install_info = { - url = "https://github.com/kcl-lang/tree-sitter-kcl", - files = { "src/parser.c", "src/scanner.c" }, + julia = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-julia', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@fredrikekre' }, + tier = 3, }, - maintainers = { "@bertbaron" }, -} -list.kconfig = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-kconfig", - files = { "src/parser.c", "src/scanner.c" }, + just = { + install_info = { + url = 'https://github.com/IndianBoy42/tree-sitter-just', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Hubro' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.kdl = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-kdl", - files = { "src/parser.c", "src/scanner.c" }, + kcl = { + install_info = { + url = 'https://github.com/kcl-lang/tree-sitter-kcl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@bertbaron' }, + tier = 2, }, - maintainers = { "@amaanq" }, -} -list.kotlin = { - install_info = { - url = "https://github.com/fwcd/tree-sitter-kotlin", - files = { "src/parser.c", "src/scanner.c" }, + kconfig = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-kconfig', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@SalBakraa" }, -} -list.koto = { - install_info = { - url = "https://github.com/koto-lang/tree-sitter-koto", - files = { "src/parser.c", "src/scanner.c" }, + kdl = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-kdl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@irh" }, -} -list.kusto = { - install_info = { - url = "https://github.com/Willem-J-an/tree-sitter-kusto", - files = { "src/parser.c" }, + kotlin = { + install_info = { + url = 'https://github.com/fwcd/tree-sitter-kotlin', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@SalBakraa' }, }, - maintainers = { "@Willem-J-an" }, -} -list.lalrpop = { - install_info = { - url = "https://github.com/traxys/tree-sitter-lalrpop", - files = { "src/parser.c", "src/scanner.c" }, + koto = { + install_info = { + url = 'https://github.com/koto-lang/tree-sitter-koto', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@irh' }, + tier = 3, }, - maintainers = { "@traxys" }, -} -list.latex = { - install_info = { - url = "https://github.com/latex-lsp/tree-sitter-latex", - files = { "src/parser.c", "src/scanner.c" }, - requires_generate_from_grammar = true, + kusto = { + install_info = { + url = 'https://github.com/Willem-J-an/tree-sitter-kusto', + files = { 'src/parser.c' }, + }, + maintainers = { '@Willem-J-an' }, + tier = 3, }, - filetype = "tex", - maintainers = { "@theHamsta", "@clason" }, -} -list.ledger = { - install_info = { - url = "https://github.com/cbarrete/tree-sitter-ledger", - files = { "src/parser.c" }, + lalrpop = { + install_info = { + url = 'https://github.com/traxys/tree-sitter-lalrpop', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@traxys' }, }, - maintainers = { "@cbarrete" }, -} -list.leo = { - install_info = { - url = "https://github.com/r001/tree-sitter-leo", - files = { "src/parser.c" }, + latex = { + install_info = { + url = 'https://github.com/latex-lsp/tree-sitter-latex', + files = { 'src/parser.c', 'src/scanner.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@theHamsta', '@clason' }, + tier = 3, }, - maintainers = { "@r001" }, -} -list.llvm = { - install_info = { - url = "https://github.com/benwilliamgraham/tree-sitter-llvm", - files = { "src/parser.c" }, + ledger = { + install_info = { + url = 'https://github.com/cbarrete/tree-sitter-ledger', + files = { 'src/parser.c' }, + }, + maintainers = { '@cbarrete' }, }, - maintainers = { "@benwilliamgraham" }, -} -list.linkerscript = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-linkerscript", - files = { "src/parser.c" }, + leo = { + install_info = { + url = 'https://github.com/r001/tree-sitter-leo', + files = { 'src/parser.c' }, + }, + maintainers = { '@r001' }, + tier = 3, }, - filetype = "ld", - maintainers = { "@amaanq" }, -} -list.liquid = { - install_info = { - url = "https://github.com/hankthetank27/tree-sitter-liquid", - files = { "src/parser.c", "src/scanner.c" }, + llvm = { + install_info = { + url = 'https://github.com/benwilliamgraham/tree-sitter-llvm', + files = { 'src/parser.c' }, + }, + maintainers = { '@benwilliamgraham' }, }, - maintainers = { "@hankthetank27" }, -} -list.liquidsoap = { - install_info = { - url = "https://github.com/savonet/tree-sitter-liquidsoap", - files = { "src/parser.c", "src/scanner.c" }, + linkerscript = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-linkerscript', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@toots" }, -} -list.lua = { - install_info = { - url = "https://github.com/MunifTanjim/tree-sitter-lua", - files = { "src/parser.c", "src/scanner.c" }, + liquid = { + install_info = { + url = 'https://github.com/hankthetank27/tree-sitter-liquid', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@hankthetank27' }, + tier = 3, }, - maintainers = { "@muniftanjim" }, -} -list.luadoc = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-luadoc", - files = { "src/parser.c" }, + liquidsoap = { + install_info = { + url = 'https://github.com/savonet/tree-sitter-liquidsoap', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@toots' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.luap = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-luap", - files = { "src/parser.c" }, + lua = { + install_info = { + url = 'https://github.com/MunifTanjim/tree-sitter-lua', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + tier = 1, + maintainers = { '@muniftanjim' }, }, - maintainers = { "@amaanq" }, - readme_name = "lua patterns", -} -list.luau = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-luau", - files = { "src/parser.c", "src/scanner.c" }, + luadoc = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-luadoc', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@amaanq" }, -} -list.hlsplaylist = { - install_info = { - url = "https://github.com/Freed-Wu/tree-sitter-hlsplaylist", - files = { "src/parser.c" }, + luap = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-luap', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + readme_note = 'Lua patterns', }, - maintainers = { "@Freed-Wu" }, -} -list.m68k = { - install_info = { - url = "https://github.com/grahambates/tree-sitter-m68k", - files = { "src/parser.c" }, + luau = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-luau', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - filetype = "asm68k", - maintainers = { "@grahambates" }, -} -list.make = { - install_info = { - url = "https://github.com/alemuller/tree-sitter-make", - files = { "src/parser.c" }, + m68k = { + install_info = { + url = 'https://github.com/grahambates/tree-sitter-m68k', + files = { 'src/parser.c' }, + }, + maintainers = { '@grahambates' }, }, - maintainers = { "@lewis6991" }, -} -list.markdown = { - install_info = { - url = "https://github.com/MDeiml/tree-sitter-markdown", - location = "tree-sitter-markdown", - files = { "src/parser.c", "src/scanner.c" }, + make = { + install_info = { + url = 'https://github.com/alemuller/tree-sitter-make', + files = { 'src/parser.c' }, + }, + maintainers = { '@lewis6991' }, }, - maintainers = { "@MDeiml" }, - readme_name = "markdown (basic highlighting)", - experimental = true, -} -list.markdown_inline = { - install_info = { - url = "https://github.com/MDeiml/tree-sitter-markdown", - location = "tree-sitter-markdown-inline", - files = { "src/parser.c", "src/scanner.c" }, + markdown = { + install_info = { + url = 'https://github.com/MDeiml/tree-sitter-markdown', + location = 'tree-sitter-markdown', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@MDeiml' }, + readme_note = 'basic highlighting', + tier = 1, }, - maintainers = { "@MDeiml" }, - readme_name = "markdown_inline (needed for full highlighting)", - experimental = true, -} -list.matlab = { - install_info = { - url = "https://github.com/acristoffers/tree-sitter-matlab", - files = { "src/parser.c", "src/scanner.c" }, + markdown_inline = { + install_info = { + url = 'https://github.com/MDeiml/tree-sitter-markdown', + location = 'tree-sitter-markdown-inline', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@MDeiml' }, + readme_note = 'needed for full highlighting', + tier = 1, }, - maintainers = { "@acristoffers" }, -} -list.menhir = { - install_info = { - url = "https://github.com/Kerl13/tree-sitter-menhir", - files = { "src/parser.c", "src/scanner.c" }, + matlab = { + install_info = { + url = 'https://github.com/acristoffers/tree-sitter-matlab', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@acristoffers' }, }, - maintainers = { "@Kerl13" }, -} -list.mermaid = { - install_info = { - url = "https://github.com/monaqa/tree-sitter-mermaid", - files = { "src/parser.c" }, + menhir = { + install_info = { + url = 'https://github.com/Kerl13/tree-sitter-menhir', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Kerl13' }, }, - experimental = true, -} -list.meson = { - install_info = { - url = "https://github.com/Decodetalkers/tree-sitter-meson", - files = { "src/parser.c" }, + mermaid = { + install_info = { + url = 'https://github.com/monaqa/tree-sitter-mermaid', + files = { 'src/parser.c' }, + }, + tier = 4, }, - maintainers = { "@Decodetalkers" }, -} -list.mlir = { - install_info = { - url = "https://github.com/artagnon/tree-sitter-mlir", - files = { "src/parser.c" }, - requires_generate_from_grammar = true, + meson = { + install_info = { + url = 'https://github.com/Decodetalkers/tree-sitter-meson', + files = { 'src/parser.c' }, + }, + maintainers = { '@Decodetalkers' }, }, - experimental = true, - maintainers = { "@artagnon" }, -} -list.muttrc = { - install_info = { - url = "https://github.com/neomutt/tree-sitter-muttrc", - files = { "src/parser.c" }, + mlir = { + install_info = { + url = 'https://github.com/artagnon/tree-sitter-mlir', + files = { 'src/parser.c' }, + requires_generate_from_grammar = true, + }, + tier = 4, + maintainers = { '@artagnon' }, }, - maintainers = { "@Freed-Wu" }, -} -list.nasm = { - install_info = { - url = "https://github.com/naclsn/tree-sitter-nasm", - files = { "src/parser.c" }, + muttrc = { + install_info = { + url = 'https://github.com/neomutt/tree-sitter-muttrc', + files = { 'src/parser.c' }, + }, + maintainers = { '@Freed-Wu' }, + tier = 3, }, - maintainers = { "@ObserverOfTime" }, -} -list.nginx = { - install_info = { - url = "https://github.com/opa-oz/tree-sitter-nginx", - files = { "src/parser.c", "src/scanner.c" }, + nasm = { + install_info = { + url = 'https://github.com/naclsn/tree-sitter-nasm', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@opa-oz" }, -} -list.nickel = { - install_info = { - url = "https://github.com/nickel-lang/tree-sitter-nickel", - files = { "src/parser.c", "src/scanner.c" }, + nginx = { + install_info = { + url = 'https://github.com/opa-oz/tree-sitter-nginx', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@opa-oz' }, + tier = 3, }, -} -list.nim = { - install_info = { - url = "https://github.com/alaviss/tree-sitter-nim", - files = { "src/parser.c", "src/scanner.c" }, + nickel = { + install_info = { + url = 'https://github.com/nickel-lang/tree-sitter-nickel', + files = { 'src/parser.c', 'src/scanner.c' }, + }, }, - maintainers = { "@aMOPel" }, -} -list.nim_format_string = { - install_info = { - url = "https://github.com/aMOPel/tree-sitter-nim-format-string", - files = { "src/parser.c" }, + nim = { + install_info = { + url = 'https://github.com/alaviss/tree-sitter-nim', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@aMOPel' }, + tier = 3, }, - maintainers = { "@aMOPel" }, -} -list.ninja = { - install_info = { - url = "https://github.com/alemuller/tree-sitter-ninja", - files = { "src/parser.c" }, + nim_format_string = { + install_info = { + url = 'https://github.com/aMOPel/tree-sitter-nim-format-string', + files = { 'src/parser.c' }, + }, + maintainers = { '@aMOPel' }, + tier = 3, }, - maintainers = { "@alemuller" }, -} -list.nix = { - install_info = { - url = "https://github.com/cstrahan/tree-sitter-nix", - files = { "src/parser.c", "src/scanner.c" }, + ninja = { + install_info = { + url = 'https://github.com/alemuller/tree-sitter-ninja', + files = { 'src/parser.c' }, + }, + maintainers = { '@alemuller' }, }, - maintainers = { "@leo60228" }, -} -list.norg = { - install_info = { - url = "https://github.com/nvim-neorg/tree-sitter-norg", - files = { "src/parser.c", "src/scanner.cc" }, - cxx_standard = "c++14", - use_makefile = true, + nix = { + install_info = { + url = 'https://github.com/cstrahan/tree-sitter-nix', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@leo60228' }, }, - maintainers = { "@JoeyGrajciar", "@vhyrro" }, -} -list.nqc = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-nqc", - files = { "src/parser.c" }, + norg = { + install_info = { + url = 'https://github.com/nvim-neorg/tree-sitter-norg', + files = { 'src/parser.c', 'src/scanner.cc' }, + use_makefile = true, + }, + tier = 4, + maintainers = { '@JoeyGrajciar', '@vhyrro' }, }, - maintainers = { "@amaanq" }, -} -list.nu = { - install_info = { - url = "https://github.com/nushell/tree-sitter-nu", - files = { "src/parser.c", "src/scanner.c" }, + nqc = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-nqc', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@abhisheksingh0x558" }, -} -list.objc = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-objc", - files = { "src/parser.c" }, + nu = { + install_info = { + url = 'https://github.com/nushell/tree-sitter-nu', + files = { 'src/parser.c' }, + }, + maintainers = { '@abhisheksingh0x558' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.objdump = { - install_info = { - url = "https://github.com/ColinKennedy/tree-sitter-objdump", - files = { "src/parser.c", "src/scanner.c" }, + objc = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-objc', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@ColinKennedy" }, -} -list.ocaml = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-ocaml", - files = { "src/parser.c", "src/scanner.c" }, - location = "grammars/ocaml", + objdump = { + install_info = { + url = 'https://github.com/ColinKennedy/tree-sitter-objdump', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ColinKennedy' }, + tier = 3, }, - maintainers = { "@undu" }, -} -list.ocaml_interface = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-ocaml", - files = { "src/parser.c", "src/scanner.c" }, - location = "grammars/interface", + ocaml = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-ocaml', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'grammars/ocaml', + }, + maintainers = { '@undu' }, }, - filetype = "ocamlinterface", - maintainers = { "@undu" }, -} -list.ocamllex = { - install_info = { - url = "https://github.com/atom-ocaml/tree-sitter-ocamllex", - files = { "src/parser.c", "src/scanner.c" }, - requires_generate_from_grammar = true, + ocaml_interface = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-ocaml', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'grammars/interface', + }, + maintainers = { '@undu' }, }, - maintainers = { "@undu" }, -} -list.odin = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-odin", - files = { "src/parser.c", "src/scanner.c" }, + ocamllex = { + install_info = { + url = 'https://github.com/atom-ocaml/tree-sitter-ocamllex', + files = { 'src/parser.c', 'src/scanner.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@undu' }, }, - maintainers = { "@amaanq" }, -} -list.pascal = { - install_info = { - url = "https://github.com/Isopod/tree-sitter-pascal", - files = { "src/parser.c" }, + odin = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-odin', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@Isopod" }, -} -list.passwd = { - install_info = { - url = "https://github.com/ath3/tree-sitter-passwd", - files = { "src/parser.c" }, + pascal = { + install_info = { + url = 'https://github.com/Isopod/tree-sitter-pascal', + files = { 'src/parser.c' }, + }, + maintainers = { '@Isopod' }, }, - maintainers = { "@amaanq" }, -} -list.pem = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-pem", - files = { "src/parser.c" }, + passwd = { + install_info = { + url = 'https://github.com/ath3/tree-sitter-passwd', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@ObserverOfTime" }, -} -list.perl = { - install_info = { - url = "https://github.com/tree-sitter-perl/tree-sitter-perl", - files = { "src/parser.c", "src/scanner.c" }, - branch = "release", + pem = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-pem', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@RabbiVeesh", "@LeoNerd" }, -} -list.php = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-php", - location = "php", - files = { "src/parser.c", "src/scanner.c" }, + perl = { + install_info = { + url = 'https://github.com/tree-sitter-perl/tree-sitter-perl', + branch = 'release', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@RabbiVeesh', '@LeoNerd' }, }, - maintainers = { "@tk-shirasaka", "@calebdw" }, -} -list.php_only = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-php", - location = "php_only", - files = { "src/parser.c", "src/scanner.c" }, + php = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-php', + location = 'php', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@tk-shirasaka', '@calebdw' }, + requires = { 'php_only' }, + readme_note = 'PHP with embedded HTML', }, - maintainers = { "@tk-shirasaka", "@calebdw" }, -} --- Parsers for injections -list.phpdoc = { - install_info = { - url = "https://github.com/claytonrcarter/tree-sitter-phpdoc", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + php_only = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-php', + location = 'php_only', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@tk-shirasaka', '@calebdw' }, + readme_note = 'PHP without embedded HTML', }, - maintainers = { "@mikehaertl" }, - experimental = true, -} -list.pioasm = { - install_info = { - url = "https://github.com/leo60228/tree-sitter-pioasm", - files = { "src/parser.c", "src/scanner.c" }, + phpdoc = { + install_info = { + url = 'https://github.com/claytonrcarter/tree-sitter-phpdoc', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@mikehaertl' }, + tier = 4, }, - maintainers = { "@leo60228" }, -} -list.po = { - install_info = { - url = "https://github.com/erasin/tree-sitter-po", - files = { "src/parser.c" }, + pioasm = { + install_info = { + url = 'https://github.com/leo60228/tree-sitter-pioasm', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@leo60228' }, }, - maintainers = { "@amaanq" }, -} -list.pod = { - install_info = { - url = "https://github.com/tree-sitter-perl/tree-sitter-pod", - files = { "src/parser.c", "src/scanner.c" }, - branch = "release", + po = { + install_info = { + url = 'https://github.com/erasin/tree-sitter-po', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@RabbiVeesh", "@LeoNerd" }, -} -list.poe_filter = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-poe-filter", - files = { "src/parser.c" }, + pod = { + install_info = { + url = 'https://github.com/tree-sitter-perl/tree-sitter-pod', + files = { 'src/parser.c', 'src/scanner.c' }, + branch = 'release', + }, + maintainers = { '@RabbiVeesh', '@LeoNerd' }, + tier = 3, }, - filetype = "poefilter", - maintainers = { "@ObserverOfTime" }, - readme_name = "Path of Exile item filter", - experimental = true, -} -list.pony = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-pony", - files = { "src/parser.c", "src/scanner.c" }, + poe_filter = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-poe-filter', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + readme_note = 'Path of Exile item filter', + tier = 4, }, - maintainers = { "@amaanq", "@mfelsche" }, -} -list.powershell = { - install_info = { - url = "https://github.com/airbus-cert/tree-sitter-powershell", - files = { "src/parser.c", "src/scanner.c" }, + pony = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-pony', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq', '@mfelsche' }, }, - filetype = "ps1", - maintainers = { "@L2jLiga" }, -} -list.printf = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-printf", - files = { "src/parser.c" }, + powershell = { + install_info = { + url = 'https://github.com/airbus-cert/tree-sitter-powershell', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + filetype = 'ps1', + maintainers = { '@L2jLiga' }, + tier = 3, }, - maintainers = { "@ObserverOfTime" }, -} -list.prisma = { - install_info = { - url = "https://github.com/victorhqc/tree-sitter-prisma", - files = { "src/parser.c" }, + printf = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-printf', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@elianiva" }, -} -list.problog = { - install_info = { - url = "https://github.com/foxyseta/tree-sitter-prolog", - files = { "src/parser.c" }, - location = "grammars/problog", + prisma = { + install_info = { + url = 'https://github.com/victorhqc/tree-sitter-prisma', + files = { 'src/parser.c' }, + }, + maintainers = { '@elianiva' }, }, - maintainers = { "@foxyseta" }, -} -list.prolog = { - install_info = { - url = "https://github.com/foxyseta/tree-sitter-prolog", - files = { "src/parser.c" }, - location = "grammars/prolog", + problog = { + install_info = { + url = 'https://github.com/foxyseta/tree-sitter-prolog', + files = { 'src/parser.c' }, + location = 'grammars/problog', + }, + maintainers = { '@foxyseta' }, + requires = { 'prolog' }, + tier = 3, }, - maintainers = { "@foxyseta" }, -} -list.promql = { - install_info = { - url = "https://github.com/MichaHoffmann/tree-sitter-promql", - files = { "src/parser.c" }, - experimental = true, + prolog = { + install_info = { + url = 'https://github.com/foxyseta/tree-sitter-prolog', + files = { 'src/parser.c' }, + location = 'grammars/prolog', + }, + maintainers = { '@foxyseta' }, + tier = 3, }, - maintainers = { "@MichaHoffmann" }, -} -list.properties = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-properties", - files = { "src/parser.c", "src/scanner.c" }, + properties = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-properties', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, + readme_note = 'Java properties files', }, - filetype = "jproperties", - maintainers = { "@ObserverOfTime" }, -} -list.proto = { - install_info = { - url = "https://github.com/treywood/tree-sitter-proto", - files = { "src/parser.c" }, + proto = { + install_info = { + url = 'https://github.com/treywood/tree-sitter-proto', + files = { 'src/parser.c' }, + }, + maintainers = { '@treywood' }, }, - maintainers = { "@treywood" }, -} -list.prql = { - install_info = { - url = "https://github.com/PRQL/tree-sitter-prql", - files = { "src/parser.c" }, + promql = { + install_info = { + url = 'https://github.com/MichaHoffmann/tree-sitter-promql', + files = { 'src/parser.c' }, + }, + maintainers = { '@MichaHoffmann' }, + tier = 4, }, - maintainers = { "@matthias-Q" }, -} -list.psv = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-csv", - files = { "src/parser.c" }, - location = "psv", + prql = { + install_info = { + url = 'https://github.com/PRQL/tree-sitter-prql', + files = { 'src/parser.c' }, + }, + maintainers = { '@matthias-Q' }, }, - maintainers = { "@amaanq" }, -} -list.pug = { - install_info = { - url = "https://github.com/zealot128/tree-sitter-pug", - files = { "src/parser.c", "src/scanner.c" }, + psv = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-csv', + files = { 'src/parser.c' }, + location = 'psv', + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@zealot128" }, - experimental = true, -} -list.puppet = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-puppet", - files = { "src/parser.c" }, + pug = { + install_info = { + url = 'https://github.com/zealot128/tree-sitter-pug', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@zealot128' }, + tier = 4, }, - maintainers = { "@amaanq" }, -} -list.purescript = { - install_info = { - url = "https://github.com/postsolar/tree-sitter-purescript", - files = { "src/parser.c", "src/scanner.c" }, + puppet = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-puppet', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@postsolar" }, -} -list.pymanifest = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-pymanifest", - files = { "src/parser.c" }, + purescript = { + install_info = { + url = 'https://github.com/postsolar/tree-sitter-purescript', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@postsolar' }, + tier = 3, }, - maintainers = { "@ObserverOfTime" }, - readme_name = "PyPA manifest", -} -list.python = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-python", - files = { "src/parser.c", "src/scanner.c" }, + pymanifest = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-pymanifest', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + readme_name = 'PyPA manifest', + tier = 2, }, - maintainers = { "@stsewd", "@theHamsta" }, -} -list.ql = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-ql", - files = { "src/parser.c" }, + python = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-python', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@stsewd', '@theHamsta' }, }, - maintainers = { "@pwntester" }, -} -list.qmldir = { - install_info = { - url = "https://github.com/Decodetalkers/tree-sitter-qmldir", - files = { "src/parser.c" }, + ql = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-ql', + files = { 'src/parser.c' }, + }, + maintainers = { '@pwntester' }, }, - maintainers = { "@amaanq" }, -} -list.qmljs = { - install_info = { - url = "https://github.com/yuja/tree-sitter-qmljs", - files = { "src/parser.c", "src/scanner.c" }, + qmldir = { + install_info = { + url = 'https://github.com/Decodetalkers/tree-sitter-qmldir', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - filetype = "qml", - maintainers = { "@Decodetalkers" }, -} -list.query = { - install_info = { - url = "https://github.com/nvim-treesitter/tree-sitter-query", - files = { "src/parser.c" }, + qmljs = { + install_info = { + url = 'https://github.com/yuja/tree-sitter-qmljs', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Decodetalkers' }, }, - maintainers = { "@steelsojka" }, - readme_name = "Tree-Sitter query language", -} -list.r = { - install_info = { - url = "https://github.com/r-lib/tree-sitter-r", - files = { "src/parser.c", "src/scanner.c" }, + query = { + install_info = { + url = 'https://github.com/nvim-treesitter/tree-sitter-query', + files = { 'src/parser.c' }, + }, + maintainers = { '@steelsojka' }, + readme_note = 'Tree-sitter query language', + tier = 1, }, - maintainers = { "@ribru17" }, -} -list.racket = { - install_info = { - url = "https://github.com/6cdh/tree-sitter-racket", - files = { "src/parser.c", "src/scanner.c" }, + r = { + install_info = { + url = 'https://github.com/r-lib/tree-sitter-r', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ribru17' }, + tier = 3, }, -} -list.ralph = { - install_info = { - url = "https://github.com/alephium/tree-sitter-ralph", - files = { "src/parser.c" }, + racket = { + install_info = { + url = 'https://github.com/6cdh/tree-sitter-racket', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + tier = 4, }, - maintainers = { "@tdroxler" }, -} -list.rasi = { - install_info = { - url = "https://github.com/Fymyte/tree-sitter-rasi", - files = { "src/parser.c" }, + ralph = { + install_info = { + url = 'https://github.com/alephium/tree-sitter-ralph', + files = { 'src/parser.c' }, + }, + maintainers = { '@tdroxler' }, + tier = 3, }, - maintainers = { "@Fymyte" }, -} -list.razor = { - install_info = { - url = "https://github.com/tris203/tree-sitter-razor", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + rasi = { + install_info = { + url = 'https://github.com/Fymyte/tree-sitter-rasi', + files = { 'src/parser.c' }, + }, + maintainers = { '@Fymyte' }, }, - maintainers = { "@tris203" }, -} -list.rbs = { - install_info = { - url = "https://github.com/joker1007/tree-sitter-rbs", - files = { "src/parser.c" }, + razor = { + install_info = { + url = 'https://github.com/tris203/tree-sitter-razor', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@tris203' }, + tier = 3, }, - maintainers = { "@joker1007" }, -} -list.re2c = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-re2c", - files = { "src/parser.c" }, + rbs = { + install_info = { + url = 'https://github.com/joker1007/tree-sitter-rbs', + files = { 'src/parser.c' }, + }, + maintainers = { '@joker1007' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.readline = { - install_info = { - url = "https://github.com/ribru17/tree-sitter-readline", - files = { "src/parser.c" }, + re2c = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-re2c', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@ribru17" }, -} -list.regex = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-regex", - files = { "src/parser.c" }, + readline = { + install_info = { + url = 'https://github.com/ribru17/tree-sitter-readline', + files = { 'src/parser.c' }, + }, + maintainers = { '@ribru17' }, + tier = 3, }, - maintainers = { "@theHamsta" }, -} -list.rego = { - install_info = { - url = "https://github.com/FallenAngel97/tree-sitter-rego", - files = { "src/parser.c" }, + regex = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-regex', + files = { 'src/parser.c' }, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@FallenAngel97" }, -} -list.requirements = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-requirements", - files = { "src/parser.c" }, + rego = { + install_info = { + url = 'https://github.com/FallenAngel97/tree-sitter-rego', + files = { 'src/parser.c' }, + }, + maintainers = { '@FallenAngel97' }, }, - maintainers = { "@ObserverOfTime" }, - readme_name = "pip requirements", -} -list.rescript = { - install_info = { - url = "https://github.com/rescript-lang/tree-sitter-rescript", - files = { "src/parser.c", "src/scanner.c" }, + requirements = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-requirements', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + readme_name = 'pip requirements', + tier = 2, }, - maintainers = { "@ribru17" }, -} -list.rnoweb = { - install_info = { - url = "https://github.com/bamonroe/tree-sitter-rnoweb", - files = { "src/parser.c", "src/scanner.c" }, + rescript = { + install_info = { + url = 'https://github.com/rescript-lang/tree-sitter-rescript', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ribru17' }, + tier = 2, }, - maintainers = { "@bamonroe" }, -} -list.robot = { - install_info = { - url = "https://github.com/Hubro/tree-sitter-robot", - files = { "src/parser.c" }, + rnoweb = { + install_info = { + url = 'https://github.com/bamonroe/tree-sitter-rnoweb', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@bamonroe' }, }, - maintainers = { "@Hubro" }, -} -list.robots = { - install_info = { - url = "https://github.com/opa-oz/tree-sitter-robots-txt", - files = { "src/parser.c", "src/scanner.c" }, + robot = { + install_info = { + url = 'https://github.com/Hubro/tree-sitter-robot', + files = { 'src/parser.c' }, + }, + maintainers = { '@Hubro' }, + tier = 3, }, - maintainers = { "@opa-oz" }, -} -list.roc = { - install_info = { - url = "https://github.com/faldor20/tree-sitter-roc", - files = { "src/parser.c", "src/scanner.c" }, + robots = { + install_info = { + url = 'https://github.com/opa-oz/tree-sitter-robots-txt', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@opa-oz' }, + tier = 3, }, - maintainers = { "@nat-418" }, -} -list.ron = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-ron", - files = { "src/parser.c", "src/scanner.c" }, + roc = { + install_info = { + url = 'https://github.com/faldor20/tree-sitter-roc', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@nat-418' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.rst = { - install_info = { - url = "https://github.com/stsewd/tree-sitter-rst", - files = { "src/parser.c", "src/scanner.c" }, + ron = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-ron', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@stsewd" }, -} -list.ruby = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-ruby", - files = { "src/parser.c", "src/scanner.c" }, + rst = { + install_info = { + url = 'https://github.com/stsewd/tree-sitter-rst', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@stsewd' }, }, - maintainers = { "@TravonteD" }, -} -list.runescript = { - install_info = { - url = "https://github.com/2004Scape/tree-sitter-runescript", - files = { "src/parser.c", "src/scanner.c" }, + ruby = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-ruby', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@TravonteD' }, }, - maintainers = { "@2004Scape" }, -} -list.rust = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-rust", - files = { "src/parser.c", "src/scanner.c" }, + runescript = { + install_info = { + url = 'https://github.com/2004Scape/tree-sitter-runescript', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@2004Scape' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.scala = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-scala", - files = { "src/parser.c", "src/scanner.c" }, + rust = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-rust', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@stevanmilic" }, -} -list.scfg = { - install_info = { - url = "https://github.com/rockorager/tree-sitter-scfg", - files = { "src/parser.c" }, - requires_generate_from_grammar = true, + scala = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-scala', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@stevanmilic' }, }, - maintainers = { "@WhyNotHugo" }, -} -list.scheme = { - install_info = { - url = "https://github.com/6cdh/tree-sitter-scheme", - files = { "src/parser.c" }, + scfg = { + install_info = { + url = 'https://github.com/rockorager/tree-sitter-scfg', + files = { 'src/parser.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@WhyNotHugo' }, + tier = 3, }, -} -list.scss = { - install_info = { - url = "https://github.com/serenadeai/tree-sitter-scss", - files = { "src/parser.c", "src/scanner.c" }, + scheme = { + install_info = { + url = 'https://github.com/6cdh/tree-sitter-scheme', + files = { 'src/parser.c' }, + }, + tier = 4, }, - maintainers = { "@elianiva" }, -} -list.sflog = { - install_info = { - url = "https://github.com/aheber/tree-sitter-sfapex", - files = { "src/parser.c" }, - location = "sflog", + scss = { + install_info = { + url = 'https://github.com/serenadeai/tree-sitter-scss', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@elianiva' }, }, - maintainers = { "@aheber", "@xixiaofinland" }, -} -list.slang = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-slang", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + sflog = { + install_info = { + url = 'https://github.com/aheber/tree-sitter-sfapex', + files = { 'src/parser.c' }, + location = 'sflog', + }, + maintainers = { '@aheber', '@xixiaofinland' }, + readme_note = 'Salesforce debug log', + tier = 3, }, - filetype = "shaderslang", - maintainers = { "@theHamsta" }, - experimental = true, -} - -list.slim = { - install_info = { - url = "https://github.com/theoo/tree-sitter-slim", - files = { "src/parser.c", "src/scanner.c" }, + slang = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-slang', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + readme_note = 'Shader Slang', + maintainers = { '@theHamsta' }, + tier = 4, }, - maintainers = { "@theoo" }, -} -list.slint = { - install_info = { - url = "https://github.com/slint-ui/tree-sitter-slint", - files = { "src/parser.c" }, + slim = { + install_info = { + url = 'https://github.com/theoo/tree-sitter-slim', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@theoo' }, + tier = 3, }, - maintainers = { "@hunger" }, -} -list.smali = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-smali", - files = { "src/parser.c", "src/scanner.c" }, + slint = { + install_info = { + url = 'https://github.com/slint-ui/tree-sitter-slint', + files = { 'src/parser.c' }, + }, + maintainers = { '@hunger' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.snakemake = { - install_info = { - url = "https://github.com/osthomas/tree-sitter-snakemake", - files = { "src/parser.c", "src/scanner.c" }, + smali = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-smali', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 3, }, - maintainer = { "@osthomas" }, - experimental = true, -} -list.smithy = { - install_info = { - url = "https://github.com/indoorvivants/tree-sitter-smithy", - files = { "src/parser.c" }, + snakemake = { + install_info = { + url = 'https://github.com/osthomas/tree-sitter-snakemake', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainer = { '@osthomas' }, + tier = 4, }, - maintainers = { "@amaanq", "@keynmol" }, -} -list.solidity = { - install_info = { - url = "https://github.com/JoranHonig/tree-sitter-solidity", - files = { "src/parser.c" }, + smithy = { + install_info = { + url = 'https://github.com/indoorvivants/tree-sitter-smithy', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq', '@keynmol' }, }, - maintainers = { "@amaanq" }, -} -list.soql = { - install_info = { - url = "https://github.com/aheber/tree-sitter-sfapex", - files = { "src/parser.c" }, - location = "soql", + solidity = { + install_info = { + url = 'https://github.com/JoranHonig/tree-sitter-solidity', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@aheber", "@xixiaofinland" }, -} - -list.sosl = { - install_info = { - url = "https://github.com/aheber/tree-sitter-sfapex", - files = { "src/parser.c" }, - location = "sosl", + soql = { + install_info = { + url = 'https://github.com/aheber/tree-sitter-sfapex', + files = { 'src/parser.c' }, + location = 'soql', + }, + maintainers = { '@aheber', '@xixiafinland' }, + tier = 3, }, - maintainers = { "@aheber", "@xixiaofinland" }, -} -list.sourcepawn = { - install_info = { - url = "https://github.com/nilshelmig/tree-sitter-sourcepawn", - files = { "src/parser.c", "src/scanner.c" }, + sosl = { + install_info = { + url = 'https://github.com/aheber/tree-sitter-sfapex', + files = { 'src/parser.c' }, + location = 'sosl', + }, + maintainers = { '@aheber', '@xixiafinland' }, }, - maintainers = { "@Sarrus1" }, - tier = 3, -} -list.sparql = { - install_info = { - url = "https://github.com/GordianDziwis/tree-sitter-sparql", - files = { "src/parser.c" }, + sourcepawn = { + install_info = { + url = 'https://github.com/nilshelmig/tree-sitter-sourcepawn', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Sarrus1' }, + tier = 3, }, - maintainers = { "@GordianDziwis" }, -} -list.sql = { - install_info = { - url = "https://github.com/derekstride/tree-sitter-sql", - files = { "src/parser.c", "src/scanner.c" }, - branch = "gh-pages", + sparql = { + install_info = { + url = 'https://github.com/GordianDziwis/tree-sitter-sparql', + files = { 'src/parser.c' }, + }, + maintainers = { '@GordianDziwis' }, }, - maintainers = { "@derekstride" }, -} -list.squirrel = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-squirrel", - files = { "src/parser.c", "src/scanner.c" }, + sql = { + install_info = { + url = 'https://github.com/derekstride/tree-sitter-sql', + files = { 'src/parser.c', 'src/scanner.c' }, + branch = 'gh-pages', + }, + maintainers = { '@derekstride' }, }, - maintainers = { "@amaanq" }, -} -list.ssh_config = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-ssh-config", - files = { "src/parser.c" }, + squirrel = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-squirrel', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - filetype = "sshconfig", - maintainers = { "@ObserverOfTime" }, -} -list.starlark = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-starlark", - files = { "src/parser.c", "src/scanner.c" }, + ssh_config = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-ssh-config', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - filetype = "bzl", - maintainers = { "@amaanq" }, -} -list.strace = { - install_info = { - url = "https://github.com/sigmaSd/tree-sitter-strace", - files = { "src/parser.c" }, + starlark = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-starlark', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@amaanq" }, -} -list.styled = { - install_info = { - url = "https://github.com/mskelton/tree-sitter-styled", - files = { "src/parser.c", "src/scanner.c" }, + strace = { + install_info = { + url = 'https://github.com/sigmaSd/tree-sitter-strace', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@mskelton" }, -} -list.supercollider = { - install_info = { - url = "https://github.com/madskjeldgaard/tree-sitter-supercollider", - files = { "src/parser.c", "src/scanner.c" }, + styled = { + install_info = { + url = 'https://github.com/mskelton/tree-sitter-styled', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@mskelton' }, + tier = 3, }, - maintainers = { "@madskjeldgaard" }, -} -list.superhtml = { - install_info = { - url = "https://github.com/kristoff-it/superhtml", - files = { - "src/parser.c", - "src/scanner.c", + supercollider = { + install_info = { + url = 'https://github.com/madskjeldgaard/tree-sitter-supercollider', + files = { 'src/parser.c', 'src/scanner.c' }, }, - location = "tree-sitter-superhtml", + maintainers = { '@madskjeldgaard' }, }, - maintainers = { "@rockorager" }, -} -list.surface = { - install_info = { - url = "https://github.com/connorlay/tree-sitter-surface", - files = { "src/parser.c" }, + superhtml = { + install_info = { + url = 'https://github.com/kristoff-it/superhtml', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'tree-sitter-superhtml', + }, + maintainers = { '@rockorager' }, + tier = 3, }, - filetype = "sface", - maintainers = { "@connorlay" }, -} -list.svelte = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-svelte", - files = { "src/parser.c", "src/scanner.c" }, + surface = { + install_info = { + url = 'https://github.com/connorlay/tree-sitter-surface', + files = { 'src/parser.c' }, + }, + maintainers = { '@connorlay' }, }, - maintainers = { "@amaanq" }, -} -list.sway = { - install_info = { - url = "https://github.com/FuelLabs/tree-sitter-sway.git", - files = { "src/parser.c", "src/scanner.c" }, + svelte = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-svelte', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@ribru17" }, -} -list.swift = { - install_info = { - url = "https://github.com/alex-pinkus/tree-sitter-swift", - files = { "src/parser.c", "src/scanner.c" }, - requires_generate_from_grammar = true, + sway = { + install_info = { + url = 'https://github.com/FuelLabs/tree-sitter-sway.git', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ribru17' }, + tier = 2, }, - maintainers = { "@alex-pinkus" }, -} -list.sxhkdrc = { - install_info = { - url = "https://github.com/RaafatTurki/tree-sitter-sxhkdrc", - files = { "src/parser.c" }, + swift = { + install_info = { + url = 'https://github.com/alex-pinkus/tree-sitter-swift', + files = { 'src/parser.c', 'src/scanner.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@alex-pinkus' }, }, - maintainers = { "@RaafatTurki" }, -} -list.systemtap = { - install_info = { - url = "https://github.com/ok-ryoko/tree-sitter-systemtap", - files = { "src/parser.c" }, + sxhkdrc = { + install_info = { + url = 'https://github.com/RaafatTurki/tree-sitter-sxhkdrc', + files = { 'src/parser.c' }, + }, + maintainers = { '@RaafatTurki' }, }, - maintainers = { "@ok-ryoko" }, -} -list.t32 = { - install_info = { - url = "https://gitlab.com/xasc/tree-sitter-t32.git", - files = { "src/parser.c", "src/scanner.c" }, + systemtap = { + install_info = { + url = 'https://github.com/ok-ryoko/tree-sitter-systemtap', + files = { 'src/parser.c' }, + }, + maintainers = { '@ok-ryoko' }, + tier = 3, }, - filetype = "trace32", - maintainers = { "@xasc" }, -} -list.tablegen = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-tablegen", - files = { "src/parser.c", "src/scanner.c" }, + t32 = { + install_info = { + url = 'https://gitlab.com/xasc/tree-sitter-t32.git', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@xasc' }, + tier = 3, }, - maintainers = { "@amaanq" }, -} -list.tact = { - install_info = { - url = "https://github.com/tact-lang/tree-sitter-tact", - files = { "src/parser.c" }, + tablegen = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-tablegen', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@novusnota" }, -} -list.teal = { - install_info = { - url = "https://github.com/euclidianAce/tree-sitter-teal", - files = { "src/parser.c", "src/scanner.c" }, - requires_generate_from_grammar = true, + tact = { + install_info = { + url = 'https://github.com/tact-lang/tree-sitter-tact', + files = { 'src/parser.c' }, + }, + maintainers = { '@novusnota' }, + tier = 3, }, - maintainers = { "@euclidianAce" }, -} -list.tcl = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-tcl", - files = { "src/parser.c", "src/scanner.c" }, + teal = { + install_info = { + url = 'https://github.com/euclidianAce/tree-sitter-teal', + files = { 'src/parser.c', 'src/scanner.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@euclidianAce' }, }, - maintainers = { "@lewis6991" }, -} -list.tera = { - install_info = { - url = "https://github.com/uncenter/tree-sitter-tera", - files = { "src/parser.c", "src/scanner.c" }, + templ = { + install_info = { + url = 'https://github.com/vrischmann/tree-sitter-templ', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@vrischmann' }, + tier = 3, }, - maintainers = { "@uncenter" }, -} -list.terraform = { - install_info = { - url = "https://github.com/MichaHoffmann/tree-sitter-hcl", - files = { "src/parser.c", "src/scanner.c" }, - location = "dialects/terraform", + tcl = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-tcl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@lewis6991' }, + tier = 2, }, - maintainers = { "@MichaHoffmann" }, -} -list.textproto = { - install_info = { - url = "https://github.com/PorterAtGoogle/tree-sitter-textproto", - files = { "src/parser.c" }, + tera = { + install_info = { + url = 'https://github.com/uncenter/tree-sitter-tera', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@uncenter' }, + tier = 2, }, - filetype = "pbtxt", - maintainers = { "@Porter" }, -} -list.thrift = { - install_info = { - url = "https://github.com/duskmoon314/tree-sitter-thrift", - files = { "src/parser.c" }, + terraform = { + install_info = { + url = 'https://github.com/MichaHoffmann/tree-sitter-hcl', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'dialects/terraform', + }, + maintainers = { '@MichaHoffmann' }, }, - maintainers = { "@amaanq", "@duskmoon314" }, -} -list.tiger = { - install_info = { - url = "https://github.com/ambroisie/tree-sitter-tiger", - files = { "src/parser.c", "src/scanner.c" }, + textproto = { + install_info = { + url = 'https://github.com/PorterAtGoogle/tree-sitter-textproto', + files = { 'src/parser.c' }, + }, + maintainers = { '@Porter' }, + tier = 3, }, - maintainers = { "@ambroisie" }, -} -list.tlaplus = { - install_info = { - url = "https://github.com/tlaplus-community/tree-sitter-tlaplus", - files = { "src/parser.c", "src/scanner.c" }, + thrift = { + install_info = { + url = 'https://github.com/duskmoon314/tree-sitter-thrift', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq', '@duskmoon314' }, }, - filetype = "tla", - maintainers = { "@ahelwer", "@susliko" }, -} -list.tmux = { - install_info = { - url = "https://github.com/Freed-Wu/tree-sitter-tmux", - files = { "src/parser.c" }, + tiger = { + install_info = { + url = 'https://github.com/ambroisie/tree-sitter-tiger', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ambroisie' }, }, - maintainers = { "@Freed-Wu" }, -} -list.todotxt = { - install_info = { - url = "https://github.com/arnarg/tree-sitter-todotxt", - files = { "src/parser.c" }, + tlaplus = { + install_info = { + url = 'https://github.com/tlaplus-community/tree-sitter-tlaplus', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@ahelwer', '@susliko' }, }, - maintainers = { "@arnarg" }, - experimental = true, -} -list.toml = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-toml", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + tmux = { + install_info = { + url = 'https://github.com/Freed-Wu/tree-sitter-tmux', + files = { 'src/parser.c' }, + }, + maintainers = { '@Freed-Wu' }, + tier = 3, }, - maintainers = { "@tk-shirasaka" }, -} -list.tsv = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-csv", - files = { "src/parser.c" }, - location = "tsv", + todotxt = { + install_info = { + url = 'https://github.com/arnarg/tree-sitter-todotxt', + files = { 'src/parser.c' }, + }, + maintainers = { '@arnarg' }, + tier = 4, }, - maintainers = { "@amaanq" }, -} -list.tsx = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-typescript", - files = { "src/parser.c", "src/scanner.c" }, - location = "tsx", - generate_requires_npm = true, + toml = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-toml', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@tk-shirasaka' }, }, - filetype = "typescriptreact", - maintainers = { "@steelsojka" }, -} -list.turtle = { - install_info = { - url = "https://github.com/GordianDziwis/tree-sitter-turtle", - files = { "src/parser.c" }, + tsv = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-csv', + files = { 'src/parser.c' }, + location = 'tsv', + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@GordianDziwis" }, -} -list.twig = { - install_info = { - url = "https://github.com/gbprod/tree-sitter-twig", - files = { "src/parser.c" }, + tsx = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-typescript', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'tsx', + generate_requires_npm = true, + }, + maintainers = { '@steelsojka' }, }, - maintainers = { "@gbprod" }, -} -list.typescript = { - install_info = { - url = "https://github.com/tree-sitter/tree-sitter-typescript", - files = { "src/parser.c", "src/scanner.c" }, - location = "typescript", - generate_requires_npm = true, + turtle = { + install_info = { + url = 'https://github.com/GordianDziwis/tree-sitter-turtle', + files = { 'src/parser.c' }, + }, + maintainers = { '@GordianDziwis' }, }, - maintainers = { "@steelsojka" }, -} -list.typespec = { - install_info = { - url = "https://github.com/happenslol/tree-sitter-typespec", - files = { "src/parser.c" }, + twig = { + install_info = { + url = 'https://github.com/gbprod/tree-sitter-twig', + files = { 'src/parser.c' }, + }, + maintainers = { '@gbprod' }, }, - maintainers = { "@happenslol" }, -} -list.typoscript = { - install_info = { - url = "https://github.com/Teddytrombone/tree-sitter-typoscript", - files = { "src/parser.c" }, + typescript = { + install_info = { + url = 'https://github.com/tree-sitter/tree-sitter-typescript', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'typescript', + generate_requires_npm = true, + }, + maintainers = { '@steelsojka' }, }, - maintainers = { "@Teddytrombone" }, -} -list.typst = { - install_info = { - url = "https://github.com/uben0/tree-sitter-typst", - files = { "src/parser.c", "src/scanner.c" }, + typespec = { + install_info = { + url = 'https://github.com/happenslol/tree-sitter-typespec', + files = { 'src/parser.c' }, + }, + maintainers = { '@happenslol' }, + tier = 3, }, - maintainers = { "@uben0", "@RaafatTurki" }, -} -list.udev = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-udev", - files = { "src/parser.c" }, + typoscript = { + install_info = { + url = 'https://github.com/Teddytrombone/tree-sitter-typoscript', + files = { 'src/parser.c' }, + }, + maintainers = { '@Teddytrombone' }, + tier = 3, }, - filetype = "udevrules", - maintainers = { "@ObserverOfTime" }, -} -list.ungrammar = { - install_info = { - url = "https://github.com/Philipp-M/tree-sitter-ungrammar", - files = { "src/parser.c" }, + typst = { + install_info = { + url = 'https://github.com/uben0/tree-sitter-typst', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@uben0', '@RaafatTurki' }, + tier = 3, }, - maintainers = { "@Philipp-M", "@amaanq" }, -} -list.unison = { - install_info = { - url = "https://github.com/kylegoetz/tree-sitter-unison", - files = { "src/parser.c", "src/scanner.c" }, - requires_generate_from_grammar = true, + udev = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-udev', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@tapegram" }, -} -list.usd = { - install_info = { - url = "https://github.com/ColinKennedy/tree-sitter-usd", - files = { "src/parser.c" }, + ungrammar = { + install_info = { + url = 'https://github.com/Philipp-M/tree-sitter-ungrammar', + files = { 'src/parser.c' }, + }, + maintainers = { '@Philipp-M', '@amaanq' }, }, - maintainers = { "@ColinKennedy" }, -} -list.uxntal = { - install_info = { - url = "https://github.com/amaanq/tree-sitter-uxntal", - files = { "src/parser.c", "src/scanner.c" }, + unison = { + install_info = { + url = 'https://github.com/kylegoetz/tree-sitter-unison', + files = { 'src/parser.c', 'src/scanner.c' }, + requires_generate_from_grammar = true, + }, + maintainers = { '@tapegram' }, + tier = 4, }, - filetype = "tal", - maintainers = { "@amaanq" }, - readme_name = "uxn tal", -} -list.v = { - install_info = { - url = "https://github.com/vlang/v-analyzer", - files = { "src/parser.c" }, - location = "tree_sitter_v", + usd = { + install_info = { + url = 'https://github.com/ColinKennedy/tree-sitter-usd', + files = { 'src/parser.c' }, + }, + maintainers = { '@ColinKennedy' }, }, - filetype = "vlang", - maintainers = { "@kkharji", "@amaanq" }, -} -list.vala = { - install_info = { - url = "https://github.com/vala-lang/tree-sitter-vala", - files = { "src/parser.c" }, + uxntal = { + install_info = { + url = 'https://github.com/amaanq/tree-sitter-uxntal', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, }, - maintainers = { "@Prince781" }, -} -list.vento = { - install_info = { - url = "https://github.com/ventojs/tree-sitter-vento", - files = { "src/parser.c", "src/scanner.c" }, + v = { + install_info = { + url = 'https://github.com/vlang/v-analyzer', + files = { 'src/parser.c' }, + location = 'tree_sitter_v', + }, + maintainers = { '@kkharji', '@amaanq' }, }, - filetype = "vto", - maintainers = { "@wrapperup", "@oscarotero" }, -} -list.verilog = { - install_info = { - url = "https://github.com/gmlarumbe/tree-sitter-systemverilog", - files = { "src/parser.c" }, + vala = { + install_info = { + url = 'https://github.com/vala-lang/tree-sitter-vala', + files = { 'src/parser.c' }, + }, + maintainers = { '@Prince781' }, }, - maintainers = { "@zhangwwpeng" }, -} -list.vhdl = { - install_info = { - url = "https://github.com/jpt13653903/tree-sitter-vhdl", - files = { "src/parser.c", "src/scanner.c" }, + vento = { + install_info = { + url = 'https://github.com/ventojs/tree-sitter-vento', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@wrapperup', '@oscarotero' }, + tier = 3, }, - maintainers = { "@jpt13653903" }, -} -list.vhs = { - install_info = { - url = "https://github.com/charmbracelet/tree-sitter-vhs", - files = { "src/parser.c" }, + verilog = { + install_info = { + url = 'https://github.com/gmlarumbe/tree-sitter-systemverilog', + files = { 'src/parser.c' }, + }, + maintainers = { '@zhangwwpeng' }, }, - filetype = "tape", - maintainers = { "@caarlos0" }, -} -list.vim = { - install_info = { - url = "https://github.com/neovim/tree-sitter-vim", - files = { "src/parser.c", "src/scanner.c" }, + vhdl = { + install_info = { + url = 'https://github.com/jpt13653903/tree-sitter-vhdl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@jpt13653903' }, + tier = 3, }, - maintainers = { "@clason" }, -} -list.vimdoc = { - install_info = { - url = "https://github.com/neovim/tree-sitter-vimdoc", - files = { "src/parser.c" }, + vhs = { + install_info = { + url = 'https://github.com/charmbracelet/tree-sitter-vhs', + files = { 'src/parser.c' }, + }, + maintainers = { '@caarlos0' }, }, - filetype = "help", - maintainers = { "@clason" }, -} -list.vrl = { - install_info = { - url = "https://github.com/belltoy/tree-sitter-vrl", - files = { "src/parser.c" }, + vim = { + install_info = { + url = 'https://github.com/neovim/tree-sitter-vim', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@clason' }, + tier = 1, }, - maintainers = { "@belltoy" }, -} -list.vue = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-vue", - files = { "src/parser.c", "src/scanner.c" }, - branch = "main", + vimdoc = { + install_info = { + url = 'https://github.com/neovim/tree-sitter-vimdoc', + files = { 'src/parser.c' }, + }, + maintainers = { '@clason' }, + tier = 1, }, - maintainers = { "@WhyNotHugo", "@lucario387" }, -} -list.wgsl = { - install_info = { - url = "https://github.com/szebniok/tree-sitter-wgsl", - files = { "src/parser.c", "src/scanner.c" }, + vrl = { + install_info = { + url = 'https://github.com/belltoy/tree-sitter-vrl', + files = { 'src/parser.c' }, + }, + maintainers = { '@belltoy' }, + tier = 3, }, - maintainers = { "@szebniok" }, -} -list.wgsl_bevy = { - install_info = { - url = "https://github.com/theHamsta/tree-sitter-wgsl-bevy", - files = { "src/parser.c", "src/scanner.c" }, - generate_requires_npm = true, + vue = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-vue', + files = { 'src/parser.c', 'src/scanner.c' }, + branch = 'main', + }, + maintainers = { '@WhyNotHugo', '@lucario387' }, + tier = 2, }, - maintainers = { "@theHamsta" }, -} -list.wing = { - install_info = { - url = "https://github.com/winglang/tree-sitter-wing", - files = { "src/parser.c", "src/scanner.c" }, + wing = { + install_info = { + url = 'https://github.com/winglang/tree-sitter-wing', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@gshpychka', '@MarkMcCulloh' }, + tier = 3, }, - maintainers = { "@gshpychka", "@MarkMcCulloh" }, -} -list.wit = { - install_info = { - url = "https://github.com/liamwh/tree-sitter-wit", - files = { "src/parser.c" }, + wgsl = { + install_info = { + url = 'https://github.com/szebniok/tree-sitter-wgsl', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@szebniok' }, }, - maintainers = { "@liamwh" }, -} -list.xcompose = { - install_info = { - url = "https://github.com/ObserverOfTime/tree-sitter-xcompose", - files = { "src/parser.c" }, + wgsl_bevy = { + install_info = { + url = 'https://github.com/theHamsta/tree-sitter-wgsl-bevy', + files = { 'src/parser.c', 'src/scanner.c' }, + generate_requires_npm = true, + }, + maintainers = { '@theHamsta' }, }, - maintainers = { "@ObserverOfTime" }, -} -list.xml = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-xml", - files = { "src/parser.c", "src/scanner.c" }, - location = "xml", + wit = { + install_info = { + url = 'https://github.com/liamwh/tree-sitter-wit', + files = { 'src/parser.c' }, + }, + maintainers = { '@liamwh' }, + tier = 3, }, - maintainers = { "@ObserverOfTime" }, -} - -list.xresources = { - install_info = { - url = "https://github.com/ValdezFOmar/tree-sitter-xresources", - files = { "src/parser.c" }, + xcompose = { + install_info = { + url = 'https://github.com/ObserverOfTime/tree-sitter-xcompose', + files = { 'src/parser.c' }, + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - filetype = "xdefaults", - maintainers = { "@ValdezFOmar" }, -} -list.yaml = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-yaml", - files = { "src/parser.c", "src/scanner.c" }, + xml = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', + files = { 'src/parser.c', 'src/scanner.c' }, + location = 'xml', + }, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - maintainers = { "@amaanq" }, -} -list.yang = { - install_info = { - url = "https://github.com/Hubro/tree-sitter-yang", - files = { "src/parser.c" }, + xresources = { + install_info = { + url = 'https://github.com/ValdezFOmar/tree-sitter-xresources', + files = { 'src/parser.c' }, + }, + filetype = 'xdefaults', + maintainers = { '@ValdezFOmar' }, + tier = 3, }, - maintainers = { "@Hubro" }, -} -list.yuck = { - install_info = { - url = "https://github.com/Philipp-M/tree-sitter-yuck", - files = { "src/parser.c", "src/scanner.c" }, + yaml = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-yaml', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@amaanq' }, + tier = 2, }, - maintainers = { "@Philipp-M", "@amaanq" }, -} -list.zathurarc = { - install_info = { - url = "https://github.com/Freed-Wu/tree-sitter-zathurarc", - files = { "src/parser.c" }, + yang = { + install_info = { + url = 'https://github.com/Hubro/tree-sitter-yang', + files = { 'src/parser.c' }, + }, + maintainers = { '@Hubro' }, }, - maintainers = { "@Freed-Wu" }, -} -list.zig = { - install_info = { - url = "https://github.com/tree-sitter-grammars/tree-sitter-zig", - files = { "src/parser.c" }, + yuck = { + install_info = { + url = 'https://github.com/Philipp-M/tree-sitter-yuck', + files = { 'src/parser.c', 'src/scanner.c' }, + }, + maintainers = { '@Philipp-M', '@amaanq' }, }, - maintainers = { "@amaanq" }, -} -list.ziggy = { - install_info = { - url = "https://github.com/kristoff-it/ziggy", - files = { "src/parser.c" }, - location = "tree-sitter-ziggy", + zathurarc = { + install_info = { + url = 'https://github.com/Freed-Wu/tree-sitter-zathurarc', + files = { 'src/parser.c' }, + }, + maintainers = { '@Freed-Wu' }, + tier = 3, }, - maintainers = { "@rockorager" }, -} -list.ziggy_schema = { - install_info = { - url = "https://github.com/kristoff-it/ziggy", - files = { "src/parser.c" }, - location = "tree-sitter-ziggy-schema", + zig = { + install_info = { + url = 'https://github.com/tree-sitter-grammars/tree-sitter-zig', + files = { 'src/parser.c' }, + }, + maintainers = { '@amaanq' }, + tier = 1, }, - maintainers = { "@rockorager" }, -} -list.templ = { - install_info = { - url = "https://github.com/vrischmann/tree-sitter-templ", - files = { "src/parser.c", "src/scanner.c" }, + ziggy = { + install_info = { + url = 'https://github.com/kristoff-it/ziggy', + files = { 'src/parser.c' }, + location = 'tree-sitter-ziggy', + }, + maintainers = { '@rockorager' }, + tier = 3, }, - maintainers = { "@vrischmann" }, -} -local M = { - list = list, + ziggy_schema = { + install_info = { + url = 'https://github.com/kristoff-it/ziggy', + files = { 'src/parser.c' }, + location = 'tree-sitter-ziggy-schema', + }, + maintainers = { '@rockorager' }, + tier = 3, + }, } -function M.ft_to_lang(ft) - local result = ts.language.get_lang(ft) - if result then - return result - else - ft = vim.split(ft, ".", { plain = true })[1] - return ts.language.get_lang(ft) or ft - end -end - -- Get a list of all available parsers +---@param tier integer? only get parsers of specified tier ---@return string[] -function M.available_parsers() - local parsers = vim.tbl_keys(M.list) +function M.get_available(tier) + local parsers = vim.tbl_keys(M.configs) table.sort(parsers) - if vim.fn.executable "tree-sitter" == 1 and vim.fn.executable "node" == 1 then - return parsers - else - return vim.tbl_filter(function(p) ---@param p string - return not M.list[p].install_info.requires_generate_from_grammar + if tier then + parsers = vim.iter.filter(function(p) + return M.configs[p].tier == tier end, parsers) end -end - -function M.get_parser_configs() - return M.list -end - -local parser_files - -function M.reset_cache() - parser_files = setmetatable({}, { - __index = function(tbl, key) - rawset(tbl, key, api.nvim_get_runtime_file("parser/" .. key .. ".*", false)) - return rawget(tbl, key) - end, - }) -end - -M.reset_cache() - -function M.has_parser(lang) - lang = lang or M.get_buf_lang(api.nvim_get_current_buf()) - - if not lang or #lang == 0 then - return false - end - -- HACK: nvim internal API - if vim._ts_has_language(lang) then - return true - end - return #parser_files[lang] > 0 -end - -function M.get_parser(bufnr, lang) - bufnr = bufnr or api.nvim_get_current_buf() - lang = lang or M.get_buf_lang(bufnr) - - if M.has_parser(lang) then - return ts.get_parser(bufnr, lang) + if vim.fn.executable('tree-sitter') == 0 or vim.fn.executable('node') == 0 then + parsers = vim.iter.filter(function(p) + return not M.configs[p].install_info.requires_generate_from_grammar + end, parsers) end -end - --- @deprecated This is only kept for legacy purposes. --- All root nodes should be accounted for. -function M.get_tree_root(bufnr) - bufnr = bufnr or api.nvim_get_current_buf() - return M.get_parser(bufnr):parse()[1]:root() -end - --- Gets the language of a given buffer ----@param bufnr number? or current buffer ----@return string -function M.get_buf_lang(bufnr) - bufnr = bufnr or api.nvim_get_current_buf() - return M.ft_to_lang(api.nvim_buf_get_option(bufnr, "ft")) + return parsers end return M diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index 4aba9f2fd..f7e5205f7 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -1,154 +1,7 @@ -local api = vim.api -local ts = require "nvim-treesitter.compat" -local tsrange = require "nvim-treesitter.tsrange" -local utils = require "nvim-treesitter.utils" -local parsers = require "nvim-treesitter.parsers" -local caching = require "nvim-treesitter.caching" - local M = {} local EMPTY_ITER = function() end -M.built_in_query_groups = { "highlights", "locals", "folds", "indents", "injections" } - --- Creates a function that checks whether a given query exists --- for a specific language. ----@param query string ----@return fun(string): boolean -local function get_query_guard(query) - return function(lang) - return M.has_query_files(lang, query) - end -end - -for _, query in ipairs(M.built_in_query_groups) do - M["has_" .. query] = get_query_guard(query) -end - ----@return string[] -function M.available_query_groups() - local query_files = api.nvim_get_runtime_file("queries/*/*.scm", true) - local groups = {} - for _, f in ipairs(query_files) do - groups[vim.fn.fnamemodify(f, ":t:r")] = true - end - local list = {} - for k, _ in pairs(groups) do - table.insert(list, k) - end - return list -end - -do - local query_cache = caching.create_buffer_cache() - - local function update_cached_matches(bufnr, changed_tick, query_group) - query_cache.set(query_group, bufnr, { - tick = changed_tick, - cache = M.collect_group_results(bufnr, query_group) or {}, - }) - end - - ---@param bufnr integer - ---@param query_group string - ---@return any - function M.get_matches(bufnr, query_group) - bufnr = bufnr or api.nvim_get_current_buf() - local cached_local = query_cache.get(query_group, bufnr) - if not cached_local or api.nvim_buf_get_changedtick(bufnr) > cached_local.tick then - update_cached_matches(bufnr, api.nvim_buf_get_changedtick(bufnr), query_group) - end - - return query_cache.get(query_group, bufnr).cache - end -end - ----@param lang string ----@param query_name string ----@return string[] -local function runtime_queries(lang, query_name) - return api.nvim_get_runtime_file(string.format("queries/%s/%s.scm", lang, query_name), true) or {} -end - ----@type table<string, table<string, boolean>> -local query_files_cache = {} - ----@param lang string ----@param query_name string ----@return boolean -function M.has_query_files(lang, query_name) - if not query_files_cache[lang] then - query_files_cache[lang] = {} - end - if query_files_cache[lang][query_name] == nil then - local files = runtime_queries(lang, query_name) - query_files_cache[lang][query_name] = files and #files > 0 - end - return query_files_cache[lang][query_name] -end - -do - local mt = {} - mt.__index = function(tbl, key) - if rawget(tbl, key) == nil then - rawset(tbl, key, {}) - end - return rawget(tbl, key) - end - - -- cache will auto set the table for each lang if it is nil - ---@type table<string, table<string, Query>> - local cache = setmetatable({}, mt) - - -- Same as `vim.treesitter.query` except will return cached values - ---@param lang string - ---@param query_name string - function M.get_query(lang, query_name) - if cache[lang][query_name] == nil then - cache[lang][query_name] = ts.get_query(lang, query_name) - end - - return cache[lang][query_name] - end - - -- Invalidates the query file cache. - -- - -- If lang and query_name is both present, will reload for only the lang and query_name. - -- If only lang is present, will reload all query_names for that lang - -- If none are present, will reload everything - ---@param lang? string - ---@param query_name? string - function M.invalidate_query_cache(lang, query_name) - if lang and query_name then - cache[lang][query_name] = nil - if query_files_cache[lang] then - query_files_cache[lang][query_name] = nil - end - elseif lang and not query_name then - query_files_cache[lang] = nil - for query_name0, _ in pairs(cache[lang]) do - M.invalidate_query_cache(lang, query_name0) - end - elseif not lang and not query_name then - query_files_cache = {} - for lang0, _ in pairs(cache) do - for query_name0, _ in pairs(cache[lang0]) do - M.invalidate_query_cache(lang0, query_name0) - end - end - else - error "Cannot have query_name by itself!" - end - end -end - --- This function is meant for an autocommand and not to be used. Only use if file is a query file. ----@param fname string -function M.invalidate_query_file(fname) - local fnamemodify = vim.fn.fnamemodify - M.invalidate_query_cache(fnamemodify(fname, ":p:h:t"), fnamemodify(fname, ":t:r")) -end - ---@class QueryInfo ---@field root TSNode ---@field source integer @@ -161,13 +14,13 @@ end ---@param root_lang string|nil ---@return Query|nil, QueryInfo|nil local function prepare_query(bufnr, query_name, root, root_lang) - local buf_lang = parsers.get_buf_lang(bufnr) - + local ft = vim.bo[bufnr].filetype + local buf_lang = vim.treesitter.language.get_lang(ft) or ft if not buf_lang then return end - local parser = parsers.get_parser(bufnr, buf_lang) + local parser = vim.treesitter.get_parser(bufnr, buf_lang) if not parser then return end @@ -198,7 +51,7 @@ local function prepare_query(bufnr, query_name, root, root_lang) return end - local query = M.get_query(root_lang, query_name) + local query = vim.treesitter.query.get(root_lang, query_name) if not query then return end @@ -241,7 +94,7 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) ---@return string[] local function split(to_split) local t = {} - for str in string.gmatch(to_split, "([^.]+)") do + for str in string.gmatch(to_split, '([^.]+)') do table.insert(t, str) end @@ -259,9 +112,9 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) for id, node in pairs(match) do local name = query.captures[id] -- name of the capture in the query if name ~= nil then - local path = split(name .. ".node") + local path = split(name .. '.node') M.insert_to_path(prepared_match, path, node) - local metadata_path = split(name .. ".metadata") + local metadata_path = split(name .. '.metadata') M.insert_to_path(prepared_match, metadata_path, metadata[id]) end end @@ -272,16 +125,9 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) if preds then for _, pred in pairs(preds) do -- functions - if pred[1] == "set!" and type(pred[2]) == "string" then + if pred[1] == 'set!' and type(pred[2]) == 'string' then M.insert_to_path(prepared_match, split(pred[2]), pred[3]) end - if pred[1] == "make-range!" and type(pred[2]) == "string" and #pred == 4 then - M.insert_to_path( - prepared_match, - split(pred[2] .. ".node"), - tsrange.TSRange.from_nodes(bufnr, match[pred[3]], match[pred[4]]) - ) - end end end @@ -291,103 +137,6 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) return iterator end --- Return all nodes corresponding to a specific capture path (like @definition.var, @reference.type) --- Works like M.get_references or M.get_scopes except you can choose the capture --- Can also be a nested capture like @definition.function to get all nodes defining a function. --- ----@param bufnr integer the buffer ----@param captures string|string[] ----@param query_group string the name of query group (highlights or injections for example) ----@param root TSNode|nil node from where to start the search ----@param lang string|nil the language from where to get the captures. ---- Root nodes can have several languages. ----@return table|nil -function M.get_capture_matches(bufnr, captures, query_group, root, lang) - if type(captures) == "string" then - captures = { captures } - end - local strip_captures = {} ---@type string[] - for i, capture in ipairs(captures) do - if capture:sub(1, 1) ~= "@" then - error 'Captures must start with "@"' - return - end - -- Remove leading "@". - strip_captures[i] = capture:sub(2) - end - - local matches = {} - for match in M.iter_group_results(bufnr, query_group, root, lang) do - for _, capture in ipairs(strip_captures) do - local insert = utils.get_at_path(match, capture) - if insert then - table.insert(matches, insert) - end - end - end - return matches -end - -function M.iter_captures(bufnr, query_name, root, lang) - local query, params = prepare_query(bufnr, query_name, root, lang) - if not query then - return EMPTY_ITER - end - assert(params) - - local iter = query:iter_captures(params.root, params.source, params.start, params.stop) - - local function wrapped_iter() - local id, node, metadata = iter() - if not id then - return - end - - local name = query.captures[id] - if string.sub(name, 1, 1) == "_" then - return wrapped_iter() - end - - return name, node, metadata - end - - return wrapped_iter -end - ----@param bufnr integer ----@param capture_string string ----@param query_group string ----@param filter_predicate fun(match: table): boolean ----@param scoring_function fun(match: table): number ----@param root TSNode ----@return table|unknown -function M.find_best_match(bufnr, capture_string, query_group, filter_predicate, scoring_function, root) - if string.sub(capture_string, 1, 1) == "@" then - --remove leading "@" - capture_string = string.sub(capture_string, 2) - end - - local best ---@type table|nil - local best_score ---@type number - - for maybe_match in M.iter_group_results(bufnr, query_group, root) do - local match = utils.get_at_path(maybe_match, capture_string) - - if match and filter_predicate(match) then - local current_score = scoring_function(match) - if not best then - best = match - best_score = current_score - end - if current_score > best_score then - best = match - best_score = current_score - end - end - end - return best -end - ---Iterates matches from a query file. ---@param bufnr integer the buffer ---@param query_group string the query file to use @@ -413,41 +162,4 @@ function M.collect_group_results(bufnr, query_group, root, lang) return matches end ----@alias CaptureResFn function(string, LanguageTree, LanguageTree): string, string - --- Same as get_capture_matches except this will recursively get matches for every language in the tree. ----@param bufnr integer The buffer ----@param capture_or_fn string|CaptureResFn The capture to get. If a function is provided then that ---- function will be used to resolve both the capture and query argument. ---- The function can return `nil` to ignore that tree. ----@param query_type string? The query to get the capture from. This is ignored if a function is provided ---- for the capture argument. ----@return table[] -function M.get_capture_matches_recursively(bufnr, capture_or_fn, query_type) - ---@type CaptureResFn - local type_fn - if type(capture_or_fn) == "function" then - type_fn = capture_or_fn - else - type_fn = function(_, _, _) - return capture_or_fn, query_type - end - end - local parser = parsers.get_parser(bufnr) - local matches = {} - - if parser then - parser:for_each_tree(function(tree, lang_tree) - local lang = lang_tree:lang() - local capture, type_ = type_fn(lang, tree, lang_tree) - - if capture then - vim.list_extend(matches, M.get_capture_matches(bufnr, capture, type_, tree:root(), lang) or {}) - end - end) - end - - return matches -end - return M diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua deleted file mode 100644 index 7539170dc..000000000 --- a/lua/nvim-treesitter/query_predicates.lua +++ /dev/null @@ -1,167 +0,0 @@ -local query = require "vim.treesitter.query" - -local html_script_type_languages = { - ["importmap"] = "json", - ["module"] = "javascript", - ["application/ecmascript"] = "javascript", - ["text/ecmascript"] = "javascript", -} - -local non_filetype_match_injection_language_aliases = { - ex = "elixir", - pl = "perl", - sh = "bash", - uxn = "uxntal", - ts = "typescript", -} - --- compatibility shim for breaking change on nightly/0.11 -local opts = vim.fn.has "nvim-0.10" == 1 and { force = true, all = false } or true - -local function get_parser_from_markdown_info_string(injection_alias) - local match = vim.filetype.match { filename = "a." .. injection_alias } - return match or non_filetype_match_injection_language_aliases[injection_alias] or injection_alias -end - -local function error(str) - vim.api.nvim_err_writeln(str) -end - -local function valid_args(name, pred, count, strict_count) - local arg_count = #pred - 1 - - if strict_count then - if arg_count ~= count then - error(string.format("%s must have exactly %d arguments", name, count)) - return false - end - elseif arg_count < count then - error(string.format("%s must have at least %d arguments", name, count)) - return false - end - - return true -end - ----@param match (TSNode|nil)[] ----@param _pattern string ----@param _bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_predicate("nth?", function(match, _pattern, _bufnr, pred) - if not valid_args("nth?", pred, 2, true) then - return - end - - local node = match[pred[2]] ---@type TSNode - local n = tonumber(pred[3]) - if node and node:parent() and node:parent():named_child_count() > n then - return node:parent():named_child(n) == node - end - - return false -end, opts) - ----@param match (TSNode|nil)[] ----@param _pattern string ----@param bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_predicate("is?", function(match, _pattern, bufnr, pred) - if not valid_args("is?", pred, 2) then - return - end - - -- Avoid circular dependencies - local locals = require "nvim-treesitter.locals" - local node = match[pred[2]] - local types = { unpack(pred, 3) } - - if not node then - return true - end - - local _, _, kind = locals.find_definition(node, bufnr) - - return vim.tbl_contains(types, kind) -end, opts) - ----@param match (TSNode|nil)[] ----@param _pattern string ----@param _bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_predicate("kind-eq?", function(match, _pattern, _bufnr, pred) - if not valid_args(pred[1], pred, 2) then - return - end - - local node = match[pred[2]] - local types = { unpack(pred, 3) } - - if not node then - return true - end - - return vim.tbl_contains(types, node:type()) -end, opts) - ----@param match (TSNode|nil)[] ----@param _ string ----@param bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_directive("set-lang-from-mimetype!", function(match, _, bufnr, pred, metadata) - local capture_id = pred[2] - local node = match[capture_id] - if not node then - return - end - local type_attr_value = vim.treesitter.get_node_text(node, bufnr) - local configured = html_script_type_languages[type_attr_value] - if configured then - metadata["injection.language"] = configured - else - local parts = vim.split(type_attr_value, "/", {}) - metadata["injection.language"] = parts[#parts] - end -end, opts) - ----@param match (TSNode|nil)[] ----@param _ string ----@param bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_directive("set-lang-from-info-string!", function(match, _, bufnr, pred, metadata) - local capture_id = pred[2] - local node = match[capture_id] - if not node then - return - end - local injection_alias = vim.treesitter.get_node_text(node, bufnr):lower() - metadata["injection.language"] = get_parser_from_markdown_info_string(injection_alias) -end, opts) - --- Just avoid some annoying warnings for this directive -query.add_directive("make-range!", function() end, opts) - ---- transform node text to lower case (e.g., to make @injection.language case insensitive) ---- ----@param match (TSNode|nil)[] ----@param _ string ----@param bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_directive("downcase!", function(match, _, bufnr, pred, metadata) - local id = pred[2] - local node = match[id] - if not node then - return - end - - local text = vim.treesitter.get_node_text(node, bufnr, { metadata = metadata[id] }) or "" - if not metadata[id] then - metadata[id] = {} - end - metadata[id].text = string.lower(text) -end, opts) diff --git a/lua/nvim-treesitter/shell_cmds.lua b/lua/nvim-treesitter/shell_cmds.lua new file mode 100644 index 000000000..2dc7f8748 --- /dev/null +++ b/lua/nvim-treesitter/shell_cmds.lua @@ -0,0 +1,255 @@ +local uv = vim.loop +local utils = require('nvim-treesitter.utils') + +local iswin = uv.os_uname().sysname == 'Windows_NT' + +local M = {} + +---@param executables string[] +---@return string|nil +function M.select_executable(executables) + return vim.tbl_filter(function(c) ---@param c string + return c ~= vim.NIL and vim.fn.executable(c) == 1 + end, executables)[1] +end + +-- Returns the compiler arguments based on the compiler and OS +---@param repo InstallInfo +---@param compiler string +---@return string[] +function M.select_compiler_args(repo, compiler) + if compiler:find('cl$') or compiler:find('cl.exe$') then + return { + '/Fe:', + 'parser.so', + '/Isrc', + repo.files, + '-Os', + '/utf-8', + '/LD', + } + elseif compiler:find('zig$') or compiler:find('zig.exe$') then + return { + 'c++', + '-o', + 'parser.so', + repo.files, + '-lc', + '-Isrc', + '-shared', + '-Os', + } + else + local args = { + '-o', + 'parser.so', + '-I./src', + repo.files, + '-Os', + } + if uv.os_uname().sysname == 'Darwin' then + table.insert(args, '-bundle') + else + table.insert(args, '-shared') + end + if + #vim.tbl_filter(function(file) ---@param file string + local ext = vim.fn.fnamemodify(file, ':e') + return ext == 'cc' or ext == 'cpp' or ext == 'cxx' + end, repo.files) > 0 + then + table.insert(args, '-lstdc++') + end + if not iswin then + table.insert(args, '-fPIC') + end + return args + end +end + +-- Returns the compile command based on the OS and user options +---@param repo InstallInfo +---@param cc string +---@param compile_location string +---@return Command +function M.select_compile_command(repo, cc, compile_location) + local make = M.select_executable({ 'gmake', 'make' }) + if cc:find('cl$') or cc:find('cl.exe$') or not repo.use_makefile or iswin or not make then + return { + cmd = cc, + info = 'Compiling...', + err = 'Error during compilation', + opts = { + args = vim.tbl_flatten(M.select_compiler_args(repo, cc)), + cwd = compile_location, + }, + } + else + return { + cmd = make, + info = 'Compiling...', + err = 'Error during compilation', + opts = { + args = { + '--makefile=' .. utils.get_package_path('scripts', 'compile_parsers.makefile'), + 'CC=' .. cc, + }, + cwd = compile_location, + }, + } + end +end + +---@param repo InstallInfo +---@param project_name string +---@param cache_dir string +---@param revision string|nil +---@param prefer_git boolean +---@return table +function M.select_download_commands(repo, project_name, cache_dir, revision, prefer_git) + local can_use_tar = vim.fn.executable('tar') == 1 and vim.fn.executable('curl') == 1 + local is_github = repo.url:find('github.com', 1, true) + local is_gitlab = repo.url:find('gitlab.com', 1, true) + local project_dir = utils.join_path(cache_dir, project_name) + + revision = revision or repo.branch or 'master' + + if can_use_tar and (is_github or is_gitlab) and not prefer_git then + local url = repo.url:gsub('.git$', '') + + local dir_rev = revision + if is_github and revision:find('^v%d') then + dir_rev = revision:sub(2) + end + + local temp_dir = project_dir .. '-tmp' + + return { + { + cmd = function() + vim.fn.delete(temp_dir, 'rf') + end, + }, + { + cmd = 'curl', + info = 'Downloading ' .. project_name .. '...', + err = 'Error during download, please verify your internet connection', + opts = { + args = { + '--silent', + '-L', -- follow redirects + is_github and url .. '/archive/' .. revision .. '.tar.gz' + or url + .. '/-/archive/' + .. revision + .. '/' + .. project_name + .. '-' + .. revision + .. '.tar.gz', + '--output', + project_name .. '.tar.gz', + }, + cwd = cache_dir, + }, + }, + { + cmd = function() + --TODO(clason): use vim.fn.mkdir(temp_dir, 'p') in case stdpath('cache') is not created + uv.fs_mkdir(temp_dir, 493) + end, + info = 'Creating temporary directory', + err = 'Could not create ' .. project_name .. '-tmp', + }, + { + cmd = 'tar', + info = 'Extracting ' .. project_name .. '...', + err = 'Error during tarball extraction.', + opts = { + args = { + '-xvzf', + project_name .. '.tar.gz', + '-C', + project_name .. '-tmp', + }, + cwd = cache_dir, + }, + }, + { + cmd = function() + uv.fs_unlink(project_dir .. '.tar.gz') + end, + }, + { + cmd = function() + uv.fs_rename( + utils.join_path(temp_dir, url:match('[^/]-$') .. '-' .. dir_rev), + project_dir + ) + end, + }, + { + cmd = function() + vim.fn.delete(temp_dir, 'rf') + end, + }, + } + else + local git_dir = project_dir + local clone_error = 'Error during download, please verify your internet connection' + + return { + { + cmd = 'git', + info = 'Downloading ' .. project_name .. '...', + err = clone_error, + opts = { + args = { + 'clone', + repo.url, + project_name, + }, + cwd = cache_dir, + }, + }, + { + cmd = 'git', + info = 'Checking out locked revision', + err = 'Error while checking out revision', + opts = { + args = { + 'checkout', + revision, + }, + cwd = git_dir, + }, + }, + } + end +end + +--TODO(clason): only needed for iter_cmd_sync -> replace with uv.spawn? + +-- Convert path for cmd.exe on Windows (needed when shellslash is set) +---@param p string +---@return string +local function cmdpath(p) + return vim.o.shellslash and p:gsub('/', '\\') or p +end + +---@param dir string +---@param command string +---@return string command +function M.make_directory_change_for_command(dir, command) + if iswin then + if string.find(vim.o.shell, 'cmd') ~= nil then + return string.format('pushd %s & %s & popd', cmdpath(dir), command) + else + return string.format('pushd %s ; %s ; popd', cmdpath(dir), command) + end + else + return string.format('cd %s;\n %s', dir, command) + end +end + +return M diff --git a/lua/nvim-treesitter/shell_command_selectors.lua b/lua/nvim-treesitter/shell_command_selectors.lua deleted file mode 100644 index ee1d64745..000000000 --- a/lua/nvim-treesitter/shell_command_selectors.lua +++ /dev/null @@ -1,368 +0,0 @@ -local fn = vim.fn -local utils = require "nvim-treesitter.utils" -local uv = vim.uv or vim.loop - --- Convert path for cmd.exe on Windows. --- This is needed when vim.opt.shellslash is in use. ----@param p string ----@return string -local function cmdpath(p) - if vim.opt.shellslash:get() then - local r = p:gsub("/", "\\") - return r - else - return p - end -end - -local M = {} - --- Returns the mkdir command based on the OS ----@param directory string ----@param cwd string ----@param info_msg string ----@return table -function M.select_mkdir_cmd(directory, cwd, info_msg) - if fn.has "win32" == 1 then - return { - cmd = "cmd", - opts = { - args = { "/C", "mkdir", cmdpath(directory) }, - cwd = cwd, - }, - info = info_msg, - err = "Could not create " .. directory, - } - else - return { - cmd = "mkdir", - opts = { - args = { directory }, - cwd = cwd, - }, - info = info_msg, - err = "Could not create " .. directory, - } - end -end - --- Returns the remove command based on the OS ----@param file string ----@param info_msg string ----@return table -function M.select_rm_file_cmd(file, info_msg) - if fn.has "win32" == 1 then - return { - cmd = "cmd", - opts = { - args = { "/C", "if", "exist", cmdpath(file), "del", cmdpath(file) }, - }, - info = info_msg, - err = "Could not delete " .. file, - } - else - return { - cmd = "rm", - opts = { - args = { file }, - }, - info = info_msg, - err = "Could not delete " .. file, - } - end -end - ----@param executables string[] ----@return string|nil -function M.select_executable(executables) - return vim.tbl_filter(function(c) ---@param c string - return c ~= vim.NIL and fn.executable(c) == 1 - end, executables)[1] -end - --- Returns the compiler arguments based on the compiler and OS ----@param repo InstallInfo ----@param compiler string ----@return string[] -function M.select_compiler_args(repo, compiler) - if string.match(compiler, "cl$") or string.match(compiler, "cl.exe$") then - return { - "/Fe:", - "parser.so", - "/Isrc", - repo.files, - "-Os", - "/std:c11", - "/utf-8", - "/LD", - } - elseif string.match(compiler, "zig$") or string.match(compiler, "zig.exe$") then - return { - "c++", - "-o", - "parser.so", - repo.files, - "-lc", - "-Isrc", - "-shared", - "-Os", - "-std=c11", - } - else - local args = { - "-o", - "parser.so", - "-I./src", - repo.files, - "-Os", - "-std=c11", - } - if fn.has "mac" == 1 then - table.insert(args, "-bundle") - else - table.insert(args, "-shared") - end - if - #vim.tbl_filter(function(file) ---@param file string - local ext = vim.fn.fnamemodify(file, ":e") - return ext == "cc" or ext == "cpp" or ext == "cxx" - end, repo.files) > 0 - then - table.insert(args, "-lstdc++") - end - if fn.has "win32" == 0 then - table.insert(args, "-fPIC") - end - return args - end -end - --- Returns the compile command based on the OS and user options ----@param repo InstallInfo ----@param cc string ----@param compile_location string ----@return Command -function M.select_compile_command(repo, cc, compile_location) - local make = M.select_executable { "gmake", "make" } - if - string.match(cc, "cl$") - or string.match(cc, "cl.exe$") - or not repo.use_makefile - or fn.has "win32" == 1 - or not make - then - return { - cmd = cc, - info = "Compiling...", - err = "Error during compilation", - opts = { - args = require("nvim-treesitter.compat").flatten(M.select_compiler_args(repo, cc)), - cwd = compile_location, - }, - } - else - return { - cmd = make, - info = "Compiling...", - err = "Error during compilation", - opts = { - args = { - "--makefile=" .. utils.join_path(utils.get_package_path(), "scripts", "compile_parsers.makefile"), - "CC=" .. cc, - "CXX_STANDARD=" .. (repo.cxx_standard or "c++14"), - }, - cwd = compile_location, - }, - } - end -end - --- Returns the remove command based on the OS ----@param cache_folder string ----@param project_name string ----@return Command -function M.select_install_rm_cmd(cache_folder, project_name) - if fn.has "win32" == 1 then - local dir = cache_folder .. "\\" .. project_name - return { - cmd = "cmd", - opts = { - args = { "/C", "if", "exist", cmdpath(dir), "rmdir", "/s", "/q", cmdpath(dir) }, - }, - } - else - return { - cmd = "rm", - opts = { - args = { "-rf", cache_folder .. "/" .. project_name }, - }, - } - end -end - --- Returns the move command based on the OS ----@param from string ----@param to string ----@param cwd string ----@return Command -function M.select_mv_cmd(from, to, cwd) - if fn.has "win32" == 1 then - return { - cmd = "cmd", - opts = { - args = { "/C", "move", "/Y", cmdpath(from), cmdpath(to) }, - cwd = cwd, - }, - } - else - return { - cmd = "mv", - opts = { - args = { "-f", from, to }, - cwd = cwd, - }, - } - end -end - ----@param repo InstallInfo ----@param project_name string ----@param cache_folder string ----@param revision string|nil ----@param prefer_git boolean ----@return table -function M.select_download_commands(repo, project_name, cache_folder, revision, prefer_git) - local can_use_tar = vim.fn.executable "tar" == 1 and vim.fn.executable "curl" == 1 - local is_github = repo.url:find("github.com", 1, true) - local is_gitlab = repo.url:find("gitlab.com", 1, true) - - revision = revision or repo.branch or "master" - - if can_use_tar and (is_github or is_gitlab) and not prefer_git then - local path_sep = utils.get_path_sep() - local url = repo.url:gsub(".git$", "") - - local folder_rev = revision - if is_github and revision:match "^v%d" then - folder_rev = revision:sub(2) - end - - return { - M.select_install_rm_cmd(cache_folder, project_name .. "-tmp"), - { - cmd = "curl", - info = "Downloading " .. project_name .. "...", - err = "Error during download, please verify your internet connection", - opts = { - args = { - "--silent", - "--show-error", - "-L", -- follow redirects - is_github and url .. "/archive/" .. revision .. ".tar.gz" - or url .. "/-/archive/" .. revision .. "/" .. project_name .. "-" .. revision .. ".tar.gz", - "--output", - project_name .. ".tar.gz", - }, - cwd = cache_folder, - }, - }, - M.select_mkdir_cmd(project_name .. "-tmp", cache_folder, "Creating temporary directory"), - { - cmd = "tar", - info = "Extracting " .. project_name .. "...", - err = "Error during tarball extraction.", - opts = { - args = { - "-xvzf", - project_name .. ".tar.gz", - "-C", - project_name .. "-tmp", - }, - cwd = cache_folder, - }, - }, - M.select_rm_file_cmd(cache_folder .. path_sep .. project_name .. ".tar.gz"), - M.select_mv_cmd( - utils.join_path(project_name .. "-tmp", url:match "[^/]-$" .. "-" .. folder_rev), - project_name, - cache_folder - ), - M.select_install_rm_cmd(cache_folder, project_name .. "-tmp"), - } - else - local git_folder = utils.join_path(cache_folder, project_name) - local clone_error = "Error during download, please verify your internet connection" - - -- Running `git clone` or `git checkout` while running under Git (such as - -- editing a `git commit` message) will likely fail to install parsers - -- (such as 'gitcommit') and can also corrupt the index file of the current - -- Git repository. Check for typical git environment variables and abort if found. - for _, k in pairs { - "GIT_ALTERNATE_OBJECT_DIRECTORIES", - "GIT_CEILING_DIRECTORIES", - "GIT_DIR", - "GIT_INDEX", - "GIT_INDEX_FILE", - "GIT_OBJECT_DIRECTORY", - "GIT_PREFIX", - "GIT_WORK_TREE", - } do - if uv.os_getenv(k) then - vim.api.nvim_err_writeln( - string.format( - "Cannot install %s with git in an active git session. Exit the session and run ':TSInstall %s' manually", - project_name, - project_name - ) - ) - return {} - end - end - - return { - { - cmd = "git", - info = "Downloading " .. project_name .. "...", - err = clone_error, - opts = { - args = { - "clone", - repo.url, - project_name, - "--filter=blob:none", - }, - cwd = cache_folder, - }, - }, - { - cmd = "git", - info = "Checking out locked revision", - err = "Error while checking out revision", - opts = { - args = { - "checkout", - revision, - }, - cwd = git_folder, - }, - }, - } - end -end - ----@param dir string ----@param command string ----@return string command -function M.make_directory_change_for_command(dir, command) - if fn.has "win32" == 1 then - if string.find(vim.o.shell, "cmd") ~= nil then - return string.format("pushd %s & %s", cmdpath(dir), command) - else - return string.format("pushd %s ; %s", cmdpath(dir), command) - end - else - return string.format("cd %s;\n%s", dir, command) - end -end - -return M diff --git a/lua/nvim-treesitter/statusline.lua b/lua/nvim-treesitter/statusline.lua deleted file mode 100644 index 68ba41aca..000000000 --- a/lua/nvim-treesitter/statusline.lua +++ /dev/null @@ -1,53 +0,0 @@ -local parsers = require "nvim-treesitter.parsers" -local ts_utils = require "nvim-treesitter.ts_utils" - -local M = {} - --- Trim spaces and opening brackets from end -local transform_line = function(line) - return line:gsub("%s*[%[%(%{]*%s*$", "") -end - -function M.statusline(opts) - if not parsers.has_parser() then - return - end - local options = opts or {} - if type(opts) == "number" then - options = { indicator_size = opts } - end - local bufnr = options.bufnr or 0 - local indicator_size = options.indicator_size or 100 - local type_patterns = options.type_patterns or { "class", "function", "method" } - local transform_fn = options.transform_fn or transform_line - local separator = options.separator or " -> " - local allow_duplicates = options.allow_duplicates or false - - local current_node = ts_utils.get_node_at_cursor() - if not current_node then - return "" - end - - local lines = {} - local expr = current_node - - while expr do - local line = ts_utils._get_line_for_node(expr, type_patterns, transform_fn, bufnr) - if line ~= "" then - if allow_duplicates or not vim.tbl_contains(lines, line) then - table.insert(lines, 1, line) - end - end - expr = expr:parent() - end - - local text = table.concat(lines, separator) - local text_len = #text - if text_len > indicator_size then - return "..." .. text:sub(text_len - indicator_size, text_len) - end - - return text -end - -return M diff --git a/lua/nvim-treesitter/ts_utils.lua b/lua/nvim-treesitter/ts_utils.lua deleted file mode 100644 index ce103790c..000000000 --- a/lua/nvim-treesitter/ts_utils.lua +++ /dev/null @@ -1,482 +0,0 @@ -local api = vim.api - -local parsers = require "nvim-treesitter.parsers" -local utils = require "nvim-treesitter.utils" -local ts = vim.treesitter - -local M = {} - -local function get_node_text(node, bufnr) - bufnr = bufnr or api.nvim_get_current_buf() - if not node then - return {} - end - - -- We have to remember that end_col is end-exclusive - local start_row, start_col, end_row, end_col = ts.get_node_range(node) - - if start_row ~= end_row then - local lines = api.nvim_buf_get_lines(bufnr, start_row, end_row + 1, false) - if next(lines) == nil then - return {} - end - lines[1] = string.sub(lines[1], start_col + 1) - -- end_row might be just after the last line. In this case the last line is not truncated. - if #lines == end_row - start_row + 1 then - lines[#lines] = string.sub(lines[#lines], 1, end_col) - end - return lines - else - local line = api.nvim_buf_get_lines(bufnr, start_row, start_row + 1, false)[1] - -- If line is nil then the line is empty - return line and { string.sub(line, start_col + 1, end_col) } or {} - end -end - ----@private ----@param node TSNode ----@param type_patterns string[] ----@param transform_fn fun(line: string): string ----@param bufnr integer ----@return string -function M._get_line_for_node(node, type_patterns, transform_fn, bufnr) - local node_type = node:type() - local is_valid = false - for _, rgx in ipairs(type_patterns) do - if node_type:find(rgx) then - is_valid = true - break - end - end - if not is_valid then - return "" - end - local line = transform_fn(vim.trim(get_node_text(node, bufnr)[1] or ""), node) - -- Escape % to avoid statusline to evaluate content as expression - return line:gsub("%%", "%%%%") -end - --- Gets the actual text content of a node --- @deprecated Use vim.treesitter.get_node_text --- @param node the node to get the text from --- @param bufnr the buffer containing the node --- @return list of lines of text of the node -function M.get_node_text(node, bufnr) - vim.notify_once( - "nvim-treesitter.ts_utils.get_node_text is deprecated: use vim.treesitter.get_node_text", - vim.log.levels.WARN - ) - return get_node_text(node, bufnr) -end - --- Determines whether a node is the parent of another --- @param dest the possible parent --- @param source the possible child node -function M.is_parent(dest, source) - if not (dest and source) then - return false - end - - local current = source - while current ~= nil do - if current == dest then - return true - end - - current = current:parent() - end - - return false -end - --- Get next node with same parent ----@param node TSNode ----@param allow_switch_parents? boolean allow switching parents if last node ----@param allow_next_parent? boolean allow next parent if last node and next parent without children -function M.get_next_node(node, allow_switch_parents, allow_next_parent) - local destination_node ---@type TSNode - local parent = node:parent() - - if not parent then - return - end - local found_pos = 0 - for i = 0, parent:named_child_count() - 1, 1 do - if parent:named_child(i) == node then - found_pos = i - break - end - end - if parent:named_child_count() > found_pos + 1 then - destination_node = parent:named_child(found_pos + 1) - elseif allow_switch_parents then - local next_node = M.get_next_node(node:parent()) - if next_node and next_node:named_child_count() > 0 then - destination_node = next_node:named_child(0) - elseif next_node and allow_next_parent then - destination_node = next_node - end - end - - return destination_node -end - --- Get previous node with same parent ----@param node TSNode ----@param allow_switch_parents? boolean allow switching parents if first node ----@param allow_previous_parent? boolean allow previous parent if first node and previous parent without children -function M.get_previous_node(node, allow_switch_parents, allow_previous_parent) - local destination_node ---@type TSNode - local parent = node:parent() - if not parent then - return - end - - local found_pos = 0 - for i = 0, parent:named_child_count() - 1, 1 do - if parent:named_child(i) == node then - found_pos = i - break - end - end - if 0 < found_pos then - destination_node = parent:named_child(found_pos - 1) - elseif allow_switch_parents then - local previous_node = M.get_previous_node(node:parent()) - if previous_node and previous_node:named_child_count() > 0 then - destination_node = previous_node:named_child(previous_node:named_child_count() - 1) - elseif previous_node and allow_previous_parent then - destination_node = previous_node - end - end - return destination_node -end - -function M.get_named_children(node) - local nodes = {} ---@type TSNode[] - for i = 0, node:named_child_count() - 1, 1 do - nodes[i + 1] = node:named_child(i) - end - return nodes -end - -function M.get_node_at_cursor(winnr, ignore_injected_langs) - winnr = winnr or 0 - local cursor = api.nvim_win_get_cursor(winnr) - local cursor_range = { cursor[1] - 1, cursor[2] } - - local buf = vim.api.nvim_win_get_buf(winnr) - local root_lang_tree = parsers.get_parser(buf) - if not root_lang_tree then - return - end - - local root ---@type TSNode|nil - if ignore_injected_langs then - for _, tree in pairs(root_lang_tree:trees()) do - local tree_root = tree:root() - if tree_root and ts.is_in_node_range(tree_root, cursor_range[1], cursor_range[2]) then - root = tree_root - break - end - end - else - root = M.get_root_for_position(cursor_range[1], cursor_range[2], root_lang_tree) - end - - if not root then - return - end - - return root:named_descendant_for_range(cursor_range[1], cursor_range[2], cursor_range[1], cursor_range[2]) -end - -function M.get_root_for_position(line, col, root_lang_tree) - if not root_lang_tree then - if not parsers.has_parser() then - return - end - - root_lang_tree = parsers.get_parser() - end - - local lang_tree = root_lang_tree:language_for_range { line, col, line, col } - - while true do - for _, tree in pairs(lang_tree:trees()) do - local root = tree:root() - - if root and ts.is_in_node_range(root, line, col) then - return root, tree, lang_tree - end - end - - if lang_tree == root_lang_tree then - break - end - - -- This case can happen when the cursor is at the start of a line that ends a injected region, - -- e.g., the first `]` in the following lua code: - -- ``` - -- vim.cmd[[ - -- ]] - -- ``` - lang_tree = lang_tree:parent() -- NOTE: parent() method is private - end - - -- This isn't a likely scenario, since the position must belong to a tree somewhere. - return nil, nil, lang_tree -end - ----comment ----@param node TSNode ----@return TSNode result -function M.get_root_for_node(node) - local parent = node - local result = node - - while parent ~= nil do - result = parent - parent = result:parent() - end - - return result -end - -function M.highlight_node(node, buf, hl_namespace, hl_group) - if not node then - return - end - M.highlight_range({ node:range() }, buf, hl_namespace, hl_group) -end - --- Get a compatible vim range (1 index based) from a TS node range. --- --- TS nodes start with 0 and the end col is ending exclusive. --- They also treat a EOF/EOL char as a char ending in the first --- col of the next row. ----comment ----@param range integer[] ----@param buf integer|nil ----@return integer, integer, integer, integer -function M.get_vim_range(range, buf) - ---@type integer, integer, integer, integer - local srow, scol, erow, ecol = unpack(range) - srow = srow + 1 - scol = scol + 1 - erow = erow + 1 - - if ecol == 0 then - -- Use the value of the last col of the previous row instead. - erow = erow - 1 - if not buf or buf == 0 then - ecol = vim.fn.col { erow, "$" } - 1 - else - ecol = #api.nvim_buf_get_lines(buf, erow - 1, erow, false)[1] - end - ecol = math.max(ecol, 1) - end - return srow, scol, erow, ecol -end - -function M.highlight_range(range, buf, hl_namespace, hl_group) - ---@type integer, integer, integer, integer - local start_row, start_col, end_row, end_col = unpack(range) - ---@diagnostic disable-next-line: missing-parameter - vim.highlight.range(buf, hl_namespace, hl_group, { start_row, start_col }, { end_row, end_col }) -end - --- Set visual selection to node --- @param selection_mode One of "charwise" (default) or "v", "linewise" or "V", --- "blockwise" or "<C-v>" (as a string with 5 characters or a single character) -function M.update_selection(buf, node, selection_mode) - local start_row, start_col, end_row, end_col = M.get_vim_range({ ts.get_node_range(node) }, buf) - - local v_table = { charwise = "v", linewise = "V", blockwise = "<C-v>" } - selection_mode = selection_mode or "charwise" - - -- Normalise selection_mode - if vim.tbl_contains(vim.tbl_keys(v_table), selection_mode) then - selection_mode = v_table[selection_mode] - end - - -- enter visual mode if normal or operator-pending (no) mode - -- Why? According to https://learnvimscriptthehardway.stevelosh.com/chapters/15.html - -- If your operator-pending mapping ends with some text visually selected, Vim will operate on that text. - -- Otherwise, Vim will operate on the text between the original cursor position and the new position. - local mode = api.nvim_get_mode() - if mode.mode ~= selection_mode then - -- Call to `nvim_replace_termcodes()` is needed for sending appropriate command to enter blockwise mode - selection_mode = vim.api.nvim_replace_termcodes(selection_mode, true, true, true) - api.nvim_cmd({ cmd = "normal", bang = true, args = { selection_mode } }, {}) - end - - api.nvim_win_set_cursor(0, { start_row, start_col - 1 }) - vim.cmd "normal! o" - api.nvim_win_set_cursor(0, { end_row, end_col - 1 }) -end - --- Byte length of node range ----@param node TSNode ----@return number -function M.node_length(node) - local _, _, start_byte = node:start() - local _, _, end_byte = node:end_() - return end_byte - start_byte -end - ----@deprecated Use `vim.treesitter.is_in_node_range()` instead -function M.is_in_node_range(node, line, col) - vim.notify_once( - "nvim-treesitter.ts_utils.is_in_node_range is deprecated: use vim.treesitter.is_in_node_range", - vim.log.levels.WARN - ) - return ts.is_in_node_range(node, line, col) -end - ----@deprecated Use `vim.treesitter.get_node_range()` instead -function M.get_node_range(node_or_range) - vim.notify_once( - "nvim-treesitter.ts_utils.get_node_range is deprecated: use vim.treesitter.get_node_range", - vim.log.levels.WARN - ) - return ts.get_node_range(node_or_range) -end - ----@param node TSNode ----@return table -function M.node_to_lsp_range(node) - local start_line, start_col, end_line, end_col = ts.get_node_range(node) - local rtn = {} - rtn.start = { line = start_line, character = start_col } - rtn["end"] = { line = end_line, character = end_col } - return rtn -end - --- Memoizes a function based on the buffer tick of the provided bufnr. --- The cache entry is cleared when the buffer is detached to avoid memory leaks. --- The options argument is a table with two optional values: --- - bufnr: extracts a bufnr from the given arguments. --- - key: extracts the cache key from the given arguments. ----@param fn function the fn to memoize, taking the buffer as first argument ----@param options? {bufnr: integer?, key: string|fun(...): string?} the memoization options ----@return function: a memoized function -function M.memoize_by_buf_tick(fn, options) - options = options or {} - - ---@type table<string, {result: any, last_tick: integer}> - local cache = setmetatable({}, { __mode = "kv" }) - local bufnr_fn = utils.to_func(options.bufnr or utils.identity) - local key_fn = utils.to_func(options.key or utils.identity) - - return function(...) - local bufnr = bufnr_fn(...) - local key = key_fn(...) - local tick = api.nvim_buf_get_changedtick(bufnr) - - if cache[key] then - if cache[key].last_tick == tick then - return cache[key].result - end - else - local function detach_handler() - cache[key] = nil - end - - -- Clean up logic only! - api.nvim_buf_attach(bufnr, false, { - on_detach = detach_handler, - on_reload = detach_handler, - }) - end - - cache[key] = { - result = fn(...), - last_tick = tick, - } - - return cache[key].result - end -end - -function M.swap_nodes(node_or_range1, node_or_range2, bufnr, cursor_to_second) - if not node_or_range1 or not node_or_range2 then - return - end - local range1 = M.node_to_lsp_range(node_or_range1) - local range2 = M.node_to_lsp_range(node_or_range2) - - local text1 = get_node_text(node_or_range1, bufnr) - local text2 = get_node_text(node_or_range2, bufnr) - - local edit1 = { range = range1, newText = table.concat(text2, "\n") } - local edit2 = { range = range2, newText = table.concat(text1, "\n") } - bufnr = bufnr == 0 and vim.api.nvim_get_current_buf() or bufnr - vim.lsp.util.apply_text_edits({ edit1, edit2 }, bufnr, "utf-8") - - if cursor_to_second then - utils.set_jump() - - local char_delta = 0 - local line_delta = 0 - if - range1["end"].line < range2.start.line - or (range1["end"].line == range2.start.line and range1["end"].character <= range2.start.character) - then - line_delta = #text2 - #text1 - end - - if range1["end"].line == range2.start.line and range1["end"].character <= range2.start.character then - if line_delta ~= 0 then - --- why? - --correction_after_line_change = -range2.start.character - --text_now_before_range2 = #(text2[#text2]) - --space_between_ranges = range2.start.character - range1["end"].character - --char_delta = correction_after_line_change + text_now_before_range2 + space_between_ranges - --- Equivalent to: - char_delta = #text2[#text2] - range1["end"].character - - -- add range1.start.character if last line of range1 (now text2) does not start at 0 - if range1.start.line == range2.start.line + line_delta then - char_delta = char_delta + range1.start.character - end - else - char_delta = #text2[#text2] - #text1[#text1] - end - end - - api.nvim_win_set_cursor( - api.nvim_get_current_win(), - { range2.start.line + 1 + line_delta, range2.start.character + char_delta } - ) - end -end - -function M.goto_node(node, goto_end, avoid_set_jump) - if not node then - return - end - if not avoid_set_jump then - utils.set_jump() - end - local range = { M.get_vim_range { node:range() } } - ---@type table<number> - local position - if not goto_end then - position = { range[1], range[2] } - else - position = { range[3], range[4] } - end - - -- Enter visual mode if we are in operator pending mode - -- If we don't do this, it will miss the last character. - local mode = vim.api.nvim_get_mode() - if mode.mode == "no" then - vim.cmd "normal! v" - end - - -- Position is 1, 0 indexed. - api.nvim_win_set_cursor(0, { position[1], position[2] - 1 }) -end - -return M diff --git a/lua/nvim-treesitter/tsrange.lua b/lua/nvim-treesitter/tsrange.lua deleted file mode 100644 index d41585c60..000000000 --- a/lua/nvim-treesitter/tsrange.lua +++ /dev/null @@ -1,154 +0,0 @@ -local M = {} -local TSRange = {} -TSRange.__index = TSRange - -local api = vim.api -local ts_utils = require "nvim-treesitter.ts_utils" -local parsers = require "nvim-treesitter.parsers" - -local function get_byte_offset(buf, row, col) - return api.nvim_buf_get_offset(buf, row) + vim.fn.byteidx(api.nvim_buf_get_lines(buf, row, row + 1, false)[1], col) -end - -function TSRange.new(buf, start_row, start_col, end_row, end_col) - return setmetatable({ - start_pos = { start_row, start_col, get_byte_offset(buf, start_row, start_col) }, - end_pos = { end_row, end_col, get_byte_offset(buf, end_row, end_col) }, - buf = buf, - [1] = start_row, - [2] = start_col, - [3] = end_row, - [4] = end_col, - }, TSRange) -end - -function TSRange.from_nodes(buf, start_node, end_node) - TSRange.__index = TSRange - local start_pos = start_node and { start_node:start() } or { end_node:start() } - local end_pos = end_node and { end_node:end_() } or { start_node:end_() } - return setmetatable({ - start_pos = { start_pos[1], start_pos[2], start_pos[3] }, - end_pos = { end_pos[1], end_pos[2], end_pos[3] }, - buf = buf, - [1] = start_pos[1], - [2] = start_pos[2], - [3] = end_pos[1], - [4] = end_pos[2], - }, TSRange) -end - -function TSRange.from_table(buf, range) - return setmetatable({ - start_pos = { range[1], range[2], get_byte_offset(buf, range[1], range[2]) }, - end_pos = { range[3], range[4], get_byte_offset(buf, range[3], range[4]) }, - buf = buf, - [1] = range[1], - [2] = range[2], - [3] = range[3], - [4] = range[4], - }, TSRange) -end - -function TSRange:parent() - local root_lang_tree = parsers.get_parser(self.buf) - local root = ts_utils.get_root_for_position(self[1], self[2], root_lang_tree) - - return root - and root:named_descendant_for_range(self.start_pos[1], self.start_pos[2], self.end_pos[1], self.end_pos[2]) - or nil -end - -function TSRange:field() end - -function TSRange:child_count() - return #self:collect_children() -end - -function TSRange:named_child_count() - return #self:collect_children(function(c) - return c:named() - end) -end - -function TSRange:iter_children() - local raw_iterator = self:parent().iter_children() - return function() - while true do - local node = raw_iterator() - if not node then - return - end - local _, _, start_byte = node:start() - local _, _, end_byte = node:end_() - if start_byte >= self.start_pos[3] and end_byte <= self.end_pos[3] then - return node - end - end - end -end - -function TSRange:collect_children(filter_fun) - local children = {} - for _, c in self:iter_children() do - if not filter_fun or filter_fun(c) then - table.insert(children, c) - end - end - return children -end - -function TSRange:child(index) - return self:collect_children()[index + 1] -end - -function TSRange:named_child(index) - return self:collect_children(function(c) - return c.named() - end)[index + 1] -end - -function TSRange:start() - return unpack(self.start_pos) -end - -function TSRange:end_() - return unpack(self.end_pos) -end - -function TSRange:range() - return self.start_pos[1], self.start_pos[2], self.end_pos[1], self.end_pos[2] -end - -function TSRange:type() - return "nvim-treesitter-range" -end - -function TSRange:symbol() - return -1 -end - -function TSRange:named() - return false -end - -function TSRange:missing() - return false -end - -function TSRange:has_error() - return #self:collect_children(function(c) - return c:has_error() - end) > 0 and true or false -end - -function TSRange:sexpr() - return table.concat( - vim.tbl_map(function(c) - return c:sexpr() - end, self:collect_children()), - " " - ) -end - -M.TSRange = TSRange -return M diff --git a/lua/nvim-treesitter/utils.lua b/lua/nvim-treesitter/utils.lua index d920f4a61..f9e5a2b86 100644 --- a/lua/nvim-treesitter/utils.lua +++ b/lua/nvim-treesitter/utils.lua @@ -1,237 +1,12 @@ -local api = vim.api -local fn = vim.fn -local luv = vim.loop - local M = {} --- Wrapper around vim.notify with common options set. ----@param msg string ----@param log_level number|nil ----@param opts table|nil -function M.notify(msg, log_level, opts) - local default_opts = { title = "nvim-treesitter" } - vim.notify(msg, log_level, vim.tbl_extend("force", default_opts, opts or {})) -end - --- Returns the system-specific path separator. ----@return string -function M.get_path_sep() - return (fn.has "win32" == 1 and not vim.opt.shellslash:get()) and "\\" or "/" -end - --- Returns a function that joins the given arguments with separator. Arguments --- can't be nil. Example: --- ---[[ - print(M.generate_join(" ")("foo", "bar")) ---]] ---prints "foo bar" ----@param separator string ----@return fun(...: string): string -function M.generate_join(separator) - return function(...) - return table.concat({ ... }, separator) - end -end - -M.join_path = M.generate_join(M.get_path_sep()) - -M.join_space = M.generate_join " " - ----@class Command ----@field run function ----@field f_args string ----@field args string - --- Define user defined vim command which calls nvim-treesitter module function --- - If module name is 'mod', it should be defined in hierarchy 'nvim-treesitter.mod' --- - A table with name 'commands' should be defined in 'mod' which needs to be passed as --- the commands param of this function --- ----@param mod string Name of the module that resides in the hierarchy - nvim-treesitter.module ----@param commands table<string, Command> Command list for the module ---- - {command_name} Name of the vim user defined command, Keys: ---- - {run}: (function) callback function that needs to be executed ---- - {f_args}: (string, default <f-args>) ---- - type of arguments that needs to be passed to the vim command ---- - {args}: (string, optional) ---- - vim command attributes ---- ----* @example ---- If module is nvim-treesitter.custom_mod ---- <pre> ---- M.commands = { ---- custom_command = { ---- run = M.module_function, ---- f_args = "<f-args>", ---- args = { ---- "-range" ---- } ---- } ---- } ---- ---- utils.setup_commands("custom_mod", require("nvim-treesitter.custom_mod").commands) ---- </pre> ---- ---- Will generate command : ---- <pre> ---- command! -range custom_command \ ---- lua require'nvim-treesitter.custom_mod'.commands.custom_command['run<bang>'](<f-args>) ---- </pre> -function M.setup_commands(mod, commands) - for command_name, def in pairs(commands) do - local f_args = def.f_args or "<f-args>" - local call_fn = - string.format("lua require'nvim-treesitter.%s'.commands.%s['run<bang>'](%s)", mod, command_name, f_args) - local parts = require("nvim-treesitter.compat").flatten { - "command!", - "-bar", - def.args, - command_name, - call_fn, - } - api.nvim_command(table.concat(parts, " ")) - end -end - ----@param dir string ----@param create_err string ----@param writeable_err string ----@return string|nil, string|nil -function M.create_or_reuse_writable_dir(dir, create_err, writeable_err) - create_err = create_err or M.join_space("Could not create dir '", dir, "': ") - writeable_err = writeable_err or M.join_space("Invalid rights, '", dir, "' should be read/write") - -- Try creating and using parser_dir if it doesn't exist - if not luv.fs_stat(dir) then - local ok, error = pcall(vim.fn.mkdir, dir, "p", "0755") - if not ok then - return nil, M.join_space(create_err, error) - end - - return dir - end - - -- parser_dir exists, use it if it's read/write - if luv.fs_access(dir, "RW") then - return dir - end - - -- parser_dir exists but isn't read/write, give up - return nil, M.join_space(writeable_err, dir, "'") -end - -function M.get_package_path() - -- Path to this source file, removing the leading '@' - local source = string.sub(debug.getinfo(1, "S").source, 2) - - -- Path to the package root - return fn.fnamemodify(source, ":p:h:h:h") -end - -function M.get_cache_dir() - local cache_dir = fn.stdpath "data" - - if luv.fs_access(cache_dir, "RW") then - return cache_dir - elseif luv.fs_access("/tmp", "RW") then - return "/tmp" - end - - return nil, M.join_space("Invalid cache rights,", fn.stdpath "data", "or /tmp should be read/write") -end - --- Returns $XDG_DATA_HOME/nvim/site, but could use any directory that is in --- runtimepath -function M.get_site_dir() - return M.join_path(fn.stdpath "data", "site") -end - --- Gets a property at path ----@param tbl table the table to access ----@param path string the '.' separated path ----@return table|nil result the value at path or nil -function M.get_at_path(tbl, path) - if path == "" then - return tbl - end - - local segments = vim.split(path, ".", true) - ---@type table[]|table - local result = tbl - - for _, segment in ipairs(segments) do - if type(result) == "table" then - ---@type table - -- TODO: figure out the actual type of tbl - result = result[segment] - end - end - - return result -end - -function M.set_jump() - vim.cmd "normal! m'" -end - --- Filters a list based on the given predicate ----@param tbl any[] The list to filter ----@param predicate fun(v:any, i:number):boolean The predicate to filter with -function M.filter(tbl, predicate) - local result = {} - - for i, v in ipairs(tbl) do - if predicate(v, i) then - table.insert(result, v) - end - end - - return result -end - --- Returns a list of all values from the first list --- that are not present in the second list. ----@param tbl1 any[] The first table ----@param tbl2 any[] The second table ----@return table -function M.difference(tbl1, tbl2) - return M.filter(tbl1, function(v) - return not vim.tbl_contains(tbl2, v) - end) -end - -function M.identity(a) - return a -end - --- Returns a function returning the given value ----@param a any ----@return fun():any -function M.constant(a) - return function() - return a - end -end - --- Returns a function that returns the given value if it is a function, --- otherwise returns a function that returns the given value. ----@param a any ----@return fun(...):any -function M.to_func(a) - return type(a) == "function" and a or M.constant(a) +--TODO(clason): replace by vim.fs._join_paths +function M.join_path(...) + return (table.concat({ ... }, '/'):gsub('//+', '/')) end ----@return string|nil -function M.ts_cli_version() - if fn.executable "tree-sitter" == 1 then - local handle = io.popen "tree-sitter -V" - if not handle then - return - end - local result = handle:read "*a" - handle:close() - return vim.split(result, "\n")[1]:match "[^tree%psitter ].*" - end +function M.get_package_path(...) + return M.join_path(vim.fn.fnamemodify(debug.getinfo(1, 'S').source:sub(2), ':p:h:h:h'), ...) end return M diff --git a/parser-info/.gitignore b/parser-info/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/parser-info/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/parser/.gitignore b/parser/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/parser/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/plugin/filetypes.lua b/plugin/filetypes.lua new file mode 100644 index 000000000..a4c236ec3 --- /dev/null +++ b/plugin/filetypes.lua @@ -0,0 +1,66 @@ +local filetypes = { + angular = { 'htmlangular' }, + bash = { 'sh' }, + bibtex = { 'bib' }, + c_sharp = { 'cs', 'csharp', 'c-sharp' }, + commonlisp = { 'lisp' }, + cooklang = { 'cook' }, + devicetree = { 'dts' }, + diff = { 'gitdiff' }, + eex = { 'eelixir' }, + elixir = { 'ex' }, + embedded_template = { 'eruby' }, + erlang = { 'erl' }, + facility = { 'fsd' }, + faust = { 'dsp' }, + gdshader = { 'gdshaderinc' }, + git_config = { 'gitconfig' }, + git_rebase = { 'gitrebase' }, + glimmer = { 'handlebars', 'html.handlebars' }, + godot_resource = { 'gdresource' }, + haskell = { 'hs' }, + haskell_persistent = { 'haskellpersistent' }, + idris = { 'idris2' }, + janet_simple = { 'janet' }, + javascript = { 'javascriptreact', 'ecma', 'jsx', 'js' }, + javascript_glimmer = { 'javascript.glimmer' }, + linkerscript = { 'ld' }, + latex = { 'tex' }, + m68k = { 'asm68k' }, + make = { 'automake' }, + markdown = { 'pandoc', 'quarto', 'rmd' }, + muttrc = { 'neomuttrc' }, + ocaml_interface = { 'ocamlinterface' }, + perl = { 'pl' }, + poe_filter = { 'poefilter' }, + properties = { 'jproperties' }, + python = { 'py', 'gyp' }, + qmljs = { 'qml' }, + runescript = { 'clientscript' }, + scala = { 'sbt' }, + slang = { 'shaderslang' }, + sqp = { 'mysqp' }, + ssh_config = { 'sshconfig' }, + starlark = { 'bzl' }, + surface = { 'sface' }, + t32 = { 'trace32' }, + tcl = { 'expect' }, + terraform = { 'terraform-vars' }, + textproto = { 'pbtxt' }, + tlaplus = { 'tla' }, + tsx = { 'typescriptreact', 'typescript.tsx' }, + typescript = { 'ts' }, + typescript_glimmer = { 'typescript.glimmer' }, + typst = { 'typ' }, + udev = { 'udevrules' }, + uxntal = { 'tal', 'uxn' }, + v = { 'vlang' }, + verilog = { 'systemverilog' }, + vhs = { 'tape' }, + xml = { 'xsd', 'xslt', 'svg' }, + xresources = { 'xdefaults' }, +} + +for lang, ft in pairs(filetypes) do + vim.treesitter.language.register(lang, ft) +end diff --git a/plugin/nvim-treesitter.lua b/plugin/nvim-treesitter.lua index 4ea3925fd..3ab264d41 100644 --- a/plugin/nvim-treesitter.lua +++ b/plugin/nvim-treesitter.lua @@ -1,34 +1,86 @@ --- Last Change: 2022 Apr 16 - if vim.g.loaded_nvim_treesitter then return end vim.g.loaded_nvim_treesitter = true --- setup modules -require("nvim-treesitter").setup() - local api = vim.api --- define autocommands -local augroup = api.nvim_create_augroup("NvimTreesitter", {}) +local function complete_available_parsers(arglead) + return vim.iter.filter(function(v) + return v:find(arglead) + end, require('nvim-treesitter.parsers').get_available()) +end + +local function complete_installed_parsers(arglead) + return vim.iter.filter(function(v) + return v:find(arglead) + end, require('nvim-treesitter.config').installed_parsers()) +end + +-- create user commands +api.nvim_create_user_command('TSInstallInfo', function() + require('nvim-treesitter.install').info() +end, { nargs = 0, desc = 'List available treesitter parsers' }) + +api.nvim_create_user_command('TSInstall', function(args) + require('nvim-treesitter.install').install(args.fargs, { force = args.bang }) +end, { + nargs = '+', + bang = true, + bar = true, + complete = complete_available_parsers, + desc = 'Install treesitter parsers', +}) + +api.nvim_create_user_command('TSInstallFromGrammar', function(args) + require('nvim-treesitter.install').install(args.fargs, { + generate_from_grammar = true, + force = args.bang, + }) +end, { + nargs = '+', + bang = true, + bar = true, + complete = complete_available_parsers, + desc = 'Install treesitter parsers from grammar', +}) + +api.nvim_create_user_command('TSInstallSync', function(args) + require('nvim-treesitter.install').install(args.fargs, { + with_sync = true, + force = args.bang, + }) +end, { + nargs = '+', + bang = true, + bar = true, + complete = complete_available_parsers, + desc = 'Install treesitter parsers synchronously', +}) + +api.nvim_create_user_command('TSUpdate', function(args) + require('nvim-treesitter.install').update(args.fargs) +end, { + nargs = '*', + bar = true, + complete = complete_installed_parsers, + desc = 'Update installed treesitter parsers', +}) + +api.nvim_create_user_command('TSUpdateSync', function(args) + require('nvim-treesitter.install').update(args.fargs, { with_sync = true }) +end, { + nargs = '*', + bar = true, + complete = complete_installed_parsers, + desc = 'Update installed treesitter parsers synchronously', +}) -api.nvim_create_autocmd("Filetype", { - pattern = "query", - group = augroup, - callback = function() - api.nvim_clear_autocmds { - group = augroup, - event = "BufWritePost", - } - api.nvim_create_autocmd("BufWritePost", { - group = augroup, - buffer = 0, - callback = function(opts) - require("nvim-treesitter.query").invalidate_query_file(opts.file) - end, - desc = "Invalidate query file", - }) - end, - desc = "Reload query", +api.nvim_create_user_command('TSUninstall', function(args) + require('nvim-treesitter.install').uninstall(args.fargs) +end, { + nargs = '+', + bar = true, + complete = complete_installed_parsers, + desc = 'Uninstall treesitter parsers', }) diff --git a/plugin/query_predicates.lua b/plugin/query_predicates.lua new file mode 100644 index 000000000..abffea2f0 --- /dev/null +++ b/plugin/query_predicates.lua @@ -0,0 +1,141 @@ +local query = vim.treesitter.query + +-- register custom predicates + +---@param match (TSNode|nil)[] +---@param pred string[] +---@return boolean|nil +query.add_predicate('kind-eq?', function(match, _, _, pred) + local node = match[pred[2]] + if not node then + return true + end + + local types = { unpack(pred, 3) } + return vim.list_contains(types, node:type()) +end) + +-- register custom directives + +local mimetype_aliases = { + ['importmap'] = 'json', + ['module'] = 'javascript', + ['application/ecmascript'] = 'javascript', + ['text/ecmascript'] = 'javascript', +} + +---@param match (TSNode|nil)[] +---@param _ string +---@param bufnr integer +---@param pred string[] +---@return boolean|nil +query.add_directive('set-lang-from-mimetype!', function(match, _, bufnr, pred, metadata) + local capture_id = pred[2] + local node = match[capture_id] + if not node then + return + end + local type_attr_value = vim.treesitter.get_node_text(node, bufnr) + local configured = mimetype_aliases[type_attr_value] + if configured then + metadata['injection.language'] = configured + else + local parts = vim.split(type_attr_value, '/', {}) + metadata['injection.language'] = parts[#parts] + end +end) + +local injection_aliases = { + ex = 'elixir', + pl = 'perl', + sh = 'bash', + uxn = 'uxntal', + ts = 'typescript', +} + +---@param match (TSNode|nil)[] +---@param _ string +---@param bufnr integer +---@param pred string[] +---@return boolean|nil +query.add_directive('set-lang-from-info-string!', function(match, _, bufnr, pred, metadata) + local capture_id = pred[2] + local node = match[capture_id] + if not node then + return + end + + local injection_alias = vim.treesitter.get_node_text(node, bufnr) + local filetype = vim.filetype.match({ filename = 'a.' .. injection_alias }) + metadata['injection.language'] = filetype or injection_aliases[injection_alias] or injection_alias +end) + +query.add_directive('downcase!', function(match, _, bufnr, pred, metadata) + local text, key, value ---@type string|string[], string, string|integer + + if #pred == 3 then + -- (#downcase! @capture "key") + key = pred[3] + value = metadata[pred[2]][key] + else + -- (#downcase! "key") + key = pred[2] + value = metadata[key] + end + + if type(value) == 'string' then + text = value + else + local node = match[value] + text = vim.treesitter.get_node_text(node, bufnr) or '' + end + + if #pred == 3 then + metadata[pred[2]][key] = string.lower(text) + else + metadata[key] = string.lower(text) + end +end) + +-- Trim blank lines from end of the region +-- Arguments are the captures to trim. +---@param match (TSNode|nil)[] +---@param _ string +---@param bufnr integer +---@param pred string[] +---@param metadata table +---TODO(clason): upstream +query.add_directive('trim!', function(match, _, bufnr, pred, metadata) + for _, id in ipairs({ select(2, unpack(pred)) }) do + local node = match[id] + if not node then + return + end + + local start_row, start_col, end_row, end_col = node:range() + + -- Don't trim if region ends in middle of a line + if end_col ~= 0 then + return + end + + while true do + -- As we only care when end_col == 0, always inspect one line above end_row. + local end_line = vim.api.nvim_buf_get_lines(bufnr, end_row - 1, end_row, true)[1] + + if end_line ~= '' then + break + end + + end_row = end_row - 1 + end + + -- If this produces an invalid range, we just skip it. + if start_row < end_row or (start_row == end_row and start_col <= end_col) then + if not metadata[id] then + metadata[id] = {} + end + metadata[id].range = { start_row, start_col, end_row, end_col } + end + end +end) diff --git a/queries/ada/folds.scm b/runtime/queries/ada/folds.scm index 8e3defac4..8e3defac4 100644 --- a/queries/ada/folds.scm +++ b/runtime/queries/ada/folds.scm diff --git a/queries/ada/highlights.scm b/runtime/queries/ada/highlights.scm index 0d42b70f9..0d42b70f9 100644 --- a/queries/ada/highlights.scm +++ b/runtime/queries/ada/highlights.scm diff --git a/queries/unison/injections.scm b/runtime/queries/ada/injections.scm index f9754504e..f9754504e 100644 --- a/queries/unison/injections.scm +++ b/runtime/queries/ada/injections.scm diff --git a/queries/ada/locals.scm b/runtime/queries/ada/locals.scm index bdfc38be8..bdfc38be8 100644 --- a/queries/ada/locals.scm +++ b/runtime/queries/ada/locals.scm diff --git a/queries/agda/folds.scm b/runtime/queries/agda/folds.scm index 5e1051f8f..5e1051f8f 100644 --- a/queries/agda/folds.scm +++ b/runtime/queries/agda/folds.scm diff --git a/queries/agda/highlights.scm b/runtime/queries/agda/highlights.scm index 4626a8c12..4626a8c12 100644 --- a/queries/agda/highlights.scm +++ b/runtime/queries/agda/highlights.scm diff --git a/queries/solidity/injections.scm b/runtime/queries/agda/injections.scm index a772e0bd9..a772e0bd9 100644 --- a/queries/solidity/injections.scm +++ b/runtime/queries/agda/injections.scm diff --git a/queries/angular/folds.scm b/runtime/queries/angular/folds.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/angular/folds.scm +++ b/runtime/queries/angular/folds.scm diff --git a/queries/angular/highlights.scm b/runtime/queries/angular/highlights.scm index 271e352e5..271e352e5 100644 --- a/queries/angular/highlights.scm +++ b/runtime/queries/angular/highlights.scm diff --git a/queries/angular/indents.scm b/runtime/queries/angular/indents.scm index 2f46aa5bc..2f46aa5bc 100644 --- a/queries/angular/indents.scm +++ b/runtime/queries/angular/indents.scm diff --git a/queries/angular/injections.scm b/runtime/queries/angular/injections.scm index 448e94275..448e94275 100644 --- a/queries/angular/injections.scm +++ b/runtime/queries/angular/injections.scm diff --git a/queries/angular/locals.scm b/runtime/queries/angular/locals.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/angular/locals.scm +++ b/runtime/queries/angular/locals.scm diff --git a/queries/apex/folds.scm b/runtime/queries/apex/folds.scm index fdfc2a1ed..fdfc2a1ed 100644 --- a/queries/apex/folds.scm +++ b/runtime/queries/apex/folds.scm diff --git a/queries/apex/highlights.scm b/runtime/queries/apex/highlights.scm index 82ce23414..82ce23414 100644 --- a/queries/apex/highlights.scm +++ b/runtime/queries/apex/highlights.scm diff --git a/queries/apex/injections.scm b/runtime/queries/apex/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/apex/injections.scm +++ b/runtime/queries/apex/injections.scm diff --git a/queries/apex/locals.scm b/runtime/queries/apex/locals.scm index d758f14cf..d758f14cf 100644 --- a/queries/apex/locals.scm +++ b/runtime/queries/apex/locals.scm diff --git a/queries/arduino/folds.scm b/runtime/queries/arduino/folds.scm index b617fdc56..b617fdc56 100644 --- a/queries/arduino/folds.scm +++ b/runtime/queries/arduino/folds.scm diff --git a/queries/arduino/highlights.scm b/runtime/queries/arduino/highlights.scm index e6bf14784..e6bf14784 100644 --- a/queries/arduino/highlights.scm +++ b/runtime/queries/arduino/highlights.scm diff --git a/queries/arduino/indents.scm b/runtime/queries/arduino/indents.scm index b617fdc56..b617fdc56 100644 --- a/queries/arduino/indents.scm +++ b/runtime/queries/arduino/indents.scm diff --git a/queries/arduino/injections.scm b/runtime/queries/arduino/injections.scm index b617fdc56..b617fdc56 100644 --- a/queries/arduino/injections.scm +++ b/runtime/queries/arduino/injections.scm diff --git a/queries/arduino/locals.scm b/runtime/queries/arduino/locals.scm index b617fdc56..b617fdc56 100644 --- a/queries/arduino/locals.scm +++ b/runtime/queries/arduino/locals.scm diff --git a/queries/asm/highlights.scm b/runtime/queries/asm/highlights.scm index eccf9c996..eccf9c996 100644 --- a/queries/asm/highlights.scm +++ b/runtime/queries/asm/highlights.scm diff --git a/queries/asm/injections.scm b/runtime/queries/asm/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/asm/injections.scm +++ b/runtime/queries/asm/injections.scm diff --git a/queries/astro/folds.scm b/runtime/queries/astro/folds.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/astro/folds.scm +++ b/runtime/queries/astro/folds.scm diff --git a/queries/astro/highlights.scm b/runtime/queries/astro/highlights.scm index e2917ad4d..e2917ad4d 100644 --- a/queries/astro/highlights.scm +++ b/runtime/queries/astro/highlights.scm diff --git a/queries/astro/indents.scm b/runtime/queries/astro/indents.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/astro/indents.scm +++ b/runtime/queries/astro/indents.scm diff --git a/queries/astro/injections.scm b/runtime/queries/astro/injections.scm index d4f15ba56..d4f15ba56 100644 --- a/queries/astro/injections.scm +++ b/runtime/queries/astro/injections.scm diff --git a/queries/astro/locals.scm b/runtime/queries/astro/locals.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/astro/locals.scm +++ b/runtime/queries/astro/locals.scm diff --git a/queries/authzed/highlights.scm b/runtime/queries/authzed/highlights.scm index fb946caaf..fb946caaf 100644 --- a/queries/authzed/highlights.scm +++ b/runtime/queries/authzed/highlights.scm diff --git a/queries/bass/injections.scm b/runtime/queries/authzed/injections.scm index 298a8d070..298a8d070 100644 --- a/queries/bass/injections.scm +++ b/runtime/queries/authzed/injections.scm diff --git a/queries/awk/highlights.scm b/runtime/queries/awk/highlights.scm index 51ec9c08e..51ec9c08e 100644 --- a/queries/awk/highlights.scm +++ b/runtime/queries/awk/highlights.scm diff --git a/queries/awk/injections.scm b/runtime/queries/awk/injections.scm index 3e67da245..3e67da245 100644 --- a/queries/awk/injections.scm +++ b/runtime/queries/awk/injections.scm diff --git a/queries/bash/folds.scm b/runtime/queries/bash/folds.scm index 766dbe598..766dbe598 100644 --- a/queries/bash/folds.scm +++ b/runtime/queries/bash/folds.scm diff --git a/queries/bash/highlights.scm b/runtime/queries/bash/highlights.scm index 58d57d9e5..58d57d9e5 100644 --- a/queries/bash/highlights.scm +++ b/runtime/queries/bash/highlights.scm diff --git a/queries/bash/injections.scm b/runtime/queries/bash/injections.scm index 9b86e351a..9b86e351a 100644 --- a/queries/bash/injections.scm +++ b/runtime/queries/bash/injections.scm diff --git a/queries/bash/locals.scm b/runtime/queries/bash/locals.scm index 347f51fa2..347f51fa2 100644 --- a/queries/bash/locals.scm +++ b/runtime/queries/bash/locals.scm diff --git a/queries/bass/folds.scm b/runtime/queries/bass/folds.scm index d99e0c1ac..d99e0c1ac 100644 --- a/queries/bass/folds.scm +++ b/runtime/queries/bass/folds.scm diff --git a/queries/bass/highlights.scm b/runtime/queries/bass/highlights.scm index f84993af1..f84993af1 100644 --- a/queries/bass/highlights.scm +++ b/runtime/queries/bass/highlights.scm diff --git a/queries/bass/indents.scm b/runtime/queries/bass/indents.scm index 27b976f21..27b976f21 100644 --- a/queries/bass/indents.scm +++ b/runtime/queries/bass/indents.scm diff --git a/queries/scala/injections.scm b/runtime/queries/bass/injections.scm index 1c2fe3cc9..1c2fe3cc9 100644 --- a/queries/scala/injections.scm +++ b/runtime/queries/bass/injections.scm diff --git a/queries/bass/locals.scm b/runtime/queries/bass/locals.scm index daed7e5e1..daed7e5e1 100644 --- a/queries/bass/locals.scm +++ b/runtime/queries/bass/locals.scm diff --git a/queries/beancount/folds.scm b/runtime/queries/beancount/folds.scm index 9f1b6cbed..9f1b6cbed 100644 --- a/queries/beancount/folds.scm +++ b/runtime/queries/beancount/folds.scm diff --git a/queries/beancount/highlights.scm b/runtime/queries/beancount/highlights.scm index 1e23d28f4..1e23d28f4 100644 --- a/queries/beancount/highlights.scm +++ b/runtime/queries/beancount/highlights.scm diff --git a/queries/verilog/injections.scm b/runtime/queries/beancount/injections.scm index 05aa24d8f..05aa24d8f 100644 --- a/queries/verilog/injections.scm +++ b/runtime/queries/beancount/injections.scm diff --git a/queries/bibtex/folds.scm b/runtime/queries/bibtex/folds.scm index 321a045c9..321a045c9 100644 --- a/queries/bibtex/folds.scm +++ b/runtime/queries/bibtex/folds.scm diff --git a/queries/bibtex/highlights.scm b/runtime/queries/bibtex/highlights.scm index 2231a17db..2231a17db 100644 --- a/queries/bibtex/highlights.scm +++ b/runtime/queries/bibtex/highlights.scm diff --git a/queries/bibtex/indents.scm b/runtime/queries/bibtex/indents.scm index 764172a76..764172a76 100644 --- a/queries/bibtex/indents.scm +++ b/runtime/queries/bibtex/indents.scm diff --git a/queries/bibtex/injections.scm b/runtime/queries/bibtex/injections.scm index 98ad387d9..98ad387d9 100644 --- a/queries/bibtex/injections.scm +++ b/runtime/queries/bibtex/injections.scm diff --git a/queries/bicep/folds.scm b/runtime/queries/bicep/folds.scm index 217a86d6a..217a86d6a 100644 --- a/queries/bicep/folds.scm +++ b/runtime/queries/bicep/folds.scm diff --git a/queries/bicep/highlights.scm b/runtime/queries/bicep/highlights.scm index 35c9d6c17..35c9d6c17 100644 --- a/queries/bicep/highlights.scm +++ b/runtime/queries/bicep/highlights.scm diff --git a/queries/bicep/indents.scm b/runtime/queries/bicep/indents.scm index 055e51b23..055e51b23 100644 --- a/queries/bicep/indents.scm +++ b/runtime/queries/bicep/indents.scm diff --git a/queries/bicep/injections.scm b/runtime/queries/bicep/injections.scm index 5c2d4a57b..5c2d4a57b 100644 --- a/queries/bicep/injections.scm +++ b/runtime/queries/bicep/injections.scm diff --git a/queries/bicep/locals.scm b/runtime/queries/bicep/locals.scm index cc9c3c2cf..cc9c3c2cf 100644 --- a/queries/bicep/locals.scm +++ b/runtime/queries/bicep/locals.scm diff --git a/queries/bitbake/folds.scm b/runtime/queries/bitbake/folds.scm index 85d226348..85d226348 100644 --- a/queries/bitbake/folds.scm +++ b/runtime/queries/bitbake/folds.scm diff --git a/queries/bitbake/highlights.scm b/runtime/queries/bitbake/highlights.scm index c7316de6e..c7316de6e 100644 --- a/queries/bitbake/highlights.scm +++ b/runtime/queries/bitbake/highlights.scm diff --git a/queries/bitbake/indents.scm b/runtime/queries/bitbake/indents.scm index 5f2081868..5f2081868 100644 --- a/queries/bitbake/indents.scm +++ b/runtime/queries/bitbake/indents.scm diff --git a/queries/bitbake/injections.scm b/runtime/queries/bitbake/injections.scm index 35c984a5b..35c984a5b 100644 --- a/queries/bitbake/injections.scm +++ b/runtime/queries/bitbake/injections.scm diff --git a/queries/bitbake/locals.scm b/runtime/queries/bitbake/locals.scm index e4726ec51..e4726ec51 100644 --- a/queries/bitbake/locals.scm +++ b/runtime/queries/bitbake/locals.scm diff --git a/queries/blade/folds.scm b/runtime/queries/blade/folds.scm index cc081a754..cc081a754 100644 --- a/queries/blade/folds.scm +++ b/runtime/queries/blade/folds.scm diff --git a/queries/blade/highlights.scm b/runtime/queries/blade/highlights.scm index c05d2845f..c05d2845f 100644 --- a/queries/blade/highlights.scm +++ b/runtime/queries/blade/highlights.scm diff --git a/queries/blade/indents.scm b/runtime/queries/blade/indents.scm index bd3e84d16..bd3e84d16 100644 --- a/queries/blade/indents.scm +++ b/runtime/queries/blade/indents.scm diff --git a/queries/blade/injections.scm b/runtime/queries/blade/injections.scm index 12fa9f953..12fa9f953 100644 --- a/queries/blade/injections.scm +++ b/runtime/queries/blade/injections.scm diff --git a/queries/blueprint/highlights.scm b/runtime/queries/blueprint/highlights.scm index f3c39f232..f3c39f232 100644 --- a/queries/blueprint/highlights.scm +++ b/runtime/queries/blueprint/highlights.scm diff --git a/queries/ada/injections.scm b/runtime/queries/blueprint/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/ada/injections.scm +++ b/runtime/queries/blueprint/injections.scm diff --git a/queries/bp/folds.scm b/runtime/queries/bp/folds.scm index c40ea3df4..c40ea3df4 100644 --- a/queries/bp/folds.scm +++ b/runtime/queries/bp/folds.scm diff --git a/queries/bp/highlights.scm b/runtime/queries/bp/highlights.scm index 5f94f4c11..5f94f4c11 100644 --- a/queries/bp/highlights.scm +++ b/runtime/queries/bp/highlights.scm diff --git a/queries/bp/indents.scm b/runtime/queries/bp/indents.scm index 8cf8adc83..8cf8adc83 100644 --- a/queries/bp/indents.scm +++ b/runtime/queries/bp/indents.scm diff --git a/queries/agda/injections.scm b/runtime/queries/bp/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/agda/injections.scm +++ b/runtime/queries/bp/injections.scm diff --git a/queries/bp/locals.scm b/runtime/queries/bp/locals.scm index c8a5a1719..c8a5a1719 100644 --- a/queries/bp/locals.scm +++ b/runtime/queries/bp/locals.scm diff --git a/queries/brightscript/folds.scm b/runtime/queries/brightscript/folds.scm index 56b7d575b..56b7d575b 100644 --- a/queries/brightscript/folds.scm +++ b/runtime/queries/brightscript/folds.scm diff --git a/queries/brightscript/highlights.scm b/runtime/queries/brightscript/highlights.scm index 5758f565b..5758f565b 100644 --- a/queries/brightscript/highlights.scm +++ b/runtime/queries/brightscript/highlights.scm diff --git a/queries/brightscript/indents.scm b/runtime/queries/brightscript/indents.scm index e54bf52c1..e54bf52c1 100644 --- a/queries/brightscript/indents.scm +++ b/runtime/queries/brightscript/indents.scm diff --git a/queries/authzed/injections.scm b/runtime/queries/brightscript/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/authzed/injections.scm +++ b/runtime/queries/brightscript/injections.scm diff --git a/queries/c/folds.scm b/runtime/queries/c/folds.scm index bb26a62eb..bb26a62eb 100644 --- a/queries/c/folds.scm +++ b/runtime/queries/c/folds.scm diff --git a/queries/c/highlights.scm b/runtime/queries/c/highlights.scm index ea65075f2..ea65075f2 100644 --- a/queries/c/highlights.scm +++ b/runtime/queries/c/highlights.scm diff --git a/queries/c/indents.scm b/runtime/queries/c/indents.scm index 1932ce8d6..1932ce8d6 100644 --- a/queries/c/indents.scm +++ b/runtime/queries/c/indents.scm diff --git a/queries/c/injections.scm b/runtime/queries/c/injections.scm index 24634864e..24634864e 100644 --- a/queries/c/injections.scm +++ b/runtime/queries/c/injections.scm diff --git a/queries/c/locals.scm b/runtime/queries/c/locals.scm index 13a122790..13a122790 100644 --- a/queries/c/locals.scm +++ b/runtime/queries/c/locals.scm diff --git a/queries/c_sharp/folds.scm b/runtime/queries/c_sharp/folds.scm index 16967b69d..16967b69d 100644 --- a/queries/c_sharp/folds.scm +++ b/runtime/queries/c_sharp/folds.scm diff --git a/queries/c_sharp/highlights.scm b/runtime/queries/c_sharp/highlights.scm index f23d7ec65..f23d7ec65 100644 --- a/queries/c_sharp/highlights.scm +++ b/runtime/queries/c_sharp/highlights.scm diff --git a/queries/beancount/injections.scm b/runtime/queries/c_sharp/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/beancount/injections.scm +++ b/runtime/queries/c_sharp/injections.scm diff --git a/queries/c_sharp/locals.scm b/runtime/queries/c_sharp/locals.scm index bef094007..bef094007 100644 --- a/queries/c_sharp/locals.scm +++ b/runtime/queries/c_sharp/locals.scm diff --git a/queries/caddy/folds.scm b/runtime/queries/caddy/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/caddy/folds.scm +++ b/runtime/queries/caddy/folds.scm diff --git a/queries/caddy/highlights.scm b/runtime/queries/caddy/highlights.scm index 47a170f76..47a170f76 100644 --- a/queries/caddy/highlights.scm +++ b/runtime/queries/caddy/highlights.scm diff --git a/queries/caddy/indents.scm b/runtime/queries/caddy/indents.scm index b746788ab..b746788ab 100644 --- a/queries/caddy/indents.scm +++ b/runtime/queries/caddy/indents.scm diff --git a/queries/blueprint/injections.scm b/runtime/queries/caddy/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/blueprint/injections.scm +++ b/runtime/queries/caddy/injections.scm diff --git a/queries/cairo/folds.scm b/runtime/queries/cairo/folds.scm index 9937da6f1..9937da6f1 100644 --- a/queries/cairo/folds.scm +++ b/runtime/queries/cairo/folds.scm diff --git a/queries/cairo/highlights.scm b/runtime/queries/cairo/highlights.scm index 1ea6245d3..1ea6245d3 100644 --- a/queries/cairo/highlights.scm +++ b/runtime/queries/cairo/highlights.scm diff --git a/queries/cairo/indents.scm b/runtime/queries/cairo/indents.scm index f63ef36fe..f63ef36fe 100644 --- a/queries/cairo/indents.scm +++ b/runtime/queries/cairo/indents.scm diff --git a/queries/cairo/injections.scm b/runtime/queries/cairo/injections.scm index fbb66be38..fbb66be38 100644 --- a/queries/cairo/injections.scm +++ b/runtime/queries/cairo/injections.scm diff --git a/queries/cairo/locals.scm b/runtime/queries/cairo/locals.scm index 0573cf6db..0573cf6db 100644 --- a/queries/cairo/locals.scm +++ b/runtime/queries/cairo/locals.scm diff --git a/queries/capnp/folds.scm b/runtime/queries/capnp/folds.scm index 6e3f9c187..6e3f9c187 100644 --- a/queries/capnp/folds.scm +++ b/runtime/queries/capnp/folds.scm diff --git a/queries/capnp/highlights.scm b/runtime/queries/capnp/highlights.scm index a48c007ed..a48c007ed 100644 --- a/queries/capnp/highlights.scm +++ b/runtime/queries/capnp/highlights.scm diff --git a/queries/capnp/indents.scm b/runtime/queries/capnp/indents.scm index cc2f4d756..cc2f4d756 100644 --- a/queries/capnp/indents.scm +++ b/runtime/queries/capnp/indents.scm diff --git a/queries/bp/injections.scm b/runtime/queries/capnp/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/bp/injections.scm +++ b/runtime/queries/capnp/injections.scm diff --git a/queries/capnp/locals.scm b/runtime/queries/capnp/locals.scm index d1f0ccacc..d1f0ccacc 100644 --- a/queries/capnp/locals.scm +++ b/runtime/queries/capnp/locals.scm diff --git a/queries/chatito/folds.scm b/runtime/queries/chatito/folds.scm index 052dd2064..052dd2064 100644 --- a/queries/chatito/folds.scm +++ b/runtime/queries/chatito/folds.scm diff --git a/queries/chatito/highlights.scm b/runtime/queries/chatito/highlights.scm index 47113f2cf..47113f2cf 100644 --- a/queries/chatito/highlights.scm +++ b/runtime/queries/chatito/highlights.scm diff --git a/queries/chatito/indents.scm b/runtime/queries/chatito/indents.scm index dc9e13d78..dc9e13d78 100644 --- a/queries/chatito/indents.scm +++ b/runtime/queries/chatito/indents.scm diff --git a/queries/brightscript/injections.scm b/runtime/queries/chatito/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/brightscript/injections.scm +++ b/runtime/queries/chatito/injections.scm diff --git a/queries/chatito/locals.scm b/runtime/queries/chatito/locals.scm index 827447f57..827447f57 100644 --- a/queries/chatito/locals.scm +++ b/runtime/queries/chatito/locals.scm diff --git a/queries/circom/folds.scm b/runtime/queries/circom/folds.scm index 47525b174..47525b174 100644 --- a/queries/circom/folds.scm +++ b/runtime/queries/circom/folds.scm diff --git a/queries/circom/highlights.scm b/runtime/queries/circom/highlights.scm index c61925e7a..c61925e7a 100644 --- a/queries/circom/highlights.scm +++ b/runtime/queries/circom/highlights.scm diff --git a/queries/c_sharp/injections.scm b/runtime/queries/circom/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/c_sharp/injections.scm +++ b/runtime/queries/circom/injections.scm diff --git a/queries/circom/locals.scm b/runtime/queries/circom/locals.scm index 4c3a75152..4c3a75152 100644 --- a/queries/circom/locals.scm +++ b/runtime/queries/circom/locals.scm diff --git a/queries/clojure/folds.scm b/runtime/queries/clojure/folds.scm index eceb69712..eceb69712 100644 --- a/queries/clojure/folds.scm +++ b/runtime/queries/clojure/folds.scm diff --git a/queries/clojure/highlights.scm b/runtime/queries/clojure/highlights.scm index 264276634..264276634 100644 --- a/queries/clojure/highlights.scm +++ b/runtime/queries/clojure/highlights.scm diff --git a/queries/caddy/injections.scm b/runtime/queries/clojure/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/caddy/injections.scm +++ b/runtime/queries/clojure/injections.scm diff --git a/queries/clojure/locals.scm b/runtime/queries/clojure/locals.scm index e47adce45..e47adce45 100644 --- a/queries/clojure/locals.scm +++ b/runtime/queries/clojure/locals.scm diff --git a/queries/cmake/folds.scm b/runtime/queries/cmake/folds.scm index ef153b911..ef153b911 100644 --- a/queries/cmake/folds.scm +++ b/runtime/queries/cmake/folds.scm diff --git a/queries/cmake/highlights.scm b/runtime/queries/cmake/highlights.scm index fbbf0d542..fbbf0d542 100644 --- a/queries/cmake/highlights.scm +++ b/runtime/queries/cmake/highlights.scm diff --git a/queries/cmake/indents.scm b/runtime/queries/cmake/indents.scm index cbd976c7a..cbd976c7a 100644 --- a/queries/cmake/indents.scm +++ b/runtime/queries/cmake/indents.scm diff --git a/queries/cmake/injections.scm b/runtime/queries/cmake/injections.scm index eb8e21503..eb8e21503 100644 --- a/queries/cmake/injections.scm +++ b/runtime/queries/cmake/injections.scm diff --git a/queries/comment/highlights.scm b/runtime/queries/comment/highlights.scm index 5d18b790a..5d18b790a 100644 --- a/queries/comment/highlights.scm +++ b/runtime/queries/comment/highlights.scm diff --git a/queries/commonlisp/folds.scm b/runtime/queries/commonlisp/folds.scm index eceb69712..eceb69712 100644 --- a/queries/commonlisp/folds.scm +++ b/runtime/queries/commonlisp/folds.scm diff --git a/queries/commonlisp/highlights.scm b/runtime/queries/commonlisp/highlights.scm index 7236c84de..7236c84de 100644 --- a/queries/commonlisp/highlights.scm +++ b/runtime/queries/commonlisp/highlights.scm diff --git a/queries/commonlisp/injections.scm b/runtime/queries/commonlisp/injections.scm index dc8982053..dc8982053 100644 --- a/queries/commonlisp/injections.scm +++ b/runtime/queries/commonlisp/injections.scm diff --git a/queries/commonlisp/locals.scm b/runtime/queries/commonlisp/locals.scm index 98036d322..98036d322 100644 --- a/queries/commonlisp/locals.scm +++ b/runtime/queries/commonlisp/locals.scm diff --git a/queries/cooklang/highlights.scm b/runtime/queries/cooklang/highlights.scm index 4ac391899..4ac391899 100644 --- a/queries/cooklang/highlights.scm +++ b/runtime/queries/cooklang/highlights.scm diff --git a/queries/capnp/injections.scm b/runtime/queries/cooklang/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/capnp/injections.scm +++ b/runtime/queries/cooklang/injections.scm diff --git a/queries/corn/folds.scm b/runtime/queries/corn/folds.scm index 2ce5ddb31..2ce5ddb31 100644 --- a/queries/corn/folds.scm +++ b/runtime/queries/corn/folds.scm diff --git a/queries/corn/highlights.scm b/runtime/queries/corn/highlights.scm index 8f394ed79..8f394ed79 100644 --- a/queries/corn/highlights.scm +++ b/runtime/queries/corn/highlights.scm diff --git a/queries/corn/indents.scm b/runtime/queries/corn/indents.scm index f1f5e04da..f1f5e04da 100644 --- a/queries/corn/indents.scm +++ b/runtime/queries/corn/indents.scm diff --git a/queries/chatito/injections.scm b/runtime/queries/corn/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/chatito/injections.scm +++ b/runtime/queries/corn/injections.scm diff --git a/queries/corn/locals.scm b/runtime/queries/corn/locals.scm index 7e78c4d23..7e78c4d23 100644 --- a/queries/corn/locals.scm +++ b/runtime/queries/corn/locals.scm diff --git a/queries/cpon/folds.scm b/runtime/queries/cpon/folds.scm index 02feec4e1..02feec4e1 100644 --- a/queries/cpon/folds.scm +++ b/runtime/queries/cpon/folds.scm diff --git a/queries/cpon/highlights.scm b/runtime/queries/cpon/highlights.scm index 9cc438ea5..9cc438ea5 100644 --- a/queries/cpon/highlights.scm +++ b/runtime/queries/cpon/highlights.scm diff --git a/queries/cpon/indents.scm b/runtime/queries/cpon/indents.scm index 8ec2ff57c..8ec2ff57c 100644 --- a/queries/cpon/indents.scm +++ b/runtime/queries/cpon/indents.scm diff --git a/queries/circom/injections.scm b/runtime/queries/cpon/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/circom/injections.scm +++ b/runtime/queries/cpon/injections.scm diff --git a/queries/cpon/locals.scm b/runtime/queries/cpon/locals.scm index 2a4ba4712..2a4ba4712 100644 --- a/queries/cpon/locals.scm +++ b/runtime/queries/cpon/locals.scm diff --git a/queries/cpp/folds.scm b/runtime/queries/cpp/folds.scm index f5f566480..f5f566480 100644 --- a/queries/cpp/folds.scm +++ b/runtime/queries/cpp/folds.scm diff --git a/queries/cpp/highlights.scm b/runtime/queries/cpp/highlights.scm index 85ff2dc40..85ff2dc40 100644 --- a/queries/cpp/highlights.scm +++ b/runtime/queries/cpp/highlights.scm diff --git a/queries/cpp/indents.scm b/runtime/queries/cpp/indents.scm index 0782d226e..0782d226e 100644 --- a/queries/cpp/indents.scm +++ b/runtime/queries/cpp/indents.scm diff --git a/queries/cpp/injections.scm b/runtime/queries/cpp/injections.scm index 07f21dd14..1fbc8e131 100644 --- a/queries/cpp/injections.scm +++ b/runtime/queries/cpp/injections.scm @@ -1,6 +1,4 @@ ; inherits: c -((comment) @injection.content - (#set! injection.language "comment")) ((comment) @injection.content (#lua-match? @injection.content "/[*\/][!*\/]<?[^a-zA-Z]") diff --git a/queries/cpp/locals.scm b/runtime/queries/cpp/locals.scm index b24ada85f..b24ada85f 100644 --- a/queries/cpp/locals.scm +++ b/runtime/queries/cpp/locals.scm diff --git a/queries/css/folds.scm b/runtime/queries/css/folds.scm index 60d69a917..60d69a917 100644 --- a/queries/css/folds.scm +++ b/runtime/queries/css/folds.scm diff --git a/queries/css/highlights.scm b/runtime/queries/css/highlights.scm index 49471fdb2..49471fdb2 100644 --- a/queries/css/highlights.scm +++ b/runtime/queries/css/highlights.scm diff --git a/queries/css/indents.scm b/runtime/queries/css/indents.scm index 75e4a63a9..75e4a63a9 100644 --- a/queries/css/indents.scm +++ b/runtime/queries/css/indents.scm diff --git a/queries/clojure/injections.scm b/runtime/queries/css/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/clojure/injections.scm +++ b/runtime/queries/css/injections.scm diff --git a/queries/csv/highlights.scm b/runtime/queries/csv/highlights.scm index de2213aa1..de2213aa1 100644 --- a/queries/csv/highlights.scm +++ b/runtime/queries/csv/highlights.scm diff --git a/queries/cuda/folds.scm b/runtime/queries/cuda/folds.scm index b617fdc56..b617fdc56 100644 --- a/queries/cuda/folds.scm +++ b/runtime/queries/cuda/folds.scm diff --git a/queries/cuda/highlights.scm b/runtime/queries/cuda/highlights.scm index 6605c5a72..6605c5a72 100644 --- a/queries/cuda/highlights.scm +++ b/runtime/queries/cuda/highlights.scm diff --git a/queries/cuda/indents.scm b/runtime/queries/cuda/indents.scm index b617fdc56..b617fdc56 100644 --- a/queries/cuda/indents.scm +++ b/runtime/queries/cuda/indents.scm diff --git a/queries/cuda/injections.scm b/runtime/queries/cuda/injections.scm index b617fdc56..b617fdc56 100644 --- a/queries/cuda/injections.scm +++ b/runtime/queries/cuda/injections.scm diff --git a/queries/cuda/locals.scm b/runtime/queries/cuda/locals.scm index b617fdc56..b617fdc56 100644 --- a/queries/cuda/locals.scm +++ b/runtime/queries/cuda/locals.scm diff --git a/queries/cue/folds.scm b/runtime/queries/cue/folds.scm index 934b59e6f..934b59e6f 100644 --- a/queries/cue/folds.scm +++ b/runtime/queries/cue/folds.scm diff --git a/queries/cue/highlights.scm b/runtime/queries/cue/highlights.scm index 27d4daddc..27d4daddc 100644 --- a/queries/cue/highlights.scm +++ b/runtime/queries/cue/highlights.scm diff --git a/queries/cue/indents.scm b/runtime/queries/cue/indents.scm index cef2345cc..cef2345cc 100644 --- a/queries/cue/indents.scm +++ b/runtime/queries/cue/indents.scm diff --git a/queries/cooklang/injections.scm b/runtime/queries/cue/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/cooklang/injections.scm +++ b/runtime/queries/cue/injections.scm diff --git a/queries/cue/locals.scm b/runtime/queries/cue/locals.scm index b2a8972f7..b2a8972f7 100644 --- a/queries/cue/locals.scm +++ b/runtime/queries/cue/locals.scm diff --git a/queries/cylc/folds.scm b/runtime/queries/cylc/folds.scm index c8bd40703..c8bd40703 100644 --- a/queries/cylc/folds.scm +++ b/runtime/queries/cylc/folds.scm diff --git a/queries/cylc/highlights.scm b/runtime/queries/cylc/highlights.scm index a744caa52..a744caa52 100644 --- a/queries/cylc/highlights.scm +++ b/runtime/queries/cylc/highlights.scm diff --git a/queries/cylc/indents.scm b/runtime/queries/cylc/indents.scm index 0457e4580..0457e4580 100644 --- a/queries/cylc/indents.scm +++ b/runtime/queries/cylc/indents.scm diff --git a/queries/cylc/injections.scm b/runtime/queries/cylc/injections.scm index 41becd699..41becd699 100644 --- a/queries/cylc/injections.scm +++ b/runtime/queries/cylc/injections.scm diff --git a/queries/d/folds.scm b/runtime/queries/d/folds.scm index 49d6256f6..49d6256f6 100644 --- a/queries/d/folds.scm +++ b/runtime/queries/d/folds.scm diff --git a/queries/d/highlights.scm b/runtime/queries/d/highlights.scm index 11d08a1b7..11d08a1b7 100644 --- a/queries/d/highlights.scm +++ b/runtime/queries/d/highlights.scm diff --git a/queries/d/indents.scm b/runtime/queries/d/indents.scm index c89b4e91d..c89b4e91d 100644 --- a/queries/d/indents.scm +++ b/runtime/queries/d/indents.scm diff --git a/queries/d/injections.scm b/runtime/queries/d/injections.scm index cfc1bf986..cfc1bf986 100644 --- a/queries/d/injections.scm +++ b/runtime/queries/d/injections.scm diff --git a/queries/d/locals.scm b/runtime/queries/d/locals.scm index 2cd7b9e89..2cd7b9e89 100644 --- a/queries/d/locals.scm +++ b/runtime/queries/d/locals.scm diff --git a/queries/dart/folds.scm b/runtime/queries/dart/folds.scm index fc75ac219..fc75ac219 100644 --- a/queries/dart/folds.scm +++ b/runtime/queries/dart/folds.scm diff --git a/queries/dart/highlights.scm b/runtime/queries/dart/highlights.scm index 072a10d26..072a10d26 100644 --- a/queries/dart/highlights.scm +++ b/runtime/queries/dart/highlights.scm diff --git a/queries/dart/indents.scm b/runtime/queries/dart/indents.scm index 03d9464bc..03d9464bc 100644 --- a/queries/dart/indents.scm +++ b/runtime/queries/dart/indents.scm diff --git a/queries/corn/injections.scm b/runtime/queries/dart/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/corn/injections.scm +++ b/runtime/queries/dart/injections.scm diff --git a/queries/dart/locals.scm b/runtime/queries/dart/locals.scm index 3e3beb58e..3e3beb58e 100644 --- a/queries/dart/locals.scm +++ b/runtime/queries/dart/locals.scm diff --git a/queries/desktop/folds.scm b/runtime/queries/desktop/folds.scm index 624ca8a86..624ca8a86 100644 --- a/queries/desktop/folds.scm +++ b/runtime/queries/desktop/folds.scm diff --git a/queries/desktop/highlights.scm b/runtime/queries/desktop/highlights.scm index 7a5ebf241..7a5ebf241 100644 --- a/queries/desktop/highlights.scm +++ b/runtime/queries/desktop/highlights.scm diff --git a/queries/desktop/injections.scm b/runtime/queries/desktop/injections.scm index 1666a0430..1666a0430 100644 --- a/queries/desktop/injections.scm +++ b/runtime/queries/desktop/injections.scm diff --git a/queries/devicetree/folds.scm b/runtime/queries/devicetree/folds.scm index 206c4bed8..206c4bed8 100644 --- a/queries/devicetree/folds.scm +++ b/runtime/queries/devicetree/folds.scm diff --git a/queries/devicetree/highlights.scm b/runtime/queries/devicetree/highlights.scm index 74ec89af1..74ec89af1 100644 --- a/queries/devicetree/highlights.scm +++ b/runtime/queries/devicetree/highlights.scm diff --git a/queries/devicetree/indents.scm b/runtime/queries/devicetree/indents.scm index 9740060ca..9740060ca 100644 --- a/queries/devicetree/indents.scm +++ b/runtime/queries/devicetree/indents.scm diff --git a/queries/cpon/injections.scm b/runtime/queries/devicetree/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/cpon/injections.scm +++ b/runtime/queries/devicetree/injections.scm diff --git a/queries/devicetree/locals.scm b/runtime/queries/devicetree/locals.scm index e33a81dfd..e33a81dfd 100644 --- a/queries/devicetree/locals.scm +++ b/runtime/queries/devicetree/locals.scm diff --git a/queries/dhall/folds.scm b/runtime/queries/dhall/folds.scm index bc92797b4..bc92797b4 100644 --- a/queries/dhall/folds.scm +++ b/runtime/queries/dhall/folds.scm diff --git a/queries/dhall/highlights.scm b/runtime/queries/dhall/highlights.scm index d7a5d0006..d7a5d0006 100644 --- a/queries/dhall/highlights.scm +++ b/runtime/queries/dhall/highlights.scm diff --git a/queries/dhall/injections.scm b/runtime/queries/dhall/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/dhall/injections.scm +++ b/runtime/queries/dhall/injections.scm diff --git a/queries/diff/folds.scm b/runtime/queries/diff/folds.scm index 3560abb3e..3560abb3e 100644 --- a/queries/diff/folds.scm +++ b/runtime/queries/diff/folds.scm diff --git a/queries/diff/highlights.scm b/runtime/queries/diff/highlights.scm index 54c57a807..54c57a807 100644 --- a/queries/diff/highlights.scm +++ b/runtime/queries/diff/highlights.scm diff --git a/queries/css/injections.scm b/runtime/queries/diff/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/css/injections.scm +++ b/runtime/queries/diff/injections.scm diff --git a/queries/disassembly/highlights.scm b/runtime/queries/disassembly/highlights.scm index b1ece9ab6..b1ece9ab6 100644 --- a/queries/disassembly/highlights.scm +++ b/runtime/queries/disassembly/highlights.scm diff --git a/queries/disassembly/injections.scm b/runtime/queries/disassembly/injections.scm index 9fb52dafe..9fb52dafe 100644 --- a/queries/disassembly/injections.scm +++ b/runtime/queries/disassembly/injections.scm diff --git a/queries/djot/folds.scm b/runtime/queries/djot/folds.scm index 94f3724eb..94f3724eb 100644 --- a/queries/djot/folds.scm +++ b/runtime/queries/djot/folds.scm diff --git a/queries/djot/highlights.scm b/runtime/queries/djot/highlights.scm index 73dd66057..73dd66057 100644 --- a/queries/djot/highlights.scm +++ b/runtime/queries/djot/highlights.scm diff --git a/queries/djot/indents.scm b/runtime/queries/djot/indents.scm index 3b1a56ebd..3b1a56ebd 100644 --- a/queries/djot/indents.scm +++ b/runtime/queries/djot/indents.scm diff --git a/queries/djot/injections.scm b/runtime/queries/djot/injections.scm index 0e4141046..0e4141046 100644 --- a/queries/djot/injections.scm +++ b/runtime/queries/djot/injections.scm diff --git a/queries/djot/locals.scm b/runtime/queries/djot/locals.scm index 1ac27529f..1ac27529f 100644 --- a/queries/djot/locals.scm +++ b/runtime/queries/djot/locals.scm diff --git a/queries/dockerfile/highlights.scm b/runtime/queries/dockerfile/highlights.scm index 72893f8b0..72893f8b0 100644 --- a/queries/dockerfile/highlights.scm +++ b/runtime/queries/dockerfile/highlights.scm diff --git a/queries/dockerfile/injections.scm b/runtime/queries/dockerfile/injections.scm index 5d3bbffb7..5d3bbffb7 100644 --- a/queries/dockerfile/injections.scm +++ b/runtime/queries/dockerfile/injections.scm diff --git a/queries/dot/highlights.scm b/runtime/queries/dot/highlights.scm index 75ad92271..75ad92271 100644 --- a/queries/dot/highlights.scm +++ b/runtime/queries/dot/highlights.scm diff --git a/queries/dot/indents.scm b/runtime/queries/dot/indents.scm index a951e5511..a951e5511 100644 --- a/queries/dot/indents.scm +++ b/runtime/queries/dot/indents.scm diff --git a/queries/dot/injections.scm b/runtime/queries/dot/injections.scm index 4fe39a8ba..4fe39a8ba 100644 --- a/queries/dot/injections.scm +++ b/runtime/queries/dot/injections.scm diff --git a/queries/doxygen/highlights.scm b/runtime/queries/doxygen/highlights.scm index 454500d64..454500d64 100644 --- a/queries/doxygen/highlights.scm +++ b/runtime/queries/doxygen/highlights.scm diff --git a/queries/doxygen/indents.scm b/runtime/queries/doxygen/indents.scm index ef30f1e76..ef30f1e76 100644 --- a/queries/doxygen/indents.scm +++ b/runtime/queries/doxygen/indents.scm diff --git a/queries/doxygen/injections.scm b/runtime/queries/doxygen/injections.scm index 994f535ad..994f535ad 100644 --- a/queries/doxygen/injections.scm +++ b/runtime/queries/doxygen/injections.scm diff --git a/queries/dtd/folds.scm b/runtime/queries/dtd/folds.scm index b1bce4ffb..b1bce4ffb 100644 --- a/queries/dtd/folds.scm +++ b/runtime/queries/dtd/folds.scm diff --git a/queries/dtd/highlights.scm b/runtime/queries/dtd/highlights.scm index 9afd6e38b..9afd6e38b 100644 --- a/queries/dtd/highlights.scm +++ b/runtime/queries/dtd/highlights.scm diff --git a/queries/dtd/injections.scm b/runtime/queries/dtd/injections.scm index 57fae5832..57fae5832 100644 --- a/queries/dtd/injections.scm +++ b/runtime/queries/dtd/injections.scm diff --git a/queries/dtd/locals.scm b/runtime/queries/dtd/locals.scm index 88246c04a..88246c04a 100644 --- a/queries/dtd/locals.scm +++ b/runtime/queries/dtd/locals.scm diff --git a/queries/earthfile/highlights.scm b/runtime/queries/earthfile/highlights.scm index cc7dce298..cc7dce298 100644 --- a/queries/earthfile/highlights.scm +++ b/runtime/queries/earthfile/highlights.scm diff --git a/queries/earthfile/injections.scm b/runtime/queries/earthfile/injections.scm index 7435a400e..7435a400e 100644 --- a/queries/earthfile/injections.scm +++ b/runtime/queries/earthfile/injections.scm diff --git a/queries/ebnf/highlights.scm b/runtime/queries/ebnf/highlights.scm index 4254d04dd..4254d04dd 100644 --- a/queries/ebnf/highlights.scm +++ b/runtime/queries/ebnf/highlights.scm diff --git a/queries/cue/injections.scm b/runtime/queries/ebnf/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/cue/injections.scm +++ b/runtime/queries/ebnf/injections.scm diff --git a/queries/ecma/folds.scm b/runtime/queries/ecma/folds.scm index a348f3444..a348f3444 100644 --- a/queries/ecma/folds.scm +++ b/runtime/queries/ecma/folds.scm diff --git a/queries/ecma/highlights.scm b/runtime/queries/ecma/highlights.scm index cec2f4e3e..cec2f4e3e 100644 --- a/queries/ecma/highlights.scm +++ b/runtime/queries/ecma/highlights.scm diff --git a/queries/ecma/indents.scm b/runtime/queries/ecma/indents.scm index d56741670..d56741670 100644 --- a/queries/ecma/indents.scm +++ b/runtime/queries/ecma/indents.scm diff --git a/queries/ecma/injections.scm b/runtime/queries/ecma/injections.scm index 04abafcde..04abafcde 100644 --- a/queries/ecma/injections.scm +++ b/runtime/queries/ecma/injections.scm diff --git a/queries/ecma/locals.scm b/runtime/queries/ecma/locals.scm index 24ea7c0a8..24ea7c0a8 100644 --- a/queries/ecma/locals.scm +++ b/runtime/queries/ecma/locals.scm diff --git a/queries/editorconfig/folds.scm b/runtime/queries/editorconfig/folds.scm index 911798f5a..911798f5a 100644 --- a/queries/editorconfig/folds.scm +++ b/runtime/queries/editorconfig/folds.scm diff --git a/queries/editorconfig/highlights.scm b/runtime/queries/editorconfig/highlights.scm index feb0a524c..feb0a524c 100644 --- a/queries/editorconfig/highlights.scm +++ b/runtime/queries/editorconfig/highlights.scm diff --git a/queries/dart/injections.scm b/runtime/queries/editorconfig/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/dart/injections.scm +++ b/runtime/queries/editorconfig/injections.scm diff --git a/queries/eds/folds.scm b/runtime/queries/eds/folds.scm index 911798f5a..911798f5a 100644 --- a/queries/eds/folds.scm +++ b/runtime/queries/eds/folds.scm diff --git a/queries/eds/highlights.scm b/runtime/queries/eds/highlights.scm index 0e008c979..0e008c979 100644 --- a/queries/eds/highlights.scm +++ b/runtime/queries/eds/highlights.scm diff --git a/queries/eex/highlights.scm b/runtime/queries/eex/highlights.scm index d032a7486..d032a7486 100644 --- a/queries/eex/highlights.scm +++ b/runtime/queries/eex/highlights.scm diff --git a/queries/eex/injections.scm b/runtime/queries/eex/injections.scm index f13d3c14e..f13d3c14e 100644 --- a/queries/eex/injections.scm +++ b/runtime/queries/eex/injections.scm diff --git a/queries/elixir/folds.scm b/runtime/queries/elixir/folds.scm index 7abfe6797..7abfe6797 100644 --- a/queries/elixir/folds.scm +++ b/runtime/queries/elixir/folds.scm diff --git a/queries/elixir/highlights.scm b/runtime/queries/elixir/highlights.scm index cbdb40de5..cbdb40de5 100644 --- a/queries/elixir/highlights.scm +++ b/runtime/queries/elixir/highlights.scm diff --git a/queries/elixir/indents.scm b/runtime/queries/elixir/indents.scm index 5470b6422..5470b6422 100644 --- a/queries/elixir/indents.scm +++ b/runtime/queries/elixir/indents.scm diff --git a/queries/elixir/injections.scm b/runtime/queries/elixir/injections.scm index f70fd984c..f70fd984c 100644 --- a/queries/elixir/injections.scm +++ b/runtime/queries/elixir/injections.scm diff --git a/queries/elixir/locals.scm b/runtime/queries/elixir/locals.scm index ac9d86e36..ac9d86e36 100644 --- a/queries/elixir/locals.scm +++ b/runtime/queries/elixir/locals.scm diff --git a/queries/elm/folds.scm b/runtime/queries/elm/folds.scm index 56987d9f9..56987d9f9 100644 --- a/queries/elm/folds.scm +++ b/runtime/queries/elm/folds.scm diff --git a/queries/elm/highlights.scm b/runtime/queries/elm/highlights.scm index cfa09caf1..cfa09caf1 100644 --- a/queries/elm/highlights.scm +++ b/runtime/queries/elm/highlights.scm diff --git a/queries/elm/injections.scm b/runtime/queries/elm/injections.scm index 7ee6c7f03..7ee6c7f03 100644 --- a/queries/elm/injections.scm +++ b/runtime/queries/elm/injections.scm diff --git a/queries/elsa/folds.scm b/runtime/queries/elsa/folds.scm index afdfec308..afdfec308 100644 --- a/queries/elsa/folds.scm +++ b/runtime/queries/elsa/folds.scm diff --git a/queries/elsa/highlights.scm b/runtime/queries/elsa/highlights.scm index 1a974bda6..1a974bda6 100644 --- a/queries/elsa/highlights.scm +++ b/runtime/queries/elsa/highlights.scm diff --git a/queries/elsa/indents.scm b/runtime/queries/elsa/indents.scm index 6ddd1aa64..6ddd1aa64 100644 --- a/queries/elsa/indents.scm +++ b/runtime/queries/elsa/indents.scm diff --git a/queries/devicetree/injections.scm b/runtime/queries/elsa/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/devicetree/injections.scm +++ b/runtime/queries/elsa/injections.scm diff --git a/queries/elsa/locals.scm b/runtime/queries/elsa/locals.scm index 3e8197ae7..3e8197ae7 100644 --- a/queries/elsa/locals.scm +++ b/runtime/queries/elsa/locals.scm diff --git a/queries/elvish/highlights.scm b/runtime/queries/elvish/highlights.scm index 9836a6c78..9836a6c78 100644 --- a/queries/elvish/highlights.scm +++ b/runtime/queries/elvish/highlights.scm diff --git a/queries/diff/injections.scm b/runtime/queries/elvish/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/diff/injections.scm +++ b/runtime/queries/elvish/injections.scm diff --git a/queries/embedded_template/highlights.scm b/runtime/queries/embedded_template/highlights.scm index 410983d65..410983d65 100644 --- a/queries/embedded_template/highlights.scm +++ b/runtime/queries/embedded_template/highlights.scm diff --git a/queries/embedded_template/injections.scm b/runtime/queries/embedded_template/injections.scm index cdeb2cd4f..cdeb2cd4f 100644 --- a/queries/embedded_template/injections.scm +++ b/runtime/queries/embedded_template/injections.scm diff --git a/queries/enforce/folds.scm b/runtime/queries/enforce/folds.scm index dd2b8622a..dd2b8622a 100644 --- a/queries/enforce/folds.scm +++ b/runtime/queries/enforce/folds.scm diff --git a/queries/enforce/highlights.scm b/runtime/queries/enforce/highlights.scm index aa8fb9b3e..aa8fb9b3e 100644 --- a/queries/enforce/highlights.scm +++ b/runtime/queries/enforce/highlights.scm diff --git a/queries/enforce/indents.scm b/runtime/queries/enforce/indents.scm index b1dc79b2e..b1dc79b2e 100644 --- a/queries/enforce/indents.scm +++ b/runtime/queries/enforce/indents.scm diff --git a/queries/enforce/injections.scm b/runtime/queries/enforce/injections.scm index 9231a4429..9231a4429 100644 --- a/queries/enforce/injections.scm +++ b/runtime/queries/enforce/injections.scm diff --git a/queries/enforce/locals.scm b/runtime/queries/enforce/locals.scm index 9f62f9d96..9f62f9d96 100644 --- a/queries/enforce/locals.scm +++ b/runtime/queries/enforce/locals.scm diff --git a/queries/erlang/folds.scm b/runtime/queries/erlang/folds.scm index 65c2d8ed1..65c2d8ed1 100644 --- a/queries/erlang/folds.scm +++ b/runtime/queries/erlang/folds.scm diff --git a/queries/erlang/highlights.scm b/runtime/queries/erlang/highlights.scm index 8bba348d9..8bba348d9 100644 --- a/queries/erlang/highlights.scm +++ b/runtime/queries/erlang/highlights.scm diff --git a/queries/ebnf/injections.scm b/runtime/queries/erlang/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/ebnf/injections.scm +++ b/runtime/queries/erlang/injections.scm diff --git a/queries/facility/folds.scm b/runtime/queries/facility/folds.scm index 7d8bafc80..7d8bafc80 100644 --- a/queries/facility/folds.scm +++ b/runtime/queries/facility/folds.scm diff --git a/queries/facility/highlights.scm b/runtime/queries/facility/highlights.scm index 592bf5311..592bf5311 100644 --- a/queries/facility/highlights.scm +++ b/runtime/queries/facility/highlights.scm diff --git a/queries/facility/indents.scm b/runtime/queries/facility/indents.scm index 247949ba1..247949ba1 100644 --- a/queries/facility/indents.scm +++ b/runtime/queries/facility/indents.scm diff --git a/queries/facility/injections.scm b/runtime/queries/facility/injections.scm index 5d9b7836f..5d9b7836f 100644 --- a/queries/facility/injections.scm +++ b/runtime/queries/facility/injections.scm diff --git a/queries/faust/highlights.scm b/runtime/queries/faust/highlights.scm index 6e7ef1d92..6e7ef1d92 100644 --- a/queries/faust/highlights.scm +++ b/runtime/queries/faust/highlights.scm diff --git a/queries/editorconfig/injections.scm b/runtime/queries/faust/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/editorconfig/injections.scm +++ b/runtime/queries/faust/injections.scm diff --git a/queries/fennel/folds.scm b/runtime/queries/fennel/folds.scm index 0862e5926..0862e5926 100644 --- a/queries/fennel/folds.scm +++ b/runtime/queries/fennel/folds.scm diff --git a/queries/fennel/highlights.scm b/runtime/queries/fennel/highlights.scm index 2f0b5f738..2f0b5f738 100644 --- a/queries/fennel/highlights.scm +++ b/runtime/queries/fennel/highlights.scm diff --git a/queries/fennel/injections.scm b/runtime/queries/fennel/injections.scm index f6724d328..f6724d328 100644 --- a/queries/fennel/injections.scm +++ b/runtime/queries/fennel/injections.scm diff --git a/queries/fennel/locals.scm b/runtime/queries/fennel/locals.scm index be63e728f..be63e728f 100644 --- a/queries/fennel/locals.scm +++ b/runtime/queries/fennel/locals.scm diff --git a/queries/fidl/folds.scm b/runtime/queries/fidl/folds.scm index f524c455b..f524c455b 100644 --- a/queries/fidl/folds.scm +++ b/runtime/queries/fidl/folds.scm diff --git a/queries/fidl/highlights.scm b/runtime/queries/fidl/highlights.scm index f1960c612..f1960c612 100644 --- a/queries/fidl/highlights.scm +++ b/runtime/queries/fidl/highlights.scm diff --git a/queries/elsa/injections.scm b/runtime/queries/fidl/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/elsa/injections.scm +++ b/runtime/queries/fidl/injections.scm diff --git a/queries/firrtl/folds.scm b/runtime/queries/firrtl/folds.scm index 4c64e644f..4c64e644f 100644 --- a/queries/firrtl/folds.scm +++ b/runtime/queries/firrtl/folds.scm diff --git a/queries/firrtl/highlights.scm b/runtime/queries/firrtl/highlights.scm index 0a90fa55b..0a90fa55b 100644 --- a/queries/firrtl/highlights.scm +++ b/runtime/queries/firrtl/highlights.scm diff --git a/queries/firrtl/indents.scm b/runtime/queries/firrtl/indents.scm index e172e1e81..e172e1e81 100644 --- a/queries/firrtl/indents.scm +++ b/runtime/queries/firrtl/indents.scm diff --git a/queries/elvish/injections.scm b/runtime/queries/firrtl/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/elvish/injections.scm +++ b/runtime/queries/firrtl/injections.scm diff --git a/queries/firrtl/locals.scm b/runtime/queries/firrtl/locals.scm index 97b7931bf..97b7931bf 100644 --- a/queries/firrtl/locals.scm +++ b/runtime/queries/firrtl/locals.scm diff --git a/queries/fish/folds.scm b/runtime/queries/fish/folds.scm index 06363e15e..06363e15e 100644 --- a/queries/fish/folds.scm +++ b/runtime/queries/fish/folds.scm diff --git a/queries/fish/highlights.scm b/runtime/queries/fish/highlights.scm index a7c451175..a7c451175 100644 --- a/queries/fish/highlights.scm +++ b/runtime/queries/fish/highlights.scm diff --git a/queries/fish/indents.scm b/runtime/queries/fish/indents.scm index 4984c4cb2..4984c4cb2 100644 --- a/queries/fish/indents.scm +++ b/runtime/queries/fish/indents.scm diff --git a/queries/erlang/injections.scm b/runtime/queries/fish/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/erlang/injections.scm +++ b/runtime/queries/fish/injections.scm diff --git a/queries/fish/locals.scm b/runtime/queries/fish/locals.scm index 904d568f9..904d568f9 100644 --- a/queries/fish/locals.scm +++ b/runtime/queries/fish/locals.scm diff --git a/queries/foam/folds.scm b/runtime/queries/foam/folds.scm index e05d0dbaa..e05d0dbaa 100644 --- a/queries/foam/folds.scm +++ b/runtime/queries/foam/folds.scm diff --git a/queries/foam/highlights.scm b/runtime/queries/foam/highlights.scm index 9c96f196e..9c96f196e 100644 --- a/queries/foam/highlights.scm +++ b/runtime/queries/foam/highlights.scm diff --git a/queries/foam/indents.scm b/runtime/queries/foam/indents.scm index be02b80ed..be02b80ed 100644 --- a/queries/foam/indents.scm +++ b/runtime/queries/foam/indents.scm diff --git a/queries/foam/injections.scm b/runtime/queries/foam/injections.scm index b9f8f838f..b9f8f838f 100644 --- a/queries/foam/injections.scm +++ b/runtime/queries/foam/injections.scm diff --git a/queries/foam/locals.scm b/runtime/queries/foam/locals.scm index f3f689081..f3f689081 100644 --- a/queries/foam/locals.scm +++ b/runtime/queries/foam/locals.scm diff --git a/queries/forth/folds.scm b/runtime/queries/forth/folds.scm index 443abb30d..443abb30d 100644 --- a/queries/forth/folds.scm +++ b/runtime/queries/forth/folds.scm diff --git a/queries/forth/highlights.scm b/runtime/queries/forth/highlights.scm index 1e7207597..1e7207597 100644 --- a/queries/forth/highlights.scm +++ b/runtime/queries/forth/highlights.scm diff --git a/queries/forth/indents.scm b/runtime/queries/forth/indents.scm index 067755433..067755433 100644 --- a/queries/forth/indents.scm +++ b/runtime/queries/forth/indents.scm diff --git a/queries/faust/injections.scm b/runtime/queries/forth/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/faust/injections.scm +++ b/runtime/queries/forth/injections.scm diff --git a/queries/forth/locals.scm b/runtime/queries/forth/locals.scm index d91d3aa98..d91d3aa98 100644 --- a/queries/forth/locals.scm +++ b/runtime/queries/forth/locals.scm diff --git a/queries/fortran/folds.scm b/runtime/queries/fortran/folds.scm index cedbdb635..cedbdb635 100644 --- a/queries/fortran/folds.scm +++ b/runtime/queries/fortran/folds.scm diff --git a/queries/fortran/highlights.scm b/runtime/queries/fortran/highlights.scm index 6a6dbba35..6a6dbba35 100644 --- a/queries/fortran/highlights.scm +++ b/runtime/queries/fortran/highlights.scm diff --git a/queries/fortran/indents.scm b/runtime/queries/fortran/indents.scm index 86704c4f4..86704c4f4 100644 --- a/queries/fortran/indents.scm +++ b/runtime/queries/fortran/indents.scm diff --git a/queries/fidl/injections.scm b/runtime/queries/fortran/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/fidl/injections.scm +++ b/runtime/queries/fortran/injections.scm diff --git a/queries/fsh/highlights.scm b/runtime/queries/fsh/highlights.scm index 2354a2037..2354a2037 100644 --- a/queries/fsh/highlights.scm +++ b/runtime/queries/fsh/highlights.scm diff --git a/queries/fsh/injections.scm b/runtime/queries/fsh/injections.scm index 7bf6d006a..7bf6d006a 100644 --- a/queries/fsh/injections.scm +++ b/runtime/queries/fsh/injections.scm diff --git a/queries/fsharp/highlights.scm b/runtime/queries/fsharp/highlights.scm index e400e3522..e400e3522 100644 --- a/queries/fsharp/highlights.scm +++ b/runtime/queries/fsharp/highlights.scm diff --git a/queries/fsharp/injections.scm b/runtime/queries/fsharp/injections.scm index 211b263f3..211b263f3 100644 --- a/queries/fsharp/injections.scm +++ b/runtime/queries/fsharp/injections.scm diff --git a/queries/func/highlights.scm b/runtime/queries/func/highlights.scm index 9fd6dd82d..9fd6dd82d 100644 --- a/queries/func/highlights.scm +++ b/runtime/queries/func/highlights.scm diff --git a/queries/firrtl/injections.scm b/runtime/queries/func/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/firrtl/injections.scm +++ b/runtime/queries/func/injections.scm diff --git a/queries/fusion/folds.scm b/runtime/queries/fusion/folds.scm index 179fc160b..179fc160b 100644 --- a/queries/fusion/folds.scm +++ b/runtime/queries/fusion/folds.scm diff --git a/queries/fusion/highlights.scm b/runtime/queries/fusion/highlights.scm index 7108e5705..7108e5705 100644 --- a/queries/fusion/highlights.scm +++ b/runtime/queries/fusion/highlights.scm diff --git a/queries/fusion/indents.scm b/runtime/queries/fusion/indents.scm index 0ba6cf758..0ba6cf758 100644 --- a/queries/fusion/indents.scm +++ b/runtime/queries/fusion/indents.scm diff --git a/queries/fusion/injections.scm b/runtime/queries/fusion/injections.scm index 085cdb458..085cdb458 100644 --- a/queries/fusion/injections.scm +++ b/runtime/queries/fusion/injections.scm diff --git a/queries/fusion/locals.scm b/runtime/queries/fusion/locals.scm index d23e0ab46..d23e0ab46 100644 --- a/queries/fusion/locals.scm +++ b/runtime/queries/fusion/locals.scm diff --git a/queries/gap/folds.scm b/runtime/queries/gap/folds.scm index 7cf0888b6..7cf0888b6 100644 --- a/queries/gap/folds.scm +++ b/runtime/queries/gap/folds.scm diff --git a/queries/gap/highlights.scm b/runtime/queries/gap/highlights.scm index 6c0c856c5..6c0c856c5 100644 --- a/queries/gap/highlights.scm +++ b/runtime/queries/gap/highlights.scm diff --git a/queries/fish/injections.scm b/runtime/queries/gap/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/fish/injections.scm +++ b/runtime/queries/gap/injections.scm diff --git a/queries/gap/locals.scm b/runtime/queries/gap/locals.scm index d695d1f2d..d695d1f2d 100644 --- a/queries/gap/locals.scm +++ b/runtime/queries/gap/locals.scm diff --git a/queries/gaptst/folds.scm b/runtime/queries/gaptst/folds.scm index 0ec72d135..0ec72d135 100644 --- a/queries/gaptst/folds.scm +++ b/runtime/queries/gaptst/folds.scm diff --git a/queries/gaptst/highlights.scm b/runtime/queries/gaptst/highlights.scm index 22ab2d0a0..22ab2d0a0 100644 --- a/queries/gaptst/highlights.scm +++ b/runtime/queries/gaptst/highlights.scm diff --git a/queries/gaptst/injections.scm b/runtime/queries/gaptst/injections.scm index bdcba35dc..bdcba35dc 100644 --- a/queries/gaptst/injections.scm +++ b/runtime/queries/gaptst/injections.scm diff --git a/queries/gdscript/folds.scm b/runtime/queries/gdscript/folds.scm index cda709077..cda709077 100644 --- a/queries/gdscript/folds.scm +++ b/runtime/queries/gdscript/folds.scm diff --git a/queries/gdscript/highlights.scm b/runtime/queries/gdscript/highlights.scm index cea9093c0..cea9093c0 100644 --- a/queries/gdscript/highlights.scm +++ b/runtime/queries/gdscript/highlights.scm diff --git a/queries/gdscript/indents.scm b/runtime/queries/gdscript/indents.scm index 36b989f93..36b989f93 100644 --- a/queries/gdscript/indents.scm +++ b/runtime/queries/gdscript/indents.scm diff --git a/queries/forth/injections.scm b/runtime/queries/gdscript/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/forth/injections.scm +++ b/runtime/queries/gdscript/injections.scm diff --git a/queries/gdscript/locals.scm b/runtime/queries/gdscript/locals.scm index 62166e6f0..62166e6f0 100644 --- a/queries/gdscript/locals.scm +++ b/runtime/queries/gdscript/locals.scm diff --git a/queries/gdshader/highlights.scm b/runtime/queries/gdshader/highlights.scm index c93fd4721..c93fd4721 100644 --- a/queries/gdshader/highlights.scm +++ b/runtime/queries/gdshader/highlights.scm diff --git a/queries/fortran/injections.scm b/runtime/queries/gdshader/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/fortran/injections.scm +++ b/runtime/queries/gdshader/injections.scm diff --git a/queries/git_config/folds.scm b/runtime/queries/git_config/folds.scm index cb376d5b5..cb376d5b5 100644 --- a/queries/git_config/folds.scm +++ b/runtime/queries/git_config/folds.scm diff --git a/queries/git_config/highlights.scm b/runtime/queries/git_config/highlights.scm index 6b37e9090..6b37e9090 100644 --- a/queries/git_config/highlights.scm +++ b/runtime/queries/git_config/highlights.scm diff --git a/queries/git_config/injections.scm b/runtime/queries/git_config/injections.scm index 7bda6979c..7bda6979c 100644 --- a/queries/git_config/injections.scm +++ b/runtime/queries/git_config/injections.scm diff --git a/queries/git_rebase/highlights.scm b/runtime/queries/git_rebase/highlights.scm index 248366e24..248366e24 100644 --- a/queries/git_rebase/highlights.scm +++ b/runtime/queries/git_rebase/highlights.scm diff --git a/queries/git_rebase/injections.scm b/runtime/queries/git_rebase/injections.scm index c831594bd..c831594bd 100644 --- a/queries/git_rebase/injections.scm +++ b/runtime/queries/git_rebase/injections.scm diff --git a/queries/gitattributes/highlights.scm b/runtime/queries/gitattributes/highlights.scm index aec7750f6..aec7750f6 100644 --- a/queries/gitattributes/highlights.scm +++ b/runtime/queries/gitattributes/highlights.scm diff --git a/queries/func/injections.scm b/runtime/queries/gitattributes/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/func/injections.scm +++ b/runtime/queries/gitattributes/injections.scm diff --git a/queries/gitattributes/locals.scm b/runtime/queries/gitattributes/locals.scm index 2471b8bc6..2471b8bc6 100644 --- a/queries/gitattributes/locals.scm +++ b/runtime/queries/gitattributes/locals.scm diff --git a/queries/gitcommit/highlights.scm b/runtime/queries/gitcommit/highlights.scm index b096056cc..b096056cc 100644 --- a/queries/gitcommit/highlights.scm +++ b/runtime/queries/gitcommit/highlights.scm diff --git a/queries/gitcommit/injections.scm b/runtime/queries/gitcommit/injections.scm index 5613d7e8e..5613d7e8e 100644 --- a/queries/gitcommit/injections.scm +++ b/runtime/queries/gitcommit/injections.scm diff --git a/queries/gitignore/highlights.scm b/runtime/queries/gitignore/highlights.scm index aafbe541e..aafbe541e 100644 --- a/queries/gitignore/highlights.scm +++ b/runtime/queries/gitignore/highlights.scm diff --git a/queries/gap/injections.scm b/runtime/queries/gitignore/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gap/injections.scm +++ b/runtime/queries/gitignore/injections.scm diff --git a/queries/gleam/folds.scm b/runtime/queries/gleam/folds.scm index b4cd225e7..b4cd225e7 100644 --- a/queries/gleam/folds.scm +++ b/runtime/queries/gleam/folds.scm diff --git a/queries/gleam/highlights.scm b/runtime/queries/gleam/highlights.scm index f80bda240..f80bda240 100644 --- a/queries/gleam/highlights.scm +++ b/runtime/queries/gleam/highlights.scm diff --git a/queries/gleam/indents.scm b/runtime/queries/gleam/indents.scm index 3a44ea4c0..3a44ea4c0 100644 --- a/queries/gleam/indents.scm +++ b/runtime/queries/gleam/indents.scm diff --git a/queries/gleam/injections.scm b/runtime/queries/gleam/injections.scm index 11d4f5d55..11d4f5d55 100644 --- a/queries/gleam/injections.scm +++ b/runtime/queries/gleam/injections.scm diff --git a/queries/gleam/locals.scm b/runtime/queries/gleam/locals.scm index 0058b660e..0058b660e 100644 --- a/queries/gleam/locals.scm +++ b/runtime/queries/gleam/locals.scm diff --git a/queries/glimmer/folds.scm b/runtime/queries/glimmer/folds.scm index 6502455d8..6502455d8 100644 --- a/queries/glimmer/folds.scm +++ b/runtime/queries/glimmer/folds.scm diff --git a/queries/glimmer/highlights.scm b/runtime/queries/glimmer/highlights.scm index 9f11468d4..9f11468d4 100644 --- a/queries/glimmer/highlights.scm +++ b/runtime/queries/glimmer/highlights.scm diff --git a/queries/glimmer/indents.scm b/runtime/queries/glimmer/indents.scm index c1ef130c0..c1ef130c0 100644 --- a/queries/glimmer/indents.scm +++ b/runtime/queries/glimmer/indents.scm diff --git a/queries/glimmer/injections.scm b/runtime/queries/glimmer/injections.scm index 30b438682..30b438682 100644 --- a/queries/glimmer/injections.scm +++ b/runtime/queries/glimmer/injections.scm diff --git a/queries/glimmer/locals.scm b/runtime/queries/glimmer/locals.scm index 8fde3a297..8fde3a297 100644 --- a/queries/glimmer/locals.scm +++ b/runtime/queries/glimmer/locals.scm diff --git a/queries/glimmer_javascript/highlights.scm b/runtime/queries/glimmer_javascript/highlights.scm index 5bec5b149..5bec5b149 100644 --- a/queries/glimmer_javascript/highlights.scm +++ b/runtime/queries/glimmer_javascript/highlights.scm diff --git a/queries/glimmer_javascript/indents.scm b/runtime/queries/glimmer_javascript/indents.scm index 2bf2b7801..2bf2b7801 100644 --- a/queries/glimmer_javascript/indents.scm +++ b/runtime/queries/glimmer_javascript/indents.scm diff --git a/queries/glimmer_javascript/injections.scm b/runtime/queries/glimmer_javascript/injections.scm index 174372a48..174372a48 100644 --- a/queries/glimmer_javascript/injections.scm +++ b/runtime/queries/glimmer_javascript/injections.scm diff --git a/queries/glimmer_javascript/locals.scm b/runtime/queries/glimmer_javascript/locals.scm index 04328f099..04328f099 100644 --- a/queries/glimmer_javascript/locals.scm +++ b/runtime/queries/glimmer_javascript/locals.scm diff --git a/queries/glimmer_typescript/highlights.scm b/runtime/queries/glimmer_typescript/highlights.scm index 042387b21..042387b21 100644 --- a/queries/glimmer_typescript/highlights.scm +++ b/runtime/queries/glimmer_typescript/highlights.scm diff --git a/queries/glimmer_typescript/indents.scm b/runtime/queries/glimmer_typescript/indents.scm index 237254d4c..237254d4c 100644 --- a/queries/glimmer_typescript/indents.scm +++ b/runtime/queries/glimmer_typescript/indents.scm diff --git a/queries/glimmer_typescript/injections.scm b/runtime/queries/glimmer_typescript/injections.scm index 4c79d635a..4c79d635a 100644 --- a/queries/glimmer_typescript/injections.scm +++ b/runtime/queries/glimmer_typescript/injections.scm diff --git a/queries/glsl/folds.scm b/runtime/queries/glsl/folds.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/glsl/folds.scm +++ b/runtime/queries/glsl/folds.scm diff --git a/queries/glsl/highlights.scm b/runtime/queries/glsl/highlights.scm index d4583f0ea..d4583f0ea 100644 --- a/queries/glsl/highlights.scm +++ b/runtime/queries/glsl/highlights.scm diff --git a/queries/glsl/indents.scm b/runtime/queries/glsl/indents.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/glsl/indents.scm +++ b/runtime/queries/glsl/indents.scm diff --git a/queries/glsl/injections.scm b/runtime/queries/glsl/injections.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/glsl/injections.scm +++ b/runtime/queries/glsl/injections.scm diff --git a/queries/glsl/locals.scm b/runtime/queries/glsl/locals.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/glsl/locals.scm +++ b/runtime/queries/glsl/locals.scm diff --git a/queries/gn/folds.scm b/runtime/queries/gn/folds.scm index 352b0f0ec..352b0f0ec 100644 --- a/queries/gn/folds.scm +++ b/runtime/queries/gn/folds.scm diff --git a/queries/gn/highlights.scm b/runtime/queries/gn/highlights.scm index 7bd97ff38..7bd97ff38 100644 --- a/queries/gn/highlights.scm +++ b/runtime/queries/gn/highlights.scm diff --git a/queries/gn/indents.scm b/runtime/queries/gn/indents.scm index 82f44711d..82f44711d 100644 --- a/queries/gn/indents.scm +++ b/runtime/queries/gn/indents.scm diff --git a/queries/gdscript/injections.scm b/runtime/queries/gn/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gdscript/injections.scm +++ b/runtime/queries/gn/injections.scm diff --git a/queries/gn/locals.scm b/runtime/queries/gn/locals.scm index eecb3426a..eecb3426a 100644 --- a/queries/gn/locals.scm +++ b/runtime/queries/gn/locals.scm diff --git a/queries/gnuplot/highlights.scm b/runtime/queries/gnuplot/highlights.scm index 884c7263d..884c7263d 100644 --- a/queries/gnuplot/highlights.scm +++ b/runtime/queries/gnuplot/highlights.scm diff --git a/queries/gdshader/injections.scm b/runtime/queries/gnuplot/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gdshader/injections.scm +++ b/runtime/queries/gnuplot/injections.scm diff --git a/queries/go/folds.scm b/runtime/queries/go/folds.scm index 44b452de5..44b452de5 100644 --- a/queries/go/folds.scm +++ b/runtime/queries/go/folds.scm diff --git a/queries/go/highlights.scm b/runtime/queries/go/highlights.scm index 7675cb790..7675cb790 100644 --- a/queries/go/highlights.scm +++ b/runtime/queries/go/highlights.scm diff --git a/queries/go/indents.scm b/runtime/queries/go/indents.scm index 28edfe973..28edfe973 100644 --- a/queries/go/indents.scm +++ b/runtime/queries/go/indents.scm diff --git a/queries/go/injections.scm b/runtime/queries/go/injections.scm index 4e914a3ec..4e914a3ec 100644 --- a/queries/go/injections.scm +++ b/runtime/queries/go/injections.scm diff --git a/queries/go/locals.scm b/runtime/queries/go/locals.scm index 608c45826..608c45826 100644 --- a/queries/go/locals.scm +++ b/runtime/queries/go/locals.scm diff --git a/queries/goctl/folds.scm b/runtime/queries/goctl/folds.scm index 704928675..704928675 100644 --- a/queries/goctl/folds.scm +++ b/runtime/queries/goctl/folds.scm diff --git a/queries/goctl/highlights.scm b/runtime/queries/goctl/highlights.scm index a4b809a1c..a4b809a1c 100644 --- a/queries/goctl/highlights.scm +++ b/runtime/queries/goctl/highlights.scm diff --git a/queries/goctl/indents.scm b/runtime/queries/goctl/indents.scm index ffa126905..ffa126905 100644 --- a/queries/goctl/indents.scm +++ b/runtime/queries/goctl/indents.scm diff --git a/queries/goctl/injections.scm b/runtime/queries/goctl/injections.scm index a53abee57..a53abee57 100644 --- a/queries/goctl/injections.scm +++ b/runtime/queries/goctl/injections.scm diff --git a/queries/godot_resource/folds.scm b/runtime/queries/godot_resource/folds.scm index 911798f5a..911798f5a 100644 --- a/queries/godot_resource/folds.scm +++ b/runtime/queries/godot_resource/folds.scm diff --git a/queries/godot_resource/highlights.scm b/runtime/queries/godot_resource/highlights.scm index 15cbadd10..15cbadd10 100644 --- a/queries/godot_resource/highlights.scm +++ b/runtime/queries/godot_resource/highlights.scm diff --git a/queries/gitattributes/injections.scm b/runtime/queries/godot_resource/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gitattributes/injections.scm +++ b/runtime/queries/godot_resource/injections.scm diff --git a/queries/godot_resource/locals.scm b/runtime/queries/godot_resource/locals.scm index b946a5eec..b946a5eec 100644 --- a/queries/godot_resource/locals.scm +++ b/runtime/queries/godot_resource/locals.scm diff --git a/queries/gomod/highlights.scm b/runtime/queries/gomod/highlights.scm index b30be0944..b30be0944 100644 --- a/queries/gomod/highlights.scm +++ b/runtime/queries/gomod/highlights.scm diff --git a/queries/gitignore/injections.scm b/runtime/queries/gomod/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gitignore/injections.scm +++ b/runtime/queries/gomod/injections.scm diff --git a/queries/gosum/highlights.scm b/runtime/queries/gosum/highlights.scm index f20c5f176..f20c5f176 100644 --- a/queries/gosum/highlights.scm +++ b/runtime/queries/gosum/highlights.scm diff --git a/queries/gotmpl/folds.scm b/runtime/queries/gotmpl/folds.scm index f3a22e90c..f3a22e90c 100644 --- a/queries/gotmpl/folds.scm +++ b/runtime/queries/gotmpl/folds.scm diff --git a/queries/gotmpl/highlights.scm b/runtime/queries/gotmpl/highlights.scm index 4ee768c28..4ee768c28 100644 --- a/queries/gotmpl/highlights.scm +++ b/runtime/queries/gotmpl/highlights.scm diff --git a/queries/gotmpl/injections.scm b/runtime/queries/gotmpl/injections.scm index 3cfc26361..3cfc26361 100644 --- a/queries/gotmpl/injections.scm +++ b/runtime/queries/gotmpl/injections.scm diff --git a/queries/gotmpl/locals.scm b/runtime/queries/gotmpl/locals.scm index 528e9fabb..528e9fabb 100644 --- a/queries/gotmpl/locals.scm +++ b/runtime/queries/gotmpl/locals.scm diff --git a/queries/gowork/highlights.scm b/runtime/queries/gowork/highlights.scm index bca9a5f80..bca9a5f80 100644 --- a/queries/gowork/highlights.scm +++ b/runtime/queries/gowork/highlights.scm diff --git a/queries/gn/injections.scm b/runtime/queries/gowork/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gn/injections.scm +++ b/runtime/queries/gowork/injections.scm diff --git a/queries/gpg/highlights.scm b/runtime/queries/gpg/highlights.scm index f02834429..f02834429 100644 --- a/queries/gpg/highlights.scm +++ b/runtime/queries/gpg/highlights.scm diff --git a/queries/gnuplot/injections.scm b/runtime/queries/gpg/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gnuplot/injections.scm +++ b/runtime/queries/gpg/injections.scm diff --git a/queries/graphql/highlights.scm b/runtime/queries/graphql/highlights.scm index c1ee501c4..c1ee501c4 100644 --- a/queries/graphql/highlights.scm +++ b/runtime/queries/graphql/highlights.scm diff --git a/queries/graphql/indents.scm b/runtime/queries/graphql/indents.scm index fcffeb822..fcffeb822 100644 --- a/queries/graphql/indents.scm +++ b/runtime/queries/graphql/indents.scm diff --git a/queries/godot_resource/injections.scm b/runtime/queries/graphql/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/godot_resource/injections.scm +++ b/runtime/queries/graphql/injections.scm diff --git a/queries/gren/highlights.scm b/runtime/queries/gren/highlights.scm index 030cf7fad..030cf7fad 100644 --- a/queries/gren/highlights.scm +++ b/runtime/queries/gren/highlights.scm diff --git a/queries/gren/injections.scm b/runtime/queries/gren/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/gren/injections.scm +++ b/runtime/queries/gren/injections.scm diff --git a/queries/groovy/folds.scm b/runtime/queries/groovy/folds.scm index 354861a61..354861a61 100644 --- a/queries/groovy/folds.scm +++ b/runtime/queries/groovy/folds.scm diff --git a/queries/groovy/highlights.scm b/runtime/queries/groovy/highlights.scm index 4504e16e2..4504e16e2 100644 --- a/queries/groovy/highlights.scm +++ b/runtime/queries/groovy/highlights.scm diff --git a/queries/groovy/indents.scm b/runtime/queries/groovy/indents.scm index ba3a2e844..ba3a2e844 100644 --- a/queries/groovy/indents.scm +++ b/runtime/queries/groovy/indents.scm diff --git a/queries/groovy/injections.scm b/runtime/queries/groovy/injections.scm index 1c04c65fb..1c04c65fb 100644 --- a/queries/groovy/injections.scm +++ b/runtime/queries/groovy/injections.scm diff --git a/queries/groovy/locals.scm b/runtime/queries/groovy/locals.scm index 23cb5f0cb..23cb5f0cb 100644 --- a/queries/groovy/locals.scm +++ b/runtime/queries/groovy/locals.scm diff --git a/queries/gstlaunch/highlights.scm b/runtime/queries/gstlaunch/highlights.scm index 90729f876..90729f876 100644 --- a/queries/gstlaunch/highlights.scm +++ b/runtime/queries/gstlaunch/highlights.scm diff --git a/queries/hack/highlights.scm b/runtime/queries/hack/highlights.scm index bb9d2a55c..bb9d2a55c 100644 --- a/queries/hack/highlights.scm +++ b/runtime/queries/hack/highlights.scm diff --git a/queries/hack/injections.scm b/runtime/queries/hack/injections.scm index 655c29ec5..655c29ec5 100644 --- a/queries/hack/injections.scm +++ b/runtime/queries/hack/injections.scm diff --git a/queries/hare/folds.scm b/runtime/queries/hare/folds.scm index 58b10bfdc..58b10bfdc 100644 --- a/queries/hare/folds.scm +++ b/runtime/queries/hare/folds.scm diff --git a/queries/hare/highlights.scm b/runtime/queries/hare/highlights.scm index deaecd283..deaecd283 100644 --- a/queries/hare/highlights.scm +++ b/runtime/queries/hare/highlights.scm diff --git a/queries/hare/indents.scm b/runtime/queries/hare/indents.scm index 9e41ea6d0..9e41ea6d0 100644 --- a/queries/hare/indents.scm +++ b/runtime/queries/hare/indents.scm diff --git a/queries/hare/injections.scm b/runtime/queries/hare/injections.scm index 88a3f1cdd..88a3f1cdd 100644 --- a/queries/hare/injections.scm +++ b/runtime/queries/hare/injections.scm diff --git a/queries/hare/locals.scm b/runtime/queries/hare/locals.scm index 12a214bf7..12a214bf7 100644 --- a/queries/hare/locals.scm +++ b/runtime/queries/hare/locals.scm diff --git a/queries/haskell/folds.scm b/runtime/queries/haskell/folds.scm index d7b820c9f..d7b820c9f 100644 --- a/queries/haskell/folds.scm +++ b/runtime/queries/haskell/folds.scm diff --git a/queries/haskell/highlights.scm b/runtime/queries/haskell/highlights.scm index 0880f020e..0880f020e 100644 --- a/queries/haskell/highlights.scm +++ b/runtime/queries/haskell/highlights.scm diff --git a/queries/haskell/injections.scm b/runtime/queries/haskell/injections.scm index a82addbce..a82addbce 100644 --- a/queries/haskell/injections.scm +++ b/runtime/queries/haskell/injections.scm diff --git a/queries/haskell/locals.scm b/runtime/queries/haskell/locals.scm index 7177f9dee..7177f9dee 100644 --- a/queries/haskell/locals.scm +++ b/runtime/queries/haskell/locals.scm diff --git a/queries/haskell_persistent/folds.scm b/runtime/queries/haskell_persistent/folds.scm index dd34d9f15..dd34d9f15 100644 --- a/queries/haskell_persistent/folds.scm +++ b/runtime/queries/haskell_persistent/folds.scm diff --git a/queries/haskell_persistent/highlights.scm b/runtime/queries/haskell_persistent/highlights.scm index 22cbf5cb3..22cbf5cb3 100644 --- a/queries/haskell_persistent/highlights.scm +++ b/runtime/queries/haskell_persistent/highlights.scm diff --git a/queries/hcl/folds.scm b/runtime/queries/hcl/folds.scm index e0c5313a2..e0c5313a2 100644 --- a/queries/hcl/folds.scm +++ b/runtime/queries/hcl/folds.scm diff --git a/queries/hcl/highlights.scm b/runtime/queries/hcl/highlights.scm index 4fb7d1fca..4fb7d1fca 100644 --- a/queries/hcl/highlights.scm +++ b/runtime/queries/hcl/highlights.scm diff --git a/queries/hcl/indents.scm b/runtime/queries/hcl/indents.scm index 1d7dc49d9..1d7dc49d9 100644 --- a/queries/hcl/indents.scm +++ b/runtime/queries/hcl/indents.scm diff --git a/queries/hcl/injections.scm b/runtime/queries/hcl/injections.scm index b68f4caea..b68f4caea 100644 --- a/queries/hcl/injections.scm +++ b/runtime/queries/hcl/injections.scm diff --git a/queries/heex/folds.scm b/runtime/queries/heex/folds.scm index 88d4f17ff..88d4f17ff 100644 --- a/queries/heex/folds.scm +++ b/runtime/queries/heex/folds.scm diff --git a/queries/heex/highlights.scm b/runtime/queries/heex/highlights.scm index e2fb01880..e2fb01880 100644 --- a/queries/heex/highlights.scm +++ b/runtime/queries/heex/highlights.scm diff --git a/queries/heex/indents.scm b/runtime/queries/heex/indents.scm index 82a2f8912..82a2f8912 100644 --- a/queries/heex/indents.scm +++ b/runtime/queries/heex/indents.scm diff --git a/queries/heex/injections.scm b/runtime/queries/heex/injections.scm index 4f179ee80..4f179ee80 100644 --- a/queries/heex/injections.scm +++ b/runtime/queries/heex/injections.scm diff --git a/queries/heex/locals.scm b/runtime/queries/heex/locals.scm index cfa239e5f..cfa239e5f 100644 --- a/queries/heex/locals.scm +++ b/runtime/queries/heex/locals.scm diff --git a/queries/helm/folds.scm b/runtime/queries/helm/folds.scm index 6ffb4b7d4..6ffb4b7d4 100644 --- a/queries/helm/folds.scm +++ b/runtime/queries/helm/folds.scm diff --git a/queries/helm/highlights.scm b/runtime/queries/helm/highlights.scm index e9d221bee..e9d221bee 100644 --- a/queries/helm/highlights.scm +++ b/runtime/queries/helm/highlights.scm diff --git a/queries/helm/injections.scm b/runtime/queries/helm/injections.scm index 2adf8743a..2adf8743a 100644 --- a/queries/helm/injections.scm +++ b/runtime/queries/helm/injections.scm diff --git a/queries/helm/locals.scm b/runtime/queries/helm/locals.scm index 6ffb4b7d4..6ffb4b7d4 100644 --- a/queries/helm/locals.scm +++ b/runtime/queries/helm/locals.scm diff --git a/queries/hjson/folds.scm b/runtime/queries/hjson/folds.scm index 41269219e..41269219e 100644 --- a/queries/hjson/folds.scm +++ b/runtime/queries/hjson/folds.scm diff --git a/queries/hjson/highlights.scm b/runtime/queries/hjson/highlights.scm index 8333d8fe5..8333d8fe5 100644 --- a/queries/hjson/highlights.scm +++ b/runtime/queries/hjson/highlights.scm diff --git a/queries/hjson/indents.scm b/runtime/queries/hjson/indents.scm index 3b01ca999..3b01ca999 100644 --- a/queries/hjson/indents.scm +++ b/runtime/queries/hjson/indents.scm diff --git a/queries/gomod/injections.scm b/runtime/queries/hjson/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gomod/injections.scm +++ b/runtime/queries/hjson/injections.scm diff --git a/queries/hjson/locals.scm b/runtime/queries/hjson/locals.scm index 41269219e..41269219e 100644 --- a/queries/hjson/locals.scm +++ b/runtime/queries/hjson/locals.scm diff --git a/queries/hlsl/folds.scm b/runtime/queries/hlsl/folds.scm index b617fdc56..b617fdc56 100644 --- a/queries/hlsl/folds.scm +++ b/runtime/queries/hlsl/folds.scm diff --git a/queries/hlsl/highlights.scm b/runtime/queries/hlsl/highlights.scm index 839d8d79a..839d8d79a 100644 --- a/queries/hlsl/highlights.scm +++ b/runtime/queries/hlsl/highlights.scm diff --git a/queries/hlsl/indents.scm b/runtime/queries/hlsl/indents.scm index b617fdc56..b617fdc56 100644 --- a/queries/hlsl/indents.scm +++ b/runtime/queries/hlsl/indents.scm diff --git a/queries/hlsl/injections.scm b/runtime/queries/hlsl/injections.scm index b617fdc56..b617fdc56 100644 --- a/queries/hlsl/injections.scm +++ b/runtime/queries/hlsl/injections.scm diff --git a/queries/hlsl/locals.scm b/runtime/queries/hlsl/locals.scm index b617fdc56..b617fdc56 100644 --- a/queries/hlsl/locals.scm +++ b/runtime/queries/hlsl/locals.scm diff --git a/queries/hlsplaylist/highlights.scm b/runtime/queries/hlsplaylist/highlights.scm index 9852aed6d..9852aed6d 100644 --- a/queries/hlsplaylist/highlights.scm +++ b/runtime/queries/hlsplaylist/highlights.scm diff --git a/queries/gowork/injections.scm b/runtime/queries/hlsplaylist/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gowork/injections.scm +++ b/runtime/queries/hlsplaylist/injections.scm diff --git a/queries/hocon/folds.scm b/runtime/queries/hocon/folds.scm index cc8a231a4..cc8a231a4 100644 --- a/queries/hocon/folds.scm +++ b/runtime/queries/hocon/folds.scm diff --git a/queries/hocon/highlights.scm b/runtime/queries/hocon/highlights.scm index 0eb94e6dd..0eb94e6dd 100644 --- a/queries/hocon/highlights.scm +++ b/runtime/queries/hocon/highlights.scm diff --git a/queries/gpg/injections.scm b/runtime/queries/hocon/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/gpg/injections.scm +++ b/runtime/queries/hocon/injections.scm diff --git a/queries/hoon/folds.scm b/runtime/queries/hoon/folds.scm index cfb4b6d0c..cfb4b6d0c 100644 --- a/queries/hoon/folds.scm +++ b/runtime/queries/hoon/folds.scm diff --git a/queries/hoon/highlights.scm b/runtime/queries/hoon/highlights.scm index 90ac87217..90ac87217 100644 --- a/queries/hoon/highlights.scm +++ b/runtime/queries/hoon/highlights.scm diff --git a/queries/hoon/injections.scm b/runtime/queries/hoon/injections.scm index a004ba0b4..a004ba0b4 100644 --- a/queries/hoon/injections.scm +++ b/runtime/queries/hoon/injections.scm diff --git a/queries/hoon/locals.scm b/runtime/queries/hoon/locals.scm index fd7cc026d..fd7cc026d 100644 --- a/queries/hoon/locals.scm +++ b/runtime/queries/hoon/locals.scm diff --git a/queries/html/folds.scm b/runtime/queries/html/folds.scm index 69b57eac5..69b57eac5 100644 --- a/queries/html/folds.scm +++ b/runtime/queries/html/folds.scm diff --git a/queries/html/highlights.scm b/runtime/queries/html/highlights.scm index 4e2371d64..4e2371d64 100644 --- a/queries/html/highlights.scm +++ b/runtime/queries/html/highlights.scm diff --git a/queries/html/indents.scm b/runtime/queries/html/indents.scm index 448e94275..448e94275 100644 --- a/queries/html/indents.scm +++ b/runtime/queries/html/indents.scm diff --git a/queries/html/injections.scm b/runtime/queries/html/injections.scm index adb067d15..adb067d15 100644 --- a/queries/html/injections.scm +++ b/runtime/queries/html/injections.scm diff --git a/queries/html/locals.scm b/runtime/queries/html/locals.scm index 4e3325db8..4e3325db8 100644 --- a/queries/html/locals.scm +++ b/runtime/queries/html/locals.scm diff --git a/queries/html_tags/highlights.scm b/runtime/queries/html_tags/highlights.scm index 9eaf813be..9eaf813be 100644 --- a/queries/html_tags/highlights.scm +++ b/runtime/queries/html_tags/highlights.scm diff --git a/queries/html_tags/indents.scm b/runtime/queries/html_tags/indents.scm index dc57c333a..dc57c333a 100644 --- a/queries/html_tags/indents.scm +++ b/runtime/queries/html_tags/indents.scm diff --git a/queries/html_tags/injections.scm b/runtime/queries/html_tags/injections.scm index 5b78e37b4..5b78e37b4 100644 --- a/queries/html_tags/injections.scm +++ b/runtime/queries/html_tags/injections.scm diff --git a/queries/htmldjango/folds.scm b/runtime/queries/htmldjango/folds.scm index 5e8f17c78..5e8f17c78 100644 --- a/queries/htmldjango/folds.scm +++ b/runtime/queries/htmldjango/folds.scm diff --git a/queries/htmldjango/highlights.scm b/runtime/queries/htmldjango/highlights.scm index 3992b826d..3992b826d 100644 --- a/queries/htmldjango/highlights.scm +++ b/runtime/queries/htmldjango/highlights.scm diff --git a/queries/htmldjango/indents.scm b/runtime/queries/htmldjango/indents.scm index d671f045d..d671f045d 100644 --- a/queries/htmldjango/indents.scm +++ b/runtime/queries/htmldjango/indents.scm diff --git a/queries/htmldjango/injections.scm b/runtime/queries/htmldjango/injections.scm index 2d3bdb6cd..2d3bdb6cd 100644 --- a/queries/htmldjango/injections.scm +++ b/runtime/queries/htmldjango/injections.scm diff --git a/queries/http/folds.scm b/runtime/queries/http/folds.scm index f7108a551..f7108a551 100644 --- a/queries/http/folds.scm +++ b/runtime/queries/http/folds.scm diff --git a/queries/http/highlights.scm b/runtime/queries/http/highlights.scm index 1ac243729..1ac243729 100644 --- a/queries/http/highlights.scm +++ b/runtime/queries/http/highlights.scm diff --git a/queries/http/injections.scm b/runtime/queries/http/injections.scm index f0e086580..f0e086580 100644 --- a/queries/http/injections.scm +++ b/runtime/queries/http/injections.scm diff --git a/queries/hurl/folds.scm b/runtime/queries/hurl/folds.scm index a0edfa930..a0edfa930 100644 --- a/queries/hurl/folds.scm +++ b/runtime/queries/hurl/folds.scm diff --git a/queries/hurl/highlights.scm b/runtime/queries/hurl/highlights.scm index 70b220985..70b220985 100644 --- a/queries/hurl/highlights.scm +++ b/runtime/queries/hurl/highlights.scm diff --git a/queries/hurl/indents.scm b/runtime/queries/hurl/indents.scm index af6fdfa4e..af6fdfa4e 100644 --- a/queries/hurl/indents.scm +++ b/runtime/queries/hurl/indents.scm diff --git a/queries/hurl/injections.scm b/runtime/queries/hurl/injections.scm index 41abb387b..41abb387b 100644 --- a/queries/hurl/injections.scm +++ b/runtime/queries/hurl/injections.scm diff --git a/queries/hyprlang/folds.scm b/runtime/queries/hyprlang/folds.scm index 911798f5a..911798f5a 100644 --- a/queries/hyprlang/folds.scm +++ b/runtime/queries/hyprlang/folds.scm diff --git a/queries/hyprlang/highlights.scm b/runtime/queries/hyprlang/highlights.scm index 5e3514125..5e3514125 100644 --- a/queries/hyprlang/highlights.scm +++ b/runtime/queries/hyprlang/highlights.scm diff --git a/queries/hyprlang/indents.scm b/runtime/queries/hyprlang/indents.scm index 731ae9a61..731ae9a61 100644 --- a/queries/hyprlang/indents.scm +++ b/runtime/queries/hyprlang/indents.scm diff --git a/queries/hyprlang/injections.scm b/runtime/queries/hyprlang/injections.scm index c7929e24d..c7929e24d 100644 --- a/queries/hyprlang/injections.scm +++ b/runtime/queries/hyprlang/injections.scm diff --git a/queries/idl/highlights.scm b/runtime/queries/idl/highlights.scm index de1937203..de1937203 100644 --- a/queries/idl/highlights.scm +++ b/runtime/queries/idl/highlights.scm diff --git a/queries/idl/indents.scm b/runtime/queries/idl/indents.scm index 2256fb701..2256fb701 100644 --- a/queries/idl/indents.scm +++ b/runtime/queries/idl/indents.scm diff --git a/queries/idl/injections.scm b/runtime/queries/idl/injections.scm index e4a286e42..e4a286e42 100644 --- a/queries/idl/injections.scm +++ b/runtime/queries/idl/injections.scm diff --git a/queries/idris/folds.scm b/runtime/queries/idris/folds.scm index 2f4885165..2f4885165 100644 --- a/queries/idris/folds.scm +++ b/runtime/queries/idris/folds.scm diff --git a/queries/idris/highlights.scm b/runtime/queries/idris/highlights.scm index d3dfa7a9f..d3dfa7a9f 100644 --- a/queries/idris/highlights.scm +++ b/runtime/queries/idris/highlights.scm diff --git a/queries/graphql/injections.scm b/runtime/queries/idris/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/graphql/injections.scm +++ b/runtime/queries/idris/injections.scm diff --git a/queries/idris/locals.scm b/runtime/queries/idris/locals.scm index c46f831f7..c46f831f7 100644 --- a/queries/idris/locals.scm +++ b/runtime/queries/idris/locals.scm diff --git a/queries/ini/folds.scm b/runtime/queries/ini/folds.scm index 911798f5a..911798f5a 100644 --- a/queries/ini/folds.scm +++ b/runtime/queries/ini/folds.scm diff --git a/queries/ini/highlights.scm b/runtime/queries/ini/highlights.scm index cbf958e84..cbf958e84 100644 --- a/queries/ini/highlights.scm +++ b/runtime/queries/ini/highlights.scm diff --git a/queries/ini/injections.scm b/runtime/queries/ini/injections.scm index 8bfeee22d..8bfeee22d 100644 --- a/queries/ini/injections.scm +++ b/runtime/queries/ini/injections.scm diff --git a/queries/inko/folds.scm b/runtime/queries/inko/folds.scm index 6ec1f5ba4..6ec1f5ba4 100644 --- a/queries/inko/folds.scm +++ b/runtime/queries/inko/folds.scm diff --git a/queries/inko/highlights.scm b/runtime/queries/inko/highlights.scm index 989bdb9e8..989bdb9e8 100644 --- a/queries/inko/highlights.scm +++ b/runtime/queries/inko/highlights.scm diff --git a/queries/inko/indents.scm b/runtime/queries/inko/indents.scm index d2d9a5724..d2d9a5724 100644 --- a/queries/inko/indents.scm +++ b/runtime/queries/inko/indents.scm diff --git a/queries/inko/injections.scm b/runtime/queries/inko/injections.scm index 36849c873..36849c873 100644 --- a/queries/inko/injections.scm +++ b/runtime/queries/inko/injections.scm diff --git a/queries/inko/locals.scm b/runtime/queries/inko/locals.scm index 09450f525..09450f525 100644 --- a/queries/inko/locals.scm +++ b/runtime/queries/inko/locals.scm diff --git a/queries/ipkg/folds.scm b/runtime/queries/ipkg/folds.scm index 271654f9a..271654f9a 100644 --- a/queries/ipkg/folds.scm +++ b/runtime/queries/ipkg/folds.scm diff --git a/queries/ipkg/highlights.scm b/runtime/queries/ipkg/highlights.scm index 13c102018..13c102018 100644 --- a/queries/ipkg/highlights.scm +++ b/runtime/queries/ipkg/highlights.scm diff --git a/queries/ipkg/indents.scm b/runtime/queries/ipkg/indents.scm index a596e9ebe..a596e9ebe 100644 --- a/queries/ipkg/indents.scm +++ b/runtime/queries/ipkg/indents.scm diff --git a/queries/ipkg/injections.scm b/runtime/queries/ipkg/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/ipkg/injections.scm +++ b/runtime/queries/ipkg/injections.scm diff --git a/queries/ipkg/locals.scm b/runtime/queries/ipkg/locals.scm index c1970fcdf..c1970fcdf 100644 --- a/queries/ipkg/locals.scm +++ b/runtime/queries/ipkg/locals.scm diff --git a/queries/ispc/folds.scm b/runtime/queries/ispc/folds.scm index 45d0ba131..45d0ba131 100644 --- a/queries/ispc/folds.scm +++ b/runtime/queries/ispc/folds.scm diff --git a/queries/ispc/highlights.scm b/runtime/queries/ispc/highlights.scm index fd9c7262e..fd9c7262e 100644 --- a/queries/ispc/highlights.scm +++ b/runtime/queries/ispc/highlights.scm diff --git a/queries/ispc/indents.scm b/runtime/queries/ispc/indents.scm index f8c04e3a9..f8c04e3a9 100644 --- a/queries/ispc/indents.scm +++ b/runtime/queries/ispc/indents.scm diff --git a/queries/ispc/injections.scm b/runtime/queries/ispc/injections.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/ispc/injections.scm +++ b/runtime/queries/ispc/injections.scm diff --git a/queries/ispc/locals.scm b/runtime/queries/ispc/locals.scm index 985b3c9e0..985b3c9e0 100644 --- a/queries/ispc/locals.scm +++ b/runtime/queries/ispc/locals.scm diff --git a/queries/janet_simple/folds.scm b/runtime/queries/janet_simple/folds.scm index e316af4d5..e316af4d5 100644 --- a/queries/janet_simple/folds.scm +++ b/runtime/queries/janet_simple/folds.scm diff --git a/queries/janet_simple/highlights.scm b/runtime/queries/janet_simple/highlights.scm index 552f865c6..552f865c6 100644 --- a/queries/janet_simple/highlights.scm +++ b/runtime/queries/janet_simple/highlights.scm diff --git a/queries/hjson/injections.scm b/runtime/queries/janet_simple/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/hjson/injections.scm +++ b/runtime/queries/janet_simple/injections.scm diff --git a/queries/janet_simple/locals.scm b/runtime/queries/janet_simple/locals.scm index e47adce45..e47adce45 100644 --- a/queries/janet_simple/locals.scm +++ b/runtime/queries/janet_simple/locals.scm diff --git a/queries/java/folds.scm b/runtime/queries/java/folds.scm index 2cc143a78..2cc143a78 100644 --- a/queries/java/folds.scm +++ b/runtime/queries/java/folds.scm diff --git a/queries/java/highlights.scm b/runtime/queries/java/highlights.scm index df9ca14d4..df9ca14d4 100644 --- a/queries/java/highlights.scm +++ b/runtime/queries/java/highlights.scm diff --git a/queries/java/indents.scm b/runtime/queries/java/indents.scm index 9e4d0a5e1..9e4d0a5e1 100644 --- a/queries/java/indents.scm +++ b/runtime/queries/java/indents.scm diff --git a/queries/java/injections.scm b/runtime/queries/java/injections.scm index 7728a0956..7728a0956 100644 --- a/queries/java/injections.scm +++ b/runtime/queries/java/injections.scm diff --git a/queries/java/locals.scm b/runtime/queries/java/locals.scm index 53e950908..53e950908 100644 --- a/queries/java/locals.scm +++ b/runtime/queries/java/locals.scm diff --git a/queries/javadoc/highlights.scm b/runtime/queries/javadoc/highlights.scm index 832899cb5..832899cb5 100644 --- a/queries/javadoc/highlights.scm +++ b/runtime/queries/javadoc/highlights.scm diff --git a/queries/javadoc/indents.scm b/runtime/queries/javadoc/indents.scm index ef30f1e76..ef30f1e76 100644 --- a/queries/javadoc/indents.scm +++ b/runtime/queries/javadoc/indents.scm diff --git a/queries/javadoc/injections.scm b/runtime/queries/javadoc/injections.scm index 7668f21bc..7668f21bc 100644 --- a/queries/javadoc/injections.scm +++ b/runtime/queries/javadoc/injections.scm diff --git a/queries/javascript/folds.scm b/runtime/queries/javascript/folds.scm index b6d9b28bf..b6d9b28bf 100644 --- a/queries/javascript/folds.scm +++ b/runtime/queries/javascript/folds.scm diff --git a/queries/javascript/highlights.scm b/runtime/queries/javascript/highlights.scm index 257a731ad..257a731ad 100644 --- a/queries/javascript/highlights.scm +++ b/runtime/queries/javascript/highlights.scm diff --git a/queries/javascript/indents.scm b/runtime/queries/javascript/indents.scm index b6d9b28bf..b6d9b28bf 100644 --- a/queries/javascript/indents.scm +++ b/runtime/queries/javascript/indents.scm diff --git a/queries/javascript/injections.scm b/runtime/queries/javascript/injections.scm index b6d9b28bf..b6d9b28bf 100644 --- a/queries/javascript/injections.scm +++ b/runtime/queries/javascript/injections.scm diff --git a/queries/javascript/locals.scm b/runtime/queries/javascript/locals.scm index 6d6846fc7..6d6846fc7 100644 --- a/queries/javascript/locals.scm +++ b/runtime/queries/javascript/locals.scm diff --git a/queries/jinja/highlights.scm b/runtime/queries/jinja/highlights.scm index cb6f9ff41..cb6f9ff41 100644 --- a/queries/jinja/highlights.scm +++ b/runtime/queries/jinja/highlights.scm diff --git a/queries/jinja/injections.scm b/runtime/queries/jinja/injections.scm index 162db3aee..162db3aee 100644 --- a/queries/jinja/injections.scm +++ b/runtime/queries/jinja/injections.scm diff --git a/queries/jinja_inline/highlights.scm b/runtime/queries/jinja_inline/highlights.scm index 69dba77b3..69dba77b3 100644 --- a/queries/jinja_inline/highlights.scm +++ b/runtime/queries/jinja_inline/highlights.scm diff --git a/queries/hlsplaylist/injections.scm b/runtime/queries/jinja_inline/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/hlsplaylist/injections.scm +++ b/runtime/queries/jinja_inline/injections.scm diff --git a/queries/jq/highlights.scm b/runtime/queries/jq/highlights.scm index 5d6050f4c..5d6050f4c 100644 --- a/queries/jq/highlights.scm +++ b/runtime/queries/jq/highlights.scm diff --git a/queries/jq/injections.scm b/runtime/queries/jq/injections.scm index f8a7a35b0..f8a7a35b0 100644 --- a/queries/jq/injections.scm +++ b/runtime/queries/jq/injections.scm diff --git a/queries/jq/locals.scm b/runtime/queries/jq/locals.scm index 0b8a0997d..0b8a0997d 100644 --- a/queries/jq/locals.scm +++ b/runtime/queries/jq/locals.scm diff --git a/queries/jsdoc/highlights.scm b/runtime/queries/jsdoc/highlights.scm index 6df73318d..6df73318d 100644 --- a/queries/jsdoc/highlights.scm +++ b/runtime/queries/jsdoc/highlights.scm diff --git a/queries/json/folds.scm b/runtime/queries/json/folds.scm index 4c2b9d32e..4c2b9d32e 100644 --- a/queries/json/folds.scm +++ b/runtime/queries/json/folds.scm diff --git a/queries/json/highlights.scm b/runtime/queries/json/highlights.scm index 85915285a..85915285a 100644 --- a/queries/json/highlights.scm +++ b/runtime/queries/json/highlights.scm diff --git a/queries/json/indents.scm b/runtime/queries/json/indents.scm index 8274ee3d5..8274ee3d5 100644 --- a/queries/json/indents.scm +++ b/runtime/queries/json/indents.scm diff --git a/queries/json/locals.scm b/runtime/queries/json/locals.scm index aaeee38ca..aaeee38ca 100644 --- a/queries/json/locals.scm +++ b/runtime/queries/json/locals.scm diff --git a/queries/json5/highlights.scm b/runtime/queries/json5/highlights.scm index 4ffe311c4..4ffe311c4 100644 --- a/queries/json5/highlights.scm +++ b/runtime/queries/json5/highlights.scm diff --git a/queries/hocon/injections.scm b/runtime/queries/json5/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/hocon/injections.scm +++ b/runtime/queries/json5/injections.scm diff --git a/queries/jsonc/folds.scm b/runtime/queries/jsonc/folds.scm index 41269219e..41269219e 100644 --- a/queries/jsonc/folds.scm +++ b/runtime/queries/jsonc/folds.scm diff --git a/queries/jsonc/highlights.scm b/runtime/queries/jsonc/highlights.scm index e50112155..e50112155 100644 --- a/queries/jsonc/highlights.scm +++ b/runtime/queries/jsonc/highlights.scm diff --git a/queries/jsonc/indents.scm b/runtime/queries/jsonc/indents.scm index 3b01ca999..3b01ca999 100644 --- a/queries/jsonc/indents.scm +++ b/runtime/queries/jsonc/indents.scm diff --git a/queries/idris/injections.scm b/runtime/queries/jsonc/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/idris/injections.scm +++ b/runtime/queries/jsonc/injections.scm diff --git a/queries/jsonc/locals.scm b/runtime/queries/jsonc/locals.scm index 41269219e..41269219e 100644 --- a/queries/jsonc/locals.scm +++ b/runtime/queries/jsonc/locals.scm diff --git a/queries/jsonnet/folds.scm b/runtime/queries/jsonnet/folds.scm index 91257a790..91257a790 100644 --- a/queries/jsonnet/folds.scm +++ b/runtime/queries/jsonnet/folds.scm diff --git a/queries/jsonnet/highlights.scm b/runtime/queries/jsonnet/highlights.scm index 1e67baa32..1e67baa32 100644 --- a/queries/jsonnet/highlights.scm +++ b/runtime/queries/jsonnet/highlights.scm diff --git a/queries/janet_simple/injections.scm b/runtime/queries/jsonnet/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/janet_simple/injections.scm +++ b/runtime/queries/jsonnet/injections.scm diff --git a/queries/jsonnet/locals.scm b/runtime/queries/jsonnet/locals.scm index 778077764..778077764 100644 --- a/queries/jsonnet/locals.scm +++ b/runtime/queries/jsonnet/locals.scm diff --git a/queries/jsx/folds.scm b/runtime/queries/jsx/folds.scm index 93c3d9c8c..93c3d9c8c 100644 --- a/queries/jsx/folds.scm +++ b/runtime/queries/jsx/folds.scm diff --git a/queries/jsx/highlights.scm b/runtime/queries/jsx/highlights.scm index 0615d253a..0615d253a 100644 --- a/queries/jsx/highlights.scm +++ b/runtime/queries/jsx/highlights.scm diff --git a/queries/jsx/indents.scm b/runtime/queries/jsx/indents.scm index 812bc255d..812bc255d 100644 --- a/queries/jsx/indents.scm +++ b/runtime/queries/jsx/indents.scm diff --git a/queries/jsx/injections.scm b/runtime/queries/jsx/injections.scm index 269ee3fff..269ee3fff 100644 --- a/queries/jsx/injections.scm +++ b/runtime/queries/jsx/injections.scm diff --git a/queries/julia/folds.scm b/runtime/queries/julia/folds.scm index 2cbdc2815..2cbdc2815 100644 --- a/queries/julia/folds.scm +++ b/runtime/queries/julia/folds.scm diff --git a/queries/julia/highlights.scm b/runtime/queries/julia/highlights.scm index 9a82c5d41..9a82c5d41 100644 --- a/queries/julia/highlights.scm +++ b/runtime/queries/julia/highlights.scm diff --git a/queries/julia/indents.scm b/runtime/queries/julia/indents.scm index 7b40f876e..7b40f876e 100644 --- a/queries/julia/indents.scm +++ b/runtime/queries/julia/indents.scm diff --git a/queries/julia/injections.scm b/runtime/queries/julia/injections.scm index 72d181066..72d181066 100644 --- a/queries/julia/injections.scm +++ b/runtime/queries/julia/injections.scm diff --git a/queries/julia/locals.scm b/runtime/queries/julia/locals.scm index 500b7fe58..500b7fe58 100644 --- a/queries/julia/locals.scm +++ b/runtime/queries/julia/locals.scm diff --git a/queries/just/folds.scm b/runtime/queries/just/folds.scm index fea3a5058..fea3a5058 100644 --- a/queries/just/folds.scm +++ b/runtime/queries/just/folds.scm diff --git a/queries/just/highlights.scm b/runtime/queries/just/highlights.scm index fbbf4eece..fbbf4eece 100644 --- a/queries/just/highlights.scm +++ b/runtime/queries/just/highlights.scm diff --git a/queries/just/indents.scm b/runtime/queries/just/indents.scm index 1402a0c03..1402a0c03 100644 --- a/queries/just/indents.scm +++ b/runtime/queries/just/indents.scm diff --git a/queries/just/injections.scm b/runtime/queries/just/injections.scm index 90db6b725..90db6b725 100644 --- a/queries/just/injections.scm +++ b/runtime/queries/just/injections.scm diff --git a/queries/just/locals.scm b/runtime/queries/just/locals.scm index 80549f35b..80549f35b 100644 --- a/queries/just/locals.scm +++ b/runtime/queries/just/locals.scm diff --git a/queries/kcl/folds.scm b/runtime/queries/kcl/folds.scm index 64e9e95d1..64e9e95d1 100644 --- a/queries/kcl/folds.scm +++ b/runtime/queries/kcl/folds.scm diff --git a/queries/kcl/highlights.scm b/runtime/queries/kcl/highlights.scm index 81b699ac2..81b699ac2 100644 --- a/queries/kcl/highlights.scm +++ b/runtime/queries/kcl/highlights.scm diff --git a/queries/kcl/injections.scm b/runtime/queries/kcl/injections.scm index 4e04e54d3..4e04e54d3 100644 --- a/queries/kcl/injections.scm +++ b/runtime/queries/kcl/injections.scm diff --git a/queries/kconfig/folds.scm b/runtime/queries/kconfig/folds.scm index 980667dfc..980667dfc 100644 --- a/queries/kconfig/folds.scm +++ b/runtime/queries/kconfig/folds.scm diff --git a/queries/kconfig/highlights.scm b/runtime/queries/kconfig/highlights.scm index deb88bc00..deb88bc00 100644 --- a/queries/kconfig/highlights.scm +++ b/runtime/queries/kconfig/highlights.scm diff --git a/queries/kconfig/indents.scm b/runtime/queries/kconfig/indents.scm index faa83602f..faa83602f 100644 --- a/queries/kconfig/indents.scm +++ b/runtime/queries/kconfig/indents.scm diff --git a/queries/jinja_inline/injections.scm b/runtime/queries/kconfig/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/jinja_inline/injections.scm +++ b/runtime/queries/kconfig/injections.scm diff --git a/queries/kconfig/locals.scm b/runtime/queries/kconfig/locals.scm index 09a50fecb..09a50fecb 100644 --- a/queries/kconfig/locals.scm +++ b/runtime/queries/kconfig/locals.scm diff --git a/queries/kdl/folds.scm b/runtime/queries/kdl/folds.scm index c96619b14..c96619b14 100644 --- a/queries/kdl/folds.scm +++ b/runtime/queries/kdl/folds.scm diff --git a/queries/kdl/highlights.scm b/runtime/queries/kdl/highlights.scm index 7d200c85e..7d200c85e 100644 --- a/queries/kdl/highlights.scm +++ b/runtime/queries/kdl/highlights.scm diff --git a/queries/kdl/indents.scm b/runtime/queries/kdl/indents.scm index 6d16efd2d..6d16efd2d 100644 --- a/queries/kdl/indents.scm +++ b/runtime/queries/kdl/indents.scm diff --git a/queries/kdl/injections.scm b/runtime/queries/kdl/injections.scm index 81d7734cb..81d7734cb 100644 --- a/queries/kdl/injections.scm +++ b/runtime/queries/kdl/injections.scm diff --git a/queries/kdl/locals.scm b/runtime/queries/kdl/locals.scm index 14b0af23e..14b0af23e 100644 --- a/queries/kdl/locals.scm +++ b/runtime/queries/kdl/locals.scm diff --git a/queries/kotlin/folds.scm b/runtime/queries/kotlin/folds.scm index eb4becc5f..eb4becc5f 100644 --- a/queries/kotlin/folds.scm +++ b/runtime/queries/kotlin/folds.scm diff --git a/queries/kotlin/highlights.scm b/runtime/queries/kotlin/highlights.scm index 8eda6ef61..8eda6ef61 100644 --- a/queries/kotlin/highlights.scm +++ b/runtime/queries/kotlin/highlights.scm diff --git a/queries/kotlin/injections.scm b/runtime/queries/kotlin/injections.scm index b2bc233ff..b2bc233ff 100644 --- a/queries/kotlin/injections.scm +++ b/runtime/queries/kotlin/injections.scm diff --git a/queries/kotlin/locals.scm b/runtime/queries/kotlin/locals.scm index 330803f1b..330803f1b 100644 --- a/queries/kotlin/locals.scm +++ b/runtime/queries/kotlin/locals.scm diff --git a/queries/koto/folds.scm b/runtime/queries/koto/folds.scm index d20d0120b..d20d0120b 100644 --- a/queries/koto/folds.scm +++ b/runtime/queries/koto/folds.scm diff --git a/queries/koto/highlights.scm b/runtime/queries/koto/highlights.scm index bd6ce8d0e..bd6ce8d0e 100644 --- a/queries/koto/highlights.scm +++ b/runtime/queries/koto/highlights.scm diff --git a/queries/json5/injections.scm b/runtime/queries/koto/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/json5/injections.scm +++ b/runtime/queries/koto/injections.scm diff --git a/queries/koto/locals.scm b/runtime/queries/koto/locals.scm index c18487483..c18487483 100644 --- a/queries/koto/locals.scm +++ b/runtime/queries/koto/locals.scm diff --git a/queries/kusto/highlights.scm b/runtime/queries/kusto/highlights.scm index 5f00f751c..5f00f751c 100644 --- a/queries/kusto/highlights.scm +++ b/runtime/queries/kusto/highlights.scm diff --git a/queries/jsonc/injections.scm b/runtime/queries/kusto/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/jsonc/injections.scm +++ b/runtime/queries/kusto/injections.scm diff --git a/queries/lalrpop/folds.scm b/runtime/queries/lalrpop/folds.scm index beeed9ba5..beeed9ba5 100644 --- a/queries/lalrpop/folds.scm +++ b/runtime/queries/lalrpop/folds.scm diff --git a/queries/lalrpop/highlights.scm b/runtime/queries/lalrpop/highlights.scm index 046d39790..046d39790 100644 --- a/queries/lalrpop/highlights.scm +++ b/runtime/queries/lalrpop/highlights.scm diff --git a/queries/lalrpop/injections.scm b/runtime/queries/lalrpop/injections.scm index 17d0ace48..17d0ace48 100644 --- a/queries/lalrpop/injections.scm +++ b/runtime/queries/lalrpop/injections.scm diff --git a/queries/lalrpop/locals.scm b/runtime/queries/lalrpop/locals.scm index ceeac965b..ceeac965b 100644 --- a/queries/lalrpop/locals.scm +++ b/runtime/queries/lalrpop/locals.scm diff --git a/queries/latex/folds.scm b/runtime/queries/latex/folds.scm index 1ee7946b8..1ee7946b8 100644 --- a/queries/latex/folds.scm +++ b/runtime/queries/latex/folds.scm diff --git a/queries/latex/highlights.scm b/runtime/queries/latex/highlights.scm index c39cd1b14..c39cd1b14 100644 --- a/queries/latex/highlights.scm +++ b/runtime/queries/latex/highlights.scm diff --git a/queries/latex/injections.scm b/runtime/queries/latex/injections.scm index 53d808c1d..53d808c1d 100644 --- a/queries/latex/injections.scm +++ b/runtime/queries/latex/injections.scm diff --git a/queries/ledger/folds.scm b/runtime/queries/ledger/folds.scm index 8b5736819..8b5736819 100644 --- a/queries/ledger/folds.scm +++ b/runtime/queries/ledger/folds.scm diff --git a/queries/ledger/highlights.scm b/runtime/queries/ledger/highlights.scm index 5198ad888..5198ad888 100644 --- a/queries/ledger/highlights.scm +++ b/runtime/queries/ledger/highlights.scm diff --git a/queries/ledger/indents.scm b/runtime/queries/ledger/indents.scm index 9697c9cfa..9697c9cfa 100644 --- a/queries/ledger/indents.scm +++ b/runtime/queries/ledger/indents.scm diff --git a/queries/ledger/injections.scm b/runtime/queries/ledger/injections.scm index 35fb57eef..35fb57eef 100644 --- a/queries/ledger/injections.scm +++ b/runtime/queries/ledger/injections.scm diff --git a/queries/leo/highlights.scm b/runtime/queries/leo/highlights.scm index 3d4dadd3c..3d4dadd3c 100644 --- a/queries/leo/highlights.scm +++ b/runtime/queries/leo/highlights.scm diff --git a/queries/leo/indents.scm b/runtime/queries/leo/indents.scm index b2d33a59b..b2d33a59b 100644 --- a/queries/leo/indents.scm +++ b/runtime/queries/leo/indents.scm diff --git a/queries/jsonnet/injections.scm b/runtime/queries/leo/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/jsonnet/injections.scm +++ b/runtime/queries/leo/injections.scm diff --git a/queries/linkerscript/folds.scm b/runtime/queries/linkerscript/folds.scm index 0fc77b1a7..0fc77b1a7 100644 --- a/queries/linkerscript/folds.scm +++ b/runtime/queries/linkerscript/folds.scm diff --git a/queries/linkerscript/highlights.scm b/runtime/queries/linkerscript/highlights.scm index 12330169e..12330169e 100644 --- a/queries/linkerscript/highlights.scm +++ b/runtime/queries/linkerscript/highlights.scm diff --git a/queries/linkerscript/indents.scm b/runtime/queries/linkerscript/indents.scm index a636ba109..a636ba109 100644 --- a/queries/linkerscript/indents.scm +++ b/runtime/queries/linkerscript/indents.scm diff --git a/queries/linkerscript/injections.scm b/runtime/queries/linkerscript/injections.scm index 51e6d1f6b..51e6d1f6b 100644 --- a/queries/linkerscript/injections.scm +++ b/runtime/queries/linkerscript/injections.scm diff --git a/queries/linkerscript/locals.scm b/runtime/queries/linkerscript/locals.scm index 6b7660370..6b7660370 100644 --- a/queries/linkerscript/locals.scm +++ b/runtime/queries/linkerscript/locals.scm diff --git a/queries/liquid/highlights.scm b/runtime/queries/liquid/highlights.scm index 38750db41..38750db41 100644 --- a/queries/liquid/highlights.scm +++ b/runtime/queries/liquid/highlights.scm diff --git a/queries/liquid/injections.scm b/runtime/queries/liquid/injections.scm index ab0ced6ae..ab0ced6ae 100644 --- a/queries/liquid/injections.scm +++ b/runtime/queries/liquid/injections.scm diff --git a/queries/liquidsoap/folds.scm b/runtime/queries/liquidsoap/folds.scm index 56e4ce547..56e4ce547 100644 --- a/queries/liquidsoap/folds.scm +++ b/runtime/queries/liquidsoap/folds.scm diff --git a/queries/liquidsoap/highlights.scm b/runtime/queries/liquidsoap/highlights.scm index c5608f897..c5608f897 100644 --- a/queries/liquidsoap/highlights.scm +++ b/runtime/queries/liquidsoap/highlights.scm diff --git a/queries/liquidsoap/indents.scm b/runtime/queries/liquidsoap/indents.scm index 7cb5935fb..7cb5935fb 100644 --- a/queries/liquidsoap/indents.scm +++ b/runtime/queries/liquidsoap/indents.scm diff --git a/queries/kconfig/injections.scm b/runtime/queries/liquidsoap/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/kconfig/injections.scm +++ b/runtime/queries/liquidsoap/injections.scm diff --git a/queries/liquidsoap/locals.scm b/runtime/queries/liquidsoap/locals.scm index 995294c03..995294c03 100644 --- a/queries/liquidsoap/locals.scm +++ b/runtime/queries/liquidsoap/locals.scm diff --git a/queries/llvm/highlights.scm b/runtime/queries/llvm/highlights.scm index ea48272f5..ea48272f5 100644 --- a/queries/llvm/highlights.scm +++ b/runtime/queries/llvm/highlights.scm diff --git a/queries/koto/injections.scm b/runtime/queries/llvm/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/koto/injections.scm +++ b/runtime/queries/llvm/injections.scm diff --git a/queries/lua/folds.scm b/runtime/queries/lua/folds.scm index 9dfac3abc..9dfac3abc 100644 --- a/queries/lua/folds.scm +++ b/runtime/queries/lua/folds.scm diff --git a/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm index 79ab165aa..79ab165aa 100644 --- a/queries/lua/highlights.scm +++ b/runtime/queries/lua/highlights.scm diff --git a/queries/lua/indents.scm b/runtime/queries/lua/indents.scm index 84303b8ab..84303b8ab 100644 --- a/queries/lua/indents.scm +++ b/runtime/queries/lua/indents.scm diff --git a/queries/lua/injections.scm b/runtime/queries/lua/injections.scm index e76745f4f..e76745f4f 100644 --- a/queries/lua/injections.scm +++ b/runtime/queries/lua/injections.scm diff --git a/queries/lua/locals.scm b/runtime/queries/lua/locals.scm index c4f36e8d4..c4f36e8d4 100644 --- a/queries/lua/locals.scm +++ b/runtime/queries/lua/locals.scm diff --git a/queries/luadoc/highlights.scm b/runtime/queries/luadoc/highlights.scm index 1649e5d9b..1649e5d9b 100644 --- a/queries/luadoc/highlights.scm +++ b/runtime/queries/luadoc/highlights.scm diff --git a/queries/luap/highlights.scm b/runtime/queries/luap/highlights.scm index 40d2bd37b..40d2bd37b 100644 --- a/queries/luap/highlights.scm +++ b/runtime/queries/luap/highlights.scm diff --git a/queries/luau/folds.scm b/runtime/queries/luau/folds.scm index 8ddaf9476..8ddaf9476 100644 --- a/queries/luau/folds.scm +++ b/runtime/queries/luau/folds.scm diff --git a/queries/luau/highlights.scm b/runtime/queries/luau/highlights.scm index f6f64b30c..f6f64b30c 100644 --- a/queries/luau/highlights.scm +++ b/runtime/queries/luau/highlights.scm diff --git a/queries/luau/indents.scm b/runtime/queries/luau/indents.scm index f0af4dd33..f0af4dd33 100644 --- a/queries/luau/indents.scm +++ b/runtime/queries/luau/indents.scm diff --git a/queries/luau/injections.scm b/runtime/queries/luau/injections.scm index 558791520..558791520 100644 --- a/queries/luau/injections.scm +++ b/runtime/queries/luau/injections.scm diff --git a/queries/luau/locals.scm b/runtime/queries/luau/locals.scm index d5420b4c8..d5420b4c8 100644 --- a/queries/luau/locals.scm +++ b/runtime/queries/luau/locals.scm diff --git a/queries/m68k/folds.scm b/runtime/queries/m68k/folds.scm index 1dd8eaf11..1dd8eaf11 100644 --- a/queries/m68k/folds.scm +++ b/runtime/queries/m68k/folds.scm diff --git a/queries/m68k/highlights.scm b/runtime/queries/m68k/highlights.scm index 72a5504d6..72a5504d6 100644 --- a/queries/m68k/highlights.scm +++ b/runtime/queries/m68k/highlights.scm diff --git a/queries/kusto/injections.scm b/runtime/queries/m68k/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/kusto/injections.scm +++ b/runtime/queries/m68k/injections.scm diff --git a/queries/m68k/locals.scm b/runtime/queries/m68k/locals.scm index 54e948a4b..54e948a4b 100644 --- a/queries/m68k/locals.scm +++ b/runtime/queries/m68k/locals.scm diff --git a/queries/make/folds.scm b/runtime/queries/make/folds.scm index c7f87ac16..c7f87ac16 100644 --- a/queries/make/folds.scm +++ b/runtime/queries/make/folds.scm diff --git a/queries/make/highlights.scm b/runtime/queries/make/highlights.scm index afdfbe336..afdfbe336 100644 --- a/queries/make/highlights.scm +++ b/runtime/queries/make/highlights.scm diff --git a/queries/make/injections.scm b/runtime/queries/make/injections.scm index c9c09be5d..c9c09be5d 100644 --- a/queries/make/injections.scm +++ b/runtime/queries/make/injections.scm diff --git a/queries/markdown/folds.scm b/runtime/queries/markdown/folds.scm index 2bcfd442d..2bcfd442d 100644 --- a/queries/markdown/folds.scm +++ b/runtime/queries/markdown/folds.scm diff --git a/queries/markdown/highlights.scm b/runtime/queries/markdown/highlights.scm index 2a6ad1968..2a6ad1968 100644 --- a/queries/markdown/highlights.scm +++ b/runtime/queries/markdown/highlights.scm diff --git a/queries/markdown/indents.scm b/runtime/queries/markdown/indents.scm index 90c52d3d0..90c52d3d0 100644 --- a/queries/markdown/indents.scm +++ b/runtime/queries/markdown/indents.scm diff --git a/queries/markdown/injections.scm b/runtime/queries/markdown/injections.scm index 8ed205296..8ed205296 100644 --- a/queries/markdown/injections.scm +++ b/runtime/queries/markdown/injections.scm diff --git a/queries/markdown_inline/highlights.scm b/runtime/queries/markdown_inline/highlights.scm index 5fb9e911d..5fb9e911d 100644 --- a/queries/markdown_inline/highlights.scm +++ b/runtime/queries/markdown_inline/highlights.scm diff --git a/queries/markdown_inline/injections.scm b/runtime/queries/markdown_inline/injections.scm index 6448b77c1..6448b77c1 100644 --- a/queries/markdown_inline/injections.scm +++ b/runtime/queries/markdown_inline/injections.scm diff --git a/queries/matlab/folds.scm b/runtime/queries/matlab/folds.scm index 83008b3d7..83008b3d7 100644 --- a/queries/matlab/folds.scm +++ b/runtime/queries/matlab/folds.scm diff --git a/queries/matlab/highlights.scm b/runtime/queries/matlab/highlights.scm index d2ab6053e..d2ab6053e 100644 --- a/queries/matlab/highlights.scm +++ b/runtime/queries/matlab/highlights.scm diff --git a/queries/matlab/indents.scm b/runtime/queries/matlab/indents.scm index d446f45df..d446f45df 100644 --- a/queries/matlab/indents.scm +++ b/runtime/queries/matlab/indents.scm diff --git a/queries/leo/injections.scm b/runtime/queries/matlab/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/leo/injections.scm +++ b/runtime/queries/matlab/injections.scm diff --git a/queries/matlab/locals.scm b/runtime/queries/matlab/locals.scm index 366c82027..366c82027 100644 --- a/queries/matlab/locals.scm +++ b/runtime/queries/matlab/locals.scm diff --git a/queries/menhir/highlights.scm b/runtime/queries/menhir/highlights.scm index 022fda82e..022fda82e 100644 --- a/queries/menhir/highlights.scm +++ b/runtime/queries/menhir/highlights.scm diff --git a/queries/menhir/injections.scm b/runtime/queries/menhir/injections.scm index 16a3f8157..16a3f8157 100644 --- a/queries/menhir/injections.scm +++ b/runtime/queries/menhir/injections.scm diff --git a/queries/mermaid/folds.scm b/runtime/queries/mermaid/folds.scm index 5f28abf5b..5f28abf5b 100644 --- a/queries/mermaid/folds.scm +++ b/runtime/queries/mermaid/folds.scm diff --git a/queries/mermaid/highlights.scm b/runtime/queries/mermaid/highlights.scm index 2b7b56374..2b7b56374 100644 --- a/queries/mermaid/highlights.scm +++ b/runtime/queries/mermaid/highlights.scm diff --git a/queries/mermaid/indents.scm b/runtime/queries/mermaid/indents.scm index fb95bd8de..fb95bd8de 100644 --- a/queries/mermaid/indents.scm +++ b/runtime/queries/mermaid/indents.scm diff --git a/queries/liquidsoap/injections.scm b/runtime/queries/mermaid/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/liquidsoap/injections.scm +++ b/runtime/queries/mermaid/injections.scm diff --git a/queries/meson/folds.scm b/runtime/queries/meson/folds.scm index 386d4d306..386d4d306 100644 --- a/queries/meson/folds.scm +++ b/runtime/queries/meson/folds.scm diff --git a/queries/meson/highlights.scm b/runtime/queries/meson/highlights.scm index b00c3399b..b00c3399b 100644 --- a/queries/meson/highlights.scm +++ b/runtime/queries/meson/highlights.scm diff --git a/queries/meson/indents.scm b/runtime/queries/meson/indents.scm index 3e27d9200..3e27d9200 100644 --- a/queries/meson/indents.scm +++ b/runtime/queries/meson/indents.scm diff --git a/queries/llvm/injections.scm b/runtime/queries/meson/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/llvm/injections.scm +++ b/runtime/queries/meson/injections.scm diff --git a/queries/mlir/highlights.scm b/runtime/queries/mlir/highlights.scm index 97a0b0d0b..97a0b0d0b 100644 --- a/queries/mlir/highlights.scm +++ b/runtime/queries/mlir/highlights.scm diff --git a/queries/m68k/injections.scm b/runtime/queries/mlir/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/m68k/injections.scm +++ b/runtime/queries/mlir/injections.scm diff --git a/queries/mlir/locals.scm b/runtime/queries/mlir/locals.scm index d29351d48..d29351d48 100644 --- a/queries/mlir/locals.scm +++ b/runtime/queries/mlir/locals.scm diff --git a/queries/muttrc/highlights.scm b/runtime/queries/muttrc/highlights.scm index 27754cc53..27754cc53 100644 --- a/queries/muttrc/highlights.scm +++ b/runtime/queries/muttrc/highlights.scm diff --git a/queries/muttrc/injections.scm b/runtime/queries/muttrc/injections.scm index 9c16ad15a..9c16ad15a 100644 --- a/queries/muttrc/injections.scm +++ b/runtime/queries/muttrc/injections.scm diff --git a/queries/nasm/highlights.scm b/runtime/queries/nasm/highlights.scm index 02506de8b..02506de8b 100644 --- a/queries/nasm/highlights.scm +++ b/runtime/queries/nasm/highlights.scm diff --git a/queries/matlab/injections.scm b/runtime/queries/nasm/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/matlab/injections.scm +++ b/runtime/queries/nasm/injections.scm diff --git a/queries/nginx/folds.scm b/runtime/queries/nginx/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/nginx/folds.scm +++ b/runtime/queries/nginx/folds.scm diff --git a/queries/nginx/highlights.scm b/runtime/queries/nginx/highlights.scm index 58fcc0b14..58fcc0b14 100644 --- a/queries/nginx/highlights.scm +++ b/runtime/queries/nginx/highlights.scm diff --git a/queries/mermaid/injections.scm b/runtime/queries/nginx/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/mermaid/injections.scm +++ b/runtime/queries/nginx/injections.scm diff --git a/queries/nickel/highlights.scm b/runtime/queries/nickel/highlights.scm index 07673d797..07673d797 100644 --- a/queries/nickel/highlights.scm +++ b/runtime/queries/nickel/highlights.scm diff --git a/queries/nickel/indents.scm b/runtime/queries/nickel/indents.scm index 8c6f740d9..8c6f740d9 100644 --- a/queries/nickel/indents.scm +++ b/runtime/queries/nickel/indents.scm diff --git a/queries/meson/injections.scm b/runtime/queries/nickel/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/meson/injections.scm +++ b/runtime/queries/nickel/injections.scm diff --git a/queries/nim/folds.scm b/runtime/queries/nim/folds.scm index fa0581a72..fa0581a72 100644 --- a/queries/nim/folds.scm +++ b/runtime/queries/nim/folds.scm diff --git a/queries/nim/highlights.scm b/runtime/queries/nim/highlights.scm index 722c0abdf..722c0abdf 100644 --- a/queries/nim/highlights.scm +++ b/runtime/queries/nim/highlights.scm diff --git a/queries/nim/injections.scm b/runtime/queries/nim/injections.scm index da15fd84c..da15fd84c 100644 --- a/queries/nim/injections.scm +++ b/runtime/queries/nim/injections.scm diff --git a/queries/nim/locals.scm b/runtime/queries/nim/locals.scm index d79fe728e..d79fe728e 100644 --- a/queries/nim/locals.scm +++ b/runtime/queries/nim/locals.scm diff --git a/queries/nim_format_string/highlights.scm b/runtime/queries/nim_format_string/highlights.scm index fde9e4ba0..fde9e4ba0 100644 --- a/queries/nim_format_string/highlights.scm +++ b/runtime/queries/nim_format_string/highlights.scm diff --git a/queries/nim_format_string/injections.scm b/runtime/queries/nim_format_string/injections.scm index 3efbfb854..3efbfb854 100644 --- a/queries/nim_format_string/injections.scm +++ b/runtime/queries/nim_format_string/injections.scm diff --git a/queries/ninja/folds.scm b/runtime/queries/ninja/folds.scm index 341a8b8c1..341a8b8c1 100644 --- a/queries/ninja/folds.scm +++ b/runtime/queries/ninja/folds.scm diff --git a/queries/ninja/highlights.scm b/runtime/queries/ninja/highlights.scm index 8323ee9e9..8323ee9e9 100644 --- a/queries/ninja/highlights.scm +++ b/runtime/queries/ninja/highlights.scm diff --git a/queries/ninja/indents.scm b/runtime/queries/ninja/indents.scm index 80344cdfb..80344cdfb 100644 --- a/queries/ninja/indents.scm +++ b/runtime/queries/ninja/indents.scm diff --git a/queries/mlir/injections.scm b/runtime/queries/ninja/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/mlir/injections.scm +++ b/runtime/queries/ninja/injections.scm diff --git a/queries/nix/folds.scm b/runtime/queries/nix/folds.scm index a89a5b24b..a89a5b24b 100644 --- a/queries/nix/folds.scm +++ b/runtime/queries/nix/folds.scm diff --git a/queries/nix/highlights.scm b/runtime/queries/nix/highlights.scm index 24e685a32..24e685a32 100644 --- a/queries/nix/highlights.scm +++ b/runtime/queries/nix/highlights.scm diff --git a/queries/nix/indents.scm b/runtime/queries/nix/indents.scm index 757511b6b..757511b6b 100644 --- a/queries/nix/indents.scm +++ b/runtime/queries/nix/indents.scm diff --git a/queries/nix/injections.scm b/runtime/queries/nix/injections.scm index 26ba6e2da..26ba6e2da 100644 --- a/queries/nix/injections.scm +++ b/runtime/queries/nix/injections.scm diff --git a/queries/nix/locals.scm b/runtime/queries/nix/locals.scm index 61cab2309..61cab2309 100644 --- a/queries/nix/locals.scm +++ b/runtime/queries/nix/locals.scm diff --git a/queries/nqc/folds.scm b/runtime/queries/nqc/folds.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/nqc/folds.scm +++ b/runtime/queries/nqc/folds.scm diff --git a/queries/nqc/highlights.scm b/runtime/queries/nqc/highlights.scm index 0d0b770a8..0d0b770a8 100644 --- a/queries/nqc/highlights.scm +++ b/runtime/queries/nqc/highlights.scm diff --git a/queries/nqc/indents.scm b/runtime/queries/nqc/indents.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/nqc/indents.scm +++ b/runtime/queries/nqc/indents.scm diff --git a/queries/nqc/injections.scm b/runtime/queries/nqc/injections.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/nqc/injections.scm +++ b/runtime/queries/nqc/injections.scm diff --git a/queries/nqc/locals.scm b/runtime/queries/nqc/locals.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/nqc/locals.scm +++ b/runtime/queries/nqc/locals.scm diff --git a/queries/nu/folds.scm b/runtime/queries/nu/folds.scm index abb538050..abb538050 100644 --- a/queries/nu/folds.scm +++ b/runtime/queries/nu/folds.scm diff --git a/queries/nu/highlights.scm b/runtime/queries/nu/highlights.scm index f8342fab4..f8342fab4 100644 --- a/queries/nu/highlights.scm +++ b/runtime/queries/nu/highlights.scm diff --git a/queries/nu/indents.scm b/runtime/queries/nu/indents.scm index 94b3fa72e..94b3fa72e 100644 --- a/queries/nu/indents.scm +++ b/runtime/queries/nu/indents.scm diff --git a/queries/nu/injections.scm b/runtime/queries/nu/injections.scm index d5e70acb5..d5e70acb5 100644 --- a/queries/nu/injections.scm +++ b/runtime/queries/nu/injections.scm diff --git a/queries/objc/folds.scm b/runtime/queries/objc/folds.scm index b922f8bf8..b922f8bf8 100644 --- a/queries/objc/folds.scm +++ b/runtime/queries/objc/folds.scm diff --git a/queries/objc/highlights.scm b/runtime/queries/objc/highlights.scm index 0f412404f..0f412404f 100644 --- a/queries/objc/highlights.scm +++ b/runtime/queries/objc/highlights.scm diff --git a/queries/objc/indents.scm b/runtime/queries/objc/indents.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/objc/indents.scm +++ b/runtime/queries/objc/indents.scm diff --git a/queries/objc/injections.scm b/runtime/queries/objc/injections.scm index 359420d10..359420d10 100644 --- a/queries/objc/injections.scm +++ b/runtime/queries/objc/injections.scm diff --git a/queries/objc/locals.scm b/runtime/queries/objc/locals.scm index a5a5208ca..a5a5208ca 100644 --- a/queries/objc/locals.scm +++ b/runtime/queries/objc/locals.scm diff --git a/queries/objdump/highlights.scm b/runtime/queries/objdump/highlights.scm index b73e18803..b73e18803 100644 --- a/queries/objdump/highlights.scm +++ b/runtime/queries/objdump/highlights.scm diff --git a/queries/objdump/injections.scm b/runtime/queries/objdump/injections.scm index 9fb52dafe..9fb52dafe 100644 --- a/queries/objdump/injections.scm +++ b/runtime/queries/objdump/injections.scm diff --git a/queries/ocaml/folds.scm b/runtime/queries/ocaml/folds.scm index 1d45dbbde..1d45dbbde 100644 --- a/queries/ocaml/folds.scm +++ b/runtime/queries/ocaml/folds.scm diff --git a/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm index 891ff7bd5..891ff7bd5 100644 --- a/queries/ocaml/highlights.scm +++ b/runtime/queries/ocaml/highlights.scm diff --git a/queries/ocaml/indents.scm b/runtime/queries/ocaml/indents.scm index d7f05367d..d7f05367d 100644 --- a/queries/ocaml/indents.scm +++ b/runtime/queries/ocaml/indents.scm diff --git a/queries/nasm/injections.scm b/runtime/queries/ocaml/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/nasm/injections.scm +++ b/runtime/queries/ocaml/injections.scm diff --git a/queries/ocaml/locals.scm b/runtime/queries/ocaml/locals.scm index 38d392609..38d392609 100644 --- a/queries/ocaml/locals.scm +++ b/runtime/queries/ocaml/locals.scm diff --git a/queries/ocaml_interface/folds.scm b/runtime/queries/ocaml_interface/folds.scm index 6d3dfbcf2..6d3dfbcf2 100644 --- a/queries/ocaml_interface/folds.scm +++ b/runtime/queries/ocaml_interface/folds.scm diff --git a/queries/ocaml_interface/highlights.scm b/runtime/queries/ocaml_interface/highlights.scm index b623e432b..b623e432b 100644 --- a/queries/ocaml_interface/highlights.scm +++ b/runtime/queries/ocaml_interface/highlights.scm diff --git a/queries/ocaml_interface/indents.scm b/runtime/queries/ocaml_interface/indents.scm index 6d3dfbcf2..6d3dfbcf2 100644 --- a/queries/ocaml_interface/indents.scm +++ b/runtime/queries/ocaml_interface/indents.scm diff --git a/queries/ocaml_interface/injections.scm b/runtime/queries/ocaml_interface/injections.scm index 6d3dfbcf2..6d3dfbcf2 100644 --- a/queries/ocaml_interface/injections.scm +++ b/runtime/queries/ocaml_interface/injections.scm diff --git a/queries/ocaml_interface/locals.scm b/runtime/queries/ocaml_interface/locals.scm index 6d3dfbcf2..6d3dfbcf2 100644 --- a/queries/ocaml_interface/locals.scm +++ b/runtime/queries/ocaml_interface/locals.scm diff --git a/queries/ocamllex/highlights.scm b/runtime/queries/ocamllex/highlights.scm index 2556aa4c2..2556aa4c2 100644 --- a/queries/ocamllex/highlights.scm +++ b/runtime/queries/ocamllex/highlights.scm diff --git a/queries/ocamllex/injections.scm b/runtime/queries/ocamllex/injections.scm index ecc577d40..ecc577d40 100644 --- a/queries/ocamllex/injections.scm +++ b/runtime/queries/ocamllex/injections.scm diff --git a/queries/odin/folds.scm b/runtime/queries/odin/folds.scm index 5367cb5f2..5367cb5f2 100644 --- a/queries/odin/folds.scm +++ b/runtime/queries/odin/folds.scm diff --git a/queries/odin/highlights.scm b/runtime/queries/odin/highlights.scm index b7e2176a8..b7e2176a8 100644 --- a/queries/odin/highlights.scm +++ b/runtime/queries/odin/highlights.scm diff --git a/queries/odin/indents.scm b/runtime/queries/odin/indents.scm index 9c8632978..9c8632978 100644 --- a/queries/odin/indents.scm +++ b/runtime/queries/odin/indents.scm diff --git a/queries/nginx/injections.scm b/runtime/queries/odin/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/nginx/injections.scm +++ b/runtime/queries/odin/injections.scm diff --git a/queries/odin/locals.scm b/runtime/queries/odin/locals.scm index 3e794b2f6..3e794b2f6 100644 --- a/queries/odin/locals.scm +++ b/runtime/queries/odin/locals.scm diff --git a/queries/pascal/folds.scm b/runtime/queries/pascal/folds.scm index 8fcde3ac0..8fcde3ac0 100644 --- a/queries/pascal/folds.scm +++ b/runtime/queries/pascal/folds.scm diff --git a/queries/pascal/highlights.scm b/runtime/queries/pascal/highlights.scm index d6014ee1d..d6014ee1d 100644 --- a/queries/pascal/highlights.scm +++ b/runtime/queries/pascal/highlights.scm diff --git a/queries/pascal/indents.scm b/runtime/queries/pascal/indents.scm index 879e7b86f..879e7b86f 100644 --- a/queries/pascal/indents.scm +++ b/runtime/queries/pascal/indents.scm diff --git a/queries/pascal/injections.scm b/runtime/queries/pascal/injections.scm index 1f6e475c8..1f6e475c8 100644 --- a/queries/pascal/injections.scm +++ b/runtime/queries/pascal/injections.scm diff --git a/queries/pascal/locals.scm b/runtime/queries/pascal/locals.scm index d74d54ad4..d74d54ad4 100644 --- a/queries/pascal/locals.scm +++ b/runtime/queries/pascal/locals.scm diff --git a/queries/passwd/highlights.scm b/runtime/queries/passwd/highlights.scm index 51bb8fc5f..51bb8fc5f 100644 --- a/queries/passwd/highlights.scm +++ b/runtime/queries/passwd/highlights.scm diff --git a/queries/pem/folds.scm b/runtime/queries/pem/folds.scm index f0cdabd26..f0cdabd26 100644 --- a/queries/pem/folds.scm +++ b/runtime/queries/pem/folds.scm diff --git a/queries/pem/highlights.scm b/runtime/queries/pem/highlights.scm index b8dbb0f11..b8dbb0f11 100644 --- a/queries/pem/highlights.scm +++ b/runtime/queries/pem/highlights.scm diff --git a/queries/nickel/injections.scm b/runtime/queries/pem/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/nickel/injections.scm +++ b/runtime/queries/pem/injections.scm diff --git a/queries/perl/folds.scm b/runtime/queries/perl/folds.scm index a457a0a50..a457a0a50 100644 --- a/queries/perl/folds.scm +++ b/runtime/queries/perl/folds.scm diff --git a/queries/perl/highlights.scm b/runtime/queries/perl/highlights.scm index d52baab44..d52baab44 100644 --- a/queries/perl/highlights.scm +++ b/runtime/queries/perl/highlights.scm diff --git a/queries/perl/injections.scm b/runtime/queries/perl/injections.scm index ec11e9013..ec11e9013 100644 --- a/queries/perl/injections.scm +++ b/runtime/queries/perl/injections.scm diff --git a/queries/php/folds.scm b/runtime/queries/php/folds.scm index f32463888..f32463888 100644 --- a/queries/php/folds.scm +++ b/runtime/queries/php/folds.scm diff --git a/queries/php/highlights.scm b/runtime/queries/php/highlights.scm index f32463888..f32463888 100644 --- a/queries/php/highlights.scm +++ b/runtime/queries/php/highlights.scm diff --git a/queries/php/indents.scm b/runtime/queries/php/indents.scm index f32463888..f32463888 100644 --- a/queries/php/indents.scm +++ b/runtime/queries/php/indents.scm diff --git a/queries/php/injections.scm b/runtime/queries/php/injections.scm index 3ccbb2bb4..3ccbb2bb4 100644 --- a/queries/php/injections.scm +++ b/runtime/queries/php/injections.scm diff --git a/queries/php/locals.scm b/runtime/queries/php/locals.scm index f32463888..f32463888 100644 --- a/queries/php/locals.scm +++ b/runtime/queries/php/locals.scm diff --git a/queries/php_only/folds.scm b/runtime/queries/php_only/folds.scm index 43453b174..43453b174 100644 --- a/queries/php_only/folds.scm +++ b/runtime/queries/php_only/folds.scm diff --git a/queries/php_only/highlights.scm b/runtime/queries/php_only/highlights.scm index 2d473dd0c..2d473dd0c 100644 --- a/queries/php_only/highlights.scm +++ b/runtime/queries/php_only/highlights.scm diff --git a/queries/php_only/indents.scm b/runtime/queries/php_only/indents.scm index 1755d4285..1755d4285 100644 --- a/queries/php_only/indents.scm +++ b/runtime/queries/php_only/indents.scm diff --git a/queries/php_only/injections.scm b/runtime/queries/php_only/injections.scm index 368177643..368177643 100644 --- a/queries/php_only/injections.scm +++ b/runtime/queries/php_only/injections.scm diff --git a/queries/php_only/locals.scm b/runtime/queries/php_only/locals.scm index 6739b383d..6739b383d 100644 --- a/queries/php_only/locals.scm +++ b/runtime/queries/php_only/locals.scm diff --git a/queries/phpdoc/highlights.scm b/runtime/queries/phpdoc/highlights.scm index 3ebe4a66e..3ebe4a66e 100644 --- a/queries/phpdoc/highlights.scm +++ b/runtime/queries/phpdoc/highlights.scm diff --git a/queries/pioasm/highlights.scm b/runtime/queries/pioasm/highlights.scm index 325005928..325005928 100644 --- a/queries/pioasm/highlights.scm +++ b/runtime/queries/pioasm/highlights.scm diff --git a/queries/pioasm/injections.scm b/runtime/queries/pioasm/injections.scm index 84d17cf2d..84d17cf2d 100644 --- a/queries/pioasm/injections.scm +++ b/runtime/queries/pioasm/injections.scm diff --git a/queries/po/folds.scm b/runtime/queries/po/folds.scm index fd1fb1ebf..fd1fb1ebf 100644 --- a/queries/po/folds.scm +++ b/runtime/queries/po/folds.scm diff --git a/queries/po/highlights.scm b/runtime/queries/po/highlights.scm index 0cc92e72a..0cc92e72a 100644 --- a/queries/po/highlights.scm +++ b/runtime/queries/po/highlights.scm diff --git a/queries/ninja/injections.scm b/runtime/queries/po/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/ninja/injections.scm +++ b/runtime/queries/po/injections.scm diff --git a/queries/pod/highlights.scm b/runtime/queries/pod/highlights.scm index 8252ac1ba..8252ac1ba 100644 --- a/queries/pod/highlights.scm +++ b/runtime/queries/pod/highlights.scm diff --git a/queries/poe_filter/folds.scm b/runtime/queries/poe_filter/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/poe_filter/folds.scm +++ b/runtime/queries/poe_filter/folds.scm diff --git a/queries/poe_filter/highlights.scm b/runtime/queries/poe_filter/highlights.scm index b0c715ac9..b0c715ac9 100644 --- a/queries/poe_filter/highlights.scm +++ b/runtime/queries/poe_filter/highlights.scm diff --git a/queries/poe_filter/indents.scm b/runtime/queries/poe_filter/indents.scm index 78b7a2ed1..78b7a2ed1 100644 --- a/queries/poe_filter/indents.scm +++ b/runtime/queries/poe_filter/indents.scm diff --git a/queries/ocaml/injections.scm b/runtime/queries/poe_filter/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/ocaml/injections.scm +++ b/runtime/queries/poe_filter/injections.scm diff --git a/queries/pony/folds.scm b/runtime/queries/pony/folds.scm index 95b76eb69..95b76eb69 100644 --- a/queries/pony/folds.scm +++ b/runtime/queries/pony/folds.scm diff --git a/queries/pony/highlights.scm b/runtime/queries/pony/highlights.scm index f3d4b5dca..f3d4b5dca 100644 --- a/queries/pony/highlights.scm +++ b/runtime/queries/pony/highlights.scm diff --git a/queries/pony/indents.scm b/runtime/queries/pony/indents.scm index 3bddd29de..3bddd29de 100644 --- a/queries/pony/indents.scm +++ b/runtime/queries/pony/indents.scm diff --git a/queries/pony/injections.scm b/runtime/queries/pony/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/pony/injections.scm +++ b/runtime/queries/pony/injections.scm diff --git a/queries/pony/locals.scm b/runtime/queries/pony/locals.scm index a27e501a3..a27e501a3 100644 --- a/queries/pony/locals.scm +++ b/runtime/queries/pony/locals.scm diff --git a/queries/powershell/folds.scm b/runtime/queries/powershell/folds.scm index d87e3f688..d87e3f688 100644 --- a/queries/powershell/folds.scm +++ b/runtime/queries/powershell/folds.scm diff --git a/queries/powershell/highlights.scm b/runtime/queries/powershell/highlights.scm index 6081e8f1b..6081e8f1b 100644 --- a/queries/powershell/highlights.scm +++ b/runtime/queries/powershell/highlights.scm diff --git a/queries/powershell/indents.scm b/runtime/queries/powershell/indents.scm index 3be2ed161..3be2ed161 100644 --- a/queries/powershell/indents.scm +++ b/runtime/queries/powershell/indents.scm diff --git a/queries/powershell/injections.scm b/runtime/queries/powershell/injections.scm index 677e8b267..677e8b267 100644 --- a/queries/powershell/injections.scm +++ b/runtime/queries/powershell/injections.scm diff --git a/queries/powershell/locals.scm b/runtime/queries/powershell/locals.scm index e98410992..e98410992 100644 --- a/queries/powershell/locals.scm +++ b/runtime/queries/powershell/locals.scm diff --git a/queries/printf/highlights.scm b/runtime/queries/printf/highlights.scm index db5ef9a3f..db5ef9a3f 100644 --- a/queries/printf/highlights.scm +++ b/runtime/queries/printf/highlights.scm diff --git a/queries/prisma/folds.scm b/runtime/queries/prisma/folds.scm index 73be36016..73be36016 100644 --- a/queries/prisma/folds.scm +++ b/runtime/queries/prisma/folds.scm diff --git a/queries/prisma/highlights.scm b/runtime/queries/prisma/highlights.scm index 9d2d1934e..9d2d1934e 100644 --- a/queries/prisma/highlights.scm +++ b/runtime/queries/prisma/highlights.scm diff --git a/queries/prisma/injections.scm b/runtime/queries/prisma/injections.scm index ac427dd68..ac427dd68 100644 --- a/queries/prisma/injections.scm +++ b/runtime/queries/prisma/injections.scm diff --git a/queries/problog/folds.scm b/runtime/queries/problog/folds.scm index 768718207..768718207 100644 --- a/queries/problog/folds.scm +++ b/runtime/queries/problog/folds.scm diff --git a/queries/problog/highlights.scm b/runtime/queries/problog/highlights.scm index de1715662..de1715662 100644 --- a/queries/problog/highlights.scm +++ b/runtime/queries/problog/highlights.scm diff --git a/queries/problog/indents.scm b/runtime/queries/problog/indents.scm index 768718207..768718207 100644 --- a/queries/problog/indents.scm +++ b/runtime/queries/problog/indents.scm diff --git a/queries/problog/injections.scm b/runtime/queries/problog/injections.scm index 768718207..768718207 100644 --- a/queries/problog/injections.scm +++ b/runtime/queries/problog/injections.scm diff --git a/queries/prolog/folds.scm b/runtime/queries/prolog/folds.scm index 70a401511..70a401511 100644 --- a/queries/prolog/folds.scm +++ b/runtime/queries/prolog/folds.scm diff --git a/queries/prolog/highlights.scm b/runtime/queries/prolog/highlights.scm index fc89b6fef..fc89b6fef 100644 --- a/queries/prolog/highlights.scm +++ b/runtime/queries/prolog/highlights.scm diff --git a/queries/prolog/indents.scm b/runtime/queries/prolog/indents.scm index a7f9b0383..a7f9b0383 100644 --- a/queries/prolog/indents.scm +++ b/runtime/queries/prolog/indents.scm diff --git a/queries/odin/injections.scm b/runtime/queries/prolog/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/odin/injections.scm +++ b/runtime/queries/prolog/injections.scm diff --git a/queries/promql/highlights.scm b/runtime/queries/promql/highlights.scm index a99fcdd05..a99fcdd05 100644 --- a/queries/promql/highlights.scm +++ b/runtime/queries/promql/highlights.scm diff --git a/queries/promql/injections.scm b/runtime/queries/promql/injections.scm index 791aba3d8..791aba3d8 100644 --- a/queries/promql/injections.scm +++ b/runtime/queries/promql/injections.scm diff --git a/queries/properties/highlights.scm b/runtime/queries/properties/highlights.scm index b9390be8c..b9390be8c 100644 --- a/queries/properties/highlights.scm +++ b/runtime/queries/properties/highlights.scm diff --git a/queries/pem/injections.scm b/runtime/queries/properties/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/pem/injections.scm +++ b/runtime/queries/properties/injections.scm diff --git a/queries/properties/locals.scm b/runtime/queries/properties/locals.scm index 91a3b9a86..91a3b9a86 100644 --- a/queries/properties/locals.scm +++ b/runtime/queries/properties/locals.scm diff --git a/queries/proto/folds.scm b/runtime/queries/proto/folds.scm index 645ac1819..645ac1819 100644 --- a/queries/proto/folds.scm +++ b/runtime/queries/proto/folds.scm diff --git a/queries/proto/highlights.scm b/runtime/queries/proto/highlights.scm index 51f44a754..51f44a754 100644 --- a/queries/proto/highlights.scm +++ b/runtime/queries/proto/highlights.scm diff --git a/queries/proto/indents.scm b/runtime/queries/proto/indents.scm index 4307b2a19..4307b2a19 100644 --- a/queries/proto/indents.scm +++ b/runtime/queries/proto/indents.scm diff --git a/queries/po/injections.scm b/runtime/queries/proto/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/po/injections.scm +++ b/runtime/queries/proto/injections.scm diff --git a/queries/prql/highlights.scm b/runtime/queries/prql/highlights.scm index d24777dc0..d24777dc0 100644 --- a/queries/prql/highlights.scm +++ b/runtime/queries/prql/highlights.scm diff --git a/queries/prql/injections.scm b/runtime/queries/prql/injections.scm index e6cbeda35..e6cbeda35 100644 --- a/queries/prql/injections.scm +++ b/runtime/queries/prql/injections.scm diff --git a/queries/psv/highlights.scm b/runtime/queries/psv/highlights.scm index b7303fe0b..b7303fe0b 100644 --- a/queries/psv/highlights.scm +++ b/runtime/queries/psv/highlights.scm diff --git a/queries/pug/highlights.scm b/runtime/queries/pug/highlights.scm index e32cb21e1..e32cb21e1 100644 --- a/queries/pug/highlights.scm +++ b/runtime/queries/pug/highlights.scm diff --git a/queries/pug/injections.scm b/runtime/queries/pug/injections.scm index 0c01e47eb..0c01e47eb 100644 --- a/queries/pug/injections.scm +++ b/runtime/queries/pug/injections.scm diff --git a/queries/puppet/folds.scm b/runtime/queries/puppet/folds.scm index 78800fe4c..78800fe4c 100644 --- a/queries/puppet/folds.scm +++ b/runtime/queries/puppet/folds.scm diff --git a/queries/puppet/highlights.scm b/runtime/queries/puppet/highlights.scm index 10621930f..10621930f 100644 --- a/queries/puppet/highlights.scm +++ b/runtime/queries/puppet/highlights.scm diff --git a/queries/puppet/indents.scm b/runtime/queries/puppet/indents.scm index 71c882f33..71c882f33 100644 --- a/queries/puppet/indents.scm +++ b/runtime/queries/puppet/indents.scm diff --git a/queries/puppet/injections.scm b/runtime/queries/puppet/injections.scm index caa10a2b0..caa10a2b0 100644 --- a/queries/puppet/injections.scm +++ b/runtime/queries/puppet/injections.scm diff --git a/queries/puppet/locals.scm b/runtime/queries/puppet/locals.scm index f145fffbc..f145fffbc 100644 --- a/queries/puppet/locals.scm +++ b/runtime/queries/puppet/locals.scm diff --git a/queries/purescript/highlights.scm b/runtime/queries/purescript/highlights.scm index 02426b0ab..02426b0ab 100644 --- a/queries/purescript/highlights.scm +++ b/runtime/queries/purescript/highlights.scm diff --git a/queries/poe_filter/injections.scm b/runtime/queries/purescript/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/poe_filter/injections.scm +++ b/runtime/queries/purescript/injections.scm diff --git a/queries/purescript/locals.scm b/runtime/queries/purescript/locals.scm index 16265231d..16265231d 100644 --- a/queries/purescript/locals.scm +++ b/runtime/queries/purescript/locals.scm diff --git a/queries/pymanifest/highlights.scm b/runtime/queries/pymanifest/highlights.scm index 11d8b605f..11d8b605f 100644 --- a/queries/pymanifest/highlights.scm +++ b/runtime/queries/pymanifest/highlights.scm diff --git a/queries/prolog/injections.scm b/runtime/queries/pymanifest/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/prolog/injections.scm +++ b/runtime/queries/pymanifest/injections.scm diff --git a/queries/python/folds.scm b/runtime/queries/python/folds.scm index ecb9352d7..ecb9352d7 100644 --- a/queries/python/folds.scm +++ b/runtime/queries/python/folds.scm diff --git a/queries/python/highlights.scm b/runtime/queries/python/highlights.scm index 00250de1b..00250de1b 100644 --- a/queries/python/highlights.scm +++ b/runtime/queries/python/highlights.scm diff --git a/queries/python/indents.scm b/runtime/queries/python/indents.scm index 2414812a7..2414812a7 100644 --- a/queries/python/indents.scm +++ b/runtime/queries/python/indents.scm diff --git a/queries/python/injections.scm b/runtime/queries/python/injections.scm index bbc924be4..bbc924be4 100644 --- a/queries/python/injections.scm +++ b/runtime/queries/python/injections.scm diff --git a/queries/python/locals.scm b/runtime/queries/python/locals.scm index b012e9eee..b012e9eee 100644 --- a/queries/python/locals.scm +++ b/runtime/queries/python/locals.scm diff --git a/queries/ql/folds.scm b/runtime/queries/ql/folds.scm index eb7f27273..eb7f27273 100644 --- a/queries/ql/folds.scm +++ b/runtime/queries/ql/folds.scm diff --git a/queries/ql/highlights.scm b/runtime/queries/ql/highlights.scm index f42812068..f42812068 100644 --- a/queries/ql/highlights.scm +++ b/runtime/queries/ql/highlights.scm diff --git a/queries/ql/indents.scm b/runtime/queries/ql/indents.scm index 1a4a1bdea..1a4a1bdea 100644 --- a/queries/ql/indents.scm +++ b/runtime/queries/ql/indents.scm diff --git a/queries/ql/injections.scm b/runtime/queries/ql/injections.scm index 090116c89..090116c89 100644 --- a/queries/ql/injections.scm +++ b/runtime/queries/ql/injections.scm diff --git a/queries/ql/locals.scm b/runtime/queries/ql/locals.scm index 239420151..239420151 100644 --- a/queries/ql/locals.scm +++ b/runtime/queries/ql/locals.scm diff --git a/queries/qmldir/highlights.scm b/runtime/queries/qmldir/highlights.scm index 780dbb3d4..780dbb3d4 100644 --- a/queries/qmldir/highlights.scm +++ b/runtime/queries/qmldir/highlights.scm diff --git a/queries/properties/injections.scm b/runtime/queries/qmldir/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/properties/injections.scm +++ b/runtime/queries/qmldir/injections.scm diff --git a/queries/qmljs/folds.scm b/runtime/queries/qmljs/folds.scm index 9b917993e..9b917993e 100644 --- a/queries/qmljs/folds.scm +++ b/runtime/queries/qmljs/folds.scm diff --git a/queries/qmljs/highlights.scm b/runtime/queries/qmljs/highlights.scm index 27f332028..27f332028 100644 --- a/queries/qmljs/highlights.scm +++ b/runtime/queries/qmljs/highlights.scm diff --git a/queries/qmljs/injections.scm b/runtime/queries/qmljs/injections.scm index 04328f099..04328f099 100644 --- a/queries/qmljs/injections.scm +++ b/runtime/queries/qmljs/injections.scm diff --git a/queries/query/folds.scm b/runtime/queries/query/folds.scm index 47dd96512..47dd96512 100644 --- a/queries/query/folds.scm +++ b/runtime/queries/query/folds.scm diff --git a/queries/query/highlights.scm b/runtime/queries/query/highlights.scm index cbd192a8f..cbd192a8f 100644 --- a/queries/query/highlights.scm +++ b/runtime/queries/query/highlights.scm diff --git a/queries/query/indents.scm b/runtime/queries/query/indents.scm index 5cea97e1e..5cea97e1e 100644 --- a/queries/query/indents.scm +++ b/runtime/queries/query/indents.scm diff --git a/queries/query/injections.scm b/runtime/queries/query/injections.scm index 759f9b2e2..759f9b2e2 100644 --- a/queries/query/injections.scm +++ b/runtime/queries/query/injections.scm diff --git a/queries/query/locals.scm b/runtime/queries/query/locals.scm index eca196aba..eca196aba 100644 --- a/queries/query/locals.scm +++ b/runtime/queries/query/locals.scm diff --git a/queries/r/highlights.scm b/runtime/queries/r/highlights.scm index c849dd838..c849dd838 100644 --- a/queries/r/highlights.scm +++ b/runtime/queries/r/highlights.scm diff --git a/queries/r/indents.scm b/runtime/queries/r/indents.scm index 79dbe5167..79dbe5167 100644 --- a/queries/r/indents.scm +++ b/runtime/queries/r/indents.scm diff --git a/queries/proto/injections.scm b/runtime/queries/r/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/proto/injections.scm +++ b/runtime/queries/r/injections.scm diff --git a/queries/r/locals.scm b/runtime/queries/r/locals.scm index 3377552c8..3377552c8 100644 --- a/queries/r/locals.scm +++ b/runtime/queries/r/locals.scm diff --git a/queries/racket/folds.scm b/runtime/queries/racket/folds.scm index 115809a77..115809a77 100644 --- a/queries/racket/folds.scm +++ b/runtime/queries/racket/folds.scm diff --git a/queries/racket/highlights.scm b/runtime/queries/racket/highlights.scm index 9e3066743..9e3066743 100644 --- a/queries/racket/highlights.scm +++ b/runtime/queries/racket/highlights.scm diff --git a/queries/racket/injections.scm b/runtime/queries/racket/injections.scm index dc8982053..dc8982053 100644 --- a/queries/racket/injections.scm +++ b/runtime/queries/racket/injections.scm diff --git a/queries/ralph/highlights.scm b/runtime/queries/ralph/highlights.scm index e56ffa5a2..e56ffa5a2 100644 --- a/queries/ralph/highlights.scm +++ b/runtime/queries/ralph/highlights.scm diff --git a/queries/ralph/injections.scm b/runtime/queries/ralph/injections.scm index 36849c873..36849c873 100644 --- a/queries/ralph/injections.scm +++ b/runtime/queries/ralph/injections.scm diff --git a/queries/rasi/folds.scm b/runtime/queries/rasi/folds.scm index 2fd6c9fa7..2fd6c9fa7 100644 --- a/queries/rasi/folds.scm +++ b/runtime/queries/rasi/folds.scm diff --git a/queries/rasi/highlights.scm b/runtime/queries/rasi/highlights.scm index d095cef63..d095cef63 100644 --- a/queries/rasi/highlights.scm +++ b/runtime/queries/rasi/highlights.scm diff --git a/queries/rasi/indents.scm b/runtime/queries/rasi/indents.scm index 849d8aeac..849d8aeac 100644 --- a/queries/rasi/indents.scm +++ b/runtime/queries/rasi/indents.scm diff --git a/queries/purescript/injections.scm b/runtime/queries/rasi/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/purescript/injections.scm +++ b/runtime/queries/rasi/injections.scm diff --git a/queries/rasi/locals.scm b/runtime/queries/rasi/locals.scm index 9210de6ea..9210de6ea 100644 --- a/queries/rasi/locals.scm +++ b/runtime/queries/rasi/locals.scm diff --git a/queries/razor/folds.scm b/runtime/queries/razor/folds.scm index f026cb8ec..f026cb8ec 100644 --- a/queries/razor/folds.scm +++ b/runtime/queries/razor/folds.scm diff --git a/queries/razor/highlights.scm b/runtime/queries/razor/highlights.scm index 2050bde9c..2050bde9c 100644 --- a/queries/razor/highlights.scm +++ b/runtime/queries/razor/highlights.scm diff --git a/queries/razor/injections.scm b/runtime/queries/razor/injections.scm index f73839bd6..f73839bd6 100644 --- a/queries/razor/injections.scm +++ b/runtime/queries/razor/injections.scm diff --git a/queries/rbs/folds.scm b/runtime/queries/rbs/folds.scm index ff8e7c588..ff8e7c588 100644 --- a/queries/rbs/folds.scm +++ b/runtime/queries/rbs/folds.scm diff --git a/queries/rbs/highlights.scm b/runtime/queries/rbs/highlights.scm index 9de9c427d..9de9c427d 100644 --- a/queries/rbs/highlights.scm +++ b/runtime/queries/rbs/highlights.scm diff --git a/queries/rbs/indents.scm b/runtime/queries/rbs/indents.scm index f6da5b10b..f6da5b10b 100644 --- a/queries/rbs/indents.scm +++ b/runtime/queries/rbs/indents.scm diff --git a/queries/pymanifest/injections.scm b/runtime/queries/rbs/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/pymanifest/injections.scm +++ b/runtime/queries/rbs/injections.scm diff --git a/queries/re2c/folds.scm b/runtime/queries/re2c/folds.scm index b4cf5f24e..b4cf5f24e 100644 --- a/queries/re2c/folds.scm +++ b/runtime/queries/re2c/folds.scm diff --git a/queries/re2c/highlights.scm b/runtime/queries/re2c/highlights.scm index c89c30745..c89c30745 100644 --- a/queries/re2c/highlights.scm +++ b/runtime/queries/re2c/highlights.scm diff --git a/queries/re2c/indents.scm b/runtime/queries/re2c/indents.scm index 31ccf2a0f..31ccf2a0f 100644 --- a/queries/re2c/indents.scm +++ b/runtime/queries/re2c/indents.scm diff --git a/queries/re2c/injections.scm b/runtime/queries/re2c/injections.scm index f0cb1a989..f0cb1a989 100644 --- a/queries/re2c/injections.scm +++ b/runtime/queries/re2c/injections.scm diff --git a/queries/re2c/locals.scm b/runtime/queries/re2c/locals.scm index eea1ede89..eea1ede89 100644 --- a/queries/re2c/locals.scm +++ b/runtime/queries/re2c/locals.scm diff --git a/queries/readline/folds.scm b/runtime/queries/readline/folds.scm index 57c9bc7da..57c9bc7da 100644 --- a/queries/readline/folds.scm +++ b/runtime/queries/readline/folds.scm diff --git a/queries/readline/highlights.scm b/runtime/queries/readline/highlights.scm index 570e55b3d..570e55b3d 100644 --- a/queries/readline/highlights.scm +++ b/runtime/queries/readline/highlights.scm diff --git a/queries/readline/indents.scm b/runtime/queries/readline/indents.scm index d7dc67421..d7dc67421 100644 --- a/queries/readline/indents.scm +++ b/runtime/queries/readline/indents.scm diff --git a/queries/qmldir/injections.scm b/runtime/queries/readline/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/qmldir/injections.scm +++ b/runtime/queries/readline/injections.scm diff --git a/queries/regex/highlights.scm b/runtime/queries/regex/highlights.scm index 350d1d0f3..350d1d0f3 100644 --- a/queries/regex/highlights.scm +++ b/runtime/queries/regex/highlights.scm diff --git a/queries/rego/highlights.scm b/runtime/queries/rego/highlights.scm index 3cc32949d..3cc32949d 100644 --- a/queries/rego/highlights.scm +++ b/runtime/queries/rego/highlights.scm diff --git a/queries/r/injections.scm b/runtime/queries/rego/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/r/injections.scm +++ b/runtime/queries/rego/injections.scm diff --git a/queries/requirements/highlights.scm b/runtime/queries/requirements/highlights.scm index a04922a26..a04922a26 100644 --- a/queries/requirements/highlights.scm +++ b/runtime/queries/requirements/highlights.scm diff --git a/queries/rasi/injections.scm b/runtime/queries/requirements/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/rasi/injections.scm +++ b/runtime/queries/requirements/injections.scm diff --git a/queries/rescript/folds.scm b/runtime/queries/rescript/folds.scm index 4e658a57c..4e658a57c 100644 --- a/queries/rescript/folds.scm +++ b/runtime/queries/rescript/folds.scm diff --git a/queries/rescript/highlights.scm b/runtime/queries/rescript/highlights.scm index e7cba9be8..e7cba9be8 100644 --- a/queries/rescript/highlights.scm +++ b/runtime/queries/rescript/highlights.scm diff --git a/queries/rescript/indents.scm b/runtime/queries/rescript/indents.scm index 0b635dd4d..0b635dd4d 100644 --- a/queries/rescript/indents.scm +++ b/runtime/queries/rescript/indents.scm diff --git a/queries/rescript/injections.scm b/runtime/queries/rescript/injections.scm index 434404bef..434404bef 100644 --- a/queries/rescript/injections.scm +++ b/runtime/queries/rescript/injections.scm diff --git a/queries/rescript/locals.scm b/runtime/queries/rescript/locals.scm index 10a663bd7..10a663bd7 100644 --- a/queries/rescript/locals.scm +++ b/runtime/queries/rescript/locals.scm diff --git a/queries/rnoweb/folds.scm b/runtime/queries/rnoweb/folds.scm index 893758ccd..893758ccd 100644 --- a/queries/rnoweb/folds.scm +++ b/runtime/queries/rnoweb/folds.scm diff --git a/queries/rnoweb/highlights.scm b/runtime/queries/rnoweb/highlights.scm index 81afaf101..81afaf101 100644 --- a/queries/rnoweb/highlights.scm +++ b/runtime/queries/rnoweb/highlights.scm diff --git a/queries/rnoweb/injections.scm b/runtime/queries/rnoweb/injections.scm index 123cfb8a3..123cfb8a3 100644 --- a/queries/rnoweb/injections.scm +++ b/runtime/queries/rnoweb/injections.scm diff --git a/queries/robot/folds.scm b/runtime/queries/robot/folds.scm index 948f8a17d..948f8a17d 100644 --- a/queries/robot/folds.scm +++ b/runtime/queries/robot/folds.scm diff --git a/queries/robot/highlights.scm b/runtime/queries/robot/highlights.scm index a9c545b8a..a9c545b8a 100644 --- a/queries/robot/highlights.scm +++ b/runtime/queries/robot/highlights.scm diff --git a/queries/robot/indents.scm b/runtime/queries/robot/indents.scm index 457fbff66..457fbff66 100644 --- a/queries/robot/indents.scm +++ b/runtime/queries/robot/indents.scm diff --git a/queries/robot/injections.scm b/runtime/queries/robot/injections.scm index 56e37005e..56e37005e 100644 --- a/queries/robot/injections.scm +++ b/runtime/queries/robot/injections.scm diff --git a/queries/robots/highlights.scm b/runtime/queries/robots/highlights.scm index a2c55c74f..a2c55c74f 100644 --- a/queries/robots/highlights.scm +++ b/runtime/queries/robots/highlights.scm diff --git a/queries/rbs/injections.scm b/runtime/queries/robots/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/rbs/injections.scm +++ b/runtime/queries/robots/injections.scm diff --git a/queries/roc/highlights.scm b/runtime/queries/roc/highlights.scm index 4993017dc..4993017dc 100644 --- a/queries/roc/highlights.scm +++ b/runtime/queries/roc/highlights.scm diff --git a/queries/roc/indents.scm b/runtime/queries/roc/indents.scm index 9a08f2074..9a08f2074 100644 --- a/queries/roc/indents.scm +++ b/runtime/queries/roc/indents.scm diff --git a/queries/roc/injections.scm b/runtime/queries/roc/injections.scm index 5bc7576f8..5bc7576f8 100644 --- a/queries/roc/injections.scm +++ b/runtime/queries/roc/injections.scm diff --git a/queries/roc/locals.scm b/runtime/queries/roc/locals.scm index 29f04e990..29f04e990 100644 --- a/queries/roc/locals.scm +++ b/runtime/queries/roc/locals.scm diff --git a/queries/ron/folds.scm b/runtime/queries/ron/folds.scm index ae79583ea..ae79583ea 100644 --- a/queries/ron/folds.scm +++ b/runtime/queries/ron/folds.scm diff --git a/queries/ron/highlights.scm b/runtime/queries/ron/highlights.scm index 96507323b..96507323b 100644 --- a/queries/ron/highlights.scm +++ b/runtime/queries/ron/highlights.scm diff --git a/queries/ron/indents.scm b/runtime/queries/ron/indents.scm index 689d01fac..689d01fac 100644 --- a/queries/ron/indents.scm +++ b/runtime/queries/ron/indents.scm diff --git a/queries/ron/injections.scm b/runtime/queries/ron/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/ron/injections.scm +++ b/runtime/queries/ron/injections.scm diff --git a/queries/ron/locals.scm b/runtime/queries/ron/locals.scm index 81e38d5ed..81e38d5ed 100644 --- a/queries/ron/locals.scm +++ b/runtime/queries/ron/locals.scm diff --git a/queries/rst/highlights.scm b/runtime/queries/rst/highlights.scm index 21e3825c0..21e3825c0 100644 --- a/queries/rst/highlights.scm +++ b/runtime/queries/rst/highlights.scm diff --git a/queries/rst/injections.scm b/runtime/queries/rst/injections.scm index 7178de9da..7178de9da 100644 --- a/queries/rst/injections.scm +++ b/runtime/queries/rst/injections.scm diff --git a/queries/rst/locals.scm b/runtime/queries/rst/locals.scm index ce4235b43..ce4235b43 100644 --- a/queries/rst/locals.scm +++ b/runtime/queries/rst/locals.scm diff --git a/queries/ruby/folds.scm b/runtime/queries/ruby/folds.scm index 3a497b31b..3a497b31b 100644 --- a/queries/ruby/folds.scm +++ b/runtime/queries/ruby/folds.scm diff --git a/queries/ruby/highlights.scm b/runtime/queries/ruby/highlights.scm index 8de0251b1..a1a2c250d 100644 --- a/queries/ruby/highlights.scm +++ b/runtime/queries/ruby/highlights.scm @@ -170,9 +170,6 @@ (keyword_parameter (identifier) @variable.parameter) -; TODO: Re-enable this once it is supported -; ((identifier) @function -; (#is-not? local)) ; Literals [ (string_content) diff --git a/queries/ruby/indents.scm b/runtime/queries/ruby/indents.scm index b76732922..b76732922 100644 --- a/queries/ruby/indents.scm +++ b/runtime/queries/ruby/indents.scm diff --git a/queries/ruby/injections.scm b/runtime/queries/ruby/injections.scm index 12b2c32a5..12b2c32a5 100644 --- a/queries/ruby/injections.scm +++ b/runtime/queries/ruby/injections.scm diff --git a/queries/ruby/locals.scm b/runtime/queries/ruby/locals.scm index 29a67e2ba..29a67e2ba 100644 --- a/queries/ruby/locals.scm +++ b/runtime/queries/ruby/locals.scm diff --git a/queries/runescript/highlights.scm b/runtime/queries/runescript/highlights.scm index d0c9432bd..d0c9432bd 100644 --- a/queries/runescript/highlights.scm +++ b/runtime/queries/runescript/highlights.scm diff --git a/queries/readline/injections.scm b/runtime/queries/runescript/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/readline/injections.scm +++ b/runtime/queries/runescript/injections.scm diff --git a/queries/rust/folds.scm b/runtime/queries/rust/folds.scm index 9237b6f7b..9237b6f7b 100644 --- a/queries/rust/folds.scm +++ b/runtime/queries/rust/folds.scm diff --git a/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm index de9d09684..de9d09684 100644 --- a/queries/rust/highlights.scm +++ b/runtime/queries/rust/highlights.scm diff --git a/queries/rust/indents.scm b/runtime/queries/rust/indents.scm index 9fe337d5c..9fe337d5c 100644 --- a/queries/rust/indents.scm +++ b/runtime/queries/rust/indents.scm diff --git a/queries/rust/injections.scm b/runtime/queries/rust/injections.scm index 7bffd1fc9..7bffd1fc9 100644 --- a/queries/rust/injections.scm +++ b/runtime/queries/rust/injections.scm diff --git a/queries/rust/locals.scm b/runtime/queries/rust/locals.scm index 718d5f24a..718d5f24a 100644 --- a/queries/rust/locals.scm +++ b/runtime/queries/rust/locals.scm diff --git a/queries/scala/folds.scm b/runtime/queries/scala/folds.scm index b0f08188e..b0f08188e 100644 --- a/queries/scala/folds.scm +++ b/runtime/queries/scala/folds.scm diff --git a/queries/scala/highlights.scm b/runtime/queries/scala/highlights.scm index f85c502a4..f85c502a4 100644 --- a/queries/scala/highlights.scm +++ b/runtime/queries/scala/highlights.scm diff --git a/queries/rego/injections.scm b/runtime/queries/scala/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/rego/injections.scm +++ b/runtime/queries/scala/injections.scm diff --git a/queries/scala/locals.scm b/runtime/queries/scala/locals.scm index 7128a4984..7128a4984 100644 --- a/queries/scala/locals.scm +++ b/runtime/queries/scala/locals.scm diff --git a/queries/scfg/highlights.scm b/runtime/queries/scfg/highlights.scm index 058f3e3d4..058f3e3d4 100644 --- a/queries/scfg/highlights.scm +++ b/runtime/queries/scfg/highlights.scm diff --git a/queries/requirements/injections.scm b/runtime/queries/scfg/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/requirements/injections.scm +++ b/runtime/queries/scfg/injections.scm diff --git a/queries/scheme/folds.scm b/runtime/queries/scheme/folds.scm index 115809a77..115809a77 100644 --- a/queries/scheme/folds.scm +++ b/runtime/queries/scheme/folds.scm diff --git a/queries/scheme/highlights.scm b/runtime/queries/scheme/highlights.scm index 3d41e4951..3d41e4951 100644 --- a/queries/scheme/highlights.scm +++ b/runtime/queries/scheme/highlights.scm diff --git a/queries/robots/injections.scm b/runtime/queries/scheme/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/robots/injections.scm +++ b/runtime/queries/scheme/injections.scm diff --git a/queries/scss/folds.scm b/runtime/queries/scss/folds.scm index cbe41875e..cbe41875e 100644 --- a/queries/scss/folds.scm +++ b/runtime/queries/scss/folds.scm diff --git a/queries/scss/highlights.scm b/runtime/queries/scss/highlights.scm index 726256f8e..726256f8e 100644 --- a/queries/scss/highlights.scm +++ b/runtime/queries/scss/highlights.scm diff --git a/queries/scss/indents.scm b/runtime/queries/scss/indents.scm index 3d54a0467..3d54a0467 100644 --- a/queries/scss/indents.scm +++ b/runtime/queries/scss/indents.scm diff --git a/queries/scss/injections.scm b/runtime/queries/scss/injections.scm index c3a252a79..c3a252a79 100644 --- a/queries/scss/injections.scm +++ b/runtime/queries/scss/injections.scm diff --git a/queries/sflog/highlights.scm b/runtime/queries/sflog/highlights.scm index 8eeee5d24..8eeee5d24 100644 --- a/queries/sflog/highlights.scm +++ b/runtime/queries/sflog/highlights.scm diff --git a/queries/slang/folds.scm b/runtime/queries/slang/folds.scm index e0ae6853e..e0ae6853e 100644 --- a/queries/slang/folds.scm +++ b/runtime/queries/slang/folds.scm diff --git a/queries/slang/highlights.scm b/runtime/queries/slang/highlights.scm index 166964c62..166964c62 100644 --- a/queries/slang/highlights.scm +++ b/runtime/queries/slang/highlights.scm diff --git a/queries/slang/indents.scm b/runtime/queries/slang/indents.scm index 6175ac5bc..6175ac5bc 100644 --- a/queries/slang/indents.scm +++ b/runtime/queries/slang/indents.scm diff --git a/queries/slang/injections.scm b/runtime/queries/slang/injections.scm index 2fd39cba0..2fd39cba0 100644 --- a/queries/slang/injections.scm +++ b/runtime/queries/slang/injections.scm diff --git a/queries/slang/locals.scm b/runtime/queries/slang/locals.scm index 647bd1fef..647bd1fef 100644 --- a/queries/slang/locals.scm +++ b/runtime/queries/slang/locals.scm diff --git a/queries/slim/folds.scm b/runtime/queries/slim/folds.scm index aabc67617..aabc67617 100644 --- a/queries/slim/folds.scm +++ b/runtime/queries/slim/folds.scm diff --git a/queries/slim/highlights.scm b/runtime/queries/slim/highlights.scm index e219932f6..e219932f6 100644 --- a/queries/slim/highlights.scm +++ b/runtime/queries/slim/highlights.scm diff --git a/queries/slim/indents.scm b/runtime/queries/slim/indents.scm index a06a75867..a06a75867 100644 --- a/queries/slim/indents.scm +++ b/runtime/queries/slim/indents.scm diff --git a/queries/slim/injections.scm b/runtime/queries/slim/injections.scm index 3bee13931..3bee13931 100644 --- a/queries/slim/injections.scm +++ b/runtime/queries/slim/injections.scm diff --git a/queries/slim/locals.scm b/runtime/queries/slim/locals.scm index e9f0b0079..e9f0b0079 100644 --- a/queries/slim/locals.scm +++ b/runtime/queries/slim/locals.scm diff --git a/queries/slint/folds.scm b/runtime/queries/slint/folds.scm index 4c5b1307a..4c5b1307a 100644 --- a/queries/slint/folds.scm +++ b/runtime/queries/slint/folds.scm diff --git a/queries/slint/highlights.scm b/runtime/queries/slint/highlights.scm index 1b56b1c0d..1b56b1c0d 100644 --- a/queries/slint/highlights.scm +++ b/runtime/queries/slint/highlights.scm diff --git a/queries/slint/indents.scm b/runtime/queries/slint/indents.scm index d6bdeacde..d6bdeacde 100644 --- a/queries/slint/indents.scm +++ b/runtime/queries/slint/indents.scm diff --git a/queries/runescript/injections.scm b/runtime/queries/slint/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/runescript/injections.scm +++ b/runtime/queries/slint/injections.scm diff --git a/queries/slint/locals.scm b/runtime/queries/slint/locals.scm index 7e895a6b5..7e895a6b5 100644 --- a/queries/slint/locals.scm +++ b/runtime/queries/slint/locals.scm diff --git a/queries/smali/folds.scm b/runtime/queries/smali/folds.scm index c2062e5ef..c2062e5ef 100644 --- a/queries/smali/folds.scm +++ b/runtime/queries/smali/folds.scm diff --git a/queries/smali/highlights.scm b/runtime/queries/smali/highlights.scm index 161b732b2..161b732b2 100644 --- a/queries/smali/highlights.scm +++ b/runtime/queries/smali/highlights.scm diff --git a/queries/smali/indents.scm b/runtime/queries/smali/indents.scm index b4f37ddb4..b4f37ddb4 100644 --- a/queries/smali/indents.scm +++ b/runtime/queries/smali/indents.scm diff --git a/queries/scfg/injections.scm b/runtime/queries/smali/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/scfg/injections.scm +++ b/runtime/queries/smali/injections.scm diff --git a/queries/smali/locals.scm b/runtime/queries/smali/locals.scm index a34b799ba..a34b799ba 100644 --- a/queries/smali/locals.scm +++ b/runtime/queries/smali/locals.scm diff --git a/queries/smithy/highlights.scm b/runtime/queries/smithy/highlights.scm index 14e1f20fd..14e1f20fd 100644 --- a/queries/smithy/highlights.scm +++ b/runtime/queries/smithy/highlights.scm diff --git a/queries/smithy/injections.scm b/runtime/queries/smithy/injections.scm index cb85ecaa1..cb85ecaa1 100644 --- a/queries/smithy/injections.scm +++ b/runtime/queries/smithy/injections.scm diff --git a/queries/snakemake/folds.scm b/runtime/queries/snakemake/folds.scm index d154f3cde..d154f3cde 100644 --- a/queries/snakemake/folds.scm +++ b/runtime/queries/snakemake/folds.scm diff --git a/queries/snakemake/highlights.scm b/runtime/queries/snakemake/highlights.scm index 8781b405c..8781b405c 100644 --- a/queries/snakemake/highlights.scm +++ b/runtime/queries/snakemake/highlights.scm diff --git a/queries/snakemake/indents.scm b/runtime/queries/snakemake/indents.scm index 140b7fb3c..140b7fb3c 100644 --- a/queries/snakemake/indents.scm +++ b/runtime/queries/snakemake/indents.scm diff --git a/queries/snakemake/injections.scm b/runtime/queries/snakemake/injections.scm index fa56daabb..fa56daabb 100644 --- a/queries/snakemake/injections.scm +++ b/runtime/queries/snakemake/injections.scm diff --git a/queries/snakemake/locals.scm b/runtime/queries/snakemake/locals.scm index 219f23347..219f23347 100644 --- a/queries/snakemake/locals.scm +++ b/runtime/queries/snakemake/locals.scm diff --git a/queries/solidity/folds.scm b/runtime/queries/solidity/folds.scm index 7e3cbdec9..7e3cbdec9 100644 --- a/queries/solidity/folds.scm +++ b/runtime/queries/solidity/folds.scm diff --git a/queries/solidity/highlights.scm b/runtime/queries/solidity/highlights.scm index ca6988edb..ca6988edb 100644 --- a/queries/solidity/highlights.scm +++ b/runtime/queries/solidity/highlights.scm diff --git a/queries/scheme/injections.scm b/runtime/queries/solidity/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/scheme/injections.scm +++ b/runtime/queries/solidity/injections.scm diff --git a/queries/soql/highlights.scm b/runtime/queries/soql/highlights.scm index 11e9d582a..11e9d582a 100644 --- a/queries/soql/highlights.scm +++ b/runtime/queries/soql/highlights.scm diff --git a/queries/sosl/highlights.scm b/runtime/queries/sosl/highlights.scm index f3b77be3b..f3b77be3b 100644 --- a/queries/sosl/highlights.scm +++ b/runtime/queries/sosl/highlights.scm diff --git a/queries/sourcepawn/highlights.scm b/runtime/queries/sourcepawn/highlights.scm index 21cbb9733..21cbb9733 100644 --- a/queries/sourcepawn/highlights.scm +++ b/runtime/queries/sourcepawn/highlights.scm diff --git a/queries/sourcepawn/injections.scm b/runtime/queries/sourcepawn/injections.scm index c579ffad8..c579ffad8 100644 --- a/queries/sourcepawn/injections.scm +++ b/runtime/queries/sourcepawn/injections.scm diff --git a/queries/sourcepawn/locals.scm b/runtime/queries/sourcepawn/locals.scm index 39d6fb516..39d6fb516 100644 --- a/queries/sourcepawn/locals.scm +++ b/runtime/queries/sourcepawn/locals.scm diff --git a/queries/sparql/folds.scm b/runtime/queries/sparql/folds.scm index 2b93a7bc7..2b93a7bc7 100644 --- a/queries/sparql/folds.scm +++ b/runtime/queries/sparql/folds.scm diff --git a/queries/sparql/highlights.scm b/runtime/queries/sparql/highlights.scm index 19c0257ca..19c0257ca 100644 --- a/queries/sparql/highlights.scm +++ b/runtime/queries/sparql/highlights.scm diff --git a/queries/sparql/indents.scm b/runtime/queries/sparql/indents.scm index e070546df..e070546df 100644 --- a/queries/sparql/indents.scm +++ b/runtime/queries/sparql/indents.scm diff --git a/queries/sparql/injections.scm b/runtime/queries/sparql/injections.scm index bce9a19ee..bce9a19ee 100644 --- a/queries/sparql/injections.scm +++ b/runtime/queries/sparql/injections.scm diff --git a/queries/sparql/locals.scm b/runtime/queries/sparql/locals.scm index cbb2bb252..cbb2bb252 100644 --- a/queries/sparql/locals.scm +++ b/runtime/queries/sparql/locals.scm diff --git a/queries/sql/folds.scm b/runtime/queries/sql/folds.scm index 07f2282d0..07f2282d0 100644 --- a/queries/sql/folds.scm +++ b/runtime/queries/sql/folds.scm diff --git a/queries/sql/highlights.scm b/runtime/queries/sql/highlights.scm index 67eef18ae..67eef18ae 100644 --- a/queries/sql/highlights.scm +++ b/runtime/queries/sql/highlights.scm diff --git a/queries/sql/indents.scm b/runtime/queries/sql/indents.scm index 34ae079dd..34ae079dd 100644 --- a/queries/sql/indents.scm +++ b/runtime/queries/sql/indents.scm diff --git a/queries/sql/injections.scm b/runtime/queries/sql/injections.scm index 602997440..602997440 100644 --- a/queries/sql/injections.scm +++ b/runtime/queries/sql/injections.scm diff --git a/queries/squirrel/folds.scm b/runtime/queries/squirrel/folds.scm index c2903cc66..c2903cc66 100644 --- a/queries/squirrel/folds.scm +++ b/runtime/queries/squirrel/folds.scm diff --git a/queries/squirrel/highlights.scm b/runtime/queries/squirrel/highlights.scm index 03acacadc..03acacadc 100644 --- a/queries/squirrel/highlights.scm +++ b/runtime/queries/squirrel/highlights.scm diff --git a/queries/squirrel/indents.scm b/runtime/queries/squirrel/indents.scm index 00245d6ae..00245d6ae 100644 --- a/queries/squirrel/indents.scm +++ b/runtime/queries/squirrel/indents.scm diff --git a/queries/squirrel/injections.scm b/runtime/queries/squirrel/injections.scm index 578a9eeca..578a9eeca 100644 --- a/queries/squirrel/injections.scm +++ b/runtime/queries/squirrel/injections.scm diff --git a/queries/squirrel/locals.scm b/runtime/queries/squirrel/locals.scm index e5fce7d57..e5fce7d57 100644 --- a/queries/squirrel/locals.scm +++ b/runtime/queries/squirrel/locals.scm diff --git a/queries/ssh_config/folds.scm b/runtime/queries/ssh_config/folds.scm index 659835657..659835657 100644 --- a/queries/ssh_config/folds.scm +++ b/runtime/queries/ssh_config/folds.scm diff --git a/queries/ssh_config/highlights.scm b/runtime/queries/ssh_config/highlights.scm index b58360b69..b58360b69 100644 --- a/queries/ssh_config/highlights.scm +++ b/runtime/queries/ssh_config/highlights.scm diff --git a/queries/ssh_config/indents.scm b/runtime/queries/ssh_config/indents.scm index 760707f17..760707f17 100644 --- a/queries/ssh_config/indents.scm +++ b/runtime/queries/ssh_config/indents.scm diff --git a/queries/ssh_config/injections.scm b/runtime/queries/ssh_config/injections.scm index d1b24be61..d1b24be61 100644 --- a/queries/ssh_config/injections.scm +++ b/runtime/queries/ssh_config/injections.scm diff --git a/queries/ssh_config/locals.scm b/runtime/queries/ssh_config/locals.scm index a3309a9a6..a3309a9a6 100644 --- a/queries/ssh_config/locals.scm +++ b/runtime/queries/ssh_config/locals.scm diff --git a/queries/starlark/folds.scm b/runtime/queries/starlark/folds.scm index 0c9d2a260..0c9d2a260 100644 --- a/queries/starlark/folds.scm +++ b/runtime/queries/starlark/folds.scm diff --git a/queries/starlark/highlights.scm b/runtime/queries/starlark/highlights.scm index fe3dce89b..fe3dce89b 100644 --- a/queries/starlark/highlights.scm +++ b/runtime/queries/starlark/highlights.scm diff --git a/queries/starlark/indents.scm b/runtime/queries/starlark/indents.scm index 1aeb9f60e..1aeb9f60e 100644 --- a/queries/starlark/indents.scm +++ b/runtime/queries/starlark/indents.scm diff --git a/queries/starlark/injections.scm b/runtime/queries/starlark/injections.scm index 2b60646e2..2b60646e2 100644 --- a/queries/starlark/injections.scm +++ b/runtime/queries/starlark/injections.scm diff --git a/queries/starlark/locals.scm b/runtime/queries/starlark/locals.scm index 82ec0b5d2..82ec0b5d2 100644 --- a/queries/starlark/locals.scm +++ b/runtime/queries/starlark/locals.scm diff --git a/queries/strace/highlights.scm b/runtime/queries/strace/highlights.scm index 70a14fd2d..70a14fd2d 100644 --- a/queries/strace/highlights.scm +++ b/runtime/queries/strace/highlights.scm diff --git a/queries/slint/injections.scm b/runtime/queries/strace/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/slint/injections.scm +++ b/runtime/queries/strace/injections.scm diff --git a/queries/styled/folds.scm b/runtime/queries/styled/folds.scm index cbe41875e..cbe41875e 100644 --- a/queries/styled/folds.scm +++ b/runtime/queries/styled/folds.scm diff --git a/queries/styled/highlights.scm b/runtime/queries/styled/highlights.scm index cbe41875e..cbe41875e 100644 --- a/queries/styled/highlights.scm +++ b/runtime/queries/styled/highlights.scm diff --git a/queries/styled/indents.scm b/runtime/queries/styled/indents.scm index cbe41875e..cbe41875e 100644 --- a/queries/styled/indents.scm +++ b/runtime/queries/styled/indents.scm diff --git a/queries/styled/injections.scm b/runtime/queries/styled/injections.scm index cbe41875e..cbe41875e 100644 --- a/queries/styled/injections.scm +++ b/runtime/queries/styled/injections.scm diff --git a/queries/supercollider/folds.scm b/runtime/queries/supercollider/folds.scm index 2f5f1043a..2f5f1043a 100644 --- a/queries/supercollider/folds.scm +++ b/runtime/queries/supercollider/folds.scm diff --git a/queries/supercollider/highlights.scm b/runtime/queries/supercollider/highlights.scm index c56bce69a..c56bce69a 100644 --- a/queries/supercollider/highlights.scm +++ b/runtime/queries/supercollider/highlights.scm diff --git a/queries/supercollider/indents.scm b/runtime/queries/supercollider/indents.scm index c0cffab3c..c0cffab3c 100644 --- a/queries/supercollider/indents.scm +++ b/runtime/queries/supercollider/indents.scm diff --git a/queries/supercollider/injections.scm b/runtime/queries/supercollider/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/supercollider/injections.scm +++ b/runtime/queries/supercollider/injections.scm diff --git a/queries/supercollider/locals.scm b/runtime/queries/supercollider/locals.scm index 066bbf9ab..066bbf9ab 100644 --- a/queries/supercollider/locals.scm +++ b/runtime/queries/supercollider/locals.scm diff --git a/queries/superhtml/highlights.scm b/runtime/queries/superhtml/highlights.scm index cbf366d1c..cbf366d1c 100644 --- a/queries/superhtml/highlights.scm +++ b/runtime/queries/superhtml/highlights.scm diff --git a/queries/superhtml/injections.scm b/runtime/queries/superhtml/injections.scm index 138fe7c23..138fe7c23 100644 --- a/queries/superhtml/injections.scm +++ b/runtime/queries/superhtml/injections.scm diff --git a/queries/surface/folds.scm b/runtime/queries/surface/folds.scm index 994f12e1e..994f12e1e 100644 --- a/queries/surface/folds.scm +++ b/runtime/queries/surface/folds.scm diff --git a/queries/surface/highlights.scm b/runtime/queries/surface/highlights.scm index b874b8c1d..b874b8c1d 100644 --- a/queries/surface/highlights.scm +++ b/runtime/queries/surface/highlights.scm diff --git a/queries/surface/indents.scm b/runtime/queries/surface/indents.scm index 1df9fe6fd..1df9fe6fd 100644 --- a/queries/surface/indents.scm +++ b/runtime/queries/surface/indents.scm diff --git a/queries/surface/injections.scm b/runtime/queries/surface/injections.scm index 72cab5e80..72cab5e80 100644 --- a/queries/surface/injections.scm +++ b/runtime/queries/surface/injections.scm diff --git a/queries/svelte/folds.scm b/runtime/queries/svelte/folds.scm index 6440301af..6440301af 100644 --- a/queries/svelte/folds.scm +++ b/runtime/queries/svelte/folds.scm diff --git a/queries/svelte/highlights.scm b/runtime/queries/svelte/highlights.scm index dc98290dd..dc98290dd 100644 --- a/queries/svelte/highlights.scm +++ b/runtime/queries/svelte/highlights.scm diff --git a/queries/svelte/indents.scm b/runtime/queries/svelte/indents.scm index 0c67647d7..0c67647d7 100644 --- a/queries/svelte/indents.scm +++ b/runtime/queries/svelte/indents.scm diff --git a/queries/svelte/injections.scm b/runtime/queries/svelte/injections.scm index f20ae66c8..f20ae66c8 100644 --- a/queries/svelte/injections.scm +++ b/runtime/queries/svelte/injections.scm diff --git a/queries/svelte/locals.scm b/runtime/queries/svelte/locals.scm index 1f2129cf9..1f2129cf9 100644 --- a/queries/svelte/locals.scm +++ b/runtime/queries/svelte/locals.scm diff --git a/queries/sway/folds.scm b/runtime/queries/sway/folds.scm index ba8474aa2..ba8474aa2 100644 --- a/queries/sway/folds.scm +++ b/runtime/queries/sway/folds.scm diff --git a/queries/sway/highlights.scm b/runtime/queries/sway/highlights.scm index e408464fe..e408464fe 100644 --- a/queries/sway/highlights.scm +++ b/runtime/queries/sway/highlights.scm diff --git a/queries/sway/indents.scm b/runtime/queries/sway/indents.scm index 151d8b20b..151d8b20b 100644 --- a/queries/sway/indents.scm +++ b/runtime/queries/sway/indents.scm diff --git a/queries/sway/injections.scm b/runtime/queries/sway/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/sway/injections.scm +++ b/runtime/queries/sway/injections.scm diff --git a/queries/sway/locals.scm b/runtime/queries/sway/locals.scm index 5c2ade83a..5c2ade83a 100644 --- a/queries/sway/locals.scm +++ b/runtime/queries/sway/locals.scm diff --git a/queries/swift/folds.scm b/runtime/queries/swift/folds.scm index cfbc6d0b1..cfbc6d0b1 100644 --- a/queries/swift/folds.scm +++ b/runtime/queries/swift/folds.scm diff --git a/queries/swift/highlights.scm b/runtime/queries/swift/highlights.scm index 5c52ee9d6..5c52ee9d6 100644 --- a/queries/swift/highlights.scm +++ b/runtime/queries/swift/highlights.scm diff --git a/queries/swift/indents.scm b/runtime/queries/swift/indents.scm index 2366c3bd6..2366c3bd6 100644 --- a/queries/swift/indents.scm +++ b/runtime/queries/swift/indents.scm diff --git a/queries/swift/injections.scm b/runtime/queries/swift/injections.scm index 19aae904e..19aae904e 100644 --- a/queries/swift/injections.scm +++ b/runtime/queries/swift/injections.scm diff --git a/queries/swift/locals.scm b/runtime/queries/swift/locals.scm index dc8a62e9e..dc8a62e9e 100644 --- a/queries/swift/locals.scm +++ b/runtime/queries/swift/locals.scm diff --git a/queries/sxhkdrc/folds.scm b/runtime/queries/sxhkdrc/folds.scm index c6634aaef..c6634aaef 100644 --- a/queries/sxhkdrc/folds.scm +++ b/runtime/queries/sxhkdrc/folds.scm diff --git a/queries/sxhkdrc/highlights.scm b/runtime/queries/sxhkdrc/highlights.scm index 3f633a73d..3f633a73d 100644 --- a/queries/sxhkdrc/highlights.scm +++ b/runtime/queries/sxhkdrc/highlights.scm diff --git a/queries/sxhkdrc/injections.scm b/runtime/queries/sxhkdrc/injections.scm index d962c7a84..d962c7a84 100644 --- a/queries/sxhkdrc/injections.scm +++ b/runtime/queries/sxhkdrc/injections.scm diff --git a/queries/systemtap/folds.scm b/runtime/queries/systemtap/folds.scm index 58bb03e51..58bb03e51 100644 --- a/queries/systemtap/folds.scm +++ b/runtime/queries/systemtap/folds.scm diff --git a/queries/systemtap/highlights.scm b/runtime/queries/systemtap/highlights.scm index d1348dc91..d1348dc91 100644 --- a/queries/systemtap/highlights.scm +++ b/runtime/queries/systemtap/highlights.scm diff --git a/queries/systemtap/injections.scm b/runtime/queries/systemtap/injections.scm index 591df6012..591df6012 100644 --- a/queries/systemtap/injections.scm +++ b/runtime/queries/systemtap/injections.scm diff --git a/queries/systemtap/locals.scm b/runtime/queries/systemtap/locals.scm index 15056808c..15056808c 100644 --- a/queries/systemtap/locals.scm +++ b/runtime/queries/systemtap/locals.scm diff --git a/queries/t32/folds.scm b/runtime/queries/t32/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/t32/folds.scm +++ b/runtime/queries/t32/folds.scm diff --git a/queries/t32/highlights.scm b/runtime/queries/t32/highlights.scm index 9211a49d2..9211a49d2 100644 --- a/queries/t32/highlights.scm +++ b/runtime/queries/t32/highlights.scm diff --git a/queries/t32/indents.scm b/runtime/queries/t32/indents.scm index 01d5f3967..01d5f3967 100644 --- a/queries/t32/indents.scm +++ b/runtime/queries/t32/indents.scm diff --git a/queries/smali/injections.scm b/runtime/queries/t32/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/smali/injections.scm +++ b/runtime/queries/t32/injections.scm diff --git a/queries/t32/locals.scm b/runtime/queries/t32/locals.scm index 91bf7660e..91bf7660e 100644 --- a/queries/t32/locals.scm +++ b/runtime/queries/t32/locals.scm diff --git a/queries/tablegen/folds.scm b/runtime/queries/tablegen/folds.scm index 0e95ca527..0e95ca527 100644 --- a/queries/tablegen/folds.scm +++ b/runtime/queries/tablegen/folds.scm diff --git a/queries/tablegen/highlights.scm b/runtime/queries/tablegen/highlights.scm index c2f63b093..c2f63b093 100644 --- a/queries/tablegen/highlights.scm +++ b/runtime/queries/tablegen/highlights.scm diff --git a/queries/tablegen/indents.scm b/runtime/queries/tablegen/indents.scm index 16748edf1..16748edf1 100644 --- a/queries/tablegen/indents.scm +++ b/runtime/queries/tablegen/indents.scm diff --git a/queries/tablegen/injections.scm b/runtime/queries/tablegen/injections.scm index 99f7919b6..99f7919b6 100644 --- a/queries/tablegen/injections.scm +++ b/runtime/queries/tablegen/injections.scm diff --git a/queries/tablegen/locals.scm b/runtime/queries/tablegen/locals.scm index c73100193..c73100193 100644 --- a/queries/tablegen/locals.scm +++ b/runtime/queries/tablegen/locals.scm diff --git a/queries/tact/folds.scm b/runtime/queries/tact/folds.scm index adade3f1c..adade3f1c 100644 --- a/queries/tact/folds.scm +++ b/runtime/queries/tact/folds.scm diff --git a/queries/tact/highlights.scm b/runtime/queries/tact/highlights.scm index 345ca299c..345ca299c 100644 --- a/queries/tact/highlights.scm +++ b/runtime/queries/tact/highlights.scm diff --git a/queries/tact/indents.scm b/runtime/queries/tact/indents.scm index 1d05d4d82..1d05d4d82 100644 --- a/queries/tact/indents.scm +++ b/runtime/queries/tact/indents.scm diff --git a/queries/strace/injections.scm b/runtime/queries/tact/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/strace/injections.scm +++ b/runtime/queries/tact/injections.scm diff --git a/queries/tact/locals.scm b/runtime/queries/tact/locals.scm index 547ee42c8..547ee42c8 100644 --- a/queries/tact/locals.scm +++ b/runtime/queries/tact/locals.scm diff --git a/queries/tcl/folds.scm b/runtime/queries/tcl/folds.scm index 9084c662c..9084c662c 100644 --- a/queries/tcl/folds.scm +++ b/runtime/queries/tcl/folds.scm diff --git a/queries/tcl/highlights.scm b/runtime/queries/tcl/highlights.scm index c5f1f4c36..c5f1f4c36 100644 --- a/queries/tcl/highlights.scm +++ b/runtime/queries/tcl/highlights.scm diff --git a/queries/tcl/indents.scm b/runtime/queries/tcl/indents.scm index bc0355372..bc0355372 100644 --- a/queries/tcl/indents.scm +++ b/runtime/queries/tcl/indents.scm diff --git a/queries/t32/injections.scm b/runtime/queries/tcl/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/t32/injections.scm +++ b/runtime/queries/tcl/injections.scm diff --git a/queries/teal/folds.scm b/runtime/queries/teal/folds.scm index 27755de20..27755de20 100644 --- a/queries/teal/folds.scm +++ b/runtime/queries/teal/folds.scm diff --git a/queries/teal/highlights.scm b/runtime/queries/teal/highlights.scm index e58d588bb..e58d588bb 100644 --- a/queries/teal/highlights.scm +++ b/runtime/queries/teal/highlights.scm diff --git a/queries/teal/indents.scm b/runtime/queries/teal/indents.scm index 77b269cd9..77b269cd9 100644 --- a/queries/teal/indents.scm +++ b/runtime/queries/teal/indents.scm diff --git a/queries/teal/injections.scm b/runtime/queries/teal/injections.scm index decb4831c..decb4831c 100644 --- a/queries/teal/injections.scm +++ b/runtime/queries/teal/injections.scm diff --git a/queries/teal/locals.scm b/runtime/queries/teal/locals.scm index c2386c632..c2386c632 100644 --- a/queries/teal/locals.scm +++ b/runtime/queries/teal/locals.scm diff --git a/queries/templ/folds.scm b/runtime/queries/templ/folds.scm index adbbb103f..adbbb103f 100644 --- a/queries/templ/folds.scm +++ b/runtime/queries/templ/folds.scm diff --git a/queries/templ/highlights.scm b/runtime/queries/templ/highlights.scm index 034c91d5b..034c91d5b 100644 --- a/queries/templ/highlights.scm +++ b/runtime/queries/templ/highlights.scm diff --git a/queries/templ/injections.scm b/runtime/queries/templ/injections.scm index b9cf5a06a..b9cf5a06a 100644 --- a/queries/templ/injections.scm +++ b/runtime/queries/templ/injections.scm diff --git a/queries/tera/highlights.scm b/runtime/queries/tera/highlights.scm index f41ad826f..f41ad826f 100644 --- a/queries/tera/highlights.scm +++ b/runtime/queries/tera/highlights.scm diff --git a/queries/tera/injections.scm b/runtime/queries/tera/injections.scm index 394142081..394142081 100644 --- a/queries/tera/injections.scm +++ b/runtime/queries/tera/injections.scm diff --git a/queries/terraform/folds.scm b/runtime/queries/terraform/folds.scm index 0e5ffc2db..0e5ffc2db 100644 --- a/queries/terraform/folds.scm +++ b/runtime/queries/terraform/folds.scm diff --git a/queries/terraform/highlights.scm b/runtime/queries/terraform/highlights.scm index a6bf83cdb..a6bf83cdb 100644 --- a/queries/terraform/highlights.scm +++ b/runtime/queries/terraform/highlights.scm diff --git a/queries/terraform/indents.scm b/runtime/queries/terraform/indents.scm index 0e5ffc2db..0e5ffc2db 100644 --- a/queries/terraform/indents.scm +++ b/runtime/queries/terraform/indents.scm diff --git a/queries/terraform/injections.scm b/runtime/queries/terraform/injections.scm index 0e5ffc2db..0e5ffc2db 100644 --- a/queries/terraform/injections.scm +++ b/runtime/queries/terraform/injections.scm diff --git a/queries/textproto/folds.scm b/runtime/queries/textproto/folds.scm index f6eeead9a..f6eeead9a 100644 --- a/queries/textproto/folds.scm +++ b/runtime/queries/textproto/folds.scm diff --git a/queries/textproto/highlights.scm b/runtime/queries/textproto/highlights.scm index 527af0398..527af0398 100644 --- a/queries/textproto/highlights.scm +++ b/runtime/queries/textproto/highlights.scm diff --git a/queries/textproto/indents.scm b/runtime/queries/textproto/indents.scm index 155299e39..155299e39 100644 --- a/queries/textproto/indents.scm +++ b/runtime/queries/textproto/indents.scm diff --git a/queries/tact/injections.scm b/runtime/queries/textproto/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/tact/injections.scm +++ b/runtime/queries/textproto/injections.scm diff --git a/queries/thrift/folds.scm b/runtime/queries/thrift/folds.scm index 62880f98c..62880f98c 100644 --- a/queries/thrift/folds.scm +++ b/runtime/queries/thrift/folds.scm diff --git a/queries/thrift/highlights.scm b/runtime/queries/thrift/highlights.scm index 96136d7b5..96136d7b5 100644 --- a/queries/thrift/highlights.scm +++ b/runtime/queries/thrift/highlights.scm diff --git a/queries/thrift/indents.scm b/runtime/queries/thrift/indents.scm index db49c0712..db49c0712 100644 --- a/queries/thrift/indents.scm +++ b/runtime/queries/thrift/indents.scm diff --git a/queries/tcl/injections.scm b/runtime/queries/thrift/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/tcl/injections.scm +++ b/runtime/queries/thrift/injections.scm diff --git a/queries/thrift/locals.scm b/runtime/queries/thrift/locals.scm index 49f25bdde..49f25bdde 100644 --- a/queries/thrift/locals.scm +++ b/runtime/queries/thrift/locals.scm diff --git a/queries/tiger/folds.scm b/runtime/queries/tiger/folds.scm index 3b076bc18..3b076bc18 100644 --- a/queries/tiger/folds.scm +++ b/runtime/queries/tiger/folds.scm diff --git a/queries/tiger/highlights.scm b/runtime/queries/tiger/highlights.scm index cbb1f2310..cbb1f2310 100644 --- a/queries/tiger/highlights.scm +++ b/runtime/queries/tiger/highlights.scm diff --git a/queries/tiger/indents.scm b/runtime/queries/tiger/indents.scm index 686bfde16..686bfde16 100644 --- a/queries/tiger/indents.scm +++ b/runtime/queries/tiger/indents.scm diff --git a/queries/tiger/injections.scm b/runtime/queries/tiger/injections.scm index 9735c5935..9735c5935 100644 --- a/queries/tiger/injections.scm +++ b/runtime/queries/tiger/injections.scm diff --git a/queries/tiger/locals.scm b/runtime/queries/tiger/locals.scm index cd8dcd65f..cd8dcd65f 100644 --- a/queries/tiger/locals.scm +++ b/runtime/queries/tiger/locals.scm diff --git a/queries/tlaplus/folds.scm b/runtime/queries/tlaplus/folds.scm index 2ca0168c0..2ca0168c0 100644 --- a/queries/tlaplus/folds.scm +++ b/runtime/queries/tlaplus/folds.scm diff --git a/queries/tlaplus/highlights.scm b/runtime/queries/tlaplus/highlights.scm index 2eca927e7..2eca927e7 100644 --- a/queries/tlaplus/highlights.scm +++ b/runtime/queries/tlaplus/highlights.scm diff --git a/queries/tlaplus/injections.scm b/runtime/queries/tlaplus/injections.scm index fbeff500b..fbeff500b 100644 --- a/queries/tlaplus/injections.scm +++ b/runtime/queries/tlaplus/injections.scm diff --git a/queries/tlaplus/locals.scm b/runtime/queries/tlaplus/locals.scm index e105351ef..e105351ef 100644 --- a/queries/tlaplus/locals.scm +++ b/runtime/queries/tlaplus/locals.scm diff --git a/queries/tmux/highlights.scm b/runtime/queries/tmux/highlights.scm index 50da7d7d8..50da7d7d8 100644 --- a/queries/tmux/highlights.scm +++ b/runtime/queries/tmux/highlights.scm diff --git a/queries/tmux/injections.scm b/runtime/queries/tmux/injections.scm index 5bf6e27d2..5bf6e27d2 100644 --- a/queries/tmux/injections.scm +++ b/runtime/queries/tmux/injections.scm diff --git a/queries/todotxt/highlights.scm b/runtime/queries/todotxt/highlights.scm index 1da096201..1da096201 100644 --- a/queries/todotxt/highlights.scm +++ b/runtime/queries/todotxt/highlights.scm diff --git a/queries/toml/folds.scm b/runtime/queries/toml/folds.scm index a58aae4ca..a58aae4ca 100644 --- a/queries/toml/folds.scm +++ b/runtime/queries/toml/folds.scm diff --git a/queries/toml/highlights.scm b/runtime/queries/toml/highlights.scm index f4eaf3f77..f4eaf3f77 100644 --- a/queries/toml/highlights.scm +++ b/runtime/queries/toml/highlights.scm diff --git a/queries/toml/indents.scm b/runtime/queries/toml/indents.scm index a2391a4bd..a2391a4bd 100644 --- a/queries/toml/indents.scm +++ b/runtime/queries/toml/indents.scm diff --git a/queries/textproto/injections.scm b/runtime/queries/toml/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/textproto/injections.scm +++ b/runtime/queries/toml/injections.scm diff --git a/queries/toml/locals.scm b/runtime/queries/toml/locals.scm index 2ca4e5404..2ca4e5404 100644 --- a/queries/toml/locals.scm +++ b/runtime/queries/toml/locals.scm diff --git a/queries/tsv/highlights.scm b/runtime/queries/tsv/highlights.scm index f00f13da3..f00f13da3 100644 --- a/queries/tsv/highlights.scm +++ b/runtime/queries/tsv/highlights.scm diff --git a/queries/tsx/folds.scm b/runtime/queries/tsx/folds.scm index 07391231c..07391231c 100644 --- a/queries/tsx/folds.scm +++ b/runtime/queries/tsx/folds.scm diff --git a/queries/tsx/highlights.scm b/runtime/queries/tsx/highlights.scm index 07391231c..07391231c 100644 --- a/queries/tsx/highlights.scm +++ b/runtime/queries/tsx/highlights.scm diff --git a/queries/tsx/indents.scm b/runtime/queries/tsx/indents.scm index 07391231c..07391231c 100644 --- a/queries/tsx/indents.scm +++ b/runtime/queries/tsx/indents.scm diff --git a/queries/tsx/injections.scm b/runtime/queries/tsx/injections.scm index b6d9b28bf..b6d9b28bf 100644 --- a/queries/tsx/injections.scm +++ b/runtime/queries/tsx/injections.scm diff --git a/queries/tsx/locals.scm b/runtime/queries/tsx/locals.scm index 07391231c..07391231c 100644 --- a/queries/tsx/locals.scm +++ b/runtime/queries/tsx/locals.scm diff --git a/queries/turtle/folds.scm b/runtime/queries/turtle/folds.scm index f932a3731..f932a3731 100644 --- a/queries/turtle/folds.scm +++ b/runtime/queries/turtle/folds.scm diff --git a/queries/turtle/highlights.scm b/runtime/queries/turtle/highlights.scm index 30d1f4513..30d1f4513 100644 --- a/queries/turtle/highlights.scm +++ b/runtime/queries/turtle/highlights.scm diff --git a/queries/turtle/indents.scm b/runtime/queries/turtle/indents.scm index a60105667..a60105667 100644 --- a/queries/turtle/indents.scm +++ b/runtime/queries/turtle/indents.scm diff --git a/queries/thrift/injections.scm b/runtime/queries/turtle/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/thrift/injections.scm +++ b/runtime/queries/turtle/injections.scm diff --git a/queries/turtle/locals.scm b/runtime/queries/turtle/locals.scm index 0e251e2fa..0e251e2fa 100644 --- a/queries/turtle/locals.scm +++ b/runtime/queries/turtle/locals.scm diff --git a/queries/twig/highlights.scm b/runtime/queries/twig/highlights.scm index 435fdc0f1..435fdc0f1 100644 --- a/queries/twig/highlights.scm +++ b/runtime/queries/twig/highlights.scm diff --git a/queries/twig/injections.scm b/runtime/queries/twig/injections.scm index 3fd93feb7..3fd93feb7 100644 --- a/queries/twig/injections.scm +++ b/runtime/queries/twig/injections.scm diff --git a/queries/typescript/folds.scm b/runtime/queries/typescript/folds.scm index df0b8942a..df0b8942a 100644 --- a/queries/typescript/folds.scm +++ b/runtime/queries/typescript/folds.scm diff --git a/queries/typescript/highlights.scm b/runtime/queries/typescript/highlights.scm index 2fb13d800..2fb13d800 100644 --- a/queries/typescript/highlights.scm +++ b/runtime/queries/typescript/highlights.scm diff --git a/queries/typescript/indents.scm b/runtime/queries/typescript/indents.scm index 9a269ba75..9a269ba75 100644 --- a/queries/typescript/indents.scm +++ b/runtime/queries/typescript/indents.scm diff --git a/queries/typescript/injections.scm b/runtime/queries/typescript/injections.scm index 04328f099..04328f099 100644 --- a/queries/typescript/injections.scm +++ b/runtime/queries/typescript/injections.scm diff --git a/queries/typescript/locals.scm b/runtime/queries/typescript/locals.scm index b89d9a0c0..b89d9a0c0 100644 --- a/queries/typescript/locals.scm +++ b/runtime/queries/typescript/locals.scm diff --git a/queries/typespec/highlights.scm b/runtime/queries/typespec/highlights.scm index 68c67c0d1..68c67c0d1 100644 --- a/queries/typespec/highlights.scm +++ b/runtime/queries/typespec/highlights.scm diff --git a/queries/typespec/indents.scm b/runtime/queries/typespec/indents.scm index aee01f35a..aee01f35a 100644 --- a/queries/typespec/indents.scm +++ b/runtime/queries/typespec/indents.scm diff --git a/queries/typespec/injections.scm b/runtime/queries/typespec/injections.scm index 81d7734cb..81d7734cb 100644 --- a/queries/typespec/injections.scm +++ b/runtime/queries/typespec/injections.scm diff --git a/queries/typoscript/folds.scm b/runtime/queries/typoscript/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/typoscript/folds.scm +++ b/runtime/queries/typoscript/folds.scm diff --git a/queries/typoscript/highlights.scm b/runtime/queries/typoscript/highlights.scm index 63327f178..63327f178 100644 --- a/queries/typoscript/highlights.scm +++ b/runtime/queries/typoscript/highlights.scm diff --git a/queries/typoscript/indents.scm b/runtime/queries/typoscript/indents.scm index 4f5fb4797..4f5fb4797 100644 --- a/queries/typoscript/indents.scm +++ b/runtime/queries/typoscript/indents.scm diff --git a/queries/toml/injections.scm b/runtime/queries/typoscript/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/toml/injections.scm +++ b/runtime/queries/typoscript/injections.scm diff --git a/queries/typst/folds.scm b/runtime/queries/typst/folds.scm index ef0ec7956..ef0ec7956 100644 --- a/queries/typst/folds.scm +++ b/runtime/queries/typst/folds.scm diff --git a/queries/typst/highlights.scm b/runtime/queries/typst/highlights.scm index a0dcc1b89..a0dcc1b89 100644 --- a/queries/typst/highlights.scm +++ b/runtime/queries/typst/highlights.scm diff --git a/queries/typst/indents.scm b/runtime/queries/typst/indents.scm index d43c586c1..d43c586c1 100644 --- a/queries/typst/indents.scm +++ b/runtime/queries/typst/indents.scm diff --git a/queries/turtle/injections.scm b/runtime/queries/typst/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/turtle/injections.scm +++ b/runtime/queries/typst/injections.scm diff --git a/queries/udev/highlights.scm b/runtime/queries/udev/highlights.scm index f95238d70..f95238d70 100644 --- a/queries/udev/highlights.scm +++ b/runtime/queries/udev/highlights.scm diff --git a/queries/udev/injections.scm b/runtime/queries/udev/injections.scm index 1718349c6..1718349c6 100644 --- a/queries/udev/injections.scm +++ b/runtime/queries/udev/injections.scm diff --git a/queries/udev/locals.scm b/runtime/queries/udev/locals.scm index e1a2f65d2..e1a2f65d2 100644 --- a/queries/udev/locals.scm +++ b/runtime/queries/udev/locals.scm diff --git a/queries/ungrammar/folds.scm b/runtime/queries/ungrammar/folds.scm index 206c4bed8..206c4bed8 100644 --- a/queries/ungrammar/folds.scm +++ b/runtime/queries/ungrammar/folds.scm diff --git a/queries/ungrammar/highlights.scm b/runtime/queries/ungrammar/highlights.scm index 4ed523c9b..4ed523c9b 100644 --- a/queries/ungrammar/highlights.scm +++ b/runtime/queries/ungrammar/highlights.scm diff --git a/queries/ungrammar/indents.scm b/runtime/queries/ungrammar/indents.scm index a5ececdbe..a5ececdbe 100644 --- a/queries/ungrammar/indents.scm +++ b/runtime/queries/ungrammar/indents.scm diff --git a/queries/typoscript/injections.scm b/runtime/queries/ungrammar/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/typoscript/injections.scm +++ b/runtime/queries/ungrammar/injections.scm diff --git a/queries/ungrammar/locals.scm b/runtime/queries/ungrammar/locals.scm index 0f745bd14..0f745bd14 100644 --- a/queries/ungrammar/locals.scm +++ b/runtime/queries/ungrammar/locals.scm diff --git a/queries/unison/folds.scm b/runtime/queries/unison/folds.scm index 3bfc585c3..3bfc585c3 100644 --- a/queries/unison/folds.scm +++ b/runtime/queries/unison/folds.scm diff --git a/queries/unison/highlights.scm b/runtime/queries/unison/highlights.scm index 5fa721046..5fa721046 100644 --- a/queries/unison/highlights.scm +++ b/runtime/queries/unison/highlights.scm diff --git a/queries/ungrammar/injections.scm b/runtime/queries/unison/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/ungrammar/injections.scm +++ b/runtime/queries/unison/injections.scm diff --git a/queries/usd/folds.scm b/runtime/queries/usd/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/usd/folds.scm +++ b/runtime/queries/usd/folds.scm diff --git a/queries/usd/highlights.scm b/runtime/queries/usd/highlights.scm index d6c2a3668..d6c2a3668 100644 --- a/queries/usd/highlights.scm +++ b/runtime/queries/usd/highlights.scm diff --git a/queries/usd/indents.scm b/runtime/queries/usd/indents.scm index 217d12d3f..217d12d3f 100644 --- a/queries/usd/indents.scm +++ b/runtime/queries/usd/indents.scm diff --git a/queries/usd/injections.scm b/runtime/queries/usd/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/usd/injections.scm +++ b/runtime/queries/usd/injections.scm diff --git a/queries/usd/locals.scm b/runtime/queries/usd/locals.scm index 89eb171d1..89eb171d1 100644 --- a/queries/usd/locals.scm +++ b/runtime/queries/usd/locals.scm diff --git a/queries/uxntal/folds.scm b/runtime/queries/uxntal/folds.scm index 9e3f27db0..9e3f27db0 100644 --- a/queries/uxntal/folds.scm +++ b/runtime/queries/uxntal/folds.scm diff --git a/queries/uxntal/highlights.scm b/runtime/queries/uxntal/highlights.scm index 962b6d7b9..962b6d7b9 100644 --- a/queries/uxntal/highlights.scm +++ b/runtime/queries/uxntal/highlights.scm diff --git a/queries/uxntal/indents.scm b/runtime/queries/uxntal/indents.scm index b795b89ea..b795b89ea 100644 --- a/queries/uxntal/indents.scm +++ b/runtime/queries/uxntal/indents.scm diff --git a/queries/uxntal/injections.scm b/runtime/queries/uxntal/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/uxntal/injections.scm +++ b/runtime/queries/uxntal/injections.scm diff --git a/queries/uxntal/locals.scm b/runtime/queries/uxntal/locals.scm index 41fbb5b66..41fbb5b66 100644 --- a/queries/uxntal/locals.scm +++ b/runtime/queries/uxntal/locals.scm diff --git a/queries/v/folds.scm b/runtime/queries/v/folds.scm index 952b6bbe9..952b6bbe9 100644 --- a/queries/v/folds.scm +++ b/runtime/queries/v/folds.scm diff --git a/queries/v/highlights.scm b/runtime/queries/v/highlights.scm index 982f3dbd5..982f3dbd5 100644 --- a/queries/v/highlights.scm +++ b/runtime/queries/v/highlights.scm diff --git a/queries/v/indents.scm b/runtime/queries/v/indents.scm index bf090efae..bf090efae 100644 --- a/queries/v/indents.scm +++ b/runtime/queries/v/indents.scm diff --git a/queries/v/injections.scm b/runtime/queries/v/injections.scm index 2d7618b3e..2d7618b3e 100644 --- a/queries/v/injections.scm +++ b/runtime/queries/v/injections.scm diff --git a/queries/v/locals.scm b/runtime/queries/v/locals.scm index a3423f696..a3423f696 100644 --- a/queries/v/locals.scm +++ b/runtime/queries/v/locals.scm diff --git a/queries/vala/folds.scm b/runtime/queries/vala/folds.scm index a334e609c..a334e609c 100644 --- a/queries/vala/folds.scm +++ b/runtime/queries/vala/folds.scm diff --git a/queries/vala/highlights.scm b/runtime/queries/vala/highlights.scm index 0ba11caa1..0ba11caa1 100644 --- a/queries/vala/highlights.scm +++ b/runtime/queries/vala/highlights.scm diff --git a/queries/vala/injections.scm b/runtime/queries/vala/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/vala/injections.scm +++ b/runtime/queries/vala/injections.scm diff --git a/queries/vento/highlights.scm b/runtime/queries/vento/highlights.scm index 9d35b2f66..9d35b2f66 100644 --- a/queries/vento/highlights.scm +++ b/runtime/queries/vento/highlights.scm diff --git a/queries/vento/injections.scm b/runtime/queries/vento/injections.scm index 66023c7f8..66023c7f8 100644 --- a/queries/vento/injections.scm +++ b/runtime/queries/vento/injections.scm diff --git a/queries/verilog/folds.scm b/runtime/queries/verilog/folds.scm index ea52476a4..ea52476a4 100644 --- a/queries/verilog/folds.scm +++ b/runtime/queries/verilog/folds.scm diff --git a/queries/verilog/highlights.scm b/runtime/queries/verilog/highlights.scm index 1e004ef76..1e004ef76 100644 --- a/queries/verilog/highlights.scm +++ b/runtime/queries/verilog/highlights.scm diff --git a/queries/vhs/injections.scm b/runtime/queries/verilog/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/vhs/injections.scm +++ b/runtime/queries/verilog/injections.scm diff --git a/queries/vhdl/folds.scm b/runtime/queries/vhdl/folds.scm index 9fc6deafe..9fc6deafe 100644 --- a/queries/vhdl/folds.scm +++ b/runtime/queries/vhdl/folds.scm diff --git a/queries/vhdl/highlights.scm b/runtime/queries/vhdl/highlights.scm index 681dc2664..681dc2664 100644 --- a/queries/vhdl/highlights.scm +++ b/runtime/queries/vhdl/highlights.scm diff --git a/queries/vhdl/injections.scm b/runtime/queries/vhdl/injections.scm index 5cbc06cb4..5cbc06cb4 100644 --- a/queries/vhdl/injections.scm +++ b/runtime/queries/vhdl/injections.scm diff --git a/queries/vhs/highlights.scm b/runtime/queries/vhs/highlights.scm index 469fdd139..469fdd139 100644 --- a/queries/vhs/highlights.scm +++ b/runtime/queries/vhs/highlights.scm diff --git a/queries/wit/injections.scm b/runtime/queries/vhs/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/wit/injections.scm +++ b/runtime/queries/vhs/injections.scm diff --git a/queries/vim/folds.scm b/runtime/queries/vim/folds.scm index 0a1fb695f..0a1fb695f 100644 --- a/queries/vim/folds.scm +++ b/runtime/queries/vim/folds.scm diff --git a/queries/vim/highlights.scm b/runtime/queries/vim/highlights.scm index df7b3cf48..df7b3cf48 100644 --- a/queries/vim/highlights.scm +++ b/runtime/queries/vim/highlights.scm diff --git a/queries/vim/injections.scm b/runtime/queries/vim/injections.scm index 30d11cbb4..30d11cbb4 100644 --- a/queries/vim/injections.scm +++ b/runtime/queries/vim/injections.scm diff --git a/queries/vim/locals.scm b/runtime/queries/vim/locals.scm index 870647279..870647279 100644 --- a/queries/vim/locals.scm +++ b/runtime/queries/vim/locals.scm diff --git a/queries/vimdoc/highlights.scm b/runtime/queries/vimdoc/highlights.scm index 829a643ae..829a643ae 100644 --- a/queries/vimdoc/highlights.scm +++ b/runtime/queries/vimdoc/highlights.scm diff --git a/queries/vimdoc/injections.scm b/runtime/queries/vimdoc/injections.scm index 3b8fbf0f3..3b8fbf0f3 100644 --- a/queries/vimdoc/injections.scm +++ b/runtime/queries/vimdoc/injections.scm diff --git a/queries/vrl/folds.scm b/runtime/queries/vrl/folds.scm index 6c6d587de..6c6d587de 100644 --- a/queries/vrl/folds.scm +++ b/runtime/queries/vrl/folds.scm diff --git a/queries/vrl/highlights.scm b/runtime/queries/vrl/highlights.scm index f74d6dd55..f74d6dd55 100644 --- a/queries/vrl/highlights.scm +++ b/runtime/queries/vrl/highlights.scm diff --git a/queries/vrl/indents.scm b/runtime/queries/vrl/indents.scm index 1fc1249e0..1fc1249e0 100644 --- a/queries/vrl/indents.scm +++ b/runtime/queries/vrl/indents.scm diff --git a/queries/vrl/injections.scm b/runtime/queries/vrl/injections.scm index 5aaf9bcd2..5aaf9bcd2 100644 --- a/queries/vrl/injections.scm +++ b/runtime/queries/vrl/injections.scm diff --git a/queries/vrl/locals.scm b/runtime/queries/vrl/locals.scm index 786da98c5..786da98c5 100644 --- a/queries/vrl/locals.scm +++ b/runtime/queries/vrl/locals.scm diff --git a/queries/vue/folds.scm b/runtime/queries/vue/folds.scm index 314256e4e..314256e4e 100644 --- a/queries/vue/folds.scm +++ b/runtime/queries/vue/folds.scm diff --git a/queries/vue/highlights.scm b/runtime/queries/vue/highlights.scm index 64195c346..64195c346 100644 --- a/queries/vue/highlights.scm +++ b/runtime/queries/vue/highlights.scm diff --git a/queries/vue/indents.scm b/runtime/queries/vue/indents.scm index 6b377f323..6b377f323 100644 --- a/queries/vue/indents.scm +++ b/runtime/queries/vue/indents.scm diff --git a/queries/vue/injections.scm b/runtime/queries/vue/injections.scm index 586964011..586964011 100644 --- a/queries/vue/injections.scm +++ b/runtime/queries/vue/injections.scm diff --git a/queries/wgsl/folds.scm b/runtime/queries/wgsl/folds.scm index 60b526c53..60b526c53 100644 --- a/queries/wgsl/folds.scm +++ b/runtime/queries/wgsl/folds.scm diff --git a/queries/wgsl/highlights.scm b/runtime/queries/wgsl/highlights.scm index 854ffe921..854ffe921 100644 --- a/queries/wgsl/highlights.scm +++ b/runtime/queries/wgsl/highlights.scm diff --git a/queries/wgsl/indents.scm b/runtime/queries/wgsl/indents.scm index 579c665bc..579c665bc 100644 --- a/queries/wgsl/indents.scm +++ b/runtime/queries/wgsl/indents.scm diff --git a/queries/wgsl/injections.scm b/runtime/queries/wgsl/injections.scm index 3cd6aac8e..3cd6aac8e 100644 --- a/queries/wgsl/injections.scm +++ b/runtime/queries/wgsl/injections.scm diff --git a/queries/wgsl_bevy/folds.scm b/runtime/queries/wgsl_bevy/folds.scm index bb371406d..bb371406d 100644 --- a/queries/wgsl_bevy/folds.scm +++ b/runtime/queries/wgsl_bevy/folds.scm diff --git a/queries/wgsl_bevy/highlights.scm b/runtime/queries/wgsl_bevy/highlights.scm index 2a6a9740c..2a6a9740c 100644 --- a/queries/wgsl_bevy/highlights.scm +++ b/runtime/queries/wgsl_bevy/highlights.scm diff --git a/queries/wgsl_bevy/indents.scm b/runtime/queries/wgsl_bevy/indents.scm index 381321877..381321877 100644 --- a/queries/wgsl_bevy/indents.scm +++ b/runtime/queries/wgsl_bevy/indents.scm diff --git a/queries/wing/folds.scm b/runtime/queries/wing/folds.scm index 0acd8adeb..0acd8adeb 100644 --- a/queries/wing/folds.scm +++ b/runtime/queries/wing/folds.scm diff --git a/queries/wing/highlights.scm b/runtime/queries/wing/highlights.scm index 31e914f07..31e914f07 100644 --- a/queries/wing/highlights.scm +++ b/runtime/queries/wing/highlights.scm diff --git a/queries/wing/injections.scm b/runtime/queries/wing/injections.scm index bd3fdaec5..bd3fdaec5 100644 --- a/queries/wing/injections.scm +++ b/runtime/queries/wing/injections.scm diff --git a/queries/wing/locals.scm b/runtime/queries/wing/locals.scm index 9a860c5f2..9a860c5f2 100644 --- a/queries/wing/locals.scm +++ b/runtime/queries/wing/locals.scm diff --git a/queries/wit/folds.scm b/runtime/queries/wit/folds.scm index 7f84ddd2e..7f84ddd2e 100644 --- a/queries/wit/folds.scm +++ b/runtime/queries/wit/folds.scm diff --git a/queries/wit/highlights.scm b/runtime/queries/wit/highlights.scm index 1f4b01cce..1f4b01cce 100644 --- a/queries/wit/highlights.scm +++ b/runtime/queries/wit/highlights.scm diff --git a/queries/xcompose/injections.scm b/runtime/queries/wit/injections.scm index 2f0e58eb6..2f0e58eb6 100644 --- a/queries/xcompose/injections.scm +++ b/runtime/queries/wit/injections.scm diff --git a/queries/xcompose/highlights.scm b/runtime/queries/xcompose/highlights.scm index 2afab42f9..2afab42f9 100644 --- a/queries/xcompose/highlights.scm +++ b/runtime/queries/xcompose/highlights.scm diff --git a/queries/typst/injections.scm b/runtime/queries/xcompose/injections.scm index 344c6a308..2f0e58eb6 100644 --- a/queries/typst/injections.scm +++ b/runtime/queries/xcompose/injections.scm @@ -1,6 +1,2 @@ ((comment) @injection.content (#set! injection.language "comment")) - -(raw_blck - (ident) @injection.language - (blob) @injection.content) diff --git a/queries/xcompose/locals.scm b/runtime/queries/xcompose/locals.scm index 9b6f359bf..9b6f359bf 100644 --- a/queries/xcompose/locals.scm +++ b/runtime/queries/xcompose/locals.scm diff --git a/queries/xml/folds.scm b/runtime/queries/xml/folds.scm index 494e8c00a..494e8c00a 100644 --- a/queries/xml/folds.scm +++ b/runtime/queries/xml/folds.scm diff --git a/queries/xml/highlights.scm b/runtime/queries/xml/highlights.scm index 85e6e9bb4..85e6e9bb4 100644 --- a/queries/xml/highlights.scm +++ b/runtime/queries/xml/highlights.scm diff --git a/queries/xml/indents.scm b/runtime/queries/xml/indents.scm index 803c6e8a1..803c6e8a1 100644 --- a/queries/xml/indents.scm +++ b/runtime/queries/xml/indents.scm diff --git a/queries/xml/injections.scm b/runtime/queries/xml/injections.scm index 02e99f02d..02e99f02d 100644 --- a/queries/xml/injections.scm +++ b/runtime/queries/xml/injections.scm diff --git a/queries/xml/locals.scm b/runtime/queries/xml/locals.scm index 2806b530c..2806b530c 100644 --- a/queries/xml/locals.scm +++ b/runtime/queries/xml/locals.scm diff --git a/queries/xresources/folds.scm b/runtime/queries/xresources/folds.scm index 9cc7d5cec..9cc7d5cec 100644 --- a/queries/xresources/folds.scm +++ b/runtime/queries/xresources/folds.scm diff --git a/queries/xresources/highlights.scm b/runtime/queries/xresources/highlights.scm index 4bf394788..4bf394788 100644 --- a/queries/xresources/highlights.scm +++ b/runtime/queries/xresources/highlights.scm diff --git a/queries/xresources/injections.scm b/runtime/queries/xresources/injections.scm index 1f12a2148..1f12a2148 100644 --- a/queries/xresources/injections.scm +++ b/runtime/queries/xresources/injections.scm diff --git a/queries/xresources/locals.scm b/runtime/queries/xresources/locals.scm index a7f932418..a7f932418 100644 --- a/queries/xresources/locals.scm +++ b/runtime/queries/xresources/locals.scm diff --git a/queries/yaml/folds.scm b/runtime/queries/yaml/folds.scm index c426afb87..c426afb87 100644 --- a/queries/yaml/folds.scm +++ b/runtime/queries/yaml/folds.scm diff --git a/queries/yaml/highlights.scm b/runtime/queries/yaml/highlights.scm index 9aed59ce4..9aed59ce4 100644 --- a/queries/yaml/highlights.scm +++ b/runtime/queries/yaml/highlights.scm diff --git a/queries/yaml/indents.scm b/runtime/queries/yaml/indents.scm index f7146d316..f7146d316 100644 --- a/queries/yaml/indents.scm +++ b/runtime/queries/yaml/indents.scm diff --git a/queries/yaml/injections.scm b/runtime/queries/yaml/injections.scm index 143af1924..143af1924 100644 --- a/queries/yaml/injections.scm +++ b/runtime/queries/yaml/injections.scm diff --git a/queries/yaml/locals.scm b/runtime/queries/yaml/locals.scm index f7c79e082..f7c79e082 100644 --- a/queries/yaml/locals.scm +++ b/runtime/queries/yaml/locals.scm diff --git a/queries/yang/folds.scm b/runtime/queries/yang/folds.scm index fd7d23999..fd7d23999 100644 --- a/queries/yang/folds.scm +++ b/runtime/queries/yang/folds.scm diff --git a/queries/yang/highlights.scm b/runtime/queries/yang/highlights.scm index 1fb588af1..1fb588af1 100644 --- a/queries/yang/highlights.scm +++ b/runtime/queries/yang/highlights.scm diff --git a/queries/yang/indents.scm b/runtime/queries/yang/indents.scm index cc4b3caee..cc4b3caee 100644 --- a/queries/yang/indents.scm +++ b/runtime/queries/yang/indents.scm diff --git a/queries/yang/injections.scm b/runtime/queries/yang/injections.scm index 4219eb30a..4219eb30a 100644 --- a/queries/yang/injections.scm +++ b/runtime/queries/yang/injections.scm diff --git a/queries/yuck/folds.scm b/runtime/queries/yuck/folds.scm index bad5a07c9..bad5a07c9 100644 --- a/queries/yuck/folds.scm +++ b/runtime/queries/yuck/folds.scm diff --git a/queries/yuck/highlights.scm b/runtime/queries/yuck/highlights.scm index 7b9a9d203..7b9a9d203 100644 --- a/queries/yuck/highlights.scm +++ b/runtime/queries/yuck/highlights.scm diff --git a/queries/yuck/indents.scm b/runtime/queries/yuck/indents.scm index 515795021..515795021 100644 --- a/queries/yuck/indents.scm +++ b/runtime/queries/yuck/indents.scm diff --git a/queries/yuck/injections.scm b/runtime/queries/yuck/injections.scm index 298a8d070..298a8d070 100644 --- a/queries/yuck/injections.scm +++ b/runtime/queries/yuck/injections.scm diff --git a/queries/yuck/locals.scm b/runtime/queries/yuck/locals.scm index 9f40b2082..9f40b2082 100644 --- a/queries/yuck/locals.scm +++ b/runtime/queries/yuck/locals.scm diff --git a/queries/zathurarc/highlights.scm b/runtime/queries/zathurarc/highlights.scm index 04daa190a..04daa190a 100644 --- a/queries/zathurarc/highlights.scm +++ b/runtime/queries/zathurarc/highlights.scm diff --git a/queries/zathurarc/injections.scm b/runtime/queries/zathurarc/injections.scm index 8e45396b7..8e45396b7 100644 --- a/queries/zathurarc/injections.scm +++ b/runtime/queries/zathurarc/injections.scm diff --git a/queries/zig/folds.scm b/runtime/queries/zig/folds.scm index 6be5c62ba..6be5c62ba 100644 --- a/queries/zig/folds.scm +++ b/runtime/queries/zig/folds.scm diff --git a/queries/zig/highlights.scm b/runtime/queries/zig/highlights.scm index 1f9006781..1f9006781 100644 --- a/queries/zig/highlights.scm +++ b/runtime/queries/zig/highlights.scm diff --git a/queries/zig/indents.scm b/runtime/queries/zig/indents.scm index 11ff9ca16..11ff9ca16 100644 --- a/queries/zig/indents.scm +++ b/runtime/queries/zig/indents.scm diff --git a/queries/zig/injections.scm b/runtime/queries/zig/injections.scm index 48a1b44c9..48a1b44c9 100644 --- a/queries/zig/injections.scm +++ b/runtime/queries/zig/injections.scm diff --git a/queries/zig/locals.scm b/runtime/queries/zig/locals.scm index b9e63441d..b9e63441d 100644 --- a/queries/zig/locals.scm +++ b/runtime/queries/zig/locals.scm diff --git a/queries/ziggy/highlights.scm b/runtime/queries/ziggy/highlights.scm index 27f6c9a48..27f6c9a48 100644 --- a/queries/ziggy/highlights.scm +++ b/runtime/queries/ziggy/highlights.scm diff --git a/queries/ziggy/indents.scm b/runtime/queries/ziggy/indents.scm index 223bde81a..223bde81a 100644 --- a/queries/ziggy/indents.scm +++ b/runtime/queries/ziggy/indents.scm diff --git a/queries/ziggy_schema/highlights.scm b/runtime/queries/ziggy_schema/highlights.scm index 4e1770127..4e1770127 100644 --- a/queries/ziggy_schema/highlights.scm +++ b/runtime/queries/ziggy_schema/highlights.scm diff --git a/queries/ziggy_schema/indents.scm b/runtime/queries/ziggy_schema/indents.scm index 6f7f7b87c..6f7f7b87c 100644 --- a/queries/ziggy_schema/indents.scm +++ b/runtime/queries/ziggy_schema/indents.scm diff --git a/scripts/check-queries.lua b/scripts/check-queries.lua index f3b45ea1a..f5d6d463b 100755 --- a/scripts/check-queries.lua +++ b/scripts/check-queries.lua @@ -1,36 +1,35 @@ #!/usr/bin/env -S nvim -l -vim.opt.rtp:prepend "./" +vim.opt.runtimepath:append('.') -- Equivalent to print(), but this will ensure consistent output regardless of -- operating system. local function io_print(text) if not text then - text = "" + text = '' end - io.write(text, "\n") + io.write(text, '\n') end local function extract_captures() - local lines = vim.fn.readfile "CONTRIBUTING.md" local captures = {} local current_query - for _, line in ipairs(lines) do - if vim.startswith(line, "### ") then - current_query = vim.fn.tolower(line:sub(5)) - elseif vim.startswith(line, "@") and current_query then + for line in io.lines('CONTRIBUTING.md') do + if vim.startswith(line, '### ') then + current_query = line:sub(5):lower() + elseif vim.startswith(line, '@') and current_query then if not captures[current_query] then captures[current_query] = {} end - table.insert(captures[current_query], vim.split(line:sub(2), " ", true)[1]) + table.insert(captures[current_query], vim.split(line:sub(2), ' ', true)[1]) end end -- Complete captures for injections. - local parsers = vim.tbl_keys(require("nvim-treesitter.parsers").list) + local parsers = vim.tbl_keys(require('nvim-treesitter.parsers').configs) for _, lang in pairs(parsers) do - table.insert(captures["injections"], lang) + table.insert(captures['injections'], lang) end return captures @@ -38,36 +37,38 @@ end local function do_check() local timings = {} - local queries = require "nvim-treesitter.query" - local parsers = #_G.arg > 0 and { unpack(_G.arg) } or require("nvim-treesitter.info").installed_parsers() - local query_types = queries.built_in_query_groups + local parsers = require('nvim-treesitter.config').installed_parsers() + local query_types = require('nvim-treesitter.health').bundled_queries local captures = extract_captures() local errors = {} - io_print "::group::Check parsers" + io_print('::group::Check parsers') for _, lang in pairs(parsers) do timings[lang] = {} for _, query_type in pairs(query_types) do local before = vim.loop.hrtime() - local ok, query = pcall(queries.get_query, lang, query_type) + local ok, query = pcall(vim.treesitter.query.get, lang, query_type) local after = vim.loop.hrtime() local duration = after - before table.insert(timings, { duration = duration, lang = lang, query_type = query_type }) - io_print("Checking " .. lang .. " " .. query_type .. string.format(" (%.02fms)", duration * 1e-6)) + io_print( + 'Checking ' .. lang .. ' ' .. query_type .. string.format(' (%.02fms)', duration * 1e-6) + ) if not ok then - local err_msg = lang .. " (" .. query_type .. "): " .. query + local err_msg = lang .. ' (' .. query_type .. '): ' .. query errors[#errors + 1] = err_msg else if query then for _, capture in ipairs(query.captures) do local is_valid = ( - vim.startswith(capture, "_") -- Helpers. - or vim.tbl_contains(captures[query_type], capture) + vim.startswith(capture, '_') -- Helpers. + or vim.list_contains(captures[query_type], capture) ) if not is_valid then - local error = string.format("(x) Invalid capture @%s in %s for %s.", capture, query_type, lang) + local error = + string.format('(x) Invalid capture @%s in %s for %s.', capture, query_type, lang) errors[#errors + 1] = error end end @@ -76,10 +77,10 @@ local function do_check() end end - io_print "::endgroup::" + io_print('::endgroup::') if #errors > 0 then - io_print "\nCheck failed!\nErrors:" + io_print('\nCheck failed!\nErrors:') for _, err in ipairs(errors) do print(err) end @@ -89,35 +90,42 @@ local function do_check() end local ok, result = pcall(do_check) -local allowed_to_fail = vim.split(vim.env.ALLOWED_INSTALLATION_FAILURES or "", ",", true) +local allowed_to_fail = vim.split(vim.env.ALLOWED_INSTALLATION_FAILURES or '', ',', true) -for k, v in pairs(require("nvim-treesitter.parsers").get_parser_configs()) do - if not require("nvim-treesitter.parsers").has_parser(k) then +for k, v in pairs(require('nvim-treesitter.parsers').configs) do + if #vim.api.nvim_get_runtime_file('parser/' .. k .. '.*', false) == 0 then -- On CI all parsers that can be installed from C files should be installed if vim.env.CI and not v.install_info.requires_generate_from_grammar - and not vim.tbl_contains(allowed_to_fail, k) + and not vim.list_contains(allowed_to_fail, k) then - io_print("Error: parser for " .. k .. " is not installed") - vim.cmd "cq" + io_print('Error: parser for ' .. k .. ' is not installed') + vim.cmd('cq') else - io_print("Warning: parser for " .. k .. " is not installed") + io_print('Warning: parser for ' .. k .. ' is not installed') end end end if ok then - io_print "::group::Timings" + io_print('::group::Timings') table.sort(result, function(a, b) return a.duration < b.duration end) for i, val in ipairs(result) do - io_print(string.format("%i. %.02fms %s %s", #result - i + 1, val.duration * 1e-6, val.lang, val.query_type)) + io_print( + string.format( + '%i. %.02fms %s %s', + #result - i + 1, + val.duration * 1e-6, + val.lang, + val.query_type + ) + ) end - io_print "::endgroup::" - io_print "Check successful!" - vim.cmd "q" + io_print('::endgroup::') + io_print('Check successful!') else - vim.cmd "cq" + vim.cmd('cq') end diff --git a/scripts/ci-install.sh b/scripts/ci-install.sh index 5ab8887de..100cfde27 100755 --- a/scripts/ci-install.sh +++ b/scripts/ci-install.sh @@ -2,6 +2,8 @@ set -e +NVIM_TAG=${NVIM_TAG-nightly} + os=$(uname -s) if [[ $os == Linux ]]; then wget https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-linux-x86_64.tar.gz @@ -18,7 +20,7 @@ elif [[ $os == Darwin ]]; then mkdir -p ~/.local/share/nvim/site/pack/nvim-treesitter/start ln -s "$PWD" ~/.local/share/nvim/site/pack/nvim-treesitter/start else - curl -L https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-win64.zip -o nvim-win64.zip + curl -L "https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-win64.zip" -o nvim-win64.zip unzip nvim-win64 mkdir -p ~/AppData/Local/nvim/pack/nvim-treesitter/start mkdir -p ~/AppData/Local/nvim-data diff --git a/scripts/format-queries.lua b/scripts/format-queries.lua index 0839760d2..8639daf2b 100755 --- a/scripts/format-queries.lua +++ b/scripts/format-queries.lua @@ -6,16 +6,16 @@ local get_node_text = ts.get_node_text ---@type string[] local files -local arg = _G.arg[1] or "." -if arg:match ".*%.scm$" then +local arg = _G.arg[1] or '.' +if arg:match('.*%.scm$') then files = { arg } else - files = vim.fn.split(vim.fn.glob(arg .. "/**/*.scm")) + files = vim.fn.split(vim.fn.glob(arg .. '/**/*.scm')) end -ts.query.add_predicate("kind-eq?", function(match, _, _, pred) +ts.query.add_predicate('kind-eq?', function(match, _, _, pred) local cap = match[pred[2]] - local node = type(cap) == "table" and cap[1] or cap + local node = type(cap) == 'table' and cap[1] or cap if not node then return true end @@ -24,9 +24,9 @@ ts.query.add_predicate("kind-eq?", function(match, _, _, pred) return vim.tbl_contains(types, node:type()) end, true) -ts.query.add_predicate("is-start-of-line?", function(match, _, _, pred) +ts.query.add_predicate('is-start-of-line?', function(match, _, _, pred) local cap = match[pred[2]] - local node = type(cap) == "table" and cap[1] or cap + local node = type(cap) == 'table' and cap[1] or cap if not node then return true end @@ -35,7 +35,7 @@ ts.query.add_predicate("is-start-of-line?", function(match, _, _, pred) end) --- Control the indent here. Change to \t if uses tab instead -local indent_str = " " +local indent_str = ' ' local indent_width_plus_one = 3 local textwidth = 100 @@ -328,7 +328,7 @@ local function append_lines(lines, lines_to_append) for i = 1, #lines_to_append, 1 do lines[#lines] = lines[#lines] .. lines_to_append[i] if i ~= #lines_to_append then - lines[#lines + 1] = "" + lines[#lines + 1] = '' end end end @@ -347,16 +347,17 @@ local function iter(bufnr, node, lines, q, level) apply_newline = false lines[#lines + 1] = string.rep(indent_str, level) end - if q["format.ignore"][id] then - local text = vim.split(get_node_text(child, bufnr):gsub("\r\n?", "\n"), "\n", { trimempty = true }) + if q['format.ignore'][id] then + local text = + vim.split(get_node_text(child, bufnr):gsub('\r\n?', '\n'), '\n', { trimempty = true }) append_lines(lines, text) - elseif not q["format.remove"][id] then - if not q["format.cancel-prepend"][id] then - if q["format.prepend-newline"][id] then + elseif not q['format.remove'][id] then + if not q['format.cancel-prepend'][id] then + if q['format.prepend-newline'][id] then lines[#lines + 1] = string.rep(indent_str, level) - elseif q["format.prepend-space"][id] then - if not q["format.prepend-space"][id]["conditional-newline"] then - lines[#lines] = lines[#lines] .. " " + elseif q['format.prepend-space'][id] then + if not q['format.prepend-space'][id]['conditional-newline'] then + lines[#lines] = lines[#lines] .. ' ' elseif child:byte_length() + 1 + #lines[#lines] > textwidth then lines[#lines + 1] = string.rep(indent_str, level) else @@ -365,43 +366,47 @@ local function iter(bufnr, node, lines, q, level) local _, _, byte_start = child:start() local _, _, byte_end = node:end_() if - q["format.prepend-space"][id]["lookahead-newline"] + q['format.prepend-space'][id]['lookahead-newline'] and (byte_end - byte_start) + #lines[#lines] > textwidth then lines[#lines + 1] = string.rep(indent_str, level) else - lines[#lines] = lines[#lines] .. " " + lines[#lines] = lines[#lines] .. ' ' end end end end - if q["format.replace"][id] then - append_lines(lines, vim.split(q["format.replace"][id].text, "\n", { trimempty = true })) + if q['format.replace'][id] then + append_lines(lines, vim.split(q['format.replace'][id].text, '\n', { trimempty = true })) elseif child:named_child_count() == 0 -- Workaround to preserve string content - or child:type() == "string" + or child:type() == 'string' then append_lines( lines, - vim.split(string.gsub(get_node_text(child, bufnr), "\r\n?", "\n"), "\n+", { trimempty = true }) + vim.split( + string.gsub(get_node_text(child, bufnr), '\r\n?', '\n'), + '\n+', + { trimempty = true } + ) ) else iter(bufnr, child, lines, q, level) end - if q["format.indent.begin"][id] then + if q['format.indent.begin'][id] then level = level + 1 apply_newline = true - elseif q["format.indent.dedent"][id] then + elseif q['format.indent.dedent'][id] then lines[#lines] = string.sub(lines[#lines], indent_width_plus_one) end end - if q["format.cancel-append"][id] then + if q['format.cancel-append'][id] then apply_newline = false - elseif q["format.append-newline"][id] then + elseif q['format.append-newline'][id] then apply_newline = true - elseif q["format.append-space"][id] then - lines[#lines] = lines[#lines] .. " " + elseif q['format.append-space'][id] then + lines[#lines] = lines[#lines] .. ' ' end end end @@ -409,7 +414,7 @@ end ---@param bufnr integer ---@param queries string local function format(bufnr, queries) - local lines = { "" } + local lines = { '' } -- stylua: ignore local map = { ['format.ignore'] = {}, -- Ignore the node and its children @@ -424,11 +429,12 @@ local function format(bufnr, queries) ['format.replace'] = {}, -- Dedicated capture used to store results of `(#gsub!)` ['format.remove'] = {}, -- Do not add the syntax node to the result, i.e. brackets [], parens () } - local root = ts.get_parser(bufnr, "query"):parse(true)[1]:root() - local query = ts.query.parse("query", queries) + local root = ts.get_parser(bufnr, 'query'):parse(true)[1]:root() + local query = ts.query.parse('query', queries) for id, node, metadata in query:iter_captures(root, bufnr) do - if query.captures[id]:sub(1, 1) ~= "_" then - map[query.captures[id]][node:id()] = metadata and (metadata[id] and metadata[id] or metadata) or {} + if query.captures[id]:sub(1, 1) ~= '_' then + map[query.captures[id]][node:id()] = metadata and (metadata[id] and metadata[id] or metadata) + or {} end end @@ -443,4 +449,4 @@ for _, file in ipairs(files) do format(buf, format_queries) end -vim.cmd "silent wa!" +vim.cmd('silent wa!') diff --git a/scripts/minimal_init.lua b/scripts/minimal_init.lua index f7a7ee590..c826ddbf2 100644 --- a/scripts/minimal_init.lua +++ b/scripts/minimal_init.lua @@ -1,25 +1,25 @@ -vim.opt.runtimepath:append "." -vim.cmd.runtime { "plugin/plenary.vim", bang = true } -vim.cmd.runtime { "plugin/nvim-treesitter.lua", bang = true } +vim.opt.runtimepath:append('.') +vim.cmd.runtime({ 'plugin/plenary.vim', bang = true }) +vim.cmd.runtime({ 'plugin/nvim-treesitter.lua', bang = true }) +vim.cmd.runtime({ 'plugin/query_predicates.lua', bang = true }) -vim.filetype.add { +vim.filetype.add({ extension = { - conf = "hocon", - cmm = "t32", - hurl = "hurl", - ncl = "nickel", - tig = "tiger", - usd = "usd", - usda = "usd", - wgsl = "wgsl", - w = "wing", + conf = 'hocon', + cmm = 't32', + ncl = 'nickel', + tig = 'tiger', + w = 'wing', }, -} +}) vim.o.swapfile = false vim.bo.swapfile = false -require("nvim-treesitter.configs").setup { - indent = { enable = true }, - highlight = { enable = true }, -} +require('nvim-treesitter').setup() +vim.api.nvim_create_autocmd('FileType', { + callback = function(args) + pcall(vim.treesitter.start) + vim.bo[args.buffer].indentexpr = 'v:lua.require"nvim-treesitter".indentexpr()' + end, +}) diff --git a/scripts/update-lockfile.sh b/scripts/update-lockfile.sh index 22460d14b..d950b321a 100755 --- a/scripts/update-lockfile.sh +++ b/scripts/update-lockfile.sh @@ -1,18 +1,20 @@ #!/usr/bin/env bash make_ignored() { - if [[ -n $1 ]]; then + if [ -n "$1" ] + then while read -r lang; do - if [[ $lang != "$1" ]]; then - printf '%s,' "$lang" + if [ "$lang" != "$1" ] + then + printf "%s," "$lang" fi - done < <(jq -r 'keys[]' lockfile.json) + done < <(jq 'keys|@sh' -c lockfile.json) fi } -SKIP_LOCKFILE_UPDATE_FOR_LANGS="$(make_ignored "$1")" \ - nvim --headless -c 'luafile ./scripts/write-lockfile.lua' +q +TO_IGNORE=$(make_ignored $1) +SKIP_LOCKFILE_UPDATE_FOR_LANGS="$TO_IGNORE" nvim -l ./scripts/write-lockfile.lua # Pretty print cp lockfile.json /tmp/lockfile.json -jq --sort-keys > lockfile.json < /tmp/lockfile.json +cat /tmp/lockfile.json | jq --sort-keys > lockfile.json diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua index 251a64af4..825d84037 100755 --- a/scripts/update-readme.lua +++ b/scripts/update-readme.lua @@ -1,59 +1,85 @@ #!/usr/bin/env -S nvim -l +vim.opt.runtimepath:append('.') ---@class Parser ---@field name string ---@field parser ParserInfo -local parsers = require("nvim-treesitter.parsers").get_parser_configs() +local parsers = require('nvim-treesitter.parsers').configs local sorted_parsers = {} - for k, v in pairs(parsers) do table.insert(sorted_parsers, { name = k, parser = v }) end - ----@param a Parser ----@param b Parser table.sort(sorted_parsers, function(a, b) return a.name < b.name end) -local generated_text = "" +local tiers = require('nvim-treesitter.parsers').tiers ----@param v Parser -for _, v in ipairs(sorted_parsers) do - local link = "[" .. (v.parser.readme_name or v.name) .. "](" .. v.parser.install_info.url .. ")" +local generated_text = [[ +Language | Tier | Queries | CLI | NPM | Maintainer +-------- |:----:|:-------:|:---:|:---:| ---------- +]] +local footnotes = '' - if v.parser.maintainers then - generated_text = generated_text - .. "- [x] " - .. link - .. " (" - .. (v.parser.experimental and "experimental, " or "") - .. "maintained by " - .. table.concat(v.parser.maintainers, ", ") - .. ")\n" - else - generated_text = generated_text .. "- [ ] " .. link .. (v.parser.experimental and " (experimental)" or "") .. "\n" +for _, v in ipairs(sorted_parsers) do + local p = v.parser + -- language + generated_text = generated_text + .. '[' + .. v.name + .. '](' + .. p.install_info.url + .. ')' + .. (p.readme_note and '[^' .. v.name .. ']' or '') + .. ' | ' + if p.readme_note then + footnotes = footnotes .. '[^' .. v.name .. ']: ' .. p.readme_note .. '\n' end -end -print(generated_text) -print "\n" + -- tier + generated_text = generated_text .. (p.tier and tiers[p.tier] or '') .. ' | ' + + -- queries + generated_text = generated_text + .. '`' + .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/highlights.scm') and 'H' or ' ') + .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/folds.scm') and 'F' or ' ') + .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/indents.scm') and 'I' or ' ') + .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/injections.scm') and 'J' or ' ') + .. '` | ' -local readme_text = table.concat(vim.fn.readfile "README.md", "\n") + -- CLI + generated_text = generated_text + .. (p.install_info.requires_generate_from_grammar and '✓' or '') + .. ' | ' + + -- NPM + generated_text = generated_text .. (p.install_info.generate_requires_npm and '✓' or '') .. ' | ' + + -- Maintainer + generated_text = generated_text + .. (p.maintainers and table.concat(p.maintainers, ', ') or '') + .. '\n' +end +generated_text = generated_text .. footnotes + +local readme = assert(io.open('SUPPORTED_LANGUAGES.md', 'r')) +local readme_text = readme:read('*a') +readme:close() local new_readme_text = string.gsub( readme_text, - "<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->", - "<!--parserinfo-->\n" .. generated_text .. "<!--parserinfo-->" + '<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->', + '<!--parserinfo-->\n' .. generated_text .. '<!--parserinfo-->' ) -vim.fn.writefile(vim.fn.split(new_readme_text, "\n"), "README.md") + +readme = assert(io.open('SUPPORTED_LANGUAGES.md', 'w')) +readme:write(new_readme_text) +readme:close() if string.find(readme_text, generated_text, 1, true) then - print "README.md is up-to-date!" - vim.cmd "q" + print('README.md is up-to-date\n') else - print "New README.md was written. Please commit that change! Old text was: " - print(string.sub(readme_text, string.find(readme_text, "<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->"))) - vim.cmd "cq" + print('New README.md was written\n') end diff --git a/scripts/write-lockfile.lua b/scripts/write-lockfile.lua index 7a7606c51..a264af83c 100755 --- a/scripts/write-lockfile.lua +++ b/scripts/write-lockfile.lua @@ -1,14 +1,52 @@ #!/usr/bin/env -S nvim -l +vim.opt.runtimepath:append('.') ----@type string|any[] -local skip_langs = vim.fn.getenv "SKIP_LOCKFILE_UPDATE_FOR_LANGS" +-- Load previous lockfile +local filename = require('nvim-treesitter.utils').get_package_path('lockfile.json') +local file = assert(io.open(filename, 'r')) +local lockfile = vim.json.decode(file:read('*a')) +file:close() -if skip_langs == vim.NIL then - skip_langs = {} -else - ---@diagnostic disable-next-line: param-type-mismatch - skip_langs = vim.fn.split(skip_langs, ",") +---@type string? +local skip_lang_string = os.getenv('SKIP_LOCKFILE_UPDATE_FOR_LANGS') +local skip_langs = skip_lang_string and vim.split(skip_lang_string, ',') or {} +vim.print('Skipping languages: ', skip_langs) + +local sorted_parsers = {} +local configs = require('nvim-treesitter.parsers').configs +for k, v in pairs(configs) do + table.insert(sorted_parsers, { name = k, parser = v }) +end +table.sort(sorted_parsers, function(a, b) + return a.name < b.name +end) + +-- check for new revisions +for _, v in ipairs(sorted_parsers) do + if skip_langs and not vim.list_contains(skip_langs, v.name) then + local sha ---@type string + if v.parser.install_info.branch then + sha = vim.split( + vim.fn.systemlist( + 'git ls-remote ' + .. v.parser.install_info.url + .. ' | grep refs/heads/' + .. v.parser.install_info.branch + )[1], + '\t' + )[1] + else + sha = vim.split(vim.fn.systemlist('git ls-remote ' .. v.parser.install_info.url)[1], '\t')[1] + end + lockfile[v.name] = { revision = sha } + print(v.name .. ': ' .. sha) + else + print('Skipping ' .. v.name) + end end +vim.print(lockfile) -require("nvim-treesitter.install").write_lockfile("verbose", skip_langs) -vim.cmd "q" +-- write new lockfile +file = assert(io.open(filename, 'w')) +file:write(vim.json.encode(lockfile)) +file:close() diff --git a/tests/indent/algorithm_spec.lua b/tests/indent/algorithm_spec.lua index faf7998ec..d93521040 100644 --- a/tests/indent/algorithm_spec.lua +++ b/tests/indent/algorithm_spec.lua @@ -1,18 +1,34 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -- local XFAIL = require("tests.indent.common").XFAIL -local runner = Runner:new(it, "tests/indent/algorithm", { +local runner = Runner:new(it, 'tests/indent/algorithm', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = true, }) -describe("test indent algorithm: ", function() - describe("new line:", function() - runner:new_line("trailing.py", { on_line = 1, text = "x: str", indent = 4 }, "indent next line, ignore comment") - runner:new_line("trailing.py", { on_line = 4, text = "pass", indent = 8 }, "indent next line, ignore comment") - runner:new_line("trailing.py", { on_line = 6, text = "pass", indent = 4 }, "indent next line, ignore whitespace") - runner:new_line("trailing_whitespace.html", { on_line = 9, text = "x", indent = 8 }, "not ignore @indent.end") +describe('test indent algorithm: ', function() + describe('new line:', function() + runner:new_line( + 'trailing.py', + { on_line = 1, text = 'x: str', indent = 4 }, + 'indent next line, ignore comment' + ) + runner:new_line( + 'trailing.py', + { on_line = 4, text = 'pass', indent = 8 }, + 'indent next line, ignore comment' + ) + runner:new_line( + 'trailing.py', + { on_line = 6, text = 'pass', indent = 4 }, + 'indent next line, ignore whitespace' + ) + runner:new_line( + 'trailing_whitespace.html', + { on_line = 9, text = 'x', indent = 8 }, + 'not ignore @indent.end' + ) end) end) diff --git a/tests/indent/angular_spec.lua b/tests/indent/angular_spec.lua index 2090420ce..3ead248b7 100644 --- a/tests/indent/angular_spec.lua +++ b/tests/indent/angular_spec.lua @@ -1,18 +1,18 @@ -local Runner = require("tests.indent.common").Runner -local runner = Runner:new(it, "tests/indent/angular", { +local Runner = require('tests.indent.common').Runner +local runner = Runner:new(it, 'tests/indent/angular', { tabstop = 2, shiftwidth = 2, expandtab = true, - filetype = "htmlangular", + filetype = 'htmlangular', }) -describe("indent HTML Angular:", function() - describe("whole file:", function() - runner:whole_file "." +describe('indent HTML Angular:', function() + describe('whole file:', function() + runner:whole_file('.') end) - describe("new line:", function() - for _, info in ipairs { + describe('new line:', function() + for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, @@ -25,11 +25,11 @@ describe("indent HTML Angular:", function() { 12, 6 }, { 13, 4 }, { 14, 2 }, - } do - runner:new_line("if-else.html", { on_line = info[1], text = "//", indent = info[2] }) + }) do + runner:new_line('if-else.html', { on_line = info[1], text = '//', indent = info[2] }) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 4 }, { 3, 6 }, @@ -39,21 +39,21 @@ describe("indent HTML Angular:", function() { 9, 6 }, { 10, 6 }, { 12, 2 }, - } do - runner:new_line("switch-case.html", { on_line = info[1], text = "//", indent = info[2] }) + }) do + runner:new_line('switch-case.html', { on_line = info[1], text = '//', indent = info[2] }) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, { 4, 2 }, { 5, 0 }, - } do - runner:new_line("for.html", { on_line = info[1], text = "//", indent = info[2] }) + }) do + runner:new_line('for.html', { on_line = info[1], text = '//', indent = info[2] }) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, @@ -63,8 +63,8 @@ describe("indent HTML Angular:", function() { 7, 2 }, { 8, 2 }, { 9, 0 }, - } do - runner:new_line("defer.html", { on_line = info[1], text = "//", indent = info[2] }) + }) do + runner:new_line('defer.html', { on_line = info[1], text = '//', indent = info[2] }) end end) end) diff --git a/tests/indent/c_spec.lua b/tests/indent/c_spec.lua index 4e2826a54..528933599 100644 --- a/tests/indent/c_spec.lua +++ b/tests/indent/c_spec.lua @@ -1,58 +1,63 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -local runner = Runner:new(it, "tests/indent/c", { +local runner = Runner:new(it, 'tests/indent/c', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, }) -describe("indent C:", function() - describe("whole file:", function() - runner:whole_file(".", { +describe('indent C:', function() + describe('whole file:', function() + runner:whole_file('.', { expected_failures = { - "./preproc_func.c", - "./unfinished_comment.c", + './preproc_func.c', + './unfinished_comment.c', }, }) end) - describe("new line:", function() - runner:new_line("array.c", { on_line = 2, text = "0,", indent = 4 }) - runner:new_line("compound_lit.c", { on_line = 7, text = ".z = 5,", indent = 8 }) - runner:new_line("cond.c", { on_line = 3, text = "x++;", indent = 8 }) - runner:new_line("cond.c", { on_line = 6, text = "x++;", indent = 8 }) - runner:new_line("cond.c", { on_line = 8, text = "x++;", indent = 8 }) - runner:new_line("cond.c", { on_line = 9, text = "x++;", indent = 4 }) - runner:new_line("expr.c", { on_line = 10, text = "2 *", indent = 8 }) - runner:new_line("func.c", { on_line = 17, text = "int z,", indent = 4 }) - runner:new_line("label.c", { on_line = 3, text = "normal:", indent = 0 }) - runner:new_line("loop.c", { on_line = 3, text = "x++;", indent = 8 }) - runner:new_line("preproc_cond.c", { on_line = 5, text = "x++;", indent = 4 }) - runner:new_line("preproc_func.c", { on_line = 3, text = "x++; \\", indent = 8 }, "expected failure", XFAIL) - runner:new_line("string.c", { on_line = 1, text = "brave new \\", indent = 0 }) - runner:new_line("string.c", { on_line = 4, text = '"brave new "', indent = 4 }) - runner:new_line("struct.c", { on_line = 4, text = "int y;", indent = 8 }) - runner:new_line("switch.c", { on_line = 3, text = "x++;", indent = 12 }) - runner:new_line("ternary.c", { on_line = 4, text = ": (x == 0) : 0", indent = 8 }) - runner:new_line("issue-1568.c", { on_line = 4, text = "x++;", indent = 8 }) - runner:new_line("issue-2086.c", { on_line = 3, text = "}", indent = 0 }) - runner:new_line("issue-4079.c", { on_line = 2, text = "return;", indent = 8 }) - runner:new_line("issue-4079.c", { on_line = 2, text = "{", indent = 4 }) - runner:new_line("issue-4079.c", { on_line = 6, text = "{", indent = 4 }) - runner:new_line("issue-4117.c", { on_line = 3, text = "else", indent = 4 }) + describe('new line:', function() + runner:new_line('array.c', { on_line = 2, text = '0,', indent = 4 }) + runner:new_line('compound_lit.c', { on_line = 7, text = '.z = 5,', indent = 8 }) + runner:new_line('cond.c', { on_line = 3, text = 'x++;', indent = 8 }) + runner:new_line('cond.c', { on_line = 6, text = 'x++;', indent = 8 }) + runner:new_line('cond.c', { on_line = 8, text = 'x++;', indent = 8 }) + runner:new_line('cond.c', { on_line = 9, text = 'x++;', indent = 4 }) + runner:new_line('expr.c', { on_line = 10, text = '2 *', indent = 8 }) + runner:new_line('func.c', { on_line = 17, text = 'int z,', indent = 4 }) + runner:new_line('label.c', { on_line = 3, text = 'normal:', indent = 0 }) + runner:new_line('loop.c', { on_line = 3, text = 'x++;', indent = 8 }) + runner:new_line('preproc_cond.c', { on_line = 5, text = 'x++;', indent = 4 }) + runner:new_line( + 'preproc_func.c', + { on_line = 3, text = 'x++; \\', indent = 8 }, + 'expected failure', + XFAIL + ) + runner:new_line('string.c', { on_line = 1, text = 'brave new \\', indent = 0 }) + runner:new_line('string.c', { on_line = 4, text = '"brave new "', indent = 4 }) + runner:new_line('struct.c', { on_line = 4, text = 'int y;', indent = 8 }) + runner:new_line('switch.c', { on_line = 3, text = 'x++;', indent = 12 }) + runner:new_line('ternary.c', { on_line = 4, text = ': (x == 0) : 0', indent = 8 }) + runner:new_line('issue-1568.c', { on_line = 4, text = 'x++;', indent = 8 }) + runner:new_line('issue-2086.c', { on_line = 3, text = '}', indent = 0 }) + runner:new_line('issue-4079.c', { on_line = 2, text = 'return;', indent = 8 }) + runner:new_line('issue-4079.c', { on_line = 2, text = '{', indent = 4 }) + runner:new_line('issue-4079.c', { on_line = 6, text = '{', indent = 4 }) + runner:new_line('issue-4117.c', { on_line = 3, text = 'else', indent = 4 }) -- the line after inserted one will be left with wrong indent but we only care about the inserted one - for _, line in ipairs { 2, 4, 7, 10 } do - runner:new_line("no_braces.c", { on_line = line, text = "x++;", indent = 8 }) + for _, line in ipairs({ 2, 4, 7, 10 }) do + runner:new_line('no_braces.c', { on_line = line, text = 'x++;', indent = 8 }) end - for _, line in ipairs { 2, 5, 7, 10, 12, 14, 20, 22, 25, 27, 28, 33 } do - runner:new_line("if_else.c", { on_line = line, text = "x++;", indent = 8 }) + for _, line in ipairs({ 2, 5, 7, 10, 12, 14, 20, 22, 25, 27, 28, 33 }) do + runner:new_line('if_else.c', { on_line = line, text = 'x++;', indent = 8 }) end - for _, line in ipairs { 3, 6, 8, 13, 15, 20, 23 } do - runner:new_line("if_else.c", { on_line = line, text = "else", indent = 4 }) + for _, line in ipairs({ 3, 6, 8, 13, 15, 20, 23 }) do + runner:new_line('if_else.c', { on_line = line, text = 'else', indent = 4 }) end - for _, info in ipairs { + for _, info in ipairs({ { 36, 12 }, { 37, 16 }, { 38, 12 }, @@ -66,15 +71,15 @@ describe("indent C:", function() { 52, 8 }, { 53, 12 }, { 54, 12 }, - } do - runner:new_line("if_else.c", { on_line = info[1], text = "x++;", indent = info[2] }) + }) do + runner:new_line('if_else.c', { on_line = info[1], text = 'x++;', indent = info[2] }) end -- dedent braces on new line - for _, line in ipairs { 10, 12, 14 } do - runner:new_line("if_else.c", { on_line = line, text = "{}", indent = 4 }) + for _, line in ipairs({ 10, 12, 14 }) do + runner:new_line('if_else.c', { on_line = line, text = '{}', indent = 4 }) end - for _, info in ipairs { + for _, info in ipairs({ { 8, 0 }, { 10, 0 }, { 13, 4 }, @@ -86,8 +91,8 @@ describe("indent C:", function() { 20, 8 }, { 21, 8 }, { 22, 4 }, - } do - runner:new_line("issue-4525.c", { on_line = info[1], text = "x++;", indent = info[2] }) + }) do + runner:new_line('issue-4525.c', { on_line = info[1], text = 'x++;', indent = info[2] }) end end) end) diff --git a/tests/indent/capnp_spec.lua b/tests/indent/capnp_spec.lua index 7c8418b06..d5dd8c5fd 100644 --- a/tests/indent/capnp_spec.lua +++ b/tests/indent/capnp_spec.lua @@ -1,30 +1,30 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/capnp", { +local run = Runner:new(it, 'tests/indent/capnp', { tabstop = 2, shiftwidth = 2, expandtab = true, }) describe("indent Cap'n Proto:", function() - describe("whole file:", function() - run:whole_file(".", { + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("test.capnp", { on_line = 31, text = "foo @0;", indent = 2 }) - run:new_line("test.capnp", { on_line = 96, text = "boolField = true,", indent = 4 }) - run:new_line("test.capnp", { on_line = 340, text = "grault @7 :UInt64;", indent = 8 }) - run:new_line("test.capnp", { + describe('new line:', function() + run:new_line('test.capnp', { on_line = 31, text = 'foo @0;', indent = 2 }) + run:new_line('test.capnp', { on_line = 96, text = 'boolField = true,', indent = 4 }) + run:new_line('test.capnp', { on_line = 340, text = 'grault @7 :UInt64;', indent = 8 }) + run:new_line('test.capnp', { on_line = 573, - text = "call @0 Inner2(Text) -> (qux :Qux, gen :TestGenerics(TestAllTypes, TestAnyPointer));", + text = 'call @0 Inner2(Text) -> (qux :Qux, gen :TestGenerics(TestAllTypes, TestAnyPointer));', indent = 4, }) - run:new_line("test.capnp", { on_line = 617, text = "foo @0 :Foo;", indent = 4 }) - run:new_line("test.capnp", { on_line = 654, text = "foo = (int16Field = 123),", indent = 4 }) - run:new_line("test.capnp", { on_line = 695, text = 'textField = "nested",', indent = 6 }) - run:new_line("test.capnp", { on_line = 970, text = "testTailCaller @4;", indent = 4 }) + run:new_line('test.capnp', { on_line = 617, text = 'foo @0 :Foo;', indent = 4 }) + run:new_line('test.capnp', { on_line = 654, text = 'foo = (int16Field = 123),', indent = 4 }) + run:new_line('test.capnp', { on_line = 695, text = 'textField = "nested",', indent = 6 }) + run:new_line('test.capnp', { on_line = 970, text = 'testTailCaller @4;', indent = 4 }) end) end) diff --git a/tests/indent/common.lua b/tests/indent/common.lua index 6cfedafff..5c291070e 100644 --- a/tests/indent/common.lua +++ b/tests/indent/common.lua @@ -1,11 +1,11 @@ local M = {} -local assert = require "luassert" -local say = require "say" -local scan_dir = require("plenary.scandir").scan_dir -local Path = require "plenary.path" +local assert = require('luassert') +local say = require('say') +local scan_dir = require('plenary.scandir').scan_dir +local Path = require('plenary.path') -M.XFAIL = "xfail" +M.XFAIL = 'xfail' local function same_indent(state, arguments) local before = arguments[1] @@ -14,11 +14,11 @@ local function same_indent(state, arguments) local ok = true local errors = { before = {}, after = {} } for line = 1, #before do - if #string.match(before[line], "^%s*") ~= #string.match(after[line], "^%s*") then + if #string.match(before[line], '^%s*') ~= #string.match(after[line], '^%s*') then if before[line] and after[line] then -- store the actual indentation length for each line - errors.before[line] = #string.match(before[line], "^%s*") - errors.after[line] = #string.match(after[line], "^%s*") + errors.before[line] = #string.match(before[line], '^%s*') + errors.after[line] = #string.match(after[line], '^%s*') end ok = false end @@ -42,39 +42,39 @@ local function format_indent(arg, fmtargs) end width = width + 3 - local header_fmt = "%8s %2s%-" .. tostring(width + 1) .. "s %s" - local fmt = "%8s %2s |%-" .. tostring(width) .. "s |%s" + local header_fmt = '%8s %2s%-' .. tostring(width + 1) .. 's %s' + local fmt = '%8s %2s |%-' .. tostring(width) .. 's |%s' - local output = { header_fmt:format("", "", "Found:", "Expected:") } + local output = { header_fmt:format('', '', 'Found:', 'Expected:') } for i, line in ipairs(arg) do if fmtargs.errors.before[i] then - local indents = string.format("%d vs %d", fmtargs.errors.after[i], fmtargs.errors.before[i]) - table.insert(output, fmt:format(indents, "=>", fmtargs.other[i], line)) + local indents = string.format('%d vs %d', fmtargs.errors.after[i], fmtargs.errors.before[i]) + table.insert(output, fmt:format(indents, '=>', fmtargs.other[i], line)) else - table.insert(output, fmt:format("", "", fmtargs.other[i], line)) + table.insert(output, fmt:format('', '', fmtargs.other[i], line)) end end - return table.concat(output, "\n") + return table.concat(output, '\n') end -say:set_namespace "en" -say:set("assertion.same_indent.positive", "Incorrect indentation\n%s") -say:set("assertion.same_indent.negative", "Incorrect indentation\n%s") +say:set_namespace('en') +say:set('assertion.same_indent.positive', 'Incorrect indentation\n%s') +say:set('assertion.same_indent.negative', 'Incorrect indentation\n%s') assert:register( - "assertion", - "same_indent", + 'assertion', + 'same_indent', same_indent, - "assertion.same_indent.positive", - "assert.same_indent.negative" + 'assertion.same_indent.positive', + 'assert.same_indent.negative' ) -- Custom assertion better suited for indentation diffs local function compare_indent(before, after, xfail) assert:add_formatter(format_indent) if xfail then - io.stdout:write "Warning! Known failure of this test! Please help to fix it! " + io.stdout:write('Warning! Known failure of this test! Please help to fix it! ') assert.is_not.same_indent(before, after) else assert.is.same_indent(before, after) @@ -83,7 +83,8 @@ local function compare_indent(before, after, xfail) end local function set_buf_indent_opts(opts) - local optnames = { "tabstop", "shiftwidth", "softtabstop", "expandtab", "filetype", "lispoptions" } + local optnames = + { 'tabstop', 'shiftwidth', 'softtabstop', 'expandtab', 'filetype', 'lispoptions' } for _, opt in ipairs(optnames) do if opts[opt] ~= nil then vim.bo[opt] = opts[opt] @@ -95,11 +96,11 @@ function M.run_indent_test(file, runner, opts) assert.are.same(1, vim.fn.filereadable(file), string.format('File "%s" not readable', file)) -- load reference file - vim.cmd(string.format("edit %s", file)) - vim.bo.indentexpr = "nvim_treesitter#indent()" + vim.cmd(string.format('edit %s', file)) + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" local before = vim.api.nvim_buf_get_lines(0, 0, -1, true) - assert.are.same("nvim_treesitter#indent()", vim.bo.indentexpr) + assert.are.same("v:lua.require'nvim-treesitter'.indentexpr()", vim.bo.indentexpr) set_buf_indent_opts(opts) -- perform the test @@ -109,14 +110,14 @@ function M.run_indent_test(file, runner, opts) local after = vim.api.nvim_buf_get_lines(0, 0, -1, true) -- clear any changes to avoid 'No write since last change (add ! to override)' - vim.cmd "edit!" + vim.cmd('edit!') return before, after end function M.indent_whole_file(file, opts, xfail) local before, after = M.run_indent_test(file, function() - vim.cmd "silent normal gg=G" + vim.cmd('silent normal gg=G') end, opts) compare_indent(before, after, xfail) @@ -132,22 +133,24 @@ end function M.indent_new_line(file, spec, opts, xfail) local before, after = M.run_indent_test(file, function() -- move to the line and input the new one - vim.cmd(string.format("normal! %dG", spec.on_line)) - vim.cmd(string.format("normal! o%s", spec.text)) + vim.cmd(string.format('normal! %dG', spec.on_line)) + vim.cmd(string.format('normal! o%s', spec.text)) end, opts) - local indent = type(spec.indent) == "string" and spec.indent or string.rep(" ", spec.indent) + local indent = type(spec.indent) == 'string' and spec.indent or string.rep(' ', spec.indent) table.insert(before, spec.on_line + 1, indent .. spec.text) compare_indent(before, after, xfail) before, after = M.run_indent_test(file, function() -- move to the line and input the new one - vim.cmd(string.format("normal! %dG$", spec.on_line)) - vim.cmd(string.format(vim.api.nvim_replace_termcodes("normal! a<cr>%s", true, true, true), spec.text)) + vim.cmd(string.format('normal! %dG$', spec.on_line)) + vim.cmd( + string.format(vim.api.nvim_replace_termcodes('normal! a<cr>%s', true, true, true), spec.text) + ) end, opts) - indent = type(spec.indent) == "string" and spec.indent or string.rep(" ", spec.indent) + indent = type(spec.indent) == 'string' and spec.indent or string.rep(' ', spec.indent) table.insert(before, spec.on_line + 1, indent .. spec.text) compare_indent(before, after, xfail) @@ -174,13 +177,13 @@ function Runner:whole_file(dirs, opts) expected_failures = vim.tbl_map(function(f) return Path:new(f):make_relative(self.base_dir.filename) end, expected_failures) - dirs = type(dirs) == "table" and dirs or { dirs } + dirs = type(dirs) == 'table' and dirs or { dirs } dirs = vim.tbl_map(function(dir) dir = self.base_dir / Path:new(dir) assert.is.same(1, vim.fn.isdirectory(dir.filename)) return dir.filename end, dirs) - local files = require("nvim-treesitter.compat").flatten(vim.tbl_map(scan_dir, dirs)) + local files = require('nvim-treesitter.compat').flatten(vim.tbl_map(scan_dir, dirs)) for _, file in ipairs(files) do local relpath = Path:new(file):make_relative(self.base_dir.filename) self.it(relpath, function() @@ -191,7 +194,7 @@ end function Runner:new_line(file, spec, title, xfail) title = title and title or tostring(spec.on_line) - self.it(string.format("%s[%s]", file, title), function() + self.it(string.format('%s[%s]', file, title), function() local path = self.base_dir / file M.indent_new_line(path.filename, spec, self.buf_opts, xfail) end) diff --git a/tests/indent/cpp_spec.lua b/tests/indent/cpp_spec.lua index 7ac69e2a6..8e97c805e 100644 --- a/tests/indent/cpp_spec.lua +++ b/tests/indent/cpp_spec.lua @@ -1,51 +1,56 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -- will use both c/ and cpp/ -local run = Runner:new(it, "tests/indent", { +local run = Runner:new(it, 'tests/indent', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, - filetype = "cpp", + filetype = 'cpp', }) -describe("indent C++:", function() - describe("whole file:", function() - run:whole_file({ "c/", "cpp/" }, { +describe('indent C++:', function() + describe('whole file:', function() + run:whole_file({ 'c/', 'cpp/' }, { expected_failures = { -- C - "c/preproc_func.c", - "c/unfinished_comment.c", + 'c/preproc_func.c', + 'c/unfinished_comment.c', }, }) end) - describe("new line:", function() - run:new_line("cpp/access.cpp", { on_line = 3, text = "protected:", indent = 0 }) - run:new_line("cpp/class.cpp", { on_line = 2, text = "using T = int;", indent = 4 }) - run:new_line("cpp/stream.cpp", { on_line = 5, text = "<< x + 3", indent = 8 }) + describe('new line:', function() + run:new_line('cpp/access.cpp', { on_line = 3, text = 'protected:', indent = 0 }) + run:new_line('cpp/class.cpp', { on_line = 2, text = 'using T = int;', indent = 4 }) + run:new_line('cpp/stream.cpp', { on_line = 5, text = '<< x + 3', indent = 8 }) -- TODO: find a clean way to import these from c_spec.lua - run:new_line("c/array.c", { on_line = 2, text = "0,", indent = 4 }) - run:new_line("c/cond.c", { on_line = 3, text = "x++;", indent = 8 }) - run:new_line("c/cond.c", { on_line = 6, text = "x++;", indent = 8 }) - run:new_line("c/cond.c", { on_line = 8, text = "x++;", indent = 8 }) - run:new_line("c/cond.c", { on_line = 9, text = "x++;", indent = 4 }) - run:new_line("c/expr.c", { on_line = 10, text = "2 *", indent = 8 }) - run:new_line("c/func.c", { on_line = 17, text = "int z,", indent = 4 }) - run:new_line("c/label.c", { on_line = 3, text = "normal:", indent = 0 }) - run:new_line("c/loop.c", { on_line = 3, text = "x++;", indent = 8 }) - run:new_line("c/preproc_cond.c", { on_line = 5, text = "x++;", indent = 4 }) - run:new_line("c/preproc_func.c", { on_line = 3, text = "x++; \\", indent = 8 }, "expected failure", XFAIL) - run:new_line("c/string.c", { on_line = 1, text = "brave new \\", indent = 0 }) - run:new_line("c/string.c", { on_line = 4, text = '"brave new "', indent = 4 }) - run:new_line("c/struct.c", { on_line = 4, text = "int y;", indent = 8 }) - run:new_line("c/switch.c", { on_line = 3, text = "x++;", indent = 12 }) - run:new_line("c/ternary.c", { on_line = 4, text = ": (x == 0) : 0", indent = 8 }) + run:new_line('c/array.c', { on_line = 2, text = '0,', indent = 4 }) + run:new_line('c/cond.c', { on_line = 3, text = 'x++;', indent = 8 }) + run:new_line('c/cond.c', { on_line = 6, text = 'x++;', indent = 8 }) + run:new_line('c/cond.c', { on_line = 8, text = 'x++;', indent = 8 }) + run:new_line('c/cond.c', { on_line = 9, text = 'x++;', indent = 4 }) + run:new_line('c/expr.c', { on_line = 10, text = '2 *', indent = 8 }) + run:new_line('c/func.c', { on_line = 17, text = 'int z,', indent = 4 }) + run:new_line('c/label.c', { on_line = 3, text = 'normal:', indent = 0 }) + run:new_line('c/loop.c', { on_line = 3, text = 'x++;', indent = 8 }) + run:new_line('c/preproc_cond.c', { on_line = 5, text = 'x++;', indent = 4 }) + run:new_line( + 'c/preproc_func.c', + { on_line = 3, text = 'x++; \\', indent = 8 }, + 'expected failure', + XFAIL + ) + run:new_line('c/string.c', { on_line = 1, text = 'brave new \\', indent = 0 }) + run:new_line('c/string.c', { on_line = 4, text = '"brave new "', indent = 4 }) + run:new_line('c/struct.c', { on_line = 4, text = 'int y;', indent = 8 }) + run:new_line('c/switch.c', { on_line = 3, text = 'x++;', indent = 12 }) + run:new_line('c/ternary.c', { on_line = 4, text = ': (x == 0) : 0', indent = 8 }) -- the line after inserted one will be left with wrong indent but we only care about the inserted one - run:new_line("c/no_braces.c", { on_line = 4, text = "x++;", indent = 8 }) - run:new_line("c/no_braces.c", { on_line = 7, text = "x++;", indent = 8 }) - run:new_line("c/no_braces.c", { on_line = 10, text = "x++;", indent = 8 }) + run:new_line('c/no_braces.c', { on_line = 4, text = 'x++;', indent = 8 }) + run:new_line('c/no_braces.c', { on_line = 7, text = 'x++;', indent = 8 }) + run:new_line('c/no_braces.c', { on_line = 10, text = 'x++;', indent = 8 }) end) end) diff --git a/tests/indent/css_spec.lua b/tests/indent/css_spec.lua index 46c7e1afb..69de62e92 100644 --- a/tests/indent/css_spec.lua +++ b/tests/indent/css_spec.lua @@ -1,22 +1,22 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/css", { +local run = Runner:new(it, 'tests/indent/css', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent CSS:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent CSS:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("open_block.css", { on_line = 1, text = "}", indent = 0 }) - run:new_line("open_block.css", { on_line = 1, text = "color: green;", indent = 2 }) - run:new_line("next_rule.css", { on_line = 3, text = ".next {", indent = 0 }) + describe('new line:', function() + run:new_line('open_block.css', { on_line = 1, text = '}', indent = 0 }) + run:new_line('open_block.css', { on_line = 1, text = 'color: green;', indent = 2 }) + run:new_line('next_rule.css', { on_line = 3, text = '.next {', indent = 0 }) end) end) diff --git a/tests/indent/dart_spec.lua b/tests/indent/dart_spec.lua index c1d018738..4817c2ab2 100644 --- a/tests/indent/dart_spec.lua +++ b/tests/indent/dart_spec.lua @@ -1,46 +1,51 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -local run = Runner:new(it, "tests/indent/dart", { +local run = Runner:new(it, 'tests/indent/dart', { tabstop = 2, shiftwidth = 2, softtabstop = 2, expandtab = true, }) -describe("indent Lua:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Lua:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = { - "./multiple_arguments.dart", - "./class.dart", - "./class_function_argument.dart", + './multiple_arguments.dart', + './class.dart', + './class_function_argument.dart', }, }) end) end) -describe("new line:", function() - run:new_line("class.dart", { on_line = 4, text = "int five;", indent = 2 }) - run:new_line("class.dart", { on_line = 6, text = "'100'", indent = 8 }, "expected failure", XFAIL) - run:new_line("class.dart", { on_line = 7, text = "int five = 5", indent = 2 }, "expected failure", XFAIL) - run:new_line("try.dart", { on_line = 2, text = "var x;", indent = 4 }) - for _, content in ipairs { "var x;", "var x" } do - run:new_line("try.dart", { on_line = 10, text = content, indent = 6 }) +describe('new line:', function() + run:new_line('class.dart', { on_line = 4, text = 'int five;', indent = 2 }) + run:new_line('class.dart', { on_line = 6, text = "'100'", indent = 8 }, 'expected failure', XFAIL) + run:new_line( + 'class.dart', + { on_line = 7, text = 'int five = 5', indent = 2 }, + 'expected failure', + XFAIL + ) + run:new_line('try.dart', { on_line = 2, text = 'var x;', indent = 4 }) + for _, content in ipairs({ 'var x;', 'var x' }) do + run:new_line('try.dart', { on_line = 10, text = content, indent = 6 }) end - run:new_line("switch.dart", { on_line = 3, text = "x = 1;", indent = 6 }) - run:new_line("switch.dart", { on_line = 9, text = "x = 1;", indent = 6 }) - run:new_line("switch.dart", { on_line = 3, text = "case 2:", indent = 4 }) - run:new_line("switch.dart", { on_line = 16, text = "abc;", indent = 4 }) - run:new_line("switch.dart", { on_line = 20, text = "abc;", indent = 4 }) - run:new_line("switch.dart", { on_line = 28, text = "y++;", indent = 6 }) + run:new_line('switch.dart', { on_line = 3, text = 'x = 1;', indent = 6 }) + run:new_line('switch.dart', { on_line = 9, text = 'x = 1;', indent = 6 }) + run:new_line('switch.dart', { on_line = 3, text = 'case 2:', indent = 4 }) + run:new_line('switch.dart', { on_line = 16, text = 'abc;', indent = 4 }) + run:new_line('switch.dart', { on_line = 20, text = 'abc;', indent = 4 }) + run:new_line('switch.dart', { on_line = 28, text = 'y++;', indent = 6 }) - run:new_line("multiple_arguments.dart", { on_line = 10, text = "var x;", indent = 4 }) + run:new_line('multiple_arguments.dart', { on_line = 10, text = 'var x;', indent = 4 }) run:new_line( - "multiple_arguments.dart", - { on_line = 11, text = "var x;", indent = 4 }, - "expected failure issue #4637", + 'multiple_arguments.dart', + { on_line = 11, text = 'var x;', indent = 4 }, + 'expected failure issue #4637', XFAIL ) - run:new_line("class_function_argument.dart", { on_line = 11, text = "}", indent = 4 }) + run:new_line('class_function_argument.dart', { on_line = 11, text = '}', indent = 4 }) end) diff --git a/tests/indent/dot_spec.lua b/tests/indent/dot_spec.lua index ac78f8d92..135321da2 100644 --- a/tests/indent/dot_spec.lua +++ b/tests/indent/dot_spec.lua @@ -1,25 +1,25 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/dot", { +local run = Runner:new(it, 'tests/indent/dot', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent dot:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent dot:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("test.dot", { on_line = 1, text = "node [", indent = 2 }) - run:new_line("test.dot", { on_line = 2, text = "shape=ellipse,", indent = 4 }) - run:new_line("test.dot", { on_line = 4, text = "subgraph sub {", indent = 2 }) - run:new_line("test.dot", { on_line = 5, text = "a1 -> a2 -> a3;", indent = 4 }) - run:new_line("test.dot", { on_line = 6, text = "}", indent = 2 }) - run:new_line("test.dot", { on_line = 7, text = "}", indent = 0 }) + describe('new line:', function() + run:new_line('test.dot', { on_line = 1, text = 'node [', indent = 2 }) + run:new_line('test.dot', { on_line = 2, text = 'shape=ellipse,', indent = 4 }) + run:new_line('test.dot', { on_line = 4, text = 'subgraph sub {', indent = 2 }) + run:new_line('test.dot', { on_line = 5, text = 'a1 -> a2 -> a3;', indent = 4 }) + run:new_line('test.dot', { on_line = 6, text = '}', indent = 2 }) + run:new_line('test.dot', { on_line = 7, text = '}', indent = 0 }) end) end) diff --git a/tests/indent/gdscript_spec.lua b/tests/indent/gdscript_spec.lua index c1770f41a..ee6f58a4b 100644 --- a/tests/indent/gdscript_spec.lua +++ b/tests/indent/gdscript_spec.lua @@ -1,20 +1,20 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/gdscript", { +local run = Runner:new(it, 'tests/indent/gdscript', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = false, }) -describe("indent GDScript:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent GDScript:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("basic_blocks.gd", { on_line = 1, text = "var member := 0", indent = 0 }) + describe('new line:', function() + run:new_line('basic_blocks.gd', { on_line = 1, text = 'var member := 0', indent = 0 }) end) end) diff --git a/tests/indent/gleam_spec.lua b/tests/indent/gleam_spec.lua index 8de57fd50..1d77e52a1 100644 --- a/tests/indent/gleam_spec.lua +++ b/tests/indent/gleam_spec.lua @@ -1,127 +1,127 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/gleam", { +local run = Runner:new(it, 'tests/indent/gleam', { tabstop = 2, shiftwidth = 2, softtabstop = 2, expandtab = true, }) -describe("indent Gleam:", function() - describe("whole file:", function() - run:whole_file "." +describe('indent Gleam:', function() + describe('whole file:', function() + run:whole_file('.') end) - describe("new line:", function() - run:new_line("type.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 2, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 3, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 4, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 5, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 6, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 7, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 8, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 9, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 10, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 11, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 12, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 13, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 14, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 15, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 16, text = "//", indent = 0 }) - run:new_line("type.gleam", { on_line = 17, text = "//", indent = 2 }) - run:new_line("type.gleam", { on_line = 18, text = "//", indent = 0 }) + describe('new line:', function() + run:new_line('type.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 2, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 3, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 4, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 5, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 6, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 7, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 8, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 9, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 10, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 11, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 12, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 13, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 14, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 15, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 16, text = '//', indent = 0 }) + run:new_line('type.gleam', { on_line = 17, text = '//', indent = 2 }) + run:new_line('type.gleam', { on_line = 18, text = '//', indent = 0 }) - run:new_line("function.gleam", { on_line = 1, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 2, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 3, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 4, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 5, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 6, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 7, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 8, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 9, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 10, text = "//", indent = 0 }) - run:new_line("function.gleam", { on_line = 11, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 12, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 13, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 14, text = "//", indent = 2 }) - run:new_line("function.gleam", { on_line = 15, text = "//", indent = 2 }) + run:new_line('function.gleam', { on_line = 1, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 2, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 3, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 4, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 5, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 6, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 7, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 8, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 9, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 10, text = '//', indent = 0 }) + run:new_line('function.gleam', { on_line = 11, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 12, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 13, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 14, text = '//', indent = 2 }) + run:new_line('function.gleam', { on_line = 15, text = '//', indent = 2 }) - run:new_line("list.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("list.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("list.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("list.gleam", { on_line = 4, text = "//", indent = 6 }) - run:new_line("list.gleam", { on_line = 5, text = "//", indent = 6 }) - run:new_line("list.gleam", { on_line = 6, text = "//", indent = 8 }) - run:new_line("list.gleam", { on_line = 7, text = "//", indent = 8 }) - run:new_line("list.gleam", { on_line = 8, text = "//", indent = 6 }) - run:new_line("list.gleam", { on_line = 9, text = "//", indent = 4 }) - run:new_line("list.gleam", { on_line = 10, text = "//", indent = 2 }) - run:new_line("list.gleam", { on_line = 11, text = "//", indent = 0 }) + run:new_line('list.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('list.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('list.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('list.gleam', { on_line = 4, text = '//', indent = 6 }) + run:new_line('list.gleam', { on_line = 5, text = '//', indent = 6 }) + run:new_line('list.gleam', { on_line = 6, text = '//', indent = 8 }) + run:new_line('list.gleam', { on_line = 7, text = '//', indent = 8 }) + run:new_line('list.gleam', { on_line = 8, text = '//', indent = 6 }) + run:new_line('list.gleam', { on_line = 9, text = '//', indent = 4 }) + run:new_line('list.gleam', { on_line = 10, text = '//', indent = 2 }) + run:new_line('list.gleam', { on_line = 11, text = '//', indent = 0 }) - run:new_line("tuple.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("tuple.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("tuple.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("tuple.gleam", { on_line = 4, text = "//", indent = 6 }) - run:new_line("tuple.gleam", { on_line = 5, text = "//", indent = 6 }) - run:new_line("tuple.gleam", { on_line = 6, text = "//", indent = 8 }) - run:new_line("tuple.gleam", { on_line = 7, text = "//", indent = 8 }) - run:new_line("tuple.gleam", { on_line = 8, text = "//", indent = 6 }) - run:new_line("tuple.gleam", { on_line = 9, text = "//", indent = 4 }) - run:new_line("tuple.gleam", { on_line = 10, text = "//", indent = 2 }) - run:new_line("tuple.gleam", { on_line = 11, text = "//", indent = 0 }) + run:new_line('tuple.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('tuple.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('tuple.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('tuple.gleam', { on_line = 4, text = '//', indent = 6 }) + run:new_line('tuple.gleam', { on_line = 5, text = '//', indent = 6 }) + run:new_line('tuple.gleam', { on_line = 6, text = '//', indent = 8 }) + run:new_line('tuple.gleam', { on_line = 7, text = '//', indent = 8 }) + run:new_line('tuple.gleam', { on_line = 8, text = '//', indent = 6 }) + run:new_line('tuple.gleam', { on_line = 9, text = '//', indent = 4 }) + run:new_line('tuple.gleam', { on_line = 10, text = '//', indent = 2 }) + run:new_line('tuple.gleam', { on_line = 11, text = '//', indent = 0 }) - run:new_line("case.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("case.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("case.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("case.gleam", { on_line = 4, text = "//", indent = 6 }) - run:new_line("case.gleam", { on_line = 5, text = "//", indent = 8 }) - run:new_line("case.gleam", { on_line = 6, text = "//", indent = 8 }) - run:new_line("case.gleam", { on_line = 7, text = "//", indent = 6 }) - run:new_line("case.gleam", { on_line = 8, text = "//", indent = 4 }) - run:new_line("case.gleam", { on_line = 9, text = "//", indent = 2 }) - run:new_line("case.gleam", { on_line = 10, text = "//", indent = 0 }) + run:new_line('case.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('case.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('case.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('case.gleam', { on_line = 4, text = '//', indent = 6 }) + run:new_line('case.gleam', { on_line = 5, text = '//', indent = 8 }) + run:new_line('case.gleam', { on_line = 6, text = '//', indent = 8 }) + run:new_line('case.gleam', { on_line = 7, text = '//', indent = 6 }) + run:new_line('case.gleam', { on_line = 8, text = '//', indent = 4 }) + run:new_line('case.gleam', { on_line = 9, text = '//', indent = 2 }) + run:new_line('case.gleam', { on_line = 10, text = '//', indent = 0 }) - run:new_line("let.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("let.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("let.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("let.gleam", { on_line = 4, text = "//", indent = 0 }) + run:new_line('let.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('let.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('let.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('let.gleam', { on_line = 4, text = '//', indent = 0 }) - run:new_line("pipe.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("pipe.gleam", { on_line = 2, text = "//", indent = 2 }) - run:new_line("pipe.gleam", { on_line = 3, text = "//", indent = 2 }) - run:new_line("pipe.gleam", { on_line = 4, text = "//", indent = 0 }) + run:new_line('pipe.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('pipe.gleam', { on_line = 2, text = '//', indent = 2 }) + run:new_line('pipe.gleam', { on_line = 3, text = '//', indent = 2 }) + run:new_line('pipe.gleam', { on_line = 4, text = '//', indent = 0 }) - run:new_line("binary_expression.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("binary_expression.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("binary_expression.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("binary_expression.gleam", { on_line = 4, text = "//", indent = 0 }) + run:new_line('binary_expression.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('binary_expression.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('binary_expression.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('binary_expression.gleam', { on_line = 4, text = '//', indent = 0 }) - run:new_line("import.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("import.gleam", { on_line = 2, text = "//", indent = 2 }) - run:new_line("import.gleam", { on_line = 3, text = "//", indent = 2 }) - run:new_line("import.gleam", { on_line = 4, text = "//", indent = 0 }) + run:new_line('import.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('import.gleam', { on_line = 2, text = '//', indent = 2 }) + run:new_line('import.gleam', { on_line = 3, text = '//', indent = 2 }) + run:new_line('import.gleam', { on_line = 4, text = '//', indent = 0 }) - run:new_line("constant.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("constant.gleam", { on_line = 2, text = "//", indent = 2 }) + run:new_line('constant.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('constant.gleam', { on_line = 2, text = '//', indent = 2 }) - run:new_line("assert.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("assert.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("assert.gleam", { on_line = 3, text = "//", indent = 2 }) - run:new_line("assert.gleam", { on_line = 4, text = "//", indent = 0 }) + run:new_line('assert.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('assert.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('assert.gleam', { on_line = 3, text = '//', indent = 2 }) + run:new_line('assert.gleam', { on_line = 4, text = '//', indent = 0 }) - run:new_line("todo.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("todo.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("todo.gleam", { on_line = 3, text = "//", indent = 4 }) - run:new_line("todo.gleam", { on_line = 4, text = "//", indent = 2 }) - run:new_line("todo.gleam", { on_line = 5, text = "//", indent = 0 }) + run:new_line('todo.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('todo.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('todo.gleam', { on_line = 3, text = '//', indent = 4 }) + run:new_line('todo.gleam', { on_line = 4, text = '//', indent = 2 }) + run:new_line('todo.gleam', { on_line = 5, text = '//', indent = 0 }) - run:new_line("anonymous_function.gleam", { on_line = 1, text = "//", indent = 2 }) - run:new_line("anonymous_function.gleam", { on_line = 2, text = "//", indent = 4 }) - run:new_line("anonymous_function.gleam", { on_line = 3, text = "//", indent = 6 }) - run:new_line("anonymous_function.gleam", { on_line = 4, text = "//", indent = 6 }) - run:new_line("anonymous_function.gleam", { on_line = 5, text = "//", indent = 4 }) - run:new_line("anonymous_function.gleam", { on_line = 6, text = "//", indent = 2 }) - run:new_line("anonymous_function.gleam", { on_line = 7, text = "//", indent = 0 }) + run:new_line('anonymous_function.gleam', { on_line = 1, text = '//', indent = 2 }) + run:new_line('anonymous_function.gleam', { on_line = 2, text = '//', indent = 4 }) + run:new_line('anonymous_function.gleam', { on_line = 3, text = '//', indent = 6 }) + run:new_line('anonymous_function.gleam', { on_line = 4, text = '//', indent = 6 }) + run:new_line('anonymous_function.gleam', { on_line = 5, text = '//', indent = 4 }) + run:new_line('anonymous_function.gleam', { on_line = 6, text = '//', indent = 2 }) + run:new_line('anonymous_function.gleam', { on_line = 7, text = '//', indent = 0 }) end) end) diff --git a/tests/indent/go_spec.lua b/tests/indent/go_spec.lua index 4d604f3ef..f29379139 100644 --- a/tests/indent/go_spec.lua +++ b/tests/indent/go_spec.lua @@ -1,24 +1,24 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/go", { +local run = Runner:new(it, 'tests/indent/go', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = false, }) -describe("indent Go:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Go:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new lines:", function() - run:new_line("issue-2369.go", { on_line = 13, text = "// some comment", indent = 1 }) - run:new_line("issue-2369-newline.go", { on_line = 8, text = "// comment", indent = 0 }) - run:new_line("const_declaration.go", { on_line = 3, text = "Constant", indent = 1 }) - run:new_line("const_declaration.go", { on_line = 7, text = "func main() {", indent = 0 }) + describe('new lines:', function() + run:new_line('issue-2369.go', { on_line = 13, text = '// some comment', indent = 1 }) + run:new_line('issue-2369-newline.go', { on_line = 8, text = '// comment', indent = 0 }) + run:new_line('const_declaration.go', { on_line = 3, text = 'Constant', indent = 1 }) + run:new_line('const_declaration.go', { on_line = 7, text = 'func main() {', indent = 0 }) end) end) diff --git a/tests/indent/graphql_spec.lua b/tests/indent/graphql_spec.lua index 9fc9896a7..d54cf60c5 100644 --- a/tests/indent/graphql_spec.lua +++ b/tests/indent/graphql_spec.lua @@ -1,19 +1,19 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/graphql", { +local run = Runner:new(it, 'tests/indent/graphql', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent GraphQL:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent GraphQL:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() end) + describe('new line:', function() end) end) diff --git a/tests/indent/html_spec.lua b/tests/indent/html_spec.lua index b94653613..b240b7150 100644 --- a/tests/indent/html_spec.lua +++ b/tests/indent/html_spec.lua @@ -1,28 +1,28 @@ -local Runner = require("tests.indent.common").Runner -local runner = Runner:new(it, "tests/indent/html", { +local Runner = require('tests.indent.common').Runner +local runner = Runner:new(it, 'tests/indent/html', { tabstop = 2, shiftwidth = 2, expandtab = true, }) -describe("indent HTML:", function() - describe("whole file:", function() - runner:whole_file "." +describe('indent HTML:', function() + describe('whole file:', function() + runner:whole_file('.') end) - describe("new line:", function() - runner:new_line("start_tag.html", { on_line = 1, text = "anything", indent = 0 }) - runner:new_line("start_tag.html", { on_line = 4, text = "anything", indent = 4 }) - runner:new_line("start_tag.html", { on_line = 6, text = "charset = utf-8", indent = 6 }) - runner:new_line("start_tag.html", { on_line = 6, text = ">", indent = 4 }) - runner:new_line("start_tag.html", { on_line = 6, text = "/>", indent = 4 }) - runner:new_line("issue-3986.html", { on_line = 3, text = "indent once", indent = 2 }) - runner:new_line("self_closing_tag.html", { on_line = 10, text = "Something", indent = 4 }) - runner:new_line("self_closing_tag.html", { on_line = 12, text = "disabled", indent = 6 }) - runner:new_line("self_closing_tag.html", { on_line = 12, text = "/>", indent = 4 }) - runner:new_line("script_style.html", { on_line = 5, text = "body", indent = 2 }) - runner:new_line("script_style.html", { on_line = 6, text = "<div></div>", indent = 2 }) - runner:new_line("script_style.html", { on_line = 9, text = "const x = 1", indent = 2 }) - runner:new_line("script_style.html", { on_line = 11, text = "Text", indent = 2 }) + describe('new line:', function() + runner:new_line('start_tag.html', { on_line = 1, text = 'anything', indent = 0 }) + runner:new_line('start_tag.html', { on_line = 4, text = 'anything', indent = 4 }) + runner:new_line('start_tag.html', { on_line = 6, text = 'charset = utf-8', indent = 6 }) + runner:new_line('start_tag.html', { on_line = 6, text = '>', indent = 4 }) + runner:new_line('start_tag.html', { on_line = 6, text = '/>', indent = 4 }) + runner:new_line('issue-3986.html', { on_line = 3, text = 'indent once', indent = 2 }) + runner:new_line('self_closing_tag.html', { on_line = 10, text = 'Something', indent = 4 }) + runner:new_line('self_closing_tag.html', { on_line = 12, text = 'disabled', indent = 6 }) + runner:new_line('self_closing_tag.html', { on_line = 12, text = '/>', indent = 4 }) + runner:new_line('script_style.html', { on_line = 5, text = 'body', indent = 2 }) + runner:new_line('script_style.html', { on_line = 6, text = '<div></div>', indent = 2 }) + runner:new_line('script_style.html', { on_line = 9, text = 'const x = 1', indent = 2 }) + runner:new_line('script_style.html', { on_line = 11, text = 'Text', indent = 2 }) end) end) diff --git a/tests/indent/java_spec.lua b/tests/indent/java_spec.lua index 1d10046bb..97354dbc7 100644 --- a/tests/indent/java_spec.lua +++ b/tests/indent/java_spec.lua @@ -1,39 +1,45 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -local run = Runner:new(it, "tests/indent/java", { +local run = Runner:new(it, 'tests/indent/java', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Java:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Java:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("method.java", { on_line = 1, text = "void foo() {}", indent = 2 }) - run:new_line("issue_2571.java", { on_line = 5, text = "void bar() {}", indent = 2 }) - run:new_line("enum.java", { on_line = 2, text = "THING_B,", indent = 2 }) - run:new_line("class_with_annotation.java", { on_line = 2, text = "void foo() {}", indent = 2 }) - run:new_line("enum_with_annotation.java", { on_line = 2, text = "THING;", indent = 2 }) - run:new_line("interface.java", { on_line = 1, text = "void foo();", indent = 2 }) - run:new_line("javadoc.java", { on_line = 2, text = "* Sample javadoc line", indent = 3 }) + describe('new line:', function() + run:new_line('method.java', { on_line = 1, text = 'void foo() {}', indent = 2 }) + run:new_line('issue_2571.java', { on_line = 5, text = 'void bar() {}', indent = 2 }) + run:new_line('enum.java', { on_line = 2, text = 'THING_B,', indent = 2 }) + run:new_line('class_with_annotation.java', { on_line = 2, text = 'void foo() {}', indent = 2 }) + run:new_line('enum_with_annotation.java', { on_line = 2, text = 'THING;', indent = 2 }) + run:new_line('interface.java', { on_line = 1, text = 'void foo();', indent = 2 }) + run:new_line('javadoc.java', { on_line = 2, text = '* Sample javadoc line', indent = 3 }) run:new_line( - "issue_2583.java", - { on_line = 3, text = "int x = 1;", indent = 4 }, - "fails because tree is in a broken state", + 'issue_2583.java', + { on_line = 3, text = 'int x = 1;', indent = 4 }, + 'fails because tree is in a broken state', XFAIL ) - run:new_line("issue_2583.java", { on_line = 4, text = "int x = 1;", indent = 4 }) - run:new_line("method_chaining.java", { on_line = 4, text = '.append("b");', indent = 6 }) - run:new_line("constructor_with_arguments_on_multiple_lines.java", { on_line = 4, text = "}", indent = 2 }) - run:new_line("method_with_arguments_on_multiple_lines.java", { on_line = 4, text = "}", indent = 2 }) - run:new_line("annotation.java", { on_line = 1, text = "abstract public Foo(){}", indent = 2 }) - run:new_line("annotation_2.java", { on_line = 2, text = "Bar.class", indent = 4 }) + run:new_line('issue_2583.java', { on_line = 4, text = 'int x = 1;', indent = 4 }) + run:new_line('method_chaining.java', { on_line = 4, text = '.append("b");', indent = 6 }) + run:new_line( + 'constructor_with_arguments_on_multiple_lines.java', + { on_line = 4, text = '}', indent = 2 } + ) + run:new_line( + 'method_with_arguments_on_multiple_lines.java', + { on_line = 4, text = '}', indent = 2 } + ) + run:new_line('annotation.java', { on_line = 1, text = 'abstract public Foo(){}', indent = 2 }) + run:new_line('annotation_2.java', { on_line = 2, text = 'Bar.class', indent = 4 }) end) end) diff --git a/tests/indent/javascript_spec.lua b/tests/indent/javascript_spec.lua index 5659b22a1..4a7c3bcc3 100644 --- a/tests/indent/javascript_spec.lua +++ b/tests/indent/javascript_spec.lua @@ -1,40 +1,50 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -- local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent", { +local run = Runner:new(it, 'tests/indent', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, - filetype = "javascript", + filetype = 'javascript', }) -describe("indent JavaScript:", function() - describe("whole file:", function() - run:whole_file({ "ecma/" }, { +describe('indent JavaScript:', function() + describe('whole file:', function() + run:whole_file({ 'ecma/' }, { expected_failures = {}, }) end) - describe("new line:", function() - for _, info in ipairs { + describe('new line:', function() + for _, info in ipairs({ { 1, 2 }, { 2, 4 }, { 3, 4 }, - } do - run:new_line("ecma/binary_expression.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/binary_expression.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - run:new_line("ecma/new-line-after-class.js", { on_line = 2, text = "", indent = 0 }) + run:new_line('ecma/new-line-after-class.js', { on_line = 2, text = '', indent = 0 }) - for _, info in ipairs { + for _, info in ipairs({ { 4, 2 }, { 6, 0 }, - } do - run:new_line("ecma/callback.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/callback.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 4 }, { 3, 6 }, @@ -42,11 +52,16 @@ describe("indent JavaScript:", function() { 8, 2 }, { 11, 4 }, { 13, 4 }, - } do - run:new_line("ecma/class.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/class.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 2, 2 }, { 5, 2 }, { 7, 0 }, @@ -61,11 +76,16 @@ describe("indent JavaScript:", function() { 48, 4 }, { 49, 4 }, { 50, 2 }, - } do - run:new_line("ecma/func.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/func.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, @@ -77,25 +97,40 @@ describe("indent JavaScript:", function() { 13, 0 }, { 16, 0 }, { 19, 2 }, - } do - run:new_line("ecma/if_else.js", { on_line = info[1], text = "hello()", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/if_else.js', + { on_line = info[1], text = 'hello()', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 2, 2 }, { 5, 0 }, - } do - run:new_line("ecma/object.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/object.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 3, 6 }, { 4, 6 }, - } do - run:new_line("ecma/ternary.js", { on_line = info[1], text = "//", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/ternary.js', + { on_line = info[1], text = '//', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 2 }, { 3, 2 }, @@ -103,23 +138,36 @@ describe("indent JavaScript:", function() { 5, 2 }, { 6, 2 }, { 7, 0 }, - } do - run:new_line("ecma/try_catch.js", { on_line = info[1], text = "hello()", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/try_catch.js', + { on_line = info[1], text = 'hello()', indent = info[2] }, + info[3], + info[4] + ) end - for _, info in ipairs { + for _, info in ipairs({ { 1, 2 }, { 2, 0 }, - } do - run:new_line("ecma/variable.js", { on_line = info[1], text = "hello()", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'ecma/variable.js', + { on_line = info[1], text = 'hello()', indent = info[2] }, + info[3], + info[4] + ) end - for _, line in ipairs { 2, 6 } do - run:new_line("ecma/issue-2515.js", { on_line = line, text = "{}", indent = 4 }) + for _, line in ipairs({ 2, 6 }) do + run:new_line('ecma/issue-2515.js', { on_line = line, text = '{}', indent = 4 }) end - for _, info in ipairs { { line = 2, indent = 0 } } do - run:new_line("ecma/array-issue3382.js", { on_line = info.line, text = "foo();", indent = info.indent }) + for _, info in ipairs({ { line = 2, indent = 0 } }) do + run:new_line( + 'ecma/array-issue3382.js', + { on_line = info.line, text = 'foo();', indent = info.indent } + ) end end) end) diff --git a/tests/indent/jsx_spec.lua b/tests/indent/jsx_spec.lua index e75b21f4f..7a32dbcc4 100644 --- a/tests/indent/jsx_spec.lua +++ b/tests/indent/jsx_spec.lua @@ -1,43 +1,49 @@ -local Runner = require("tests.indent.common").Runner -local runner = Runner:new(it, "tests/indent/jsx", { +local Runner = require('tests.indent.common').Runner +local runner = Runner:new(it, 'tests/indent/jsx', { tabstop = 2, shiftwidth = 2, expandtab = true, - filetype = "jsx", + filetype = 'jsx', }) -describe("indent JSX Elements:", function() - describe("whole file:", function() - runner:whole_file(".", { +describe('indent JSX Elements:', function() + describe('whole file:', function() + runner:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - for _, info in ipairs { + describe('new line:', function() + for _, info in ipairs({ { 5, 8 }, { 6, 6 }, { 7, 6 }, { 8, 4 }, { 9, 2 }, - } do - runner:new_line("issue-3986.jsx", { on_line = info[1], text = "text", indent = info[2] }) + }) do + runner:new_line('issue-3986.jsx', { on_line = info[1], text = 'text', indent = info[2] }) end - for _, info in ipairs { + for _, info in ipairs({ { 4, 8 }, { 6, 10 }, { 9, 8 }, { 11, 8 }, - } do - runner:new_line("element_attributes.jsx", { on_line = info[1], text = "disabled", indent = info[2] }) + }) do + runner:new_line( + 'element_attributes.jsx', + { on_line = info[1], text = 'disabled', indent = info[2] } + ) end - for _, info in ipairs { + for _, info in ipairs({ { 5, 10 }, { 7, 8 }, { 11, 10 }, - } do - runner:new_line("jsx_expression.jsx", { on_line = info[1], text = "{disabled}", indent = info[2] }) + }) do + runner:new_line( + 'jsx_expression.jsx', + { on_line = info[1], text = '{disabled}', indent = info[2] } + ) end end) end) diff --git a/tests/indent/julia_spec.lua b/tests/indent/julia_spec.lua index 538685307..b7605a55d 100644 --- a/tests/indent/julia_spec.lua +++ b/tests/indent/julia_spec.lua @@ -1,16 +1,16 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -- local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/julia", { +local run = Runner:new(it, 'tests/indent/julia', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = true, }) -describe("indent Julia:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Julia:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) diff --git a/tests/indent/lua_spec.lua b/tests/indent/lua_spec.lua index 6d99a0fff..ecafc7008 100644 --- a/tests/indent/lua_spec.lua +++ b/tests/indent/lua_spec.lua @@ -1,49 +1,49 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/lua", { +local run = Runner:new(it, 'tests/indent/lua', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Lua:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Lua:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("comment.lua", { on_line = 1, text = "line", indent = "-- " }) - run:new_line("comment.lua", { on_line = 5, text = "multiline", indent = " " }) - run:new_line("func.lua", { on_line = 1, text = "x = x + 1", indent = 2 }) - run:new_line("func.lua", { on_line = 2, text = "y = y + 1", indent = 4 }) - run:new_line("func.lua", { on_line = 4, text = "y = y + 1", indent = 2 }) - run:new_line("func.lua", { on_line = 5, text = "3,", indent = 4 }) - run:new_line("func.lua", { on_line = 9, text = "x = x + 1", indent = 0 }) - run:new_line("func.lua", { on_line = 11, text = "x = x + 1", indent = 2 }) - run:new_line("string.lua", { on_line = 1, text = "x", indent = 0 }) - run:new_line("string.lua", { on_line = 2, text = "x", indent = 0 }) - run:new_line("string.lua", { on_line = 3, text = "x", indent = 2 }) - run:new_line("string.lua", { on_line = 4, text = "x", indent = 4 }) - run:new_line("string.lua", { on_line = 9, text = "x", indent = 0 }) - run:new_line("table.lua", { on_line = 1, text = "b = 0,", indent = 2 }) - run:new_line("table.lua", { on_line = 5, text = "4,", indent = 4 }) - run:new_line("table.lua", { on_line = 7, text = "4,", indent = 4 }) - run:new_line("loop.lua", { on_line = 4, text = "x = x + 1", indent = 2 }) - run:new_line("cond.lua", { on_line = 5, text = "x = x + 1", indent = 2 }) - run:new_line("cond.lua", { on_line = 7, text = "x = x + 1", indent = 2 }) - run:new_line("cond.lua", { on_line = 8, text = "x = x + 1", indent = 4 }) - run:new_line("cond.lua", { on_line = 10, text = "x = x + 1", indent = 2 }) - run:new_line("cond.lua", { on_line = 12, text = "x = x + 1", indent = 0 }) - run:new_line("cond.lua", { on_line = 14, text = "x = x + 1", indent = 2 }) - run:new_line("cond.lua", { on_line = 14, text = "end", indent = 0 }) - run:new_line("no-indent-after-paren-pairs.lua", { on_line = 3, text = "x = x + 1", indent = 0 }) - run:new_line("no-indent-after-paren-pairs.lua", { on_line = 6, text = "x = x + 1", indent = 0 }) - run:new_line("nested-table.lua", { on_line = 5, text = "{}", indent = 4 }) - run:new_line("method_index_expr.lua", { on_line = 1, text = ":test()", indent = 2 }) - run:new_line("method_index_expr.lua", { on_line = 3, text = "local a = 1", indent = 0 }) + describe('new line:', function() + run:new_line('comment.lua', { on_line = 1, text = 'line', indent = '-- ' }) + run:new_line('comment.lua', { on_line = 5, text = 'multiline', indent = ' ' }) + run:new_line('func.lua', { on_line = 1, text = 'x = x + 1', indent = 2 }) + run:new_line('func.lua', { on_line = 2, text = 'y = y + 1', indent = 4 }) + run:new_line('func.lua', { on_line = 4, text = 'y = y + 1', indent = 2 }) + run:new_line('func.lua', { on_line = 5, text = '3,', indent = 4 }) + run:new_line('func.lua', { on_line = 9, text = 'x = x + 1', indent = 0 }) + run:new_line('func.lua', { on_line = 11, text = 'x = x + 1', indent = 2 }) + run:new_line('string.lua', { on_line = 1, text = 'x', indent = 0 }) + run:new_line('string.lua', { on_line = 2, text = 'x', indent = 0 }) + run:new_line('string.lua', { on_line = 3, text = 'x', indent = 2 }) + run:new_line('string.lua', { on_line = 4, text = 'x', indent = 4 }) + run:new_line('string.lua', { on_line = 9, text = 'x', indent = 0 }) + run:new_line('table.lua', { on_line = 1, text = 'b = 0,', indent = 2 }) + run:new_line('table.lua', { on_line = 5, text = '4,', indent = 4 }) + run:new_line('table.lua', { on_line = 7, text = '4,', indent = 4 }) + run:new_line('loop.lua', { on_line = 4, text = 'x = x + 1', indent = 2 }) + run:new_line('cond.lua', { on_line = 5, text = 'x = x + 1', indent = 2 }) + run:new_line('cond.lua', { on_line = 7, text = 'x = x + 1', indent = 2 }) + run:new_line('cond.lua', { on_line = 8, text = 'x = x + 1', indent = 4 }) + run:new_line('cond.lua', { on_line = 10, text = 'x = x + 1', indent = 2 }) + run:new_line('cond.lua', { on_line = 12, text = 'x = x + 1', indent = 0 }) + run:new_line('cond.lua', { on_line = 14, text = 'x = x + 1', indent = 2 }) + run:new_line('cond.lua', { on_line = 14, text = 'end', indent = 0 }) + run:new_line('no-indent-after-paren-pairs.lua', { on_line = 3, text = 'x = x + 1', indent = 0 }) + run:new_line('no-indent-after-paren-pairs.lua', { on_line = 6, text = 'x = x + 1', indent = 0 }) + run:new_line('nested-table.lua', { on_line = 5, text = '{}', indent = 4 }) + run:new_line('method_index_expr.lua', { on_line = 1, text = ':test()', indent = 2 }) + run:new_line('method_index_expr.lua', { on_line = 3, text = 'local a = 1', indent = 0 }) end) end) diff --git a/tests/indent/meson_spec.lua b/tests/indent/meson_spec.lua index bc2372ee0..ba23965a6 100644 --- a/tests/indent/meson_spec.lua +++ b/tests/indent/meson_spec.lua @@ -1,28 +1,28 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/meson", { +local run = Runner:new(it, 'tests/indent/meson', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Meson:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Meson:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("cond.meson", { on_line = 3, text = "foo()", indent = 2 }) - run:new_line("cond.meson", { on_line = 6, text = "foo()", indent = 2 }) - run:new_line("cond.meson", { on_line = 7, text = "foo()", indent = 2 }) - run:new_line("cond.meson", { on_line = 12, text = "foo()", indent = 2 }) - run:new_line("cond.meson", { on_line = 14, text = "foo()", indent = 2 }) - run:new_line("dict.meson", { on_line = 13, text = ",'x':1,", indent = 2 }) - run:new_line("loop.meson", { on_line = 3, text = "foo()", indent = 2 }) - run:new_line("loop.meson", { on_line = 7, text = "foo()", indent = 2 }) - run:new_line("ternary.meson", { on_line = 11, text = "x : y", indent = 2 }) + describe('new line:', function() + run:new_line('cond.meson', { on_line = 3, text = 'foo()', indent = 2 }) + run:new_line('cond.meson', { on_line = 6, text = 'foo()', indent = 2 }) + run:new_line('cond.meson', { on_line = 7, text = 'foo()', indent = 2 }) + run:new_line('cond.meson', { on_line = 12, text = 'foo()', indent = 2 }) + run:new_line('cond.meson', { on_line = 14, text = 'foo()', indent = 2 }) + run:new_line('dict.meson', { on_line = 13, text = ",'x':1,", indent = 2 }) + run:new_line('loop.meson', { on_line = 3, text = 'foo()', indent = 2 }) + run:new_line('loop.meson', { on_line = 7, text = 'foo()', indent = 2 }) + run:new_line('ternary.meson', { on_line = 11, text = 'x : y', indent = 2 }) end) end) diff --git a/tests/indent/nickel_spec.lua b/tests/indent/nickel_spec.lua index d178dab52..0c2458a5b 100644 --- a/tests/indent/nickel_spec.lua +++ b/tests/indent/nickel_spec.lua @@ -1,25 +1,25 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/nickel", { +local run = Runner:new(it, 'tests/indent/nickel', { shiftwidth = 2, expandtab = true, }) -describe("indent Nickel:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Nickel:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("indent-newline.ncl", { on_line = 1, text = "stmt", indent = 2 }) - run:new_line("indent-newline.ncl", { on_line = 2, text = "stmt", indent = 2 }) - run:new_line("indent-newline.ncl", { on_line = 3, text = "stmt", indent = 4 }) - run:new_line("indent-newline.ncl", { on_line = 4, text = "]", indent = 2 }) - run:new_line("indent-newline.ncl", { on_line = 5, text = "stmt", indent = 2 }) - run:new_line("indent-newline.ncl", { on_line = 6, text = "stmt", indent = 4 }) - run:new_line("indent-newline.ncl", { on_line = 7, text = "}", indent = 2 }) - run:new_line("indent-newline.ncl", { on_line = 11, text = "stmt", indent = 0 }) + describe('new line:', function() + run:new_line('indent-newline.ncl', { on_line = 1, text = 'stmt', indent = 2 }) + run:new_line('indent-newline.ncl', { on_line = 2, text = 'stmt', indent = 2 }) + run:new_line('indent-newline.ncl', { on_line = 3, text = 'stmt', indent = 4 }) + run:new_line('indent-newline.ncl', { on_line = 4, text = ']', indent = 2 }) + run:new_line('indent-newline.ncl', { on_line = 5, text = 'stmt', indent = 2 }) + run:new_line('indent-newline.ncl', { on_line = 6, text = 'stmt', indent = 4 }) + run:new_line('indent-newline.ncl', { on_line = 7, text = '}', indent = 2 }) + run:new_line('indent-newline.ncl', { on_line = 11, text = 'stmt', indent = 0 }) end) end) diff --git a/tests/indent/nix_spec.lua b/tests/indent/nix_spec.lua index 709a0a109..bad8b53f7 100644 --- a/tests/indent/nix_spec.lua +++ b/tests/indent/nix_spec.lua @@ -1,30 +1,30 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local runner = Runner:new(it, "tests/indent/nix", { +local runner = Runner:new(it, 'tests/indent/nix', { tabstop = 2, shiftwidth = 2, softtabstop = 2, expandtab = true, }) -describe("indent Nix:", function() - describe("whole file:", function() - runner:whole_file(".", { +describe('indent Nix:', function() + describe('whole file:', function() + runner:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - for _, info in ipairs { + describe('new line:', function() + for _, info in ipairs({ { 14, 2 }, { 16, 2 }, { 48, 4 }, { 112, 6 }, - } do - runner:new_line("general.nix", { on_line = info[1], text = "x = 1;", indent = info[2] }) + }) do + runner:new_line('general.nix', { on_line = info[1], text = 'x = 1;', indent = info[2] }) end - for _, info in ipairs { + for _, info in ipairs({ { 115, 6 }, { 113, 10 }, { 6, 4 }, @@ -33,8 +33,8 @@ describe("indent Nix:", function() { 35, 6 }, { 23, 2 }, { 21, 6 }, - } do - runner:new_line("conds.nix", { on_line = info[1], text = "x = 1;", indent = info[2] }) + }) do + runner:new_line('conds.nix', { on_line = info[1], text = 'x = 1;', indent = info[2] }) end end) end) diff --git a/tests/indent/nu_spec.lua b/tests/indent/nu_spec.lua index 37c02ebea..5dfdb5128 100644 --- a/tests/indent/nu_spec.lua +++ b/tests/indent/nu_spec.lua @@ -1,16 +1,16 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/nu", { +local run = Runner:new(it, 'tests/indent/nu', { tabstop = 2, shiftwidth = 2, softtabstop = -1, expandtab = true, }) -describe("indent Nu:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Nu:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) diff --git a/tests/indent/php_spec.lua b/tests/indent/php_spec.lua index c3f84e6e2..49983caa2 100644 --- a/tests/indent/php_spec.lua +++ b/tests/indent/php_spec.lua @@ -1,76 +1,75 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/php", { +local run = Runner:new(it, 'tests/indent/php', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, }) -describe("indent PHP:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent PHP:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("example.php", { on_line = 11, text = "// new line starts 1 indentation to far", indent = 4 }) + describe('new line:', function() run:new_line( - "example2.php", - { on_line = 5, text = "indentation with `enter` in insert mode is not correct", indent = 4 } + 'example.php', + { on_line = 11, text = '// new line starts 1 indentation to far', indent = 4 } ) - run:new_line("issue-2497.php", { on_line = 5, text = "$a =", indent = 4 }) - run:new_line("unfinished-call.php", { on_line = 6, text = "$a =", indent = 4 }) - run:new_line("issue-3591.php", { on_line = 4, text = "$a =", indent = 8 }) - run:new_line("enum-indent.php", { on_line = 4, text = "case", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 3, text = "true", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 4, text = "return;", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 7, text = "true", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 10, text = "|| false", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 11, text = "$a = 0;", indent = 0 }) - run:new_line("issue-4848.php", { on_line = 13, text = "true", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 16, text = "$a,", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 17, text = "true", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 20, text = "$a,", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 21, text = "return $a;", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 24, text = "return;", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 27, text = "true", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 28, text = "true => null,", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 31, text = "true => null,", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 35, text = "function a() {}", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 37, text = "return;", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 40, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 41, text = "return $a;", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 45, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 46, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 47, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 48, text = "$a;", indent = 0 }) - run:new_line("issue-4848.php", { on_line = 50, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 51, text = "return $a;", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 52, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 53, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 54, text = "$a,", indent = 12 }) - run:new_line("issue-4848.php", { on_line = 55, text = "return $a;", indent = 12 }) - run:new_line("issue-4848.php", { on_line = 56, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 57, text = "$a;", indent = 0 }) - run:new_line("issue-4848.php", { on_line = 59, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 60, text = "return $a;", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 61, text = "->foo()", indent = 4 }) - run:new_line("issue-4848.php", { on_line = 62, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 63, text = "$a,", indent = 12 }) - run:new_line("issue-4848.php", { on_line = 64, text = "return $a;", indent = 12 }) - run:new_line("issue-4848.php", { on_line = 65, text = "$a,", indent = 8 }) - run:new_line("issue-4848.php", { on_line = 66, text = "$a;", indent = 0 }) - run:new_line("issue-6888.php", { on_line = 2, text = "$a;", indent = 0 }) - run:new_line("issue-6888.php", { on_line = 3, text = "case Funday = 2;", indent = 4 }) - run:new_line("issue-6888.php", { on_line = 6, text = "$a;", indent = 0 }) - run:new_line("issue-6888.php", { on_line = 8, text = "$a;", indent = 4 }) - run:new_line("issue-6888.php", { on_line = 11, text = "$a;", indent = 0 }) - run:new_line("property-hooks.php", { on_line = 7, text = "get;", indent = 8 }) - run:new_line("property-hooks.php", { on_line = 8, text = "set;", indent = 8 }) - run:new_line("property-hooks.php", { on_line = 9, text = "$a;", indent = 12 }) - run:new_line("property-hooks.php", { on_line = 11, text = "get;", indent = 8 }) - run:new_line("property-hooks.php", { on_line = 12, text = "get;", indent = 4 }) + run:new_line('issue-2497.php', { on_line = 5, text = '$a =', indent = 4 }) + run:new_line('unfinished-call.php', { on_line = 6, text = '$a =', indent = 4 }) + run:new_line('issue-3591.php', { on_line = 4, text = '$a =', indent = 8 }) + run:new_line('enum-indent.php', { on_line = 4, text = 'case', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 3, text = 'true', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 4, text = 'return;', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 7, text = 'true', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 10, text = '|| false', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 11, text = '$a = 0;', indent = 0 }) + run:new_line('issue-4848.php', { on_line = 13, text = 'true', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 16, text = '$a,', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 17, text = 'true', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 20, text = '$a,', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 21, text = 'return $a;', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 24, text = 'return;', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 27, text = 'true', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 28, text = 'true => null,', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 31, text = 'true => null,', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 35, text = 'function a() {}', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 37, text = 'return;', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 40, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 41, text = 'return $a;', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 45, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 46, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 47, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 48, text = '$a;', indent = 0 }) + run:new_line('issue-4848.php', { on_line = 50, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 51, text = 'return $a;', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 52, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 53, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 54, text = '$a,', indent = 12 }) + run:new_line('issue-4848.php', { on_line = 55, text = 'return $a;', indent = 12 }) + run:new_line('issue-4848.php', { on_line = 56, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 57, text = '$a;', indent = 0 }) + run:new_line('issue-4848.php', { on_line = 59, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 60, text = 'return $a;', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 61, text = '->foo()', indent = 4 }) + run:new_line('issue-4848.php', { on_line = 62, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 63, text = '$a,', indent = 12 }) + run:new_line('issue-4848.php', { on_line = 64, text = 'return $a;', indent = 12 }) + run:new_line('issue-4848.php', { on_line = 65, text = '$a,', indent = 8 }) + run:new_line('issue-4848.php', { on_line = 66, text = '$a;', indent = 0 }) + run:new_line('issue-6888.php', { on_line = 2, text = '$a;', indent = 0 }) + run:new_line('issue-6888.php', { on_line = 3, text = 'case Funday = 2;', indent = 4 }) + run:new_line('issue-6888.php', { on_line = 6, text = '$a;', indent = 0 }) + run:new_line('issue-6888.php', { on_line = 8, text = '$a;', indent = 4 }) + run:new_line('issue-6888.php', { on_line = 11, text = '$a;', indent = 0 }) + run:new_line('property-hooks.php', { on_line = 7, text = 'get;', indent = 8 }) + run:new_line('property-hooks.php', { on_line = 8, text = 'set;', indent = 8 }) + run:new_line('property-hooks.php', { on_line = 9, text = '$a;', indent = 12 }) + run:new_line('property-hooks.php', { on_line = 11, text = 'get;', indent = 8 }) + run:new_line('property-hooks.php', { on_line = 12, text = 'get;', indent = 4 }) end) end) diff --git a/tests/indent/python_spec.lua b/tests/indent/python_spec.lua index 193b9901e..65be126fa 100644 --- a/tests/indent/python_spec.lua +++ b/tests/indent/python_spec.lua @@ -1,101 +1,101 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -local run = Runner:new(it, "tests/indent/python", { +local run = Runner:new(it, 'tests/indent/python', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, }) -describe("indent Python:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Python:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("aligned_indent.py", { on_line = 1, text = "arg3,", indent = 19 }) - run:new_line("aligned_indent_2.py", { on_line = 2, text = "x", indent = 4 }) - run:new_line("aligned_indent_2.py", { on_line = 9, text = "x", indent = 4 }) - run:new_line("aligned_indent_2.py", { on_line = 12, text = "x", indent = 4 }) - run:new_line("basic_blocks.py", { on_line = 1, text = "wait,", indent = 4 }) - run:new_line("basic_blocks.py", { on_line = 6, text = "x += 1", indent = 4 }) - run:new_line("basic_blocks.py", { on_line = 7, text = "x += 1", indent = 4 }) - run:new_line("basic_blocks.py", { on_line = 10, text = "x += 1", indent = 8 }) - run:new_line("basic_blocks.py", { on_line = 14, text = "x += 1", indent = 8 }) - run:new_line("basic_collections.py", { on_line = 3, text = "4,", indent = 4 }) - run:new_line("comprehensions.py", { on_line = 8, text = "if x != 2", indent = 4 }) - run:new_line("control_flow.py", { on_line = 2, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 4, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 6, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 9, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 12, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 15, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 18, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 20, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 22, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 24, text = "c < 6 and", indent = 7 }) - run:new_line("control_flow.py", { on_line = 26, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 28, text = "x = 4", indent = 4 }) - run:new_line("control_flow.py", { on_line = 31, text = "try:", indent = 4 }) - run:new_line("branches.py", { on_line = 25, text = "x > 9 and", indent = 4 }) - run:new_line("branches.py", { on_line = 29, text = "and x > 9", indent = 4 }) - run:new_line("hanging_indent.py", { on_line = 1, text = "arg0,", indent = 4 }) - run:new_line("hanging_indent.py", { on_line = 5, text = "0,", indent = 4 }) - run:new_line("error_state_def.py", { on_line = 6, text = "b,", indent = 11 }) - run:new_line("error_state_tuple.py", { on_line = 7, text = "b,", indent = 1 }) - run:new_line("error_state_tuple_align.py", { on_line = 7, text = "b,", indent = 1 }) - run:new_line("error_state_list.py", { on_line = 5, text = "3,", indent = 6 }) - run:new_line("error_state_dict.py", { on_line = 6, text = "9:10,", indent = 6 }) - run:new_line("error_state_set.py", { on_line = 5, text = "9,", indent = 6 }) - run:new_line("error_state_funcall.py", { on_line = 5, text = "6,", indent = 2 }) - run:new_line("if_else.py", { on_line = 5, text = "else:", indent = 4 }) - run:new_line("if_else.py", { on_line = 5, text = "elif False:", indent = 4 }) + describe('new line:', function() + run:new_line('aligned_indent.py', { on_line = 1, text = 'arg3,', indent = 19 }) + run:new_line('aligned_indent_2.py', { on_line = 2, text = 'x', indent = 4 }) + run:new_line('aligned_indent_2.py', { on_line = 9, text = 'x', indent = 4 }) + run:new_line('aligned_indent_2.py', { on_line = 12, text = 'x', indent = 4 }) + run:new_line('basic_blocks.py', { on_line = 1, text = 'wait,', indent = 4 }) + run:new_line('basic_blocks.py', { on_line = 6, text = 'x += 1', indent = 4 }) + run:new_line('basic_blocks.py', { on_line = 7, text = 'x += 1', indent = 4 }) + run:new_line('basic_blocks.py', { on_line = 10, text = 'x += 1', indent = 8 }) + run:new_line('basic_blocks.py', { on_line = 14, text = 'x += 1', indent = 8 }) + run:new_line('basic_collections.py', { on_line = 3, text = '4,', indent = 4 }) + run:new_line('comprehensions.py', { on_line = 8, text = 'if x != 2', indent = 4 }) + run:new_line('control_flow.py', { on_line = 2, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 4, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 6, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 9, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 12, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 15, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 18, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 20, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 22, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 24, text = 'c < 6 and', indent = 7 }) + run:new_line('control_flow.py', { on_line = 26, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 28, text = 'x = 4', indent = 4 }) + run:new_line('control_flow.py', { on_line = 31, text = 'try:', indent = 4 }) + run:new_line('branches.py', { on_line = 25, text = 'x > 9 and', indent = 4 }) + run:new_line('branches.py', { on_line = 29, text = 'and x > 9', indent = 4 }) + run:new_line('hanging_indent.py', { on_line = 1, text = 'arg0,', indent = 4 }) + run:new_line('hanging_indent.py', { on_line = 5, text = '0,', indent = 4 }) + run:new_line('error_state_def.py', { on_line = 6, text = 'b,', indent = 11 }) + run:new_line('error_state_tuple.py', { on_line = 7, text = 'b,', indent = 1 }) + run:new_line('error_state_tuple_align.py', { on_line = 7, text = 'b,', indent = 1 }) + run:new_line('error_state_list.py', { on_line = 5, text = '3,', indent = 6 }) + run:new_line('error_state_dict.py', { on_line = 6, text = '9:10,', indent = 6 }) + run:new_line('error_state_set.py', { on_line = 5, text = '9,', indent = 6 }) + run:new_line('error_state_funcall.py', { on_line = 5, text = '6,', indent = 2 }) + run:new_line('if_else.py', { on_line = 5, text = 'else:', indent = 4 }) + run:new_line('if_else.py', { on_line = 5, text = 'elif False:', indent = 4 }) run:new_line( - "join_lines.py", - { on_line = 1, text = "+ 1 \\", indent = 4 }, - "fails due two not working query at python/indent.scm:30", + 'join_lines.py', + { on_line = 1, text = '+ 1 \\', indent = 4 }, + 'fails due two not working query at python/indent.scm:30', XFAIL ) run:new_line( - "join_lines.py", - { on_line = 4, text = "+ 1 \\", indent = 4 }, - "fails due two not working query at python/indent.scm:30", + 'join_lines.py', + { on_line = 4, text = '+ 1 \\', indent = 4 }, + 'fails due two not working query at python/indent.scm:30', XFAIL ) - run:new_line("join_lines.py", { on_line = 7, text = "+ 1 \\", indent = 4 }) - run:new_line("nested_collections.py", { on_line = 5, text = "0,", indent = 12 }) - run:new_line("nested_collections.py", { on_line = 6, text = ",0", indent = 12 }) - run:new_line("nested_collections.py", { on_line = 29, text = "[1, 2],", indent = 12 }) - run:new_line("nested_collections.py", { on_line = 39, text = "0,", indent = 5 }) - run:new_line("strings.py", { on_line = 14, text = "x", indent = 4 }) - run:new_line("strings.py", { on_line = 15, text = "x", indent = 0 }) - run:new_line("strings.py", { on_line = 16, text = "x", indent = 8 }) - run:new_line("line_after_indent.py", { on_line = 4, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 8, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 4, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 14, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 20, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 26, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 30, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 34, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 38, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 42, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 46, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 49, text = "x", indent = 0 }) - run:new_line("line_after_indent.py", { on_line = 55, text = "x", indent = 4 }) - run:new_line("line_after_indent.py", { on_line = 63, text = "x", indent = 4 }) - run:new_line("match_case.py", { on_line = 4, text = "pass", indent = 8 }) - run:new_line("match_case.py", { on_line = 5, text = "pass", indent = 12 }) - run:new_line("match_case.py", { on_line = 10, text = "pass", indent = 8 }) - run:new_line("match_case.py", { on_line = 15, text = "pass", indent = 12 }) - run:new_line("break_continue.py", { on_line = 4, text = "pass", indent = 8 }) - run:new_line("break_continue.py", { on_line = 9, text = "pass", indent = 8 }) + run:new_line('join_lines.py', { on_line = 7, text = '+ 1 \\', indent = 4 }) + run:new_line('nested_collections.py', { on_line = 5, text = '0,', indent = 12 }) + run:new_line('nested_collections.py', { on_line = 6, text = ',0', indent = 12 }) + run:new_line('nested_collections.py', { on_line = 29, text = '[1, 2],', indent = 12 }) + run:new_line('nested_collections.py', { on_line = 39, text = '0,', indent = 5 }) + run:new_line('strings.py', { on_line = 14, text = 'x', indent = 4 }) + run:new_line('strings.py', { on_line = 15, text = 'x', indent = 0 }) + run:new_line('strings.py', { on_line = 16, text = 'x', indent = 8 }) + run:new_line('line_after_indent.py', { on_line = 4, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 8, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 4, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 14, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 20, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 26, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 30, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 34, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 38, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 42, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 46, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 49, text = 'x', indent = 0 }) + run:new_line('line_after_indent.py', { on_line = 55, text = 'x', indent = 4 }) + run:new_line('line_after_indent.py', { on_line = 63, text = 'x', indent = 4 }) + run:new_line('match_case.py', { on_line = 4, text = 'pass', indent = 8 }) + run:new_line('match_case.py', { on_line = 5, text = 'pass', indent = 12 }) + run:new_line('match_case.py', { on_line = 10, text = 'pass', indent = 8 }) + run:new_line('match_case.py', { on_line = 15, text = 'pass', indent = 12 }) + run:new_line('break_continue.py', { on_line = 4, text = 'pass', indent = 8 }) + run:new_line('break_continue.py', { on_line = 9, text = 'pass', indent = 8 }) - for _, line in ipairs { 2, 5, 8, 11, 16, 21, 24, 27, 34, 39 } do - run:new_line("return_dedent.py", { on_line = line, text = "x", indent = 0 }) + for _, line in ipairs({ 2, 5, 8, 11, 16, 21, 24, 27, 34, 39 }) do + run:new_line('return_dedent.py', { on_line = line, text = 'x', indent = 0 }) end end) end) diff --git a/tests/indent/ql_spec.lua b/tests/indent/ql_spec.lua index cfdce9077..605aa2365 100644 --- a/tests/indent/ql_spec.lua +++ b/tests/indent/ql_spec.lua @@ -1,24 +1,24 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/ql", { +local run = Runner:new(it, 'tests/indent/ql', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Lua:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Lua:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) end) -describe("new line:", function() - run:new_line("module.ql", { on_line = 1, text = "predicate foo() {}", indent = 2 }) +describe('new line:', function() + run:new_line('module.ql', { on_line = 1, text = 'predicate foo() {}', indent = 2 }) end) -describe("new line:", function() - run:new_line("module.ql", { on_line = 2, text = "predicate foo() {}", indent = 2 }) +describe('new line:', function() + run:new_line('module.ql', { on_line = 2, text = 'predicate foo() {}', indent = 2 }) end) diff --git a/tests/indent/query_spec.lua b/tests/indent/query_spec.lua index ca2ccdef5..f884009a0 100644 --- a/tests/indent/query_spec.lua +++ b/tests/indent/query_spec.lua @@ -1,28 +1,28 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/query", { +local run = Runner:new(it, 'tests/indent/query', { tabstop = 2, shiftwidth = 2, softtabstop = 2, expandtab = true, - lispoptions = "expr:1", + lispoptions = 'expr:1', }) -describe("indent Query:", function() - describe("whole file:", function() - run:whole_file(".", {}) +describe('indent Query:', function() + describe('whole file:', function() + run:whole_file('.', {}) end) - describe("new line:", function() - run:new_line("test.scm", { on_line = 3, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 5, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 12, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 25, text = "(#my-directive!)", indent = 10 }) - run:new_line("test.scm", { on_line = 34, text = '"more"', indent = 2 }) - run:new_line("test.scm", { on_line = 35, text = "(node)", indent = 0 }) - run:new_line("test.scm", { on_line = 40, text = "(node)", indent = 0 }) - run:new_line("test.scm", { on_line = 44, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 46, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 48, text = "(node)", indent = 2 }) - run:new_line("test.scm", { on_line = 50, text = "node_name", indent = 2 }) + describe('new line:', function() + run:new_line('test.scm', { on_line = 3, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 5, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 12, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 25, text = '(#my-directive!)', indent = 10 }) + run:new_line('test.scm', { on_line = 34, text = '"more"', indent = 2 }) + run:new_line('test.scm', { on_line = 35, text = '(node)', indent = 0 }) + run:new_line('test.scm', { on_line = 40, text = '(node)', indent = 0 }) + run:new_line('test.scm', { on_line = 44, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 46, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 48, text = '(node)', indent = 2 }) + run:new_line('test.scm', { on_line = 50, text = 'node_name', indent = 2 }) end) end) diff --git a/tests/indent/r_spec.lua b/tests/indent/r_spec.lua index 08df5e11b..b6e814068 100644 --- a/tests/indent/r_spec.lua +++ b/tests/indent/r_spec.lua @@ -1,42 +1,42 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/r", { +local run = Runner:new(it, 'tests/indent/r', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent R:", function() - describe("whole file:", function() - run:whole_file(".", {}) +describe('indent R:', function() + describe('whole file:', function() + run:whole_file('.', {}) end) - describe("new line:", function() - run:new_line("comment.R", { on_line = 1, text = "# new comment", indent = 0 }) + describe('new line:', function() + run:new_line('comment.R', { on_line = 1, text = '# new comment', indent = 0 }) - run:new_line("cond.R", { on_line = 1, text = "x <- x + 1", indent = 0 }) - run:new_line("cond.R", { on_line = 4, text = "x <- x + 1", indent = 2 }) - run:new_line("cond.R", { on_line = 5, text = "x <- x + 1", indent = 2 }) - run:new_line("cond.R", { on_line = 8, text = "x <- x + 1", indent = 4 }) + run:new_line('cond.R', { on_line = 1, text = 'x <- x + 1', indent = 0 }) + run:new_line('cond.R', { on_line = 4, text = 'x <- x + 1', indent = 2 }) + run:new_line('cond.R', { on_line = 5, text = 'x <- x + 1', indent = 2 }) + run:new_line('cond.R', { on_line = 8, text = 'x <- x + 1', indent = 4 }) - run:new_line("func.R", { on_line = 1, text = "x <- x + 1", indent = 2 }) - run:new_line("func.R", { on_line = 2, text = "a <- a + 1", indent = 4 }) - run:new_line("func.R", { on_line = 6, text = "0,", indent = 6 }) - run:new_line("func.R", { on_line = 6, text = "0,", indent = 6 }) - run:new_line("func.R", { on_line = 16, text = "x <- x + 1", indent = 4 }) + run:new_line('func.R', { on_line = 1, text = 'x <- x + 1', indent = 2 }) + run:new_line('func.R', { on_line = 2, text = 'a <- a + 1', indent = 4 }) + run:new_line('func.R', { on_line = 6, text = '0,', indent = 6 }) + run:new_line('func.R', { on_line = 6, text = '0,', indent = 6 }) + run:new_line('func.R', { on_line = 16, text = 'x <- x + 1', indent = 4 }) - run:new_line("loop.R", { on_line = 1, text = "x <- x + 1", indent = 0 }) - run:new_line("loop.R", { on_line = 3, text = "x <- x + 1", indent = 2 }) - run:new_line("loop.R", { on_line = 8, text = "x <- x + 1", indent = 2 }) - run:new_line("loop.R", { on_line = 14, text = "print('lol')", indent = 4 }) + run:new_line('loop.R', { on_line = 1, text = 'x <- x + 1', indent = 0 }) + run:new_line('loop.R', { on_line = 3, text = 'x <- x + 1', indent = 2 }) + run:new_line('loop.R', { on_line = 8, text = 'x <- x + 1', indent = 2 }) + run:new_line('loop.R', { on_line = 14, text = "print('lol')", indent = 4 }) - run:new_line("pipe.R", { on_line = 1, text = "head(n = 10L) |>", indent = 2 }) - run:new_line("pipe.R", { on_line = 9, text = "head()", indent = 2 }) + run:new_line('pipe.R', { on_line = 1, text = 'head(n = 10L) |>', indent = 2 }) + run:new_line('pipe.R', { on_line = 9, text = 'head()', indent = 2 }) - run:new_line("incomplete_pipe.R", { on_line = 2, text = "head %>%", indent = 2 }) + run:new_line('incomplete_pipe.R', { on_line = 2, text = 'head %>%', indent = 2 }) - run:new_line("aligned_indent.R", { on_line = 1, text = "z,", indent = 17 }) + run:new_line('aligned_indent.R', { on_line = 1, text = 'z,', indent = 17 }) end) end) diff --git a/tests/indent/rescript_spec.lua b/tests/indent/rescript_spec.lua index 5b1f06abd..e97cd1e8b 100644 --- a/tests/indent/rescript_spec.lua +++ b/tests/indent/rescript_spec.lua @@ -1,33 +1,33 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/rescript", { +local run = Runner:new(it, 'tests/indent/rescript', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent ReScript:", function() - describe("whole file:", function() - run:whole_file(".", {}) +describe('indent ReScript:', function() + describe('whole file:', function() + run:whole_file('.', {}) end) - describe("new line:", function() - run:new_line("basic.res", { on_line = 5, text = "x", indent = 0 }) - run:new_line("basic.res", { on_line = 9, text = '"another": here,', indent = 2 }) - run:new_line("basic.res", { on_line = 10, text = "}", indent = 0 }) - run:new_line("basic.res", { on_line = 14, text = "~test: test,", indent = 2 }) - run:new_line("basic.res", { on_line = 18, text = "x", indent = 0 }) + describe('new line:', function() + run:new_line('basic.res', { on_line = 5, text = 'x', indent = 0 }) + run:new_line('basic.res', { on_line = 9, text = '"another": here,', indent = 2 }) + run:new_line('basic.res', { on_line = 10, text = '}', indent = 0 }) + run:new_line('basic.res', { on_line = 14, text = '~test: test,', indent = 2 }) + run:new_line('basic.res', { on_line = 18, text = 'x', indent = 0 }) - run:new_line("complex.res", { on_line = 3, text = "x", indent = 2 }) - run:new_line("complex.res", { on_line = 5, text = "x", indent = 4 }) - run:new_line("complex.res", { on_line = 17, text = "|", indent = 10 }) - run:new_line("complex.res", { on_line = 25, text = "x", indent = 2 }) - run:new_line("complex.res", { on_line = 60, text = "x", indent = 6 }) - run:new_line("complex.res", { on_line = 120, text = "x", indent = 14 }) - run:new_line("complex.res", { on_line = 136, text = "x", indent = 2 }) + run:new_line('complex.res', { on_line = 3, text = 'x', indent = 2 }) + run:new_line('complex.res', { on_line = 5, text = 'x', indent = 4 }) + run:new_line('complex.res', { on_line = 17, text = '|', indent = 10 }) + run:new_line('complex.res', { on_line = 25, text = 'x', indent = 2 }) + run:new_line('complex.res', { on_line = 60, text = 'x', indent = 6 }) + run:new_line('complex.res', { on_line = 120, text = 'x', indent = 14 }) + run:new_line('complex.res', { on_line = 136, text = 'x', indent = 2 }) - run:new_line("conditional.res", { on_line = 6, text = "test: bool,", indent = 2 }) - run:new_line("conditional.res", { on_line = 95, text = "x", indent = 10 }) + run:new_line('conditional.res', { on_line = 6, text = 'test: bool,', indent = 2 }) + run:new_line('conditional.res', { on_line = 95, text = 'x', indent = 10 }) end) end) diff --git a/tests/indent/ruby_spec.lua b/tests/indent/ruby_spec.lua index b669b8938..4dcd4d0fa 100644 --- a/tests/indent/ruby_spec.lua +++ b/tests/indent/ruby_spec.lua @@ -1,22 +1,22 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/ruby", { +local run = Runner:new(it, 'tests/indent/ruby', { shiftwidth = 2, expandtab = true, }) -describe("indent Ruby:", function() - describe("whole file:", function() - run:whole_file(".", { - expected_failures = { "./period-issue-3364.rb" }, +describe('indent Ruby:', function() + describe('whole file:', function() + run:whole_file('.', { + expected_failures = { './period-issue-3364.rb' }, }) end) - describe("new line:", function() - run:new_line("indent-unless.rb", { on_line = 1, text = "stmt", indent = 2 }) - run:new_line("indent-assignment.rb", { on_line = 1, text = "1 +", indent = 2 }) - run:new_line("indent-parenthesized-statements.rb", { on_line = 1, text = "stmt", indent = 2 }) - run:new_line("indent-rescue.rb", { on_line = 1, text = "rescue", indent = 0 }) - run:new_line("indent-ensure.rb", { on_line = 1, text = "ensure", indent = 0 }) + describe('new line:', function() + run:new_line('indent-unless.rb', { on_line = 1, text = 'stmt', indent = 2 }) + run:new_line('indent-assignment.rb', { on_line = 1, text = '1 +', indent = 2 }) + run:new_line('indent-parenthesized-statements.rb', { on_line = 1, text = 'stmt', indent = 2 }) + run:new_line('indent-rescue.rb', { on_line = 1, text = 'rescue', indent = 0 }) + run:new_line('indent-ensure.rb', { on_line = 1, text = 'ensure', indent = 0 }) end) end) diff --git a/tests/indent/rust_spec.lua b/tests/indent/rust_spec.lua index 795765ba5..3671e9ee7 100644 --- a/tests/indent/rust_spec.lua +++ b/tests/indent/rust_spec.lua @@ -1,66 +1,66 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/rust", { +local run = Runner:new(it, 'tests/indent/rust', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, }) -describe("indent Rust:", function() - describe("whole file:", function() - run:whole_file "." +describe('indent Rust:', function() + describe('whole file:', function() + run:whole_file('.') end) - describe("new line:", function() - run:new_line("array.rs", { on_line = 2, text = "0,", indent = 4 }) - run:new_line("array.rs", { on_line = 8, text = "0,", indent = 8 }) - run:new_line("comment.rs", { on_line = 3, text = "a", indent = "/// " }) - run:new_line("comment.rs", { on_line = 10, text = "a", indent = " /// " }) - run:new_line("cond.rs", { on_line = 11, text = "x += 1;", indent = 12 }) - run:new_line("cond.rs", { on_line = 2, text = "x += 1;", indent = 8 }) - run:new_line("cond.rs", { on_line = 4, text = "x += 1;", indent = 8 }) - run:new_line("cond.rs", { on_line = 6, text = "x += 1;", indent = 8 }) - run:new_line("cond.rs", { on_line = 8, text = "x += 1;", indent = 4 }) - run:new_line("if_let_cond.rs", { on_line = 2, text = "let a = 1;", indent = 8 }) - run:new_line("if_let_cond.rs", { on_line = 4, text = "let a = 1;", indent = 8 }) - run:new_line("if_let_cond.rs", { on_line = 6, text = "let a = 1;", indent = 4 }) - run:new_line("enum.rs", { on_line = 2, text = "Q,", indent = 4 }) - run:new_line("enum.rs", { on_line = 4, text = "i32,", indent = 8 }) - run:new_line("enum.rs", { on_line = 8, text = "z: u32,", indent = 8 }) - run:new_line("enum.rs", { on_line = 11, text = "let _x = 1;", indent = 0 }) - run:new_line("func.rs", { on_line = 1, text = "let _x = 1;", indent = 4 }) - run:new_line("func.rs", { on_line = 3, text = "let _x = 1;", indent = 0 }) - run:new_line("func.rs", { on_line = 6, text = "z: i32,", indent = 4 }) - run:new_line("impl.rs", { on_line = 3, text = "const FOO: u32 = 1;", indent = 4 }) - run:new_line("impl.rs", { on_line = 4, text = "let _x = 1;", indent = 8 }) - run:new_line("impl.rs", { on_line = 6, text = "let _x = 1;", indent = 4 }) - run:new_line("impl.rs", { on_line = 7, text = "let _x = 1;", indent = 0 }) - run:new_line("loop.rs", { on_line = 10, text = "x += 1;", indent = 8 }) - run:new_line("loop.rs", { on_line = 2, text = "x += 1;", indent = 8 }) - run:new_line("loop.rs", { on_line = 6, text = "x += 1;", indent = 8 }) - run:new_line("macro.rs", { on_line = 1, text = "() => {},", indent = 4 }) - run:new_line("macro.rs", { on_line = 12, text = "B C", indent = 4 }) - run:new_line("macro.rs", { on_line = 2, text = "struct $c;", indent = 8 }) - run:new_line("match.rs", { on_line = 2, text = "-1 => -1,", indent = 8 }) - run:new_line("match.rs", { on_line = 7, text = "let y = 1;", indent = 12 }) - run:new_line("match.rs", { on_line = 10, text = "let y = 1;", indent = 4 }) - run:new_line("mod.rs", { on_line = 1, text = "const Z: i32 = 1;", indent = 4 }) - run:new_line("mod.rs", { on_line = 2, text = "const Z: i32 = 1;", indent = 4 }) - run:new_line("mod.rs", { on_line = 6, text = "const Z: i32 = 1;", indent = 8 }) - run:new_line("mod.rs", { on_line = 7, text = "const Z: i32 = 1;", indent = 4 }) - run:new_line("string.rs", { on_line = 2, text = "brave new", indent = 0 }) - run:new_line("string.rs", { on_line = 5, text = "brave new \\", indent = 8 }) - run:new_line("string.rs", { on_line = 9, text = "brave new \\", indent = 8 }) - run:new_line("struct.rs", { on_line = 1, text = "z: i32,", indent = 4 }) - run:new_line("struct.rs", { on_line = 2, text = "z: i32,", indent = 4 }) - run:new_line("struct.rs", { on_line = 4, text = "let y = 1;", indent = 0 }) - run:new_line("trait.rs", { on_line = 4, text = "fn baz();", indent = 4 }) - run:new_line("trait.rs", { on_line = 5, text = "let y = 1;", indent = 0 }) - run:new_line("trait.rs", { on_line = 7, text = "fn baz();", indent = 4 }) - run:new_line("trait.rs", { on_line = 8, text = "()", indent = 8 }) - run:new_line("where.rs", { on_line = 17, text = "T: Debug,", indent = 4 }) - run:new_line("where.rs", { on_line = 2, text = "T: Debug,", indent = 4 }) - run:new_line("where.rs", { on_line = 9, text = "T: Debug,", indent = 4 }) + describe('new line:', function() + run:new_line('array.rs', { on_line = 2, text = '0,', indent = 4 }) + run:new_line('array.rs', { on_line = 8, text = '0,', indent = 8 }) + run:new_line('comment.rs', { on_line = 3, text = 'a', indent = '/// ' }) + run:new_line('comment.rs', { on_line = 10, text = 'a', indent = ' /// ' }) + run:new_line('cond.rs', { on_line = 11, text = 'x += 1;', indent = 12 }) + run:new_line('cond.rs', { on_line = 2, text = 'x += 1;', indent = 8 }) + run:new_line('cond.rs', { on_line = 4, text = 'x += 1;', indent = 8 }) + run:new_line('cond.rs', { on_line = 6, text = 'x += 1;', indent = 8 }) + run:new_line('cond.rs', { on_line = 8, text = 'x += 1;', indent = 4 }) + run:new_line('if_let_cond.rs', { on_line = 2, text = 'let a = 1;', indent = 8 }) + run:new_line('if_let_cond.rs', { on_line = 4, text = 'let a = 1;', indent = 8 }) + run:new_line('if_let_cond.rs', { on_line = 6, text = 'let a = 1;', indent = 4 }) + run:new_line('enum.rs', { on_line = 2, text = 'Q,', indent = 4 }) + run:new_line('enum.rs', { on_line = 4, text = 'i32,', indent = 8 }) + run:new_line('enum.rs', { on_line = 8, text = 'z: u32,', indent = 8 }) + run:new_line('enum.rs', { on_line = 11, text = 'let _x = 1;', indent = 0 }) + run:new_line('func.rs', { on_line = 1, text = 'let _x = 1;', indent = 4 }) + run:new_line('func.rs', { on_line = 3, text = 'let _x = 1;', indent = 0 }) + run:new_line('func.rs', { on_line = 6, text = 'z: i32,', indent = 4 }) + run:new_line('impl.rs', { on_line = 3, text = 'const FOO: u32 = 1;', indent = 4 }) + run:new_line('impl.rs', { on_line = 4, text = 'let _x = 1;', indent = 8 }) + run:new_line('impl.rs', { on_line = 6, text = 'let _x = 1;', indent = 4 }) + run:new_line('impl.rs', { on_line = 7, text = 'let _x = 1;', indent = 0 }) + run:new_line('loop.rs', { on_line = 10, text = 'x += 1;', indent = 8 }) + run:new_line('loop.rs', { on_line = 2, text = 'x += 1;', indent = 8 }) + run:new_line('loop.rs', { on_line = 6, text = 'x += 1;', indent = 8 }) + run:new_line('macro.rs', { on_line = 1, text = '() => {},', indent = 4 }) + run:new_line('macro.rs', { on_line = 12, text = 'B C', indent = 4 }) + run:new_line('macro.rs', { on_line = 2, text = 'struct $c;', indent = 8 }) + run:new_line('match.rs', { on_line = 2, text = '-1 => -1,', indent = 8 }) + run:new_line('match.rs', { on_line = 7, text = 'let y = 1;', indent = 12 }) + run:new_line('match.rs', { on_line = 10, text = 'let y = 1;', indent = 4 }) + run:new_line('mod.rs', { on_line = 1, text = 'const Z: i32 = 1;', indent = 4 }) + run:new_line('mod.rs', { on_line = 2, text = 'const Z: i32 = 1;', indent = 4 }) + run:new_line('mod.rs', { on_line = 6, text = 'const Z: i32 = 1;', indent = 8 }) + run:new_line('mod.rs', { on_line = 7, text = 'const Z: i32 = 1;', indent = 4 }) + run:new_line('string.rs', { on_line = 2, text = 'brave new', indent = 0 }) + run:new_line('string.rs', { on_line = 5, text = 'brave new \\', indent = 8 }) + run:new_line('string.rs', { on_line = 9, text = 'brave new \\', indent = 8 }) + run:new_line('struct.rs', { on_line = 1, text = 'z: i32,', indent = 4 }) + run:new_line('struct.rs', { on_line = 2, text = 'z: i32,', indent = 4 }) + run:new_line('struct.rs', { on_line = 4, text = 'let y = 1;', indent = 0 }) + run:new_line('trait.rs', { on_line = 4, text = 'fn baz();', indent = 4 }) + run:new_line('trait.rs', { on_line = 5, text = 'let y = 1;', indent = 0 }) + run:new_line('trait.rs', { on_line = 7, text = 'fn baz();', indent = 4 }) + run:new_line('trait.rs', { on_line = 8, text = '()', indent = 8 }) + run:new_line('where.rs', { on_line = 17, text = 'T: Debug,', indent = 4 }) + run:new_line('where.rs', { on_line = 2, text = 'T: Debug,', indent = 4 }) + run:new_line('where.rs', { on_line = 9, text = 'T: Debug,', indent = 4 }) end) end) diff --git a/tests/indent/smali_spec.lua b/tests/indent/smali_spec.lua index cddc4f9d2..44e4a9881 100644 --- a/tests/indent/smali_spec.lua +++ b/tests/indent/smali_spec.lua @@ -1,25 +1,28 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/smali", { +local run = Runner:new(it, 'tests/indent/smali', { tabstop = 4, shiftwidth = 4, expandtab = false, }) -describe("indent Smali:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Smali:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("field.smali", { on_line = 7, text = 'value1 = "test"', indent = 1 }) - run:new_line("field.smali", { on_line = 10, text = "value2 = Lsome/enum;", indent = 2 }) - run:new_line("array_and_switch.smali", { on_line = 43, text = "1 2 3 4 5 6 200", indent = 2 }) - run:new_line("array_and_switch.smali", { on_line = 48, text = "Label10:", indent = 2 }) - run:new_line("method.smali", { on_line = 7, text = ".registers 10", indent = 1 }) - run:new_line("parameter.smali", { on_line = 20, text = ".annotation runtime Lsome/annotation;", indent = 3 }) - run:new_line("parameter.smali", { on_line = 21, text = 'something = "some value"', indent = 3 }) + describe('new line:', function() + run:new_line('field.smali', { on_line = 7, text = 'value1 = "test"', indent = 1 }) + run:new_line('field.smali', { on_line = 10, text = 'value2 = Lsome/enum;', indent = 2 }) + run:new_line('array_and_switch.smali', { on_line = 43, text = '1 2 3 4 5 6 200', indent = 2 }) + run:new_line('array_and_switch.smali', { on_line = 48, text = 'Label10:', indent = 2 }) + run:new_line('method.smali', { on_line = 7, text = '.registers 10', indent = 1 }) + run:new_line( + 'parameter.smali', + { on_line = 20, text = '.annotation runtime Lsome/annotation;', indent = 3 } + ) + run:new_line('parameter.smali', { on_line = 21, text = 'something = "some value"', indent = 3 }) end) end) diff --git a/tests/indent/sql_spec.lua b/tests/indent/sql_spec.lua index 2fdfc9b1b..9d3a3a8e6 100644 --- a/tests/indent/sql_spec.lua +++ b/tests/indent/sql_spec.lua @@ -1,19 +1,19 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/sql", { +local run = Runner:new(it, 'tests/indent/sql', { tabstop = 4, shiftwidth = 4, softtabstop = 0, expandtab = true, }) -describe("indent SQL:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent SQL:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() end) + describe('new line:', function() end) end) diff --git a/tests/indent/sway_spec.lua b/tests/indent/sway_spec.lua index d37573ae9..d6f4506ef 100644 --- a/tests/indent/sway_spec.lua +++ b/tests/indent/sway_spec.lua @@ -1,20 +1,20 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/sway", { +local run = Runner:new(it, 'tests/indent/sway', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = true, }) -describe("indent Sway:", function() - describe("whole file:", function() - run:whole_file(".", {}) +describe('indent Sway:', function() + describe('whole file:', function() + run:whole_file('.', {}) end) - describe("new line:", function() - run:new_line("main.sw", { on_line = 12, text = "const CONST: u32 = 2;", indent = 0 }) - run:new_line("main.sw", { on_line = 14, text = "let hi = 5;", indent = 4 }) - run:new_line("main.sw", { on_line = 15, text = "let hi = 5;", indent = 8 }) - run:new_line("main.sw", { on_line = 92, text = "let hi = 5;", indent = 12 }) + describe('new line:', function() + run:new_line('main.sw', { on_line = 12, text = 'const CONST: u32 = 2;', indent = 0 }) + run:new_line('main.sw', { on_line = 14, text = 'let hi = 5;', indent = 4 }) + run:new_line('main.sw', { on_line = 15, text = 'let hi = 5;', indent = 8 }) + run:new_line('main.sw', { on_line = 92, text = 'let hi = 5;', indent = 12 }) end) end) diff --git a/tests/indent/swift_spec.lua b/tests/indent/swift_spec.lua index 501cbfa81..8c9b2d063 100644 --- a/tests/indent/swift_spec.lua +++ b/tests/indent/swift_spec.lua @@ -1,22 +1,37 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/swift", { +local run = Runner:new(it, 'tests/indent/swift', { tabstop = 2, shiftwidth = 2, softtabstop = 2, expandtab = true, }) -describe("indent Swift:", function() - describe("whole file:", function() - run:whole_file(".", {}) +describe('indent Swift:', function() + describe('whole file:', function() + run:whole_file('.', {}) end) - describe("new line:", function() - run:new_line("declarations.swift", { on_line = 6, text = "var x = 1", indent = 2 }) - run:new_line("declarations.swift", { on_line = 12, text = "var textInsideInit = true", indent = 4 }) - run:new_line("declarations.swift", { on_line = 19, text = "var textInsideWillSet = 1", indent = 6 }) - run:new_line("declarations.swift", { on_line = 22, text = "var textInsideDidSet = 1", indent = 6 }) - run:new_line("declarations.swift", { on_line = 27, text = "var textInsideOverrideFunc", indent = 4 }) - run:new_line("declarations.swift", { on_line = 33, text = "var InsideProtocol: String { get }", indent = 2 }) + describe('new line:', function() + run:new_line('declarations.swift', { on_line = 6, text = 'var x = 1', indent = 2 }) + run:new_line( + 'declarations.swift', + { on_line = 12, text = 'var textInsideInit = true', indent = 4 } + ) + run:new_line( + 'declarations.swift', + { on_line = 19, text = 'var textInsideWillSet = 1', indent = 6 } + ) + run:new_line( + 'declarations.swift', + { on_line = 22, text = 'var textInsideDidSet = 1', indent = 6 } + ) + run:new_line( + 'declarations.swift', + { on_line = 27, text = 'var textInsideOverrideFunc', indent = 4 } + ) + run:new_line( + 'declarations.swift', + { on_line = 33, text = 'var InsideProtocol: String { get }', indent = 2 } + ) end) end) diff --git a/tests/indent/t32_spec.lua b/tests/indent/t32_spec.lua index 88d26612b..30c6542e0 100644 --- a/tests/indent/t32_spec.lua +++ b/tests/indent/t32_spec.lua @@ -1,137 +1,171 @@ -local Runner = require("tests.indent.common").Runner -local XFAIL = require("tests.indent.common").XFAIL +local Runner = require('tests.indent.common').Runner +local XFAIL = require('tests.indent.common').XFAIL -local runner = Runner:new(it, "tests/indent/t32", { +local runner = Runner:new(it, 'tests/indent/t32', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent t32:", function() - describe("whole file:", function() - runner:whole_file "." +describe('indent t32:', function() + describe('whole file:', function() + runner:whole_file('.') end) - describe("new line:", function() - runner:new_line("if_block.cmm", { on_line = 2, text = "GOTO start", indent = 0 }, "command after IF", XFAIL) + describe('new line:', function() + runner:new_line( + 'if_block.cmm', + { on_line = 2, text = 'GOTO start', indent = 0 }, + 'command after IF', + XFAIL + ) - runner:new_line("if_block.cmm", { on_line = 5, text = "GOTO start", indent = 2 }, "command in IF then block") + runner:new_line( + 'if_block.cmm', + { on_line = 5, text = 'GOTO start', indent = 2 }, + 'command in IF then block' + ) - runner:new_line("if_block.cmm", { on_line = 4, text = "(", indent = 0 }, "block after IF") + runner:new_line('if_block.cmm', { on_line = 4, text = '(', indent = 0 }, 'block after IF') - for ii, test in ipairs { + for ii, test in ipairs({ { 1, 2 }, { 14, 2 }, { 19, 2 }, { 21, 2 }, { 41, 2 }, { 42, 4 }, - } do + }) do runner:new_line( - "if_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command in IF then[" .. ii .. "]" + 'if_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command in IF then[' .. ii .. ']' ) end -- Insertion of a command right before the existing block results in -- incorrect syntax. The parse either detect an error or incorrectly -- assumes "ELSE IF" is a command. - for ii, test in ipairs { + for ii, test in ipairs({ { 26, 2 }, { 30, 2 }, - } do + }) do runner:new_line( - "if_block.cmm", + 'if_block.cmm', { on_line = test[1], text = 'PRINT ""', indent = test[2] }, - "displace block in IF then[" .. ii .. "]", + 'displace block in IF then[' .. ii .. ']', XFAIL ) end - runner:new_line("if_block.cmm", { on_line = 45, text = "&x=1.", indent = 6 }, "command in IF then", XFAIL) + runner:new_line( + 'if_block.cmm', + { on_line = 45, text = '&x=1.', indent = 6 }, + 'command in IF then', + XFAIL + ) - for ii, test in ipairs { + for ii, test in ipairs({ { 16, 2 }, { 21, 2 }, { 23, 2 }, { 44, 4 }, - } do + }) do runner:new_line( - "if_block.cmm", - { on_line = test[1], text = "CONTinue\n", indent = test[2] }, - "command in IF else[" .. ii .. "]" + 'if_block.cmm', + { on_line = test[1], text = 'CONTinue\n', indent = test[2] }, + 'command in IF else[' .. ii .. ']' ) end - runner:new_line("while_block.cmm", { on_line = 2, text = "&x=1.", indent = 2 }, "command after WHILE") + runner:new_line( + 'while_block.cmm', + { on_line = 2, text = '&x=1.', indent = 2 }, + 'command after WHILE' + ) - runner:new_line("while_block.cmm", { on_line = 4, text = "&x=1.", indent = 0 }, "command after WHILE") + runner:new_line( + 'while_block.cmm', + { on_line = 4, text = '&x=1.', indent = 0 }, + 'command after WHILE' + ) - runner:new_line("while_block.cmm", { on_line = 1, text = "(\n", indent = 0 }, "block in WHILE then") + runner:new_line( + 'while_block.cmm', + { on_line = 1, text = '(\n', indent = 0 }, + 'block in WHILE then' + ) - for ii, test in ipairs { + for ii, test in ipairs({ { 5, 2 }, { 12, 2 }, - } do + }) do runner:new_line( - "while_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command in WHILE then block[" .. ii .. "]" + 'while_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command in WHILE then block[' .. ii .. ']' ) end - for ii, test in ipairs { + for ii, test in ipairs({ { 1, 0 }, { 4, 2 }, - } do + }) do runner:new_line( - "repeat_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command after RePeaT[" .. ii .. "]" + 'repeat_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command after RePeaT[' .. ii .. ']' ) end - runner:new_line("repeat_block.cmm", { on_line = 3, text = "(\n", indent = 0 }, "block in RePeaT then") + runner:new_line( + 'repeat_block.cmm', + { on_line = 3, text = '(\n', indent = 0 }, + 'block in RePeaT then' + ) - for ii, test in ipairs { + for ii, test in ipairs({ { 7, 2 }, { 18, 2 }, { 24, 2 }, - } do + }) do runner:new_line( - "repeat_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command in RePeaT then block [" .. ii .. "]" + 'repeat_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command in RePeaT then block [' .. ii .. ']' ) end - runner:new_line("subroutine_block.cmm", { on_line = 1, text = "(\n", indent = 0 }, "block after call label") + runner:new_line( + 'subroutine_block.cmm', + { on_line = 1, text = '(\n', indent = 0 }, + 'block after call label' + ) - for ii, test in ipairs { + for ii, test in ipairs({ { 2, 2 }, { 3, 2 }, { 8, 2 }, { 12, 2 }, { 19, 2 }, - } do + }) do runner:new_line( - "subroutine_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command in subroutine block[" .. ii .. "]" + 'subroutine_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command in subroutine block[' .. ii .. ']' ) end - for ii, test in ipairs { + for ii, test in ipairs({ { 5, 2 }, { 13, 2 }, { 23, 2 }, - } do + }) do runner:new_line( - "subroutine_block.cmm", - { on_line = test[1], text = "&x=1.", indent = test[2] }, - "command after subroutine block[" .. ii .. "]" + 'subroutine_block.cmm', + { on_line = test[1], text = '&x=1.', indent = test[2] }, + 'command after subroutine block[' .. ii .. ']' ) end end) diff --git a/tests/indent/terraform_spec.lua b/tests/indent/terraform_spec.lua index 49fa22c20..3cfcb937b 100644 --- a/tests/indent/terraform_spec.lua +++ b/tests/indent/terraform_spec.lua @@ -1,35 +1,56 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/terraform", { +local run = Runner:new(it, 'tests/indent/terraform', { tabstop = 2, shiftwidth = 2, expandtab = true, }) -describe("indent Terraform:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Terraform:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("no-indent-after-brace.tf", { on_line = 4, text = "# Wow, no indent here please", indent = 0 }) - run:new_line("indent-in-multiline-tuples.tf", { on_line = 4, text = "3,", indent = 4 }) - run:new_line("indent-in-multiline-tuples.tf", { on_line = 3, text = "# as elements", indent = 4 }) - run:new_line("indent-in-multiline-tuples.tf", { on_line = 5, text = "# as outer block", indent = 2 }) - run:new_line("indent-in-multiline-tuples.tf", { on_line = 1, text = "# as outer block", indent = 2 }) - run:new_line("indent-in-multiline-objects.tf", { on_line = 4, text = '3: "baz",', indent = 4 }) - run:new_line("indent-in-multiline-objects.tf", { on_line = 3, text = "# as elements", indent = 4 }) - run:new_line("indent-in-multiline-objects.tf", { on_line = 5, text = "# as outer block", indent = 2 }) - run:new_line("indent-in-multiline-objects.tf", { on_line = 1, text = "# as outer block", indent = 2 }) - run:new_line("multiple-attributes.tf", { on_line = 2, text = "a = 1", indent = 2 }) - run:new_line("multiple-attributes.tf", { on_line = 3, text = "a = 1", indent = 2 }) - run:new_line("multiple-attributes.tf", { on_line = 4, text = "a = 1", indent = 0 }) - run:new_line("nested_blocks.tf", { on_line = 3, text = "a = 1", indent = 4 }) - run:new_line("nested_blocks.tf", { on_line = 4, text = "a = 1", indent = 2 }) - run:new_line("function_call.tf", { on_line = 4, text = "c,", indent = 4 }) - run:new_line("function_call.tf", { on_line = 5, text = "a = 1", indent = 2 }) + describe('new line:', function() + run:new_line( + 'no-indent-after-brace.tf', + { on_line = 4, text = '# Wow, no indent here please', indent = 0 } + ) + run:new_line('indent-in-multiline-tuples.tf', { on_line = 4, text = '3,', indent = 4 }) + run:new_line( + 'indent-in-multiline-tuples.tf', + { on_line = 3, text = '# as elements', indent = 4 } + ) + run:new_line( + 'indent-in-multiline-tuples.tf', + { on_line = 5, text = '# as outer block', indent = 2 } + ) + run:new_line( + 'indent-in-multiline-tuples.tf', + { on_line = 1, text = '# as outer block', indent = 2 } + ) + run:new_line('indent-in-multiline-objects.tf', { on_line = 4, text = '3: "baz",', indent = 4 }) + run:new_line( + 'indent-in-multiline-objects.tf', + { on_line = 3, text = '# as elements', indent = 4 } + ) + run:new_line( + 'indent-in-multiline-objects.tf', + { on_line = 5, text = '# as outer block', indent = 2 } + ) + run:new_line( + 'indent-in-multiline-objects.tf', + { on_line = 1, text = '# as outer block', indent = 2 } + ) + run:new_line('multiple-attributes.tf', { on_line = 2, text = 'a = 1', indent = 2 }) + run:new_line('multiple-attributes.tf', { on_line = 3, text = 'a = 1', indent = 2 }) + run:new_line('multiple-attributes.tf', { on_line = 4, text = 'a = 1', indent = 0 }) + run:new_line('nested_blocks.tf', { on_line = 3, text = 'a = 1', indent = 4 }) + run:new_line('nested_blocks.tf', { on_line = 4, text = 'a = 1', indent = 2 }) + run:new_line('function_call.tf', { on_line = 4, text = 'c,', indent = 4 }) + run:new_line('function_call.tf', { on_line = 5, text = 'a = 1', indent = 2 }) end) end) diff --git a/tests/indent/tiger_spec.lua b/tests/indent/tiger_spec.lua index c1f252fd8..b41019c12 100644 --- a/tests/indent/tiger_spec.lua +++ b/tests/indent/tiger_spec.lua @@ -1,113 +1,233 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local runner = Runner:new(it, "tests/indent/tiger", { +local runner = Runner:new(it, 'tests/indent/tiger', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Tiger:", function() - describe("whole file:", function() - runner:whole_file "." +describe('indent Tiger:', function() + describe('whole file:', function() + runner:whole_file('.') end) - describe("new line:", function() - runner:new_line("classes.tig", { on_line = 1, text = "var a := 0", indent = 2 }, "class declaration beginning") - runner:new_line("classes.tig", { on_line = 2, text = "var a := 0", indent = 2 }, "class declaration after field") - runner:new_line("classes.tig", { on_line = 4, text = "var a := 0", indent = 2 }, "class declaration after method") - runner:new_line("classes.tig", { on_line = 5, text = "var a := 0", indent = 0 }, "after class declaration") - runner:new_line("classes.tig", { on_line = 7, text = "var a := 0", indent = 2 }, "class type beginning") - runner:new_line("classes.tig", { on_line = 8, text = "var a := 0", indent = 2 }, "class type after field") - runner:new_line("classes.tig", { on_line = 10, text = "self.a := 0", indent = 4 }, "inside method") - runner:new_line("classes.tig", { on_line = 13, text = "var a := 0", indent = 2 }, "class type after method") - runner:new_line("classes.tig", { on_line = 14, text = "var a := 0", indent = 0 }, "after class type") + describe('new line:', function() + runner:new_line( + 'classes.tig', + { on_line = 1, text = 'var a := 0', indent = 2 }, + 'class declaration beginning' + ) + runner:new_line( + 'classes.tig', + { on_line = 2, text = 'var a := 0', indent = 2 }, + 'class declaration after field' + ) + runner:new_line( + 'classes.tig', + { on_line = 4, text = 'var a := 0', indent = 2 }, + 'class declaration after method' + ) + runner:new_line( + 'classes.tig', + { on_line = 5, text = 'var a := 0', indent = 0 }, + 'after class declaration' + ) + runner:new_line( + 'classes.tig', + { on_line = 7, text = 'var a := 0', indent = 2 }, + 'class type beginning' + ) + runner:new_line( + 'classes.tig', + { on_line = 8, text = 'var a := 0', indent = 2 }, + 'class type after field' + ) + runner:new_line( + 'classes.tig', + { on_line = 10, text = 'self.a := 0', indent = 4 }, + 'inside method' + ) + runner:new_line( + 'classes.tig', + { on_line = 13, text = 'var a := 0', indent = 2 }, + 'class type after method' + ) + runner:new_line( + 'classes.tig', + { on_line = 14, text = 'var a := 0', indent = 0 }, + 'after class type' + ) - runner:new_line("control-flow.tig", { on_line = 2, text = "true", indent = 4 }, "if condition") - runner:new_line("control-flow.tig", { on_line = 4, text = "true", indent = 4 }, "if consequence") - runner:new_line("control-flow.tig", { on_line = 4, text = "true", indent = 4 }, "if alternative") - runner:new_line("control-flow.tig", { on_line = 10, text = "start := 0", indent = 4 }, "for index start") - runner:new_line("control-flow.tig", { on_line = 12, text = "the_end", indent = 4 }, "for index end") - runner:new_line("control-flow.tig", { on_line = 14, text = "break", indent = 4 }, "for body") - runner:new_line("control-flow.tig", { on_line = 18, text = "true", indent = 4 }, "while condition") - runner:new_line("control-flow.tig", { on_line = 20, text = "break", indent = 4 }, "while body") + runner:new_line('control-flow.tig', { on_line = 2, text = 'true', indent = 4 }, 'if condition') + runner:new_line( + 'control-flow.tig', + { on_line = 4, text = 'true', indent = 4 }, + 'if consequence' + ) + runner:new_line( + 'control-flow.tig', + { on_line = 4, text = 'true', indent = 4 }, + 'if alternative' + ) + runner:new_line( + 'control-flow.tig', + { on_line = 10, text = 'start := 0', indent = 4 }, + 'for index start' + ) + runner:new_line( + 'control-flow.tig', + { on_line = 12, text = 'the_end', indent = 4 }, + 'for index end' + ) + runner:new_line('control-flow.tig', { on_line = 14, text = 'break', indent = 4 }, 'for body') + runner:new_line( + 'control-flow.tig', + { on_line = 18, text = 'true', indent = 4 }, + 'while condition' + ) + runner:new_line('control-flow.tig', { on_line = 20, text = 'break', indent = 4 }, 'while body') - runner:new_line("functions.tig", { on_line = 1, text = "parameter: int,", indent = 2 }, "parameter list beginning") - runner:new_line("functions.tig", { on_line = 2, text = "parameter: int,", indent = 2 }, "parameter list middle") - runner:new_line("functions.tig", { on_line = 4, text = ",parameter: int", indent = 2 }, "parameter list end") - runner:new_line("functions.tig", { on_line = 5, text = "var a := 0", indent = 0 }, "after parameter list") - runner:new_line("functions.tig", { on_line = 7, text = "print(a)", indent = 2 }, "function body") - runner:new_line("functions.tig", { on_line = 9, text = "a,", indent = 6 }, "function call beginning") - runner:new_line("functions.tig", { on_line = 10, text = "a,", indent = 6 }, "function call middle") - runner:new_line("functions.tig", { on_line = 12, text = ",a", indent = 6 }, "function call end") - runner:new_line("functions.tig", { on_line = 13, text = "; print(a)", indent = 4 }, "after function call") - runner:new_line("functions.tig", { on_line = 14, text = "var a := 12", indent = 0 }, "after function declaration") + runner:new_line( + 'functions.tig', + { on_line = 1, text = 'parameter: int,', indent = 2 }, + 'parameter list beginning' + ) + runner:new_line( + 'functions.tig', + { on_line = 2, text = 'parameter: int,', indent = 2 }, + 'parameter list middle' + ) + runner:new_line( + 'functions.tig', + { on_line = 4, text = ',parameter: int', indent = 2 }, + 'parameter list end' + ) + runner:new_line( + 'functions.tig', + { on_line = 5, text = 'var a := 0', indent = 0 }, + 'after parameter list' + ) + runner:new_line( + 'functions.tig', + { on_line = 7, text = 'print(a)', indent = 2 }, + 'function body' + ) + runner:new_line( + 'functions.tig', + { on_line = 9, text = 'a,', indent = 6 }, + 'function call beginning' + ) + runner:new_line( + 'functions.tig', + { on_line = 10, text = 'a,', indent = 6 }, + 'function call middle' + ) + runner:new_line('functions.tig', { on_line = 12, text = ',a', indent = 6 }, 'function call end') + runner:new_line( + 'functions.tig', + { on_line = 13, text = '; print(a)', indent = 4 }, + 'after function call' + ) + runner:new_line( + 'functions.tig', + { on_line = 14, text = 'var a := 12', indent = 0 }, + 'after function declaration' + ) - runner:new_line("groupings.tig", { on_line = 2, text = "var b := 0", indent = 2 }, "let declarations") - runner:new_line("groupings.tig", { on_line = 3, text = "a := a + 1", indent = 2 }, "after 'in'") - runner:new_line("groupings.tig", { on_line = 4, text = "a := a + 1;", indent = 4 }, "sequence") - runner:new_line("groupings.tig", { on_line = 8, text = "a := a + 1;", indent = 2 }, "after sequence") - runner:new_line("groupings.tig", { on_line = 10, text = "+ 1", indent = 0 }, "after 'end'") + runner:new_line( + 'groupings.tig', + { on_line = 2, text = 'var b := 0', indent = 2 }, + 'let declarations' + ) + runner:new_line('groupings.tig', { on_line = 3, text = 'a := a + 1', indent = 2 }, "after 'in'") + runner:new_line('groupings.tig', { on_line = 4, text = 'a := a + 1;', indent = 4 }, 'sequence') + runner:new_line( + 'groupings.tig', + { on_line = 8, text = 'a := a + 1;', indent = 2 }, + 'after sequence' + ) + runner:new_line('groupings.tig', { on_line = 10, text = '+ 1', indent = 0 }, "after 'end'") runner:new_line( - "values-and-expressions.tig", - { on_line = 4, text = "field: record,", indent = 4 }, - "record type beginning" + 'values-and-expressions.tig', + { on_line = 4, text = 'field: record,', indent = 4 }, + 'record type beginning' + ) + runner:new_line( + 'values-and-expressions.tig', + { on_line = 5, text = 'field: record,', indent = 4 }, + 'record type middle' + ) + runner:new_line( + 'values-and-expressions.tig', + { on_line = 7, text = ',field: record', indent = 4 }, + 'record type end' + ) + runner:new_line( + 'values-and-expressions.tig', + { on_line = 8, text = 'var a := 0', indent = 2 }, + 'after record type' + ) + runner:new_line( + 'values-and-expressions.tig', + { on_line = 10, text = '0', indent = 4 }, + 'variable declaration init value' + ) + runner:new_line( + 'values-and-expressions.tig', + { on_line = 11, text = '+ a', indent = 4 }, + 'variable declaration init follow-up' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 5, text = "field: record,", indent = 4 }, - "record type middle" + 'values-and-expressions.tig', + { on_line = 13, text = 'a', indent = 4 }, + 'array index' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 7, text = ",field: record", indent = 4 }, - "record type end" + 'values-and-expressions.tig', + { on_line = 14, text = '+ a', indent = 4 }, + 'array index follow-up' ) - runner:new_line("values-and-expressions.tig", { on_line = 8, text = "var a := 0", indent = 2 }, "after record type") runner:new_line( - "values-and-expressions.tig", - { on_line = 10, text = "0", indent = 4 }, - "variable declaration init value" + 'values-and-expressions.tig', + { on_line = 15, text = '+ a', indent = 2 }, + 'after array value' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 11, text = "+ a", indent = 4 }, - "variable declaration init follow-up" + 'values-and-expressions.tig', + { on_line = 18, text = 'a', indent = 4 }, + 'array expression size' ) - runner:new_line("values-and-expressions.tig", { on_line = 13, text = "a", indent = 4 }, "array index") - runner:new_line("values-and-expressions.tig", { on_line = 14, text = "+ a", indent = 4 }, "array index follow-up") - runner:new_line("values-and-expressions.tig", { on_line = 15, text = "+ a", indent = 2 }, "after array value") - runner:new_line("values-and-expressions.tig", { on_line = 18, text = "a", indent = 4 }, "array expression size") runner:new_line( - "values-and-expressions.tig", - { on_line = 20, text = "of", indent = 4 }, - "array expression after size" + 'values-and-expressions.tig', + { on_line = 20, text = 'of', indent = 4 }, + 'array expression after size' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 21, text = "a", indent = 4 }, - "array expression init value" + 'values-and-expressions.tig', + { on_line = 21, text = 'a', indent = 4 }, + 'array expression init value' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 25, text = "field = 0,", indent = 4 }, - "record expression beginning" + 'values-and-expressions.tig', + { on_line = 25, text = 'field = 0,', indent = 4 }, + 'record expression beginning' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 26, text = "field = 0,", indent = 4 }, - "record expression middle" + 'values-and-expressions.tig', + { on_line = 26, text = 'field = 0,', indent = 4 }, + 'record expression middle' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 28, text = ",field = 0", indent = 4 }, - "record expression end" + 'values-and-expressions.tig', + { on_line = 28, text = ',field = 0', indent = 4 }, + 'record expression end' ) runner:new_line( - "values-and-expressions.tig", - { on_line = 29, text = "a := 0", indent = 2 }, - "after record expression" + 'values-and-expressions.tig', + { on_line = 29, text = 'a := 0', indent = 2 }, + 'after record expression' ) end) end) diff --git a/tests/indent/usd_spec.lua b/tests/indent/usd_spec.lua index c4e8198aa..85e9b9f78 100644 --- a/tests/indent/usd_spec.lua +++ b/tests/indent/usd_spec.lua @@ -1,21 +1,21 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/usd", { +local run = Runner:new(it, 'tests/indent/usd', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = true, }) -describe("indent USD:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent USD:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("prim.usd", { on_line = 3, text = "active = false", indent = 4 }) - run:new_line("prim.usd", { on_line = 5, text = "custom int foo = 10", indent = 4 }) + describe('new line:', function() + run:new_line('prim.usd', { on_line = 3, text = 'active = false', indent = 4 }) + run:new_line('prim.usd', { on_line = 5, text = 'custom int foo = 10', indent = 4 }) end) end) diff --git a/tests/indent/vue_spec.lua b/tests/indent/vue_spec.lua index 09527e4b0..ec9466d5e 100644 --- a/tests/indent/vue_spec.lua +++ b/tests/indent/vue_spec.lua @@ -1,24 +1,29 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -- local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent", { +local run = Runner:new(it, 'tests/indent', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent Vue:", function() - describe("whole file:", function() - run:whole_file({ "vue/" }, {}) +describe('indent Vue:', function() + describe('whole file:', function() + run:whole_file({ 'vue/' }, {}) end) - describe("new line:", function() - for _, info in ipairs { + describe('new line:', function() + for _, info in ipairs({ { 1, 2 }, { 3, 0 }, - } do - run:new_line("vue/template_indent.vue", { on_line = info[1], text = "Foo", indent = info[2] }, info[3], info[4]) + }) do + run:new_line( + 'vue/template_indent.vue', + { on_line = info[1], text = 'Foo', indent = info[2] }, + info[3], + info[4] + ) end end) end) diff --git a/tests/indent/wgsl_spec.lua b/tests/indent/wgsl_spec.lua index e1bf618f8..9a30cff4b 100644 --- a/tests/indent/wgsl_spec.lua +++ b/tests/indent/wgsl_spec.lua @@ -1,43 +1,43 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/wgsl", { +local run = Runner:new(it, 'tests/indent/wgsl', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent WGSL:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent WGSL:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("basic.wgsl", { on_line = 47, text = "c: u32,", indent = 2 }) - run:new_line("basic.wgsl", { on_line = 52, text = "c: u32,", indent = 2 }) - run:new_line("basic.wgsl", { on_line = 56, text = "c: u32,", indent = 2 }) - run:new_line("basic.wgsl", { on_line = 59, text = "c: u32,", indent = 2 }) - run:new_line("type_constructor_or_function_call_expression.wgsl", { + describe('new line:', function() + run:new_line('basic.wgsl', { on_line = 47, text = 'c: u32,', indent = 2 }) + run:new_line('basic.wgsl', { on_line = 52, text = 'c: u32,', indent = 2 }) + run:new_line('basic.wgsl', { on_line = 56, text = 'c: u32,', indent = 2 }) + run:new_line('basic.wgsl', { on_line = 59, text = 'c: u32,', indent = 2 }) + run:new_line('type_constructor_or_function_call_expression.wgsl', { on_line = 3, - text = "b", + text = 'b', indent = 4, }) - run:new_line("type_constructor_or_function_call_expression.wgsl", { + run:new_line('type_constructor_or_function_call_expression.wgsl', { on_line = 4, - text = "c", + text = 'c', indent = 4, }) - run:new_line("type_constructor_or_function_call_expression.wgsl", { + run:new_line('type_constructor_or_function_call_expression.wgsl', { on_line = 8, - text = "b", + text = 'b', indent = 4, }) - run:new_line("type_constructor_or_function_call_expression.wgsl", { + run:new_line('type_constructor_or_function_call_expression.wgsl', { on_line = 9, - text = "c", + text = 'c', indent = 4, }) end) diff --git a/tests/indent/yaml_spec.lua b/tests/indent/yaml_spec.lua index 91c60c227..001bc01f1 100644 --- a/tests/indent/yaml_spec.lua +++ b/tests/indent/yaml_spec.lua @@ -1,20 +1,20 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/yaml", { +local run = Runner:new(it, 'tests/indent/yaml', { shiftwidth = 2, expandtab = true, }) -describe("indent YAML:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent YAML:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("indent-sequence-items.yaml", { on_line = 2, text = "key3: value3", indent = 2 }) - run:new_line("autoindent-mapping-pair.yaml", { on_line = 1, text = "key3: value3", indent = 2 }) + describe('new line:', function() + run:new_line('indent-sequence-items.yaml', { on_line = 2, text = 'key3: value3', indent = 2 }) + run:new_line('autoindent-mapping-pair.yaml', { on_line = 1, text = 'key3: value3', indent = 2 }) end) end) diff --git a/tests/indent/yang_spec.lua b/tests/indent/yang_spec.lua index 618d260c6..44e1dbce5 100644 --- a/tests/indent/yang_spec.lua +++ b/tests/indent/yang_spec.lua @@ -1,23 +1,23 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner -local run = Runner:new(it, "tests/indent/yang", { +local run = Runner:new(it, 'tests/indent/yang', { tabstop = 2, shiftwidth = 2, softtabstop = 0, expandtab = true, }) -describe("indent YANG:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent YANG:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("module.yang", { on_line = 12, text = "// Aligned indentation ended", indent = 2 }) - run:new_line("module.yang", { on_line = 37, text = "// Test", indent = 4 }) - run:new_line("module.yang", { on_line = 40, text = "// Test", indent = 4 }) - run:new_line("module.yang", { on_line = 52, text = "Aligned string!", indent = 11 }) + describe('new line:', function() + run:new_line('module.yang', { on_line = 12, text = '// Aligned indentation ended', indent = 2 }) + run:new_line('module.yang', { on_line = 37, text = '// Test', indent = 4 }) + run:new_line('module.yang', { on_line = 40, text = '// Test', indent = 4 }) + run:new_line('module.yang', { on_line = 52, text = 'Aligned string!', indent = 11 }) end) end) diff --git a/tests/indent/yuck_spec.lua b/tests/indent/yuck_spec.lua index 6ce15de6f..b20ac8dac 100644 --- a/tests/indent/yuck_spec.lua +++ b/tests/indent/yuck_spec.lua @@ -1,19 +1,19 @@ -local Runner = require("tests.indent.common").Runner -local run = Runner:new(it, "tests/indent/yuck", { +local Runner = require('tests.indent.common').Runner +local run = Runner:new(it, 'tests/indent/yuck', { tabstop = 2, shiftwidth = 2, expandtab = true, }) -describe("indent yuck", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent yuck', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new line:", function() - run:new_line("indent.yuck", { on_line = 13, text = ":box1 parameter", indent = 4 }) - run:new_line("indent.yuck", { on_line = 17, text = ")", indent = 0 }) + describe('new line:', function() + run:new_line('indent.yuck', { on_line = 13, text = ':box1 parameter', indent = 4 }) + run:new_line('indent.yuck', { on_line = 17, text = ')', indent = 0 }) end) end) diff --git a/tests/indent/zig_spec.lua b/tests/indent/zig_spec.lua index c064d9ab9..4ad17446f 100644 --- a/tests/indent/zig_spec.lua +++ b/tests/indent/zig_spec.lua @@ -1,22 +1,22 @@ -local Runner = require("tests.indent.common").Runner +local Runner = require('tests.indent.common').Runner --local XFAIL = require("tests.indent.common").XFAIL -local run = Runner:new(it, "tests/indent/zig", { +local run = Runner:new(it, 'tests/indent/zig', { tabstop = 4, shiftwidth = 4, softtabstop = 4, expandtab = true, }) -describe("indent Zig:", function() - describe("whole file:", function() - run:whole_file(".", { +describe('indent Zig:', function() + describe('whole file:', function() + run:whole_file('.', { expected_failures = {}, }) end) - describe("new lines:", function() - run:new_line("pr-3269.zig", { on_line = 5, text = "return;", indent = 4 }) - run:new_line("pr-3269.zig", { on_line = 6, text = "", indent = 0 }) + describe('new lines:', function() + run:new_line('pr-3269.zig', { on_line = 5, text = 'return;', indent = 4 }) + run:new_line('pr-3269.zig', { on_line = 6, text = '', indent = 0 }) end) end) diff --git a/tests/query/highlights/lua/test.lua b/tests/query/highlights/lua/test.lua index 55818bb74..2261d2e4e 100644 --- a/tests/query/highlights/lua/test.lua +++ b/tests/query/highlights/lua/test.lua @@ -14,5 +14,5 @@ next(a) -- ^ @function.builtin -- Checking for incorrect hlgroup of injected luap -string.match(s, "\0%d[^\n]+") --- ^ @!constant +string.match(s, '\0%d[^\n]+') +-- ^ !constant diff --git a/tests/query/highlights_spec.lua b/tests/query/highlights_spec.lua index 3bb03d49d..b6a52124a 100644 --- a/tests/query/highlights_spec.lua +++ b/tests/query/highlights_spec.lua @@ -1,39 +1,39 @@ -local highlighter = require "vim.treesitter.highlighter" -local parsers = require "nvim-treesitter.parsers" +local highlighter = require('vim.treesitter.highlighter') local ts = vim.treesitter local COMMENT_NODES = { - markdown = "html_block", - haskell = "haddock", + markdown = 'html_block', + haskell = 'haddock', } local function check_assertions(file) local buf = vim.fn.bufadd(file) vim.fn.bufload(file) - local lang = parsers.get_buf_lang(buf) + local ft = vim.bo[buf].filetype + local lang = vim.treesitter.language.get_lang(ft) or ft assert.same( 1, - vim.fn.executable "highlight-assertions", + vim.fn.executable('highlight-assertions'), '"highlight-assertions" not executable!' .. ' Get it via "cargo install --git https://github.com/theHamsta/highlight-assertions"' ) - local comment_node = COMMENT_NODES[lang] or "comment" + local comment_node = COMMENT_NODES[lang] or 'comment' local assertions = vim.fn.json_decode( vim.fn.system( "highlight-assertions -p '" - .. vim.api.nvim_get_runtime_file("parser/" .. lang .. ".so", false)[1] + .. vim.api.nvim_get_runtime_file('parser/' .. lang .. '.so', false)[1] .. "' -s '" .. file .. "' -c " .. comment_node ) ) - local parser = parsers.get_parser(buf, lang) + local parser = ts.get_parser(buf, lang) parser:parse(true) local self = highlighter.new(parser, {}) - assert.True(#assertions > 0, "No assertions detected!") + assert.True(#assertions > 0, 'No assertions detected!') for _, assertion in ipairs(assertions) do local row = assertion.position.row local col = assertion.position.column @@ -46,7 +46,7 @@ local function check_assertions(file) return end - local root = state.tstree:root() + local root = tstree:root() local root_start_row, _, root_end_row, _ = root:range() -- Only worry about trees within the line range @@ -72,21 +72,22 @@ local function check_assertions(file) assert.is.number(col) if hl and ts.is_in_node_range(node, row, col) then local c = query._query.captures[capture] -- name of the capture in the query - if c ~= nil and c ~= "spell" and c ~= "conceal" then + if c ~= nil and c ~= 'spell' and c ~= 'conceal' then captures[c] = true highlights[c] = true end end end - end, true) - if assertion.expected_capture_name:match "^!" then + end) + if assertion.expected_capture_name:match('^!') then assert.Falsy( - captures[assertion.expected_capture_name:sub(2)] or highlights[assertion.expected_capture_name:sub(2)], - "Error in at " + captures[assertion.expected_capture_name:sub(2)] + or highlights[assertion.expected_capture_name:sub(2)], + 'Error in at ' .. file - .. ":" + .. ':' .. (row + 1) - .. ":" + .. ':' .. (col + 1) .. ': expected "' .. assertion.expected_capture_name @@ -98,11 +99,11 @@ local function check_assertions(file) else assert.True( captures[assertion.expected_capture_name] or highlights[assertion.expected_capture_name], - "Error in at " + 'Error in at ' .. file - .. ":" + .. ':' .. (row + 1) - .. ":" + .. ':' .. (col + 1) .. ': expected "' .. assertion.expected_capture_name @@ -115,8 +116,8 @@ local function check_assertions(file) end end -describe("highlight queries", function() - local files = vim.fn.split(vim.fn.glob "tests/query/highlights/**/*.*") +describe('highlight queries', function() + local files = vim.fn.split(vim.fn.glob('tests/query/highlights/**/*.*')) for _, file in ipairs(files) do it(file, function() check_assertions(file) diff --git a/tests/query/injection_spec.lua b/tests/query/injection_spec.lua index 95ad12eec..91096fee4 100644 --- a/tests/query/injection_spec.lua +++ b/tests/query/injection_spec.lua @@ -1,24 +1,30 @@ -require "nvim-treesitter.highlight" -- yes, this is necessary to set the hlmap -local configs = require "nvim-treesitter.configs" -local parsers = require "nvim-treesitter.parsers" +local config = require('nvim-treesitter.config') local ts = vim.treesitter local function check_assertions(file) local buf = vim.fn.bufadd(file) vim.fn.bufload(file) - local lang = parsers.get_buf_lang(buf) + local ft = vim.bo[buf].filetype + local lang = vim.treesitter.language.get_lang(ft) or ft assert.same( 1, - vim.fn.executable "highlight-assertions", + vim.fn.executable('highlight-assertions'), '"highlight-assertions" not executable!' .. ' Get it via "cargo install --git https://github.com/theHamsta/highlight-assertions"' ) local assertions = vim.fn.json_decode( vim.fn.system( - "highlight-assertions -p '" .. configs.get_parser_install_dir() .. "/" .. lang .. ".so'" .. " -s '" .. file .. "'" + "highlight-assertions -p '" + .. config.get_install_dir('parser') + .. '/' + .. lang + .. ".so'" + .. " -s '" + .. file + .. "'" ) ) - local parser = parsers.get_parser(buf, lang) + local parser = ts.get_parser(buf, lang) local self = parser local top_level_root = parser:parse(true)[1]:root() @@ -27,7 +33,7 @@ local function check_assertions(file) local row = assertion.position.row local col = assertion.position.column - local neg_assert = assertion.expected_capture_name:match "^!" + local neg_assert = assertion.expected_capture_name:match('^!') assertion.expected_capture_name = neg_assert and assertion.expected_capture_name:sub(2) or assertion.expected_capture_name local found = false @@ -48,11 +54,11 @@ local function check_assertions(file) if neg_assert then assert.False( found, - "Error in at " + 'Error in at ' .. file - .. ":" + .. ':' .. (row + 1) - .. ":" + .. ':' .. (col + 1) .. ': expected "' .. assertion.expected_capture_name @@ -61,11 +67,11 @@ local function check_assertions(file) else assert.True( found, - "Error in at " + 'Error in at ' .. file - .. ":" + .. ':' .. (row + 1) - .. ":" + .. ':' .. (col + 1) .. ': expected "' .. assertion.expected_capture_name @@ -75,8 +81,8 @@ local function check_assertions(file) end end -describe("injections", function() - local files = vim.fn.split(vim.fn.glob "tests/query/injections/**/*.*") +describe('injections', function() + local files = vim.fn.split(vim.fn.glob('tests/query/injections/**/*.*')) for _, file in ipairs(files) do it(file, function() check_assertions(file) diff --git a/tests/unit/ts_utils_spec.lua b/tests/unit/ts_utils_spec.lua deleted file mode 100644 index 397fa7eaf..000000000 --- a/tests/unit/ts_utils_spec.lua +++ /dev/null @@ -1,114 +0,0 @@ -local tsutils = require "nvim-treesitter.ts_utils" - -describe("update_selection", function() - local function get_updated_selection(case) - vim.api.nvim_buf_set_lines(0, 0, -1, false, case.lines) - tsutils.update_selection(0, case.node, case.selection_mode) - vim.cmd "normal! y" - return vim.fn.getreg '"' - end - - it("charwise1", function() - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 0, 2, 1 }, - selection_mode = "v", - }, - "foo\n\nb" - ) - it("charwise2", function() end) - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 1, 2, 1 }, - selection_mode = "v", - }, - "oo\n\nb" - ) - it("charwise3", function() end) - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 2, 2, 1 }, - selection_mode = "v", - }, - "o\n\nb" - ) - it("charwise4", function() end) - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 3, 2, 1 }, - selection_mode = "v", - }, - "\n\nb" - ) - end) - it("linewise", function() - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 3, 2, 1 }, - selection_mode = "V", - }, - "foo\n\nbar\n" - ) - end) - it("blockwise", function() - assert.equal( - get_updated_selection { - lines = { "foo", "", "bar" }, - node = { 0, 3, 2, 1 }, - selection_mode = "<C-v>", - }, - "foo\n\nbar" - ) - end) -end) - -describe("swap_nodes", function() - local function swap(case) - vim.api.nvim_buf_set_lines(0, 0, -1, false, case.lines) - vim.opt.filetype = case.filetype - local a = vim.treesitter.get_node { - bufnr = 0, - pos = { case.a[1], case.a[2] }, - } - local b = vim.treesitter.get_node { - bufnr = 0, - pos = { case.b[1], case.b[2] }, - } - tsutils.swap_nodes(a, b, 0, true) - end - - it("works on adjacent nodes", function() - swap { - filetype = "python", - lines = { "print(1)" }, - a = { 0, 0 }, - b = { 0, 5 }, - } - - it("swaps text", function() end) - assert.same(vim.api.nvim_buf_get_lines(0, 0, -1, false), { "(1)print" }) - - it("moves the cursor", function() end) - assert.same(vim.api.nvim_win_get_cursor(0), { 1, 3 }) - end) - - it("works with multiline nodes", function() - swap { - filetype = "lua", - lines = { "x = { [[", "]], [[", ".....]]}" }, - a = { 0, 6 }, - b = { 1, 4 }, - } - - it("swaps text", function() end) - assert.same(vim.api.nvim_buf_get_lines(0, 0, -1, false), { "x = { [[", ".....]], [[", "]]}" }) - - it("moves the cursor", function() end) - assert.same(vim.api.nvim_win_get_cursor(0), { 2, 9 }) - end) -end) |
