HiPhish / rainbow-delimiters.nvim

Rainbow delimiters for Neovim with Tree-sitter
https://gitlab.com/HiPhish/rainbow-delimiters.nvim
Apache License 2.0
533 stars 39 forks source link

[Bug]: Some comments cause neovim to slow down and freeze when present with this plugin #53

Open wrbright opened 11 months ago

wrbright commented 11 months ago

Neovim version

0.9.4

Language affected

Lua, vim

Query

No response

Strategy

No response

Description

Text When opening a file with less normal commenting, this plugin seems to slow the application to a crawl and eventually completely freeze Neovim.

Comments like the following effect the application.

" """"""""""""""""" "
" This is a comment "
" """"""""""""""""" "

----------
- This is another comment
----------
HiPhish commented 10 months ago

Do you have the comment grammar installed? That parser will create a separate node for each - or " and each word inside the comment. Please try without the comment grammar first if you have it installed.

wrbright commented 10 months ago

Thank you for you're response,

I can confirm that the issue is only present when the comment grammar is installed, and uninstalling it does fix the issue. Is this plugin incompatible with the comment grammar?

wrbright commented 10 months ago

I can also confirm that blacklisting "comment" does fix this issue, while allowing the parser to remain installed.

For anyone looking at this later on, this is the config within lua to achieve this:

vim.g.rainbow_delimiters = {
    blacklist = {
        "comment"
    }
}

Thank you, by the way, for maintaining this project. By my understanding at least three other projects were created by others which had ultimately been archived, I appreciate your effort in keeping this alive.

HiPhish commented 10 months ago

Can you please check the current master? There has been a major update and it might have fixed the problem as a side effect.

By my understanding at least three other projects were created by others which had ultimately been archived

To be honest, I can't blame them. All pre-Treesitter projects were doomed from the start, there is only so far you can get with regex hackery before the cracks start forming. p00f/nvim-ts-rainbow had potential, but the author was trying to do too much with as little code as possible. That's generally a good thing, but languages are too different that you could rule them all with one query, you get too many edge cases you have to wrestle with.

When he abandoned it I forked the project (HiPhish/nvim-ts-rainbow2) in March this year. My fork split queries and strategies out from the core. This means we have to write a completely new query for each language, but it also means fewer edge cases.

And then I forked that fork again in July of this year because of changes in nvim-treesitter. And just today I have merged a massive refactoring. It's beautiful, finally HTML tags can have proper highlighting. Highlighting delimiters is not hard in itself, but there are weird edge cases when it comes to nested languages.

Please don't misunderstand me, I'm not whining. I have wanted a plugin like this even back when I was using Vim before Neovim even existed, I just never imagined I would be the one maintaining it. I find the journey fascinating.