Skip to content

Commit 7ea00af

Browse files
committed
Merge pull request pangloss#233 from pangloss/es6-modules-and-class
Adds better es6 support
2 parents ca779b4 + 6d167f1 commit 7ea00af

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

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

syntax/javascript.vim

Lines changed: 25 additions & 10 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 match jsModules /import\|export/
39+
syntax keyword jsModuleWords default from as contained
40+
syntax keyword jsOf of contained
41+
42+
syntax region jsImportContainer start="import \?" end="$" contains=jsModuleWords,jsModules,jsComment,jsStringS,jsStringD,jsTemplateString
43+
44+
syntax region jsExportContainer start="export \?" end="$" contains=jsModuleWords,jsModules,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
@@ -84,7 +90,8 @@ syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" c
8490
syntax match jsTemplateVar "\${.\{-}}" contained
8591
syntax region jsStringD start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@htmlPreproc,@Spell
8692
syntax region jsStringS start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@htmlPreproc,@Spell
87-
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`\|$+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
93+
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
94+
syntax region jsTaggedTemplate start=/\k\+\(\n\|\s\)\?`/ end=+`\|$+ contains=jsTemplateString
8895
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
8996
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
9097
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" 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,jsBlockComment,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
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
@@ -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

0 commit comments

Comments
 (0)