Skip to content

Commit b524521

Browse files
committed
Merge pull request pangloss#240 from pangloss/develop
Release 0.10
2 parents 10b0c75 + f1efe18 commit b524521

File tree

3 files changed

+49
-33
lines changed

3 files changed

+49
-33
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ variables:
7474
let g:javascript_conceal_undefined = "¿"
7575
let g:javascript_conceal_NaN = "ℕ"
7676
let g:javascript_conceal_prototype = "¶"
77+
let g:javascript_conceal_static = "•"
78+
let g:javascript_conceal_super = "Ω"
7779

7880
## Contributing
7981

indent/javascript.vim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_st
4949
let s:line_term = '\s*\%(\%(\/\/\).*\)\=$'
5050

5151
" Regex that defines continuation lines, not including (, {, or [.
52-
let s:continuation_regex = '\%([\\*+/.:]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)' . s:line_term
52+
let s:continuation_regex = '\%([\\*+/.:]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\|[^=]=[^=].*,\)' . s:line_term
5353

5454
" Regex that defines continuation lines.
5555
" TODO: this needs to deal with if ...: and so on
56-
let s:msl_regex = '\%([\\*+/.:([]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)' . s:line_term
56+
let s:msl_regex = s:continuation_regex
5757

5858
let s:one_line_scope_regex = '\<\%(if\|else\|for\|while\)\>[^{;]*' . s:line_term
5959

syntax/javascript.vim

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@ syntax keyword jsOperator delete instanceof typeof void new in
3535
syntax match jsOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/
3636
syntax keyword jsBooleanTrue true
3737
syntax keyword jsBooleanFalse false
38-
syntax keyword jsCommonJS require module exports
38+
syntax keyword jsModules import export contained
39+
syntax keyword jsModuleWords default from as contained
40+
syntax keyword jsOf of contained
41+
42+
syntax region jsImportContainer start="^\s\?import \?" end="$" contains=jsModules,jsModuleWords,jsComment,jsStringS,jsStringD,jsTemplateString
43+
44+
syntax region jsExportContainer start="^\s\?export \?" end="$" contains=jsModules,jsModuleWords,jsComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsClass,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsAssignmentExpr
3945

4046
"" JavaScript comments
4147
syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -53,7 +59,7 @@ if !exists("javascript_ignore_javaScriptdoc")
5359
"syntax include @javaHtml <sfile>:p:h/html.vim
5460
"unlet b:current_syntax
5561

56-
syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
62+
syntax region jsBlockComment matchgroup=jsComment start="/\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
5763

5864
" tags containing a param
5965
syntax match jsDocTags contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite
@@ -79,26 +85,27 @@ endif "" JSDoc end
7985
syntax case match
8086

8187
"" Syntax in the JavaScript code
82-
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
83-
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained
84-
syntax match jsTemplateVar "\${.\{-}}" contained
85-
syntax region jsStringD start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@htmlPreproc,@Spell
86-
syntax region jsStringS start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@htmlPreproc,@Spell
87-
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`\|$+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
88-
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
88+
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
89+
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained
90+
syntax match jsTemplateVar "\${.\{-}}" contained
91+
syntax region jsStringD start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@htmlPreproc,@Spell
92+
syntax region jsStringS start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@htmlPreproc,@Spell
93+
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
94+
syntax region jsTaggedTemplate start=/\k\+\(\(\n\|\s\)\+\)\?`/ end=+`\|$+ contains=jsTemplateString
95+
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
8996
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
90-
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
97+
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
9198
syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained
92-
syntax match jsRegexpOr "\v\<@!\|" contained
93-
syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained
94-
syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
95-
syntax region jsRegexpGroup start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend
96-
syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
97-
syntax match jsNumber /\<-\=\d\+\(L\|[eE][+-]\=\d\+\)\=\>\|\<0[xX]\x\+\>/
98-
syntax keyword jsNumber Infinity
99-
syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
100-
syntax match jsObjectKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey contained
101-
syntax match jsFunctionKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ contained
99+
syntax match jsRegexpOr "\v\<@!\|" contained
100+
syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained
101+
syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
102+
syntax region jsRegexpGroup start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend
103+
syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
104+
syntax match jsNumber /\<-\=\d\+\(L\|[eE][+-]\=\d\+\)\=\>\|\<0[xX]\x\+\>/
105+
syntax keyword jsNumber Infinity
106+
syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
107+
syntax match jsObjectKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey contained
108+
syntax match jsFunctionKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ contained
102109

103110
syntax match jsAssignmentExpr /\v%([a-zA-Z_$]\k*\.)*[a-zA-Z_$]\k*\s*\=/ contains=jsFuncAssignExpr,jsAssignExpIdent,jsPrototype,jsOperator,jsThis,jsNoise
104111
syntax match jsAssignExpIdent /\v[a-zA-Z_$]\k*\ze%(\s*\=)/ contained
@@ -112,23 +119,26 @@ exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefi
112119
exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '')
113120
exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '')
114121
exe 'syntax keyword jsThis this '.(exists('g:javascript_conceal_this') ? 'conceal cchar='.g:javascript_conceal_this : '')
122+
exe 'syntax keyword jsStatic static '.(exists('g:javascript_conceal_static') ? 'conceal cchar='.g:javascript_conceal_static : '')
123+
exe 'syntax keyword jsSuper super '.(exists('g:javascript_conceal_super') ? 'conceal cchar='.g:javascript_conceal_super : '')
115124

116125
"" Statement Keywords
117126
syntax keyword jsStatement break continue with
118127
syntax keyword jsConditional if else switch
119128
syntax keyword jsRepeat do while for
120129
syntax keyword jsLabel case default
121-
syntax keyword jsKeyword yield import export default extends class
130+
syntax keyword jsKeyword yield
131+
syntax keyword jsClass extends class
122132
syntax keyword jsException try catch throw finally
123133

124-
syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window
134+
syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window
125135
syntax match jsGlobalObjects /\%(Intl\.\)\@<=\(Collator\|DateTimeFormat\|NumberFormat\)/
126136

127137
syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
128138

129139
syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval
130140

131-
syntax keyword jsFutureKeys abstract enum int short boolean interface static byte long super char final native synchronized float package throws goto private transient debugger implements protected volatile double public
141+
syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient debugger implements protected volatile double public
132142

133143
"" DOM/HTML/CSS specified things
134144

@@ -178,12 +188,11 @@ endif "DOM/HTML/CSS
178188

179189
"" end DOM/HTML/CSS specified things
180190

181-
182191
"" Code blocks
183-
syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr
192+
syntax cluster jsExpression contains=jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr,jsImportContainer,jsExportContainer,jsClass
184193
syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
185194
syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
186-
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
195+
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
187196
syntax region jsBlock matchgroup=jsBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold
188197
syntax region jsFuncBlock matchgroup=jsFuncBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
189198
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression,jsTernaryIf
@@ -204,7 +213,7 @@ exe 'syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsF
204213

205214
syntax match jsGenerator contained '\*' nextgroup=jsFuncName skipwhite
206215
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=jsFuncArgs skipwhite
207-
syntax region jsFuncArgs contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest nextgroup=jsFuncBlock keepend skipwhite skipempty
216+
syntax region jsFuncArgs contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest,jsAssignmentExpr nextgroup=jsFuncBlock keepend skipwhite skipempty
208217
syntax match jsFuncArgCommas contained ','
209218
syntax match jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/
210219
syntax keyword jsArgsObj arguments contained containedin=jsFuncBlock
@@ -225,7 +234,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
225234
HiLink jsComment Comment
226235
HiLink jsLineComment Comment
227236
HiLink jsEnvComment PreProc
228-
HiLink jsDocComment Comment
237+
HiLink jsBlockComment Comment
229238
HiLink jsCommentTodo Todo
230239
HiLink jsCvsTag Function
231240
HiLink jsDocTags Special
@@ -236,6 +245,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
236245
HiLink jsStringS String
237246
HiLink jsStringD String
238247
HiLink jsTemplateString String
248+
HiLink jsTaggedTemplate StorageClass
239249
HiLink jsTernaryIfOperator Conditional
240250
HiLink jsRegexpString String
241251
HiLink jsRegexpBoundary SpecialChar
@@ -266,8 +276,12 @@ if version >= 508 || !exists("did_javascript_syn_inits")
266276
HiLink jsParensErrB Error
267277
HiLink jsParensErrC Error
268278
HiLink jsOperator Operator
279+
HiLink jsOf Operator
269280
HiLink jsStorageClass StorageClass
281+
HiLink jsClass Structure
270282
HiLink jsThis Special
283+
HiLink jsStatic Special
284+
HiLink jsSuper Special
271285
HiLink jsNan Number
272286
HiLink jsNull Type
273287
HiLink jsUndefined Type
@@ -287,7 +301,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
287301
HiLink jsExceptions Special
288302
HiLink jsFutureKeys Special
289303
HiLink jsBuiltins Special
290-
HiLink jsCommonJS Include
304+
HiLink jsModules Include
305+
HiLink jsModuleWords Include
291306

292307
HiLink jsDomErrNo Constant
293308
HiLink jsDomNodeConsts Constant
@@ -304,10 +319,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
304319
endif
305320

306321
" Define the htmlJavaScript for HTML syntax html.vim
307-
"syntax clear htmlJavaScript
308-
"syntax clear jsExpression
309322
syntax cluster htmlJavaScript contains=@jsAll,jsBracket,jsParen,jsBlock
310323
syntax cluster javaScriptExpression contains=@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc
324+
311325
" Vim's default html.vim highlights all javascript as 'Special'
312326
hi! def link javaScript NONE
313327

0 commit comments

Comments
 (0)