Open DarioDarko opened 1 month ago
I don't see this. Can you please verify using vim --clean
vim --clean
Hm, did you use bash
initially? I only see this when using bash
in the shebang line.
This seems to happen when the syntax script determines a bash script, because bash "knows" select name [ in word ] ; do list ; done
, which the syntax script tries to match here. And since there is a missing do
here, it matches the done with an error. You can workaround this by setting :let b:is_posix=1
.
yes normally i use bash, but for me this happens with sh as well
btw this does not only affect select. same with while, until, for, etc
btw this does not only affect select. same with while, until, for, etc
Yeah, for the same reason, you are using reserved words which the syntax script tries to match against the expected syntax.
:let b:is_posix=1
So does this help?
Yeah, for the same reason, you are using reserved words which the syntax script tries to match against the expected syntax.
yes, i understand the issue. wouldt it be pretty simple to fix that in the syntax script?
So does this help?
unfortunately no
You need to reload the file after :let b:is_posix=1
using :e!
, otherwise setting the buffer local var happens too late.
Steps to reproduce
set filetype to sh or bash use 'select' as a command argument without surrounding quotes watch the syntax highlighting break
example:
i randomly discovered this because copyq has a select argument, that i use in a script
Expected behaviour
'select' should not break the syntax highlighting if its used as an argument for a command. the syntax recognition logic should only trigger if its at the very beginning of the line, after && semicolon etc
Version of Vim
9.1.0408-1
Environment
EndeavourOS Alacritty
Logs and stack traces
No response