Skip to content

Conversation

@aelkazdadi
Copy link

There's a bug with vim (neovim?) where inline if cond | return | endif style commands can result in errors such as this one.

:%s/
Error detected while processing ~/.local/share/nvim/plugged/rainbow/autoload/rainbow.vim:
line  129:
E171: Missing :endif
Error detected while processing function rainbow_main#load:
line    3:
E117: Unknown function: rainbow#syn
Error detected while processing ~/.local/share/nvim/plugged/rainbow/autoload/rainbow.vim:
line  129:
E171: Missing :endif
Error detected while processing function rainbow_main#load:
line    4:
E117: Unknown function: rainbow#hi
Press ENTER or type command to continue

This can be reproduced by opening neovim and pressing :%s/<C-f>.

Replacing the inline if statements with multiple line ones fixes the issue.

@bmckeough
Copy link

Thanks, this addressed an issue I had trying to use the plugin in neovim. Changing to your branch with this change fixed the issue.

@91khr
Copy link
Contributor

91khr commented Dec 4, 2021

Maybe it's better to use get instead of a check? i.e.:

diff --git a/autoload/rainbow.vim b/autoload/rainbow.vim
index 10551c5..8f870e0 100644
--- a/autoload/rainbow.vim
+++ b/autoload/rainbow.vim
@@ -79,7 +79,9 @@ fun rainbow#syn(config)
 	exe 'syn cluster '.prefix.'Regions contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Regions", v:val)'), ',')
 	exe 'syn cluster '.prefix.'Parentheses contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Parentheses", v:val)'), ',')
 	exe 'syn cluster '.prefix.'Operators contains='.join(map(range(cycle), '"@".s:synGroupID(prefix, "Operators", v:val)'), ',')
-	if has_key(conf, 'after') | for cmd in conf.after | exe cmd | endfor | endif
+	for cmd in get(conf, 'after', [])
+		exe cmd
+	endfor
 endfun
 
 fun rainbow#syn_clear(config)

@luochen1990
Copy link
Owner

I want to merge this, but there is mixed indent in this PR... Maybe this indent detect plugin will help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants