feat: specify abi version for generate on newer ts cli

Check tree-sitter CLI version and if > 0.20.3 and generating a parser
from grammar, use `--abi=vim.treesitter.language_version`.

Besides being able to opt-in to newer ABI benefits, this is a necessary
workaround for an upstream bug with 0.20.3, where `parser.h` is not
generated if the (optional) `--abi` flag is omitted.
This commit is contained in:
Christian Clason 2022-01-22 11:02:55 +01:00 committed by Christian Clason
parent 020905ff26
commit bb319daf5f
3 changed files with 22 additions and 6 deletions

View file

@ -193,4 +193,13 @@ function M.to_func(a)
return type(a) == "function" and a or M.constant(a)
end
function M.ts_cli_version()
if fn.executable "tree-sitter" == 1 then
local handle = io.popen "tree-sitter -V"
local result = handle:read "*a"
handle:close()
return vim.split(result, "\n")[1]:match "[^tree%psitter ].*"
end
end
return M