neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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