Skip to content

Commit 152f36e

Browse files
committed
Merge pull request #354 from amadeus/es6-class-support
Adding first pass at ES6 Class support
2 parents 559c5f4 + 995183b commit 152f36e

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

syntax/javascript.vim

Lines changed: 15 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,11 @@ 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 match jsClassNoise /\./ contained
228+
syntax keyword jsClassMethodDefinitions get set static contained nextgroup=jsFuncName skipwhite skipempty
229+
syntax match jsClassDefinition /class [a-zA-Z_$][0-9a-zA-Z_$ \n.]*/ contains=jsClassKeywords,jsClassNoise nextgroup=jsClassBlock skipwhite skipempty
230+
226231
" Define the default highlighting.
227232
" For version 5.7 and earlier: only when not done already
228233
" For version 5.8 and later: only when an item doesn't have highlighting yet
@@ -282,7 +287,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
282287
HiLink jsOperator Operator
283288
HiLink jsOf Operator
284289
HiLink jsStorageClass StorageClass
285-
HiLink jsClass Structure
290+
HiLink jsClassKeywords Structure
286291
HiLink jsThis Special
287292
HiLink jsStatic Special
288293
HiLink jsSuper Special
@@ -299,6 +304,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
299304
HiLink jsBraces Noise
300305
HiLink jsFuncBraces Noise
301306
HiLink jsFuncParens Noise
307+
HiLink jsClassBraces Noise
308+
HiLink jsClassNoise Noise
302309
HiLink jsSpecial Special
303310
HiLink jsTemplateVar Special
304311
HiLink jsGlobalObjects Special
@@ -320,6 +327,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
320327

321328
HiLink jsCssStyles Label
322329

330+
HiLink jsClassMethodDefinitions Type
331+
323332
delcommand HiLink
324333
endif
325334

0 commit comments

Comments
 (0)