Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid single line if statements #134

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

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