vim updates
[~madcoder/dotfiles.git] / vim / syntax / javascript.vim
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:  2010 Mar 25
11
12 " For version 5.x: Clear all syntax items
13 " For version 6.x: Quit when a syntax file was already loaded
14 " tuning parameters:
15 " unlet javaScript_fold
16
17 if !exists("main_syntax")
18   if version < 600
19     syntax clear
20   elseif exists("b:current_syntax")
21     finish
22   endif
23   let main_syntax = 'javascript'
24 endif
25
26 " Drop fold if it set but vim doesn't support it.
27 if version < 600 && exists("javaScript_fold")
28   unlet javaScript_fold
29 endif
30
31 syn region  javaScriptTpl               start=+<@+ms=b end=+@>+me=e contains=javaScriptCommentTodo,javaScriptLineComment,javaScriptCommentSkip,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptLabel,javaScriptException,javaScriptMessage,javaScriptGlobal,javaScriptMember,javaScriptDeprecated,javaScriptReserved,javaScriptTplMark keepend
32 syn match   javaScriptTplMark           "\(<@[=#]\?\|@>\)" contained
33 syn keyword javaScriptCommentTodo      TODO FIXME XXX TBD contained
34 syn match   javaScriptLineComment      "\/\/.*" contains=@Spell,javaScriptCommentTodo
35 syn match   javaScriptCommentSkip      "^[ \t]*\*\($\|[ \t]\+\)"
36 syn region  javaScriptComment          start="/\*"  end="\*/" contains=@Spell,javaScriptCommentTodo
37 syn match   javaScriptSpecial          "\\\d\d\d\|\\."
38 syn region  javaScriptStringD          start=+"+  skip=+\\\\\|\\"+  end=+"\|$+  contains=javaScriptSpecial,@htmlPreproc,javaScriptTplMark
39 syn region  javaScriptStringS          start=+'+  skip=+\\\\\|\\'+  end=+'\|$+  contains=javaScriptSpecial,@htmlPreproc,javaScriptTplMark
40
41 syn match   javaScriptSpecialCharacter "'\\.'"
42 syn match   javaScriptNumber           "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
43 syn region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
44
45 syn keyword javaScriptConditional       if else switch
46 syn keyword javaScriptRepeat            while for do in
47 syn keyword javaScriptBranch            break continue
48 syn keyword javaScriptOperator          new delete instanceof typeof
49 syn keyword javaScriptType              Array Boolean Date Function Number Object String RegExp
50 syn keyword javaScriptStatement        return with
51 syn keyword javaScriptBoolean           true false
52 syn keyword javaScriptNull              null undefined
53 syn keyword javaScriptIdentifier        arguments this var let const
54 syn keyword javaScriptLabel             case default
55 syn keyword javaScriptException         try catch finally throw
56 syn keyword javaScriptMessage           alert confirm prompt status
57 syn keyword javaScriptGlobal            self window top parent
58 syn keyword javaScriptMember            document event location 
59 syn keyword javaScriptDeprecated        escape unescape
60 syn keyword javaScriptReserved          abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile 
61
62 if exists("javaScript_fold")
63     syn match   javaScriptFunction      "\<function\>"
64     syn region  javaScriptFunctionFold  start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
65
66     syn sync match javaScriptSync       grouphere javaScriptFunctionFold "\<function\>"
67     syn sync match javaScriptSync       grouphere NONE "^}"
68
69     setlocal foldmethod=syntax
70     setlocal foldtext=getline(v:foldstart)
71 else
72     syn keyword javaScriptFunction      function
73     syn match   javaScriptBraces           "[{}\[\]]"
74     syn match   javaScriptParens           "[()]"
75 endif
76
77 syn sync fromstart
78 syn sync maxlines=100
79
80 if main_syntax == "javascript"
81   syn sync ccomment javaScriptComment
82 endif
83
84 " Define the default highlighting.
85 " For version 5.7 and earlier: only when not done already
86 " For version 5.8 and later: only when an item doesn't have highlighting yet
87 if version >= 508 || !exists("did_javascript_syn_inits")
88   if version < 508
89     let did_javascript_syn_inits = 1
90     command -nargs=+ HiLink hi link <args>
91   else
92     command -nargs=+ HiLink hi def link <args>
93   endif
94   HiLink javaScriptComment           Comment
95   HiLink javaScriptLineComment       Comment
96   HiLink javaScriptCommentTodo       Todo
97   HiLink javaScriptSpecial           Special
98   HiLink javaScriptStringS           String
99   HiLink javaScriptStringD           String
100   HiLink javaScriptCharacter         Character
101   HiLink javaScriptSpecialCharacter  javaScriptSpecial
102   HiLink javaScriptNumber            javaScriptValue
103   HiLink javaScriptConditional       Conditional
104   HiLink javaScriptRepeat            Repeat
105   HiLink javaScriptBranch            Conditional
106   HiLink javaScriptOperator          Operator
107   HiLink javaScriptStatement         Statement
108   HiLink javaScriptFunction          Function
109   HiLink javaScriptBraces            Function
110   HiLink javaScriptError             Error
111   HiLink javaScrParenError           javaScriptError
112   HiLink javaScriptNull                 Keyword
113   HiLink javaScriptBoolean           Boolean
114   HiLink javaScriptRegexpString      String
115
116   HiLink javaScriptIdentifier           Identifier
117   HiLink javaScriptLabel                Label
118   HiLink javaScriptException            Exception
119   HiLink javaScriptMessage              Keyword
120   HiLink javaScriptGlobal               Keyword
121   HiLink javaScriptMember               Keyword
122   HiLink javaScriptDeprecated           Exception 
123   HiLink javaScriptReserved             Keyword
124   HiLink javaScriptDebug                Debug
125   HiLink javaScriptConstant             Label
126
127   delcommand HiLink
128 endif
129
130 let b:current_syntax = "javascript"
131 if main_syntax == 'javascript'
132   unlet main_syntax
133 endif
134
135 " vim: ts=8