the-mikedavis / tree-sitter-diff

A tree-sitter grammar for `diff` output
https://the-mikedavis.github.io/tree-sitter-diff/
MIT License
37 stars 11 forks source link

Parse error when encountering `--` at beginning of deleted line containing `++` #13

Open ambroisie opened 5 months ago

ambroisie commented 5 months ago

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 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' [...] ```

the-mikedavis commented 5 months ago

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!