tree-sitter-diff
tree-sitter-diff copied to clipboard
Parse error when encountering `--` at beginning of deleted line containing `++`
I was puzzled why the bit after a comment in a Lua file was not getting highlighted in red, turns out it is a parse ERROR according to :InspectTree:
Reproducer
diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua
index e7265c7..eadf16a 100644
--- a/modules/home/vim/plugin/settings/null-ls.lua
+++ b/modules/home/vim/plugin/settings/null-ls.lua
@@ -18,16 +18,6 @@ null_ls.register({
}),
})
--- C, C++
-null_ls.register({
- null_ls.builtins.formatting.clang_format.with({
- -- Only used if available, but prefer clangd formatting if available
- condition = function()
- return utils.is_executable("clang-format") and not utils.is_executable("clangd")
- end,
- }),
-})
-
-- Nix
null_ls.register({
null_ls.builtins.formatting.nixpkgs_fmt.with({
[...]
(deletion) ; '---'
(ERROR) ; '++'
(ERROR) ; 'C, C'
[...]
That looks to me like tree-sitter's error correction is being overzealous. I'm not sure there's anything we can do in this grammar to fix it but if you can find a way to make the grammar behave better in this scenario I would be interested in a PR!