rainbow icon indicating copy to clipboard operation
rainbow copied to clipboard

Avoid single line if statements

Open aelkazdadi opened this issue 6 years ago • 3 comments

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.

aelkazdadi avatar Nov 26 '19 09:11 aelkazdadi

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

bmckeough avatar Sep 22 '20 16:09 bmckeough

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)

91khr avatar Dec 04 '21 05:12 91khr

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

luochen1990 avatar Dec 07 '21 06:12 luochen1990