Skip to content

Commit 26c7330

Browse files
authored
Merge pull request #513 from pangloss/develop
Develop -> Master
2 parents c04d099 + dbfa5f0 commit 26c7330

File tree

3 files changed

+30
-31
lines changed

3 files changed

+30
-31
lines changed

extras/flow.vim

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
syntax region jsFlowTypeStatement start=/type/ end=/=/ oneline skipwhite skipempty nextgroup=jsFlowTypeObject
22
syntax region jsFlowDeclareBlock start=/declare/ end=/[;\n]/ oneline contains=jsFlow,jsFlowDeclareKeyword,jsFlowStorageClass
33
syntax region jsFlow start=/:/ end=/\%(\%([),=;\n]\|{\%(.*}\)\@!\|\%({.*}\)\@<=\s*{\)\@=\|void\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock
4-
syntax region jsFlowReturn contained start=/:/ end=/\%(\S\s*\%({\)\@=\|\n\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock keepend
5-
syntax region jsFlowTypeObject contained start=/{/ end=/}/ skipwhite skipempty nextgroup=jsFunctionBlock extend
4+
syntax region jsFlowReturn contained start=/:/ end=/\%(\S\s*\%({\%(.*}\)\@!\)\@=\|\n\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock keepend
5+
syntax region jsFlowTypeObject contained start=/{/ end=/}/ contains=jsFlowTypeKey skipwhite skipempty nextgroup=jsFunctionBlock extend
6+
syntax match jsFlowTypeKey contained /\<[0-9a-zA-Z_$?]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsFlowTypeValue
7+
syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/:/ end=/[,}]/ contains=@jsFlowCluster
68
syntax region jsFlowObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ oneline contains=@jsFlowCluster
79
syntax region jsFlowArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ oneline contains=@jsFlowCluster
10+
syntax region jsFlowArrow contained matchgroup=jsFlowNoise start=/(/ end=/)\s*=>/ oneline contains=@jsFlowCluster
811
syntax keyword jsFlowDeclareKeyword contained declare
912
syntax keyword jsFlowType contained boolean number string null void any mixed JSON array function object Array
1013
syntax match jsFlowClassProperty contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlow
1114
syntax match jsFlowNoise contained /[:;,<>]/
12-
syntax cluster jsFlowCluster contains=jsFlowType,jsFlowArray,jsFlowObject,jsFlowNoise
15+
syntax cluster jsFlowCluster contains=jsFlowType,jsFlowArray,jsFlowObject,jsFlowNoise,jsFlowArrow
1316
syntax keyword jsFlowStorageClass contained const var let
1417
syntax region jsFlowParenRegion contained start=/:\s*(/ end=/)\%(\s*:\)\@=/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsObjectValue
1518
syntax region jsFlowClass contained matchgroup=jsFlowNoise start=/</ end=/>/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
@@ -28,6 +31,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
2831
HiLink jsFlowObject PreProc
2932
HiLink jsFlowParenRegion PreProc
3033
HiLink jsFlowClass PreProc
34+
HiLink jsFlowTypeObject PreProc
35+
HiLink jsFlowTypeKey PreProc
36+
HiLink jsFlowTypeValue PreProc
3137
HiLink jsFlowClassProperty jsClassProperty
3238
HiLink jsFlowType Type
3339
HiLink jsFlowDeclareKeyword Type

indent/javascript.vim

+10-18
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ endif
4343

4444
let s:line_pre = '^\s*\%(\/\*.*\*\/\s*\)*'
4545
let s:js_keywords = s:line_pre . '\%(break\|import\|export\|catch\|const\|continue\|debugger\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|let\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)\>\C'
46-
let s:expr_case = s:line_pre . '\%(case\s\+[^\:]*\|default\)\s*:\s*\C'
46+
let s:expr_case = s:line_pre . '\%(\%(case\>.*\)\|default\)\s*:\C'
4747
" Regex of syntax group names that are or delimit string or are comments.
4848
let s:syng_strcom = '\%(string\|regex\|special\|doc\|comment\|template\)\c'
4949

@@ -77,7 +77,7 @@ function s:Onescope(lnum)
7777
end
7878
let mypos = col('.')
7979
call cursor(a:lnum, 1)
80-
if search('\<\%(while\|for\|if\)\>\s*(\C', 'ce', a:lnum) > 0 &&
80+
if search('.*\zs\<\%(while\|for\|if\)\>\s*(\C', 'ce', a:lnum) > 0 &&
8181
\ s:lookForParens('(', ')', 'W', a:lnum) > 0 &&
8282
\ col('.') == strlen(s:RemoveTrailingComments(getline(a:lnum)))
8383
call cursor(a:lnum, mypos)
@@ -337,7 +337,7 @@ function GetJavascriptIndent()
337337
endif
338338

339339
" single opening bracket will assume you want a c style of indenting
340-
if s:Match(v:lnum, s:line_pre . '{' . s:line_term) && !s:Match(lnum,s:block_regex) &&
340+
if line =~ s:line_pre . '{' && !s:Match(lnum,s:block_regex) &&
341341
\ !s:Match(lnum,s:comma_last)
342342
return cindent(v:lnum)
343343
endif
@@ -353,7 +353,7 @@ function GetJavascriptIndent()
353353

354354
" If we got a closing bracket on an empty line, find its match and indent
355355
" according to it.
356-
let col = s:Match(v:lnum, s:line_pre . '[]})]')
356+
let col = line =~ s:line_pre . '[]})]'
357357
if col > 0
358358
let parlnum = v:lnum
359359
while col
@@ -395,13 +395,15 @@ function GetJavascriptIndent()
395395
end
396396

397397
" If previous line starts with an operator...
398-
elseif (s:Match(lnum, s:operator_first) && !s:Match(lnum,s:continuation_regex))||getline(lnum) =~ ');\=' . s:line_term
398+
elseif (s:Match(lnum, s:operator_first) && !s:Match(lnum,s:continuation_regex)) ||
399+
\ getline(lnum) =~ '[]})];\=' . s:line_term
399400
let counts = s:LineHasOpeningBrackets(lnum)
400-
if counts[0] == '2' && !s:Match(lnum, s:operator_first)
401+
if counts =~ '2' && !s:Match(lnum, s:operator_first)
401402
call cursor(lnum, 1)
402403
" Search for the opening tag
403-
let mnum = s:lookForParens('(', ')', 'nbW', 0)
404-
if mnum > 0 && s:Match(mnum, s:operator_first)
404+
let mnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
405+
if mnum > 0 && (s:Match(mnum, s:operator_first) ||
406+
\ (s:Onescope(s:PrevNonBlankNonString(mnum - 1))) && !s:Match(mnum, s:line_pre . '{'))
405407
return indent(mnum) - s:sw()
406408
end
407409
elseif s:Match(lnum, s:operator_first)
@@ -434,16 +436,6 @@ function GetJavascriptIndent()
434436
return 0
435437
endif
436438

437-
" foo('foo',
438-
" bar('bar', function() {
439-
" hi();
440-
" })
441-
" );
442-
443-
" function (a, b, c, d,
444-
" e, f, g) {
445-
" console.log('inner');
446-
" }
447439
" If the previous line ended with a block opening, add a level of indent.
448440
if s:Match(lnum, s:block_regex)
449441
return s:InMultiVarStatement(lnum, 0, 0) || s:LineHasOpeningBrackets(lnum) !~ '2' ?

syntax/javascript.vim

+11-10
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ syntax keyword jsModuleKeywords contained import
4040
syntax keyword jsModuleKeywords contained export skipwhite skipempty nextgroup=jsExportBlock,jsModuleDefault
4141
syntax keyword jsModuleOperators contained from
4242
syntax keyword jsModuleOperators contained as
43-
syntax region jsModuleGroup contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise
43+
syntax region jsModuleGroup contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment
4444
syntax match jsModuleAsterisk contained /*/
4545
syntax keyword jsModuleDefault contained default skipwhite kipempty nextgroup=@jsExpression
4646
syntax region jsImportContainer start=/\<import\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk
4747
syntax region jsExportContainer start=/\<export\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsStorageClass,jsModuleDefault,@jsExpression
48-
syntax region jsExportBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise
48+
syntax region jsExportBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment
4949

5050
" Strings, Templates, Numbers
5151
syntax region jsString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend
@@ -81,7 +81,7 @@ syntax match jsObjectSeparator contained /,/
8181
syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contains=@jsExpression extend
8282
syntax match jsObjectFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs
8383
syntax match jsFunctionKey contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/
84-
syntax match jsObjectGetSet contained /\%(get\|set\|static\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName
84+
syntax match jsObjectMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName
8585
syntax region jsObjectStringKey contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
8686
syntax region jsObjectStringKey contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
8787

@@ -105,6 +105,7 @@ syntax keyword jsFinally contained finally skipwhite skipempty nextgro
105105
syntax keyword jsCatch contained catch skipwhite skipempty nextgroup=jsParenCatch
106106
syntax keyword jsException throw
107107
syntax keyword jsAsyncKeyword async await
108+
syntax match jsSwitchColon contained /:/ skipwhite skipempty nextgroup=jsBlock
108109

109110
" Keywords
110111
syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat
@@ -135,14 +136,14 @@ syntax region jsParenRepeat contained matchgroup=jsParens s
135136
syntax region jsParenSwitch contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold
136137
syntax region jsParenCatch contained matchgroup=jsParens start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold
137138
syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlow skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend fold
138-
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise,jsFlowClassProperty extend fold
139+
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise,jsFlowClassProperty extend fold
139140
syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold
140141
syntax region jsBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll extend fold
141142
syntax region jsTryCatchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold
142-
syntax region jsSwitchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsLabel extend fold
143+
syntax region jsSwitchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsLabel,jsSwitchColon extend fold
143144
syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold
144145
syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold
145-
syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectGetSet,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold
146+
syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold
146147
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|[\}]\@=\)/ contains=@jsExpression
147148
syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression
148149
syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/
@@ -164,7 +165,7 @@ exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFunc
164165

165166
syntax keyword jsClassKeywords contained extends class
166167
syntax match jsClassNoise contained /\./
167-
syntax match jsClassMethodDefinitions contained /\%(get\|set\|static\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty
168+
syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty
168169
syntax match jsClassDefinition /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsClassBlock,jsFlowClass
169170
syntax match jsDecorator contained "@" nextgroup=jsDecoratorFunction
170171
syntax match jsDecoratorFunction contained "[a-zA-Z_][a-zA-Z0-9_.]*"
@@ -296,6 +297,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
296297
HiLink jsSpreadOperator Operator
297298
HiLink jsRestOperator Operator
298299
HiLink jsRestExpression jsFuncArgs
300+
HiLink jsSwitchColon Noise
301+
HiLink jsClassMethodType Type
302+
HiLink jsObjectMethodType Type
299303

300304
HiLink jsDestructuringBraces Noise
301305
HiLink jsDestructuringProperty jsFuncArgs
@@ -313,9 +317,6 @@ if version >= 508 || !exists("did_javascript_syn_inits")
313317

314318
HiLink jsCssStyles Label
315319

316-
HiLink jsClassMethodDefinitions Type
317-
HiLink jsObjectGetSet Type
318-
319320
delcommand HiLink
320321
endif
321322

0 commit comments

Comments
 (0)