diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim index c89fcedce6..c910a668a2 100644 --- a/runtime/syntax/javascript.vim +++ b/runtime/syntax/javascript.vim @@ -1,18 +1,12 @@ " Vim syntax file -" Language: JavaScript -" Maintainer: Claudio Fleiner -" Updaters: Scott Shattuck (ss) -" URL: http://www.fleiner.com/vim/syntax/javascript.vim -" Changes: (ss) added keywords, reserved words, and other identifiers -" (ss) repaired several quoting and grouping glitches -" (ss) fixed regex parsing issue with multiple qualifiers [gi] -" (ss) additional factoring of keywords, globals, and members -" Last Change: 2022 Jun 09 -" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) -" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder) -" 2024 Aug 14: fix a few stylistic issues (#15480) -" 2025 Aug 07: as is a reserved keyword (#17912) -" 2025 Sep 24: using is a reserved keyword (Devin Weaver) +" Language: JavaScript +" Maintainer: This runtime file is looking for a maintainer. +" Previous Maintainer: Claudio Fleiner +" Contributors: Scott Shattuck +" Kevin Locke +" LongJohnCoder +" Devin Weaver +" Last Change: 2026 Apr 26 " tuning parameters: " unlet javaScript_fold @@ -52,7 +46,14 @@ syn match javaScriptNumber "\<\d\+\(_\d\+\)*[eE][+-]\?\d\+\>" syn match javaScriptNumber "\<[1-9]\d*\(_\d\+\)*\(\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\)\?\>" syn match javaScriptNumber "\<\(\d\+\(_\d\+\)*\)\?\.\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\>" syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\>" -syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline +syn region javaScriptRegexpString + \ start=+\%([,(=+]\s*\)\@8<=/[^/*]+ + \ skip=+\\\\\|\\/+ + \ end=+/[dgimsuvy]\{0,7\}\ze\s*$+ + \ end=+/[dgimsuvy]\{0,7\}\ze\s*[+;.,)\]}]+ + \ end=+/[dgimsuvy]\{0,7\}\ze\s\+\/+ + \ contains=@htmlPreproc,javaScriptComment + \ oneline syn keyword javaScriptConditional if else switch syn keyword javaScriptRepeat while for do in of diff --git a/runtime/syntax/testdir/dumps/javascript_00.dump b/runtime/syntax/testdir/dumps/javascript_00.dump new file mode 100644 index 0000000000..eca4c4b605 --- /dev/null +++ b/runtime/syntax/testdir/dumps/javascript_00.dump @@ -0,0 +1,20 @@ +>/+0#0000e05#ffffff0@1| |I|s@1|u|e| |#|2|0@1|6|9| |(|J|a|v|a|S|c|r|i|p|t| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t|i|n|g| |n|o|t| |w|o|r|k|i|n|g| |p|r|o|p|e|r|l|y| |w|i|t|h| |r +|e|g|e|x| +0#0000000&@70 +|/+0#0000e05&@1| @2|p|a|t@1|e|r|n|s| |c|o|n|t|a|i|n|i|n|g| |q|u|o|t|a|t|i|o|n| |m|a|r|k|s|)| +0#0000000&@33 +@75 +|c+0#af5f00255&|o|n|s|t| +0#0000000&|c|o|n|t|a|i|n|s|S|y|m|b|o|l|s| |=| |p|a|s@1|w|o|r|d|.|m|a|t|c|h|(|/+0#e000002&|[|!|"|.@2|/|g|)+0#0000000&|;| @24 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/runtime/syntax/testdir/input/javascript.js b/runtime/syntax/testdir/input/javascript.js new file mode 100644 index 0000000000..b0b76eca28 --- /dev/null +++ b/runtime/syntax/testdir/input/javascript.js @@ -0,0 +1,5 @@ +// Issue #20069 (JavaScript syntax highlighting not working properly with regex +// patterns containing quotation marks) + +const containsSymbols = password.match(/[!".../g); +