]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(javascript): Fix regex highlighting after `(`
authorDoug Kearns <dougkearns@gmail.com>
Sun, 26 Apr 2026 14:52:21 +0000 (14:52 +0000)
committerChristian Brabandt <cb@256bit.org>
Sun, 26 Apr 2026 14:52:21 +0000 (14:52 +0000)
- Fix regex highlighting after opening parens, javascriptParens was
  matching later.  Fixes issue #20069.
- Add missing regex flags.
- Mark the file as unmaintained.  Thanks Claudio for all your work.

closes: #20076

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/syntax/javascript.vim
runtime/syntax/testdir/dumps/javascript_00.dump [new file with mode: 0644]
runtime/syntax/testdir/input/javascript.js [new file with mode: 0644]

index c89fcedce62d5b754883ac5d02844e000c7df4d5..c910a668a2650d637572be638876f56c5143cb91 100644 (file)
@@ -1,18 +1,12 @@
 " Vim syntax file
-" Language:    JavaScript
-" Maintainer:  Claudio Fleiner <claudio@fleiner.com>
-" Updaters:    Scott Shattuck (ss) <ss@technicalpursuit.com>
-" 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 <claudio@fleiner.com>
+" Contributors:                Scott Shattuck <ss@technicalpursuit.com>
+"                      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 (file)
index 0000000..eca4c4b
--- /dev/null
@@ -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 (file)
index 0000000..b0b76ec
--- /dev/null
@@ -0,0 +1,5 @@
+// Issue #20069 (JavaScript syntax highlighting not working properly with regex
+//   patterns containing quotation marks)
+
+const containsSymbols = password.match(/[!".../g);
+