The files have the mli extension. The parser grammar uses the name
ocaml_interface, but since vim the underscore has a special meaning
ocamlinterface is used as the filetype.
* Ignore tags file in project root
* Make :TSInstall work with Nix
This commit adds logic to determine where to install parsers, meaning
the *.so files. Until now the package path of the nvim-treesitter plugin
was used. But when installed with Nix, the plugin lands in "/nix/store",
which is read-only.
With this commit $XDG_DATA_HOME/nvim/site/parser/*.go will be used as
the parser installation path. The directory will be created if it
doesn't exist.
* Add generate_join function
The generate_join function is used to create two other functions, one
to join path segments, the other to join strings with a space for error
messages.
This is more robust compared to the previous method where we walked
up the tree and matched on the directory name, which also required
that the repository was cloned in a directory named `nvim-treesitter`.
The range from ts nodes are a little different than
neovim's nodes. They start at 0 and the end is exclusive.
For example, a nvim range (1, 3, 2, 4) is the equivalent to the ts
range (0, 2, 1, 4).
Since we may hit parent nodes that have the same range as its child,
we skip those till we find one that actually changes the selection
(since this is the relevant part for the user).
Fixes https://github.com/nvim-treesitter/nvim-treesitter/issues/232
This prevents a really weird bug were the following function call (after
loading the activated modules) could activate `highlight_current_scope`
```lua
require "nvim-treesitter.configs".setup(
{
highlight = {
enable = false, -- false will disable the whole extension
disable = {"html", "lua"} -- list of language that will be disabled
},
refactor = {
highlight_current_scope = {
enable = false,
inverse_highlighting = true,
disable = {"python", "markdown"}
},
highlight_definitions = {
enable = true,
disable = {"markdown"}
},
},
ensure_installed = "all",
disable = {"markdown"}, -- list of language that will be disabled
}
)
```