| " Vim syntax file |
| " Language: JavaScript |
| " Maintainer: Claudio Fleiner <claudio@fleiner.com> |
| " URL: http://www.fleiner.com/vim/syntax/javascript.vim |
| " Last Change: 2004 Nov 20 |
| |
| " For version 5.x: Clear all syntax items |
| " For version 6.x: Quit when a syntax file was already loaded |
| " tuning parameters: |
| " unlet javaScript_fold |
| |
| if !exists("main_syntax") |
| if version < 600 |
| syntax clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| let main_syntax = 'javascript' |
| endif |
| |
| " Drop fold if it set but vim doesn't support it. |
| if version < 600 && exists("javaScript_fold") |
| unlet javaScript_fold |
| endif |
| |
| syn case ignore |
| |
| |
| syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained |
| syn match javaScriptLineComment "\/\/.*$" contains=javaScriptCommentTodo |
| syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" |
| syn region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo |
| syn match javaScriptSpecial "\\\d\d\d\|\\." |
| syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc |
| syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc |
| syn match javaScriptSpecialCharacter "'\\.'" |
| syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" |
| syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline |
| syn keyword javaScriptConditional if else |
| syn keyword javaScriptRepeat while for |
| syn keyword javaScriptBranch break continue switch case default |
| syn keyword javaScriptOperator new in |
| syn keyword javaScriptType this var const |
| syn keyword javaScriptStatement return with |
| syn keyword javaScriptBoolean true false |
| syn keyword javaScriptNull null |
| |
| if exists("javaScript_fold") |
| syn match javaScriptFunction "\<function\>" |
| syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend |
| |
| syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" |
| syn sync match javaScriptSync grouphere NONE "^}" |
| |
| setlocal foldmethod=syntax |
| setlocal foldtext=getline(v:foldstart) |
| else |
| syn keyword javaScriptFunction function |
| syn match javaScriptBraces "[{}]" |
| endif |
| |
| syn sync fromstart |
| syn sync maxlines=100 |
| |
| " catch errors caused by wrong parenthesis |
| syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces,javaScriptFunction,javaScriptFunctionFold,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptConstant |
| syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces |
| syn match javaScrParenError ")" |
| |
| if main_syntax == "javascript" |
| syn sync ccomment javaScriptComment |
| endif |
| |
| " Define the default highlighting. |
| " For version 5.7 and earlier: only when not done already |
| " For version 5.8 and later: only when an item doesn't have highlighting yet |
| if version >= 508 || !exists("did_javascript_syn_inits") |
| if version < 508 |
| let did_javascript_syn_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| HiLink javaScriptComment Comment |
| HiLink javaScriptLineComment Comment |
| HiLink javaScriptCommentTodo Todo |
| HiLink javaScriptSpecial Special |
| HiLink javaScriptStringS String |
| HiLink javaScriptStringD String |
| HiLink javaScriptCharacter Character |
| HiLink javaScriptSpecialCharacter javaScriptSpecial |
| HiLink javaScriptNumber javaScriptValue |
| HiLink javaScriptConditional Conditional |
| HiLink javaScriptRepeat Repeat |
| HiLink javaScriptBranch Conditional |
| HiLink javaScriptOperator Operator |
| HiLink javaScriptType Type |
| HiLink javaScriptStatement Statement |
| HiLink javaScriptFunction Function |
| HiLink javaScriptBraces Function |
| HiLink javaScriptError Error |
| HiLink javaScrParenError javaScriptError |
| HiLink javaScriptNull Keyword |
| HiLink javaScriptBoolean Boolean |
| HiLink javaScriptRegexpString String |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "javascript" |
| if main_syntax == 'javascript' |
| unlet main_syntax |
| endif |
| |
| " vim: ts=8 |