Skip to content

Commit fd99d77

Browse files
committed
Adding first pass at ES6 Class support
1 parent 47b89fb commit fd99d77

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

syntax/javascript.vim

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ syntax keyword jsArgsObj arguments
4242

4343
syntax region jsImportContainer start="^\s\?import \?" end=";\|$" contains=jsModules,jsModuleWords,jsLineComment,jsComment,jsStringS,jsStringD,jsTemplateString,jsNoise,jsBlock
4444

45-
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,jsArgsObj,jsBlock
45+
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,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsAssignmentExpr,jsArgsObj,jsBlock,jsClassDefinition
4646

4747
"" JavaScript comments
4848
syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -131,7 +131,6 @@ syntax keyword jsConditional if else switch
131131
syntax keyword jsRepeat do while for
132132
syntax keyword jsLabel case default
133133
syntax keyword jsKeyword yield
134-
syntax keyword jsClass extends class
135134
syntax keyword jsException try catch throw finally
136135
syntax keyword jsAsyncKeyword async await
137136

@@ -193,12 +192,13 @@ endif "DOM/HTML/CSS
193192
"" end DOM/HTML/CSS specified things
194193

195194
"" Code blocks
196-
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,jsArgsObj,jsDecorator,jsAsyncKeyword
195+
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,jsArgsObj,jsDecorator,jsAsyncKeyword,jsClassDefinition
197196
syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
198197
syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
199198
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
200-
syntax region jsBlock matchgroup=jsBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold
201-
syntax region jsFuncBlock matchgroup=jsFuncBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
199+
syntax region jsBlock matchgroup=jsBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc,jsClassDefinition fold
200+
syntax region jsClassBlock matchgroup=jsClassBraces start="{" end="}" contains=jsFuncName,jsClassMethodDefinitions contained fold
201+
syntax region jsFuncBlock matchgroup=jsFuncBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc,jsClassDefinition contained fold
202202
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression,jsTernaryIf
203203

204204
"" catch errors caused by wrong parenthesis
@@ -223,6 +223,10 @@ syntax match jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/
223223

224224
exe 'syntax match jsArrowFunction /=>/ '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '')
225225

226+
syntax keyword jsClassKeywords extends class contained
227+
syntax keyword jsClassMethodDefinitions get set static contained nextgroup=jsFuncName skipwhite skipempty
228+
syntax match jsClassDefinition /class [a-zA-Z_$][0-9a-zA-Z_$ \n]*/ contains=jsClassKeywords nextgroup=jsClassBlock skipwhite skipempty
229+
226230
" Define the default highlighting.
227231
" For version 5.7 and earlier: only when not done already
228232
" For version 5.8 and later: only when an item doesn't have highlighting yet
@@ -282,7 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
282286
HiLink jsOperator Operator
283287
HiLink jsOf Operator
284288
HiLink jsStorageClass StorageClass
285-
HiLink jsClass Structure
289+
HiLink jsClassKeywords Structure
286290
HiLink jsThis Special
287291
HiLink jsStatic Special
288292
HiLink jsSuper Special
@@ -299,6 +303,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
299303
HiLink jsBraces Noise
300304
HiLink jsFuncBraces Noise
301305
HiLink jsFuncParens Noise
306+
HiLink jsClassBraces Noise
302307
HiLink jsSpecial Special
303308
HiLink jsTemplateVar Special
304309
HiLink jsGlobalObjects Special
@@ -320,6 +325,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
320325

321326
HiLink jsCssStyles Label
322327

328+
HiLink jsClassMethodDefinitions Type
329+
323330
delcommand HiLink
324331
endif
325332

0 commit comments

Comments
 (0)