diff --git a/syntax/javascript.vim b/syntax/javascript.vim index bfb16dc..130d96e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -1,20 +1,13 @@ " Vim syntax file " Language: JavaScript -" Maintainer: Yi Zhao (ZHAOYI) -" Last Change: June 4, 2009 -" Version: 0.7.7 -" Changes: Add "undefined" as a type keyword -" -" TODO: -" - Add the HTML syntax inside the JSDoc -" -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" -" Modified Javascript Syntax file -" By: Jose Elera Campana -" Last Change: 01/17/12 15:26:51 -" Changes: -" - Added support for Browser, DOM and Ajax Objects, Ajax methods and properties, +" Maintainer: Jose Elera Campana +" Last Change: February 6, 2012 +" Version: 0.7.9 +" Changes: Go to https://github.com/jelera/vim-javascript-syntax for +" recent changes. +" Credits: Zhao Yi, Claudio Fleiner, Scott Shattuck (This file is based +" on their hard work), gumnos (From the #vim IRC Channel in +" Freenode) if !exists("main_syntax") if version < 600 @@ -25,10 +18,9 @@ if !exists("main_syntax") let main_syntax = 'javascript' endif -"" Drop fold if it set but VIM doesn't support it. -let b:javascript_fold='true' -if version < 600 " Don't support the old version - unlet! b:javascript_fold +" Drop fold if it set but vim doesn't support it. +if version < 600 && exists("javaScript_fold") + unlet javaScript_fold endif "" dollar sigh is permittd anywhere in an identifier @@ -37,11 +29,10 @@ setlocal iskeyword+=$ syntax sync fromstart "" JavaScript comments -syntax keyword javaScriptCommentTodo TODO FIXME XXX TBD contained -syntax region javaScriptLineComment start=+\/\/+ end=+$+ keepend contains=javaScriptCommentTodo,@Spell -syntax region javaScriptLineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend contains=javaScriptCommentTodo,@Spell fold -syntax region javaScriptCvsTag start="\$\cid:" end="\$" oneline contained -syntax region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo,javaScriptCvsTag,@Spell fold +syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained +syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo +syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" +syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo "" JSDoc support start if !exists("javascript_ignore_javaScriptdoc") @@ -63,27 +54,34 @@ endif "" JSDoc end syntax case match "" Syntax in the JavaScript code -syntax match javaScriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." -syntax region javaScriptStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc -syntax region javaScriptStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc -syntax region javaScriptRegexpString start=+/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gim]\{,3}+ contains=javaScriptSpecial,@htmlPreproc oneline -syntax match javaScriptNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ +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]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline +" syntax match javaScriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." +" syntax region javaScriptStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc +" syntax region javaScriptStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc +" syntax region javaScriptRegexpString start=+/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gim]\{,3}+ contains=javaScriptSpecial,@htmlPreproc oneline +" syntax match javaScriptNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ syntax match javaScriptFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ -syntax match javaScriptLabel /\(?\s*\)\@/ nextgroup=javaScriptFuncName skipwhite - syntax match javaScriptOpAssign /=\@/ nextgroup=javaScriptFuncName skipwhite +syntax region javaScriptFuncName contained matchgroup=javaScriptFuncName start=/\%(\$\|\w\)*\s*(/ end=/)/ contains=javaScriptLineComment,javaScriptComment nextgroup=javaScriptFuncBlock skipwhite skipempty +" syntax region javaScriptFuncBlock contained matchgroup=javaScriptFuncBlock start="{" end="}" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrB,javaScriptParen,javaScriptBracket,javaScriptBlock fold - if &l:filetype=='javascript' && !&diff - " Fold setting - " Redefine the foldtext (to show a JS function outline) and foldlevel - " only if the entire buffer is JavaScript, but not if JavaScript syntax - " is embedded in another syntax (e.g. HTML). - setlocal foldmethod=syntax - setlocal foldlevel=4 - endif -else - syntax keyword javaScriptFunction function - setlocal foldmethod< - setlocal foldlevel< -endif +syn match javaScriptBraces "[{}\[\]]" +syn match javaScriptParens "[()]" +syn match javaScriptOpSymbols "=\{1,3}\|!==\|!=\|<\|>\|>=\|<=\|++\|+=\|--\|-=" +syn match javaScriptEndColons "[;,]$" +syn match javaScriptLogicSymbols "\(&&\)\|\(||\)" " Define the default highlighting. " For version 5.7 and earlier: only when not done already @@ -213,6 +195,12 @@ if version >= 508 || !exists("did_javascript_syn_inits") else command -nargs=+ HiLink hi def link endif + + HiLink javaScriptEndColons Exception + HiLink javaScriptOpSymbols Operator + HiLink javaScriptLogicSymbols Boolean + HiLink javaScriptBraces Function + HiLink javaScriptParens Operator HiLink javaScriptComment Comment HiLink javaScriptLineComment Comment HiLink javaScriptDocComment Comment @@ -224,18 +212,23 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink javaScriptStringS String HiLink javaScriptStringD String HiLink javaScriptRegexpString String + HiLink javaScriptGlobal Constant HiLink javaScriptCharacter Character HiLink javaScriptPrototype Type HiLink javaScriptConditional Conditional HiLink javaScriptBranch Conditional + HiLink javaScriptIdentifier Identifier HiLink javaScriptRepeat Repeat HiLink javaScriptStatement Statement HiLink javaScriptFunction Function + HiLink javaScriptMessage Keyword + HiLink javaScriptDeprecated Exception HiLink javaScriptError Error HiLink javaScriptParensError Error HiLink javaScriptParensErrA Error HiLink javaScriptParensErrB Error HiLink javaScriptParensErrC Error + HiLink javaScriptReserved Keyword HiLink javaScriptOperator Operator HiLink javaScriptType Type HiLink javaScriptNull Type @@ -271,8 +264,10 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink javaScriptFuncName Title + HiLink javaScriptHtmlEvents Special HiLink javaScriptHtmlElemProperties Boolean - HiLink javaScriptEventListenerKeyword Keyword + + HiLink javaScriptEventListenerKeywords Keyword HiLink javaScriptNumber Number HiLink javaScriptPropietaryObjects Constant