Skip to content

Commit 4a6376a

Browse files
authored
Merge pull request #532 from pangloss/fix-oddly-placed-comments
Adding support for oddly placed comments
2 parents 6acba74 + ac813c0 commit 4a6376a

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

syntax/javascript.vim

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ exe 'syntax keyword jsSuper super contained '.(exists('g:javascript_conceal
9595

9696
" Statement Keywords
9797
syntax keyword jsStatement contained break continue with yield debugger
98-
syntax keyword jsConditional if else skipwhite skipempty nextgroup=jsParenIfElse,jsBlock
98+
syntax keyword jsConditional if skipwhite skipempty nextgroup=jsParenIfElse
99+
syntax keyword jsConditional else skipwhite skipempty nextgroup=jsCommentMisc,jsBlock
99100
syntax keyword jsConditional switch skipwhite skipempty nextgroup=jsParenSwitch
100101
syntax keyword jsRepeat while for skipwhite skipempty nextgroup=jsParenRepeat
101102
syntax keyword jsDo do skipwhite skipempty nextgroup=jsBlock
@@ -131,11 +132,11 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus
131132
"" Code blocks
132133
syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold
133134
syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold
134-
syntax region jsParenIfElse contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsBlock extend fold
135-
syntax region jsParenRepeat contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsBlock extend fold
135+
syntax region jsParenIfElse contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold
136+
syntax region jsParenRepeat contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold
136137
syntax region jsParenSwitch contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold
137138
syntax region jsParenCatch contained matchgroup=jsParens start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold
138-
syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlow skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend fold
139+
syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlow skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold
139140
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise,jsFlowClassProperty extend fold
140141
syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold
141142
syntax region jsBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll extend fold
@@ -166,7 +167,7 @@ exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFunc
166167
syntax keyword jsClassKeywords contained extends class
167168
syntax match jsClassNoise contained /\./
168169
syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty
169-
syntax match jsClassDefinition /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsClassBlock,jsFlowClass
170+
syntax match jsClassDefinition /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClass
170171
syntax match jsDecorator contained "@" nextgroup=jsDecoratorFunction
171172
syntax match jsDecoratorFunction contained "[a-zA-Z_][a-zA-Z0-9_.]*"
172173
syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue
@@ -191,6 +192,16 @@ syntax region jsComment start=/\/\// end=/$/ contains=jsCommentTodo,@Spe
191192
syntax region jsComment start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell fold extend keepend
192193
syntax region jsEnvComment start=/\%^#!/ end=/$/ display
193194

195+
" Specialized Comments - These are special comment regexes that are used in
196+
" odd places that maintain the proper nextgroup functionality. It sucks we
197+
" can't make jsComment a skippable type of group for nextgroup
198+
syntax region jsCommentFunction contained start=/\/\// end=/$/ contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend keepend
199+
syntax region jsCommentFunction contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn fold extend keepend
200+
syntax region jsCommentClass contained start=/\/\// end=/$/ contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClass extend keepend
201+
syntax region jsCommentClass contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClass fold extend keepend
202+
syntax region jsCommentMisc contained start=/\/\// end=/$/ contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend
203+
syntax region jsCommentMisc contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock fold extend keepend
204+
194205
if exists("javascript_plugin_jsdoc")
195206
runtime extras/jsdoc.vim
196207
" NGDoc requires JSDoc
@@ -308,6 +319,10 @@ if version >= 508 || !exists("did_javascript_syn_inits")
308319
HiLink jsDestructuringAssignment jsObjectKey
309320
HiLink jsDestructuringNoise Noise
310321

322+
HiLink jsCommentFunction jsComment
323+
HiLink jsCommentClass jsComment
324+
HiLink jsCommentMisc jsComment
325+
311326
HiLink jsDomErrNo Constant
312327
HiLink jsDomNodeConsts Constant
313328
HiLink jsDomElemAttrs Label

0 commit comments

Comments
 (0)