javascript.vim (6546B)
1 " Vim syntax file 2 " Language: JavaScript 3 " Maintainer: Claudio Fleiner <claudio@fleiner.com> 4 " Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com> 5 " URL: http://www.fleiner.com/vim/syntax/javascript.vim 6 " Changes: (ss) added keywords, reserved words, and other identifiers 7 " (ss) repaired several quoting and grouping glitches 8 " (ss) fixed regex parsing issue with multiple qualifiers [gi] 9 " (ss) additional factoring of keywords, globals, and members 10 " Last Change: 2022 Jun 09 11 " 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) 12 " 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder) 13 " 2024 Aug 14: fix a few stylistic issues (#15480) 14 " 2025 Aug 07: as is a reserved keyword (#17912) 15 " 2025 Sep 24: using is a reserved keyword (Devin Weaver) 16 17 " tuning parameters: 18 " unlet javaScript_fold 19 20 if !exists("main_syntax") 21 " quit when a syntax file was already loaded 22 if exists("b:current_syntax") 23 finish 24 endif 25 let main_syntax = 'javascript' 26 elseif exists("b:current_syntax") && b:current_syntax == "javascript" 27 finish 28 endif 29 30 let s:cpo_save = &cpo 31 set cpo&vim 32 33 34 syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 35 syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo 36 syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 37 syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo 38 syn match javaScriptSpecial "\\\d\d\d\|\\." 39 syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 40 syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 41 syn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc 42 43 syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr 44 45 " number handling by Christopher Leonard chris.j.leonard@gmx.com 46 syn match javaScriptSpecialCharacter "'\\.'" 47 syn match javaScriptNumber "\<0[bB][0-1]\+\(_[0-1]\+\)*\>" 48 syn match javaScriptNumber "\<0[oO][0-7]\+\(_[0-7]\+\)*\>" 49 syn match javaScriptNumber "\<0\([0-7]\+\(_[0-7]\+\)*\)\?\>" 50 syn match javaScriptNumber "\<0[xX][0-9a-fA-F]\+\(_[0-9a-fA-F]\+\)*\>" 51 syn match javaScriptNumber "\<\d\+\(_\d\+\)*[eE][+-]\?\d\+\>" 52 syn match javaScriptNumber "\<[1-9]\d*\(_\d\+\)*\(\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\)\?\>" 53 syn match javaScriptNumber "\<\(\d\+\(_\d\+\)*\)\?\.\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\>" 54 syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\>" 55 syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline 56 57 syn keyword javaScriptConditional if else switch 58 syn keyword javaScriptRepeat while for do in of 59 syn keyword javaScriptBranch break continue 60 syn keyword javaScriptOperator new delete instanceof typeof 61 syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 62 syn keyword javaScriptStatement return with await yield 63 syn keyword javaScriptBoolean true false 64 syn keyword javaScriptNull null undefined 65 syn keyword javaScriptIdentifier arguments this 66 syn keyword javaScriptLabel case default 67 syn keyword javaScriptException try catch finally throw 68 syn keyword javaScriptMessage alert confirm prompt status 69 syn keyword javaScriptGlobal self window top parent 70 syn keyword javaScriptMember document event location 71 syn keyword javaScriptDeprecated escape unescape 72 syn keyword javaScriptReserved abstract as boolean byte char class const debugger double enum export extends final float from goto implements import int interface let long native package private protected public short super synchronized throws transient var volatile async using 73 syn keyword javaScriptModifier static 74 75 syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT 76 77 if exists("javaScript_fold") 78 syn match javaScriptFunction "\<function\>" 79 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 80 81 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 82 syn sync match javaScriptSync grouphere NONE "^}" 83 84 setlocal foldmethod=syntax 85 setlocal foldtext=getline(v:foldstart) 86 else 87 syn keyword javaScriptFunction function 88 syn match javaScriptBraces "[{}\[\]]" 89 syn match javaScriptParens "[()]" 90 endif 91 92 if main_syntax == "javascript" 93 syn sync fromstart 94 syn sync maxlines=100 95 96 syn sync ccomment javaScriptComment 97 endif 98 99 " Define the default highlighting. 100 " Only when an item doesn't have highlighting yet 101 hi def link javaScriptComment Comment 102 hi def link javaScriptLineComment Comment 103 hi def link javaScriptCommentTodo Todo 104 hi def link javaScriptSpecial Special 105 hi def link javaScriptStringS String 106 hi def link javaScriptStringD String 107 hi def link javaScriptStringT String 108 hi def link javaScriptCharacter Character 109 hi def link javaScriptSpecialCharacter javaScriptSpecial 110 hi def link javaScriptNumber Number 111 hi def link javaScriptConditional Conditional 112 hi def link javaScriptRepeat Repeat 113 hi def link javaScriptBranch Conditional 114 hi def link javaScriptOperator Operator 115 hi def link javaScriptType Type 116 hi def link javaScriptStatement Statement 117 hi def link javaScriptFunction Keyword 118 hi def link javaScriptBraces Function 119 hi def link javaScriptError Error 120 hi def link javaScrParenError javaScriptError 121 hi def link javaScriptNull Keyword 122 hi def link javaScriptBoolean Boolean 123 hi def link javaScriptRegexpString String 124 125 hi def link javaScriptIdentifier Identifier 126 hi def link javaScriptLabel Label 127 hi def link javaScriptException Exception 128 hi def link javaScriptMessage Keyword 129 hi def link javaScriptGlobal Keyword 130 hi def link javaScriptMember Keyword 131 hi def link javaScriptDeprecated Exception 132 hi def link javaScriptReserved Keyword 133 hi def link javaScriptModifier StorageClass 134 hi def link javaScriptDebug Debug 135 hi def link javaScriptConstant Label 136 hi def link javaScriptEmbed Special 137 138 139 140 let b:current_syntax = "javascript" 141 if main_syntax == 'javascript' 142 unlet main_syntax 143 endif 144 let &cpo = s:cpo_save 145 unlet s:cpo_save 146 147 " vim: ts=8