0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

runtime(sh): Update syntax, highlight escaped chars in test expressions

Highlight escape characters in unquoted test expression operands.

E.g., [[ foo == \[bar\] ]]

fixes #17221

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Doug Kearns
2025-04-30 20:04:28 +02:00
committed by Christian Brabandt
parent ff3d4b2d49
commit f57c065e75
3 changed files with 30 additions and 1 deletions

View File

@@ -10,6 +10,7 @@
" 2025 Mar 21 update shell capability detection (#16939)
" 2025 Apr 03 command substitution opening paren at EOL (#17026)
" 2025 Apr 10 improve shell detection (#17084)
" 2025 Apr 29 match escaped chars in test operands (#17221)
" Version: 208
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
" For options and settings, please use: :help ft-sh-syntax
@@ -306,7 +307,7 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")"
"=======
syn region shExpr matchgroup=shRange start="\[\s\@=" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial
syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' end="\ze['"]" contained contains=shBracketExpr,shDerefSimple,shDeref
syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' end="\ze['"]" contained contains=shBracketExpr,shDerefSimple,shDeref,shEscape
syn match shAstQuote contained '\*\ze"' nextgroup=shString
syn match shTestOpr contained '[^-+/%]\zs=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
syn match shTestOpr contained "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"

View File

@@ -0,0 +1,20 @@
>#+0#0000e05#ffffff0|!|/|b|i|n|/|b|a|s|h| +0#0000000&@63
|#+0#0000e05&| |I|s@1|u|e| |#|1|7|2@1|1| |(|s|h| |s|y|n|t|a|x|:| |e|s|c|a|p|e|d| |s|q|u|a|r|e| |b|r|a|c|k|e|t|s| |d|o|n|'|t| |w|o|r|k| |i|n| |[@1| |]@1|)| +0#0000000&@3
@75
|[+0#e000e06&@1| +0#0000000&|f+0#e000002&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|[+0#e000e06&|b+0#0000000&|a|r|]+0#e000e06&| +0#0000000&|]+0#e000e06&@1| +0#0000000&@56
|[+0#e000e06&@1| +0#0000000&|f+0#e000002&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|\+0#e000e06&|[|b+0#e000002&|a|r|\+0#e000e06&|]| +0#0000000&|]+0#e000e06&@1| +0#0000000&@54
@75
|e+0#af5f00255&|c|h|o| +0#e000002&|[+0#e000e06&|f+0#0000000&|o@1|]+0#e000e06&| +0#0000000&@64
|e+0#af5f00255&|c|h|o| +0#e000002&|\+0#e000e06&|[|f+0#e000002&|o@1|\+0#e000e06&|]| +0#0000000&@62
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|i+0#0000000&|s|_|b|a|s|h|:| |1|,| @45|1|,|1| @10|A|l@1|

View File

@@ -0,0 +1,8 @@
#!/bin/bash
# Issue #17221 (sh syntax: escaped square brackets don't work in [[ ]])
[[ foo == [bar] ]]
[[ foo == \[bar\] ]]
echo [foo]
echo \[foo\]