Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: JavaScript |
| 3 | " Maintainer: Claudio Fleiner <claudio@fleiner.com> |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 4 | " Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com> |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 5 | " URL: http://www.fleiner.com/vim/syntax/javascript.vim |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 0c5fa7d | 2012-10-05 22:26:30 +0200 | [diff] [blame] | 10 | " Last Change: 2012 Oct 05 |
Bram Moolenaar | ec7944a | 2013-06-12 21:29:15 +0200 | [diff] [blame] | 11 | " 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 12 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 13 | " tuning parameters: |
| 14 | " unlet javaScript_fold |
| 15 | |
| 16 | if !exists("main_syntax") |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 17 | " quit when a syntax file was already loaded |
| 18 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 19 | finish |
| 20 | endif |
| 21 | let main_syntax = 'javascript' |
Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 22 | elseif exists("b:current_syntax") && b:current_syntax == "javascript" |
| 23 | finish |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 24 | endif |
| 25 | |
Bram Moolenaar | 0c5fa7d | 2012-10-05 22:26:30 +0200 | [diff] [blame] | 26 | let s:cpo_save = &cpo |
| 27 | set cpo&vim |
| 28 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 29 | |
| 30 | syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 31 | syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 32 | syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 33 | syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 34 | syn match javaScriptSpecial "\\\d\d\d\|\\." |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 35 | syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc |
| 36 | syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 37 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 38 | syn match javaScriptSpecialCharacter "'\\.'" |
| 39 | syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" |
Bram Moolenaar | ec7944a | 2013-06-12 21:29:15 +0200 | [diff] [blame] | 40 | syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 41 | |
| 42 | syn keyword javaScriptConditional if else switch |
| 43 | syn keyword javaScriptRepeat while for do in |
| 44 | syn keyword javaScriptBranch break continue |
| 45 | syn keyword javaScriptOperator new delete instanceof typeof |
| 46 | syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 47 | syn keyword javaScriptStatement return with |
| 48 | syn keyword javaScriptBoolean true false |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 49 | syn keyword javaScriptNull null undefined |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 50 | syn keyword javaScriptIdentifier arguments this var let |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 51 | syn keyword javaScriptLabel case default |
| 52 | syn keyword javaScriptException try catch finally throw |
| 53 | syn keyword javaScriptMessage alert confirm prompt status |
| 54 | syn keyword javaScriptGlobal self window top parent |
| 55 | syn keyword javaScriptMember document event location |
| 56 | syn keyword javaScriptDeprecated escape unescape |
| 57 | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 58 | |
| 59 | if exists("javaScript_fold") |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 60 | syn match javaScriptFunction "\<function\>" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 61 | syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend |
| 62 | |
| 63 | syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" |
| 64 | syn sync match javaScriptSync grouphere NONE "^}" |
| 65 | |
| 66 | setlocal foldmethod=syntax |
| 67 | setlocal foldtext=getline(v:foldstart) |
| 68 | else |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 69 | syn keyword javaScriptFunction function |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 70 | syn match javaScriptBraces "[{}\[\]]" |
| 71 | syn match javaScriptParens "[()]" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 72 | endif |
| 73 | |
| 74 | syn sync fromstart |
| 75 | syn sync maxlines=100 |
| 76 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 77 | if main_syntax == "javascript" |
| 78 | syn sync ccomment javaScriptComment |
| 79 | endif |
| 80 | |
| 81 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 82 | " Only when an item doesn't have highlighting yet |
| 83 | command -nargs=+ HiLink hi def link <args> |
| 84 | HiLink javaScriptComment Comment |
| 85 | HiLink javaScriptLineComment Comment |
| 86 | HiLink javaScriptCommentTodo Todo |
| 87 | HiLink javaScriptSpecial Special |
| 88 | HiLink javaScriptStringS String |
| 89 | HiLink javaScriptStringD String |
| 90 | HiLink javaScriptCharacter Character |
| 91 | HiLink javaScriptSpecialCharacter javaScriptSpecial |
| 92 | HiLink javaScriptNumber javaScriptValue |
| 93 | HiLink javaScriptConditional Conditional |
| 94 | HiLink javaScriptRepeat Repeat |
| 95 | HiLink javaScriptBranch Conditional |
| 96 | HiLink javaScriptOperator Operator |
| 97 | HiLink javaScriptType Type |
| 98 | HiLink javaScriptStatement Statement |
| 99 | HiLink javaScriptFunction Function |
| 100 | HiLink javaScriptBraces Function |
| 101 | HiLink javaScriptError Error |
| 102 | HiLink javaScrParenError javaScriptError |
| 103 | HiLink javaScriptNull Keyword |
| 104 | HiLink javaScriptBoolean Boolean |
| 105 | HiLink javaScriptRegexpString String |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 106 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 107 | HiLink javaScriptIdentifier Identifier |
| 108 | HiLink javaScriptLabel Label |
| 109 | HiLink javaScriptException Exception |
| 110 | HiLink javaScriptMessage Keyword |
| 111 | HiLink javaScriptGlobal Keyword |
| 112 | HiLink javaScriptMember Keyword |
| 113 | HiLink javaScriptDeprecated Exception |
| 114 | HiLink javaScriptReserved Keyword |
| 115 | HiLink javaScriptDebug Debug |
| 116 | HiLink javaScriptConstant Label |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 117 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 118 | delcommand HiLink |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 119 | |
| 120 | let b:current_syntax = "javascript" |
| 121 | if main_syntax == 'javascript' |
| 122 | unlet main_syntax |
| 123 | endif |
Bram Moolenaar | 0c5fa7d | 2012-10-05 22:26:30 +0200 | [diff] [blame] | 124 | let &cpo = s:cpo_save |
| 125 | unlet s:cpo_save |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 126 | |
| 127 | " vim: ts=8 |