diff vendor/vim-syntax/javascript.vim @ 634:ced2ee9efd9f

Update various syntaxes to the ones in vim repo
author nanaya <me@nanaya.pro>
date Tue, 17 Dec 2019 20:21:23 +0900
parents 035b23bb15da
children c548e83e4c57
line wrap: on
line diff
--- a/vendor/vim-syntax/javascript.vim	Tue Dec 17 20:10:29 2019 +0900
+++ b/vendor/vim-syntax/javascript.vim	Tue Dec 17 20:21:23 2019 +0900
@@ -1,332 +1,134 @@
 " Vim syntax file
-"      Language: JavaScript
-"    Maintainer: Jose Elera <https://github.com/jelera>
-"    			 https://jelera.github.io
-" Last Modified: Thu 11 Jul 2019 11:53:28 AM CDT
-"       Version: 0.8.2
-"       Credits: Zhao Yi, Claudio Fleiner, Scott Shattuck (This file is based
-"                on their hard work), gumnos (From the #vim IRC Channel in
-"                Freenode), all the contributors at this project's github page
-"                (https://github.com/jelera/vim-javascript-syntax/graphs/contributors)
+" Language:	JavaScript
+" Maintainer:	Claudio Fleiner <claudio@fleiner.com>
+" Updaters:	Scott Shattuck (ss) <ss@technicalpursuit.com>
+" URL:		http://www.fleiner.com/vim/syntax/javascript.vim
+" Changes:	(ss) added keywords, reserved words, and other identifiers
+"		(ss) repaired several quoting and grouping glitches
+"		(ss) fixed regex parsing issue with multiple qualifiers [gi]
+"		(ss) additional factoring of keywords, globals, and members
+" Last Change:	2019 Sep 27
+" 		2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
+" 		2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
+
+" 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
-
-"" Remove dollar sign from identifier when embedded in a PHP file
-if &filetype == 'javascript'
-	setlocal iskeyword+=$
+  " quit when a syntax file was already loaded
+  if exists("b:current_syntax")
+    finish
+  endif
+  let main_syntax = 'javascript'
+elseif exists("b:current_syntax") && b:current_syntax == "javascript"
+  finish
 endif
 
-syntax sync fromstart
-
-"" syntax coloring for Node.js shebang line
-syntax match shebang "^#!.*"
-hi link shebang Comment
-
-" Statement Keywords {{{
-syntax keyword javaScriptSource         import export from
-syntax keyword javaScriptIdentifier     arguments this let var void yield async await const
-syntax keyword javaScriptOperator       delete new instanceof typeof
-syntax keyword javaScriptBoolean        true false
-syntax keyword javaScriptNull           null undefined
-syntax keyword javaScriptMessage        alert confirm prompt status
-syntax keyword javaScriptGlobal         self top parent
-syntax keyword javaScriptDeprecated     escape unescape applets alinkColor bgColor fgColor linkColor vlinkColor xmlEncoding
-syntax keyword javaScriptConditional    if else switch
-syntax keyword javaScriptRepeat         do while for in of
-syntax keyword javaScriptBranch         break continue
-syntax keyword javaScriptLabel          case default
-syntax keyword javaScriptPrototype      prototype
-syntax keyword javaScriptStatement      return with
-syntax keyword javaScriptGlobalObjects  Array Boolean Date Function Math Number Object RegExp String
-syntax keyword javaScriptExceptions     try catch throw finally Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
-syntax keyword javaScriptReserved       abstract all enum int short boolean export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public
-"}}}
-" Comments {{{
-syntax keyword javaScriptCommentTodo      TODO FIXME XXX TBD OPTIMIZE HACK REVIEW contained
-syntax match   javaScriptLineComment      "\/\/.*" contains=@Spell,javaScriptCommentTodo
-syntax match   javaScriptCommentSkip      "^[ \t]*\*\($\|[ \t]\+\)"
-syntax region  javaScriptComment          start="/\*"  end="\*/" contains=@Spell,javaScriptCommentTodo
-"}}}
-" JSDoc support {{{
-if !exists("javascript_ignore_javaScriptdoc")
-	syntax case ignore
-
-	" syntax coloring for JSDoc comments (HTML)
-	"unlet b:current_syntax
-
-	syntax region javaScriptDocComment        matchgroup=javaScriptComment start="/\*\*\s*$"  end="\*/" contains=javaScriptDocTags,javaScriptCommentTodo,@javaScriptHtml,jsInJsdocExample,@Spell fold
-	syntax match  javaScriptDocTags           contained "@\(abstract\|access\|alias\|arg\|argument\|augments\|author\|borrows\|callback\|class\|classdesc\|const\|constant\|constructor\|constructs\|copyright\|default\|defaultvalue\|deprecated\|desc\|description\|emits\|enum\|event\|example\|exception\|exports\|extends\|external\|file\|fileoverview\|fires\|func\|function\|global\|host\|ignore\|implements\|inheritdoc\|inner\|instance\|interface\|kind\|lends\|license\|link\|linkcode\|linkplain\|listens\|member\|memberof\|method\|mixes\|mixin\|module\|name\|namespace\|override\|overview\|param\|private\|prop\|property\|cfg\|protected\|public\|readonly\|requires\|return\|returns\|see\|since\|static\|summary\|this\|throws\|todo\|tutorial\|tutorial\|type\|typedef\|var\|variation\|version\|virtual\)\>" nextgroup=javaScriptDocParam,javaScriptDocSeeTag skipwhite
-	syntax match  javaScriptDocParam          contained "\%(#\|\w\|\.\|:\|\/\)\+"
-	syntax region javaScriptDocSeeTag         contained matchgroup=javaScriptDocSeeTag start="{" end="}" contains=javaScriptDocTags
-
-	syntax case match
-endif
-	syntax case match
-"}}}
-" Strings, Numbers and Regex Highlight {{{
-syntax match   javaScriptSpecial          "\\\d\d\d\|\\."
-syntax region  javaScriptString	          start=+"+  skip=+\\\\\|\\"+  end=+"\|$+	contains=javaScriptSpecial,@htmlPreproc
-syntax region  javaScriptString	          start=+'+  skip=+\\\\\|\\'+  end=+'\|$+	contains=javaScriptSpecial,@htmlPreproc
-
-syntax match   javaScriptSpecialCharacter "'\\.'"
-syntax match   javaScriptNumber           "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
-syntax region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
-syntax match   javaScriptFloat          /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
-"}}}
-"  DOM, Browser and Ajax Support   {{{
-syntax keyword javaScriptBrowserObjects           window navigator screen history location console
-
-syntax keyword javaScriptDOMObjects               document event HTMLElement Anchor Area Base Body Button Form Frame Frameset Image Link Meta Option Select Style Table TableCell TableRow Textarea
-syntax keyword javaScriptDOMMethods               createTextNode createElement insertBefore replaceChild removeChild appendChild  hasChildNodes  cloneNode  normalize  isSupported  hasAttributes  getAttribute  setAttribute  removeAttribute  getAttributeNode  setAttributeNode  removeAttributeNode  getElementsByTagName  hasAttribute  getElementById adoptNode close compareDocumentPosition createAttribute createCDATASection createComment createDocumentFragment createElementNS createEvent createExpression createNSResolver createProcessingInstruction createRange createTreeWalker elementFromPoint evaluate getBoxObjectFor getElementsByClassName getSelection getUserData hasFocus importNode
-syntax keyword javaScriptDOMProperties            nodeName  nodeValue  nodeType  parentNode  childNodes  firstChild  lastChild  previousSibling  nextSibling  attributes  ownerDocument  namespaceURI  prefix  localName  tagName
+let s:cpo_save = &cpo
+set cpo&vim
 
 
-syntax keyword javaScriptLocalStorageObjects      localStorage
-syntax keyword javaScriptLocalStorageMethods      setItem getItem removeItem
-
-syntax keyword javaScriptAjaxObjects              XMLHttpRequest
-syntax keyword javaScriptAjaxProperties           readyState responseText responseXML statusText
-syntax keyword javaScriptAjaxMethods              onreadystatechange abort getAllResponseHeaders getResponseHeader open send setRequestHeader
+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
+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 region  javaScriptStringT	       start=+`+  skip=+\\\\\|\\`+  end=+`+	contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc
 
-syntax keyword javaScriptFetchAPIObjects          Response Promise
-syntax keyword javaScriptFetchAPIMethods          fetch then response clone redirect arrayBuffer blob formData allSettled race reject resolve
-syntax keyword javaScriptFetchAPIProperties       headers ok redirected url useFinalURL bodyUsed
-
-syntax keyword javaScriptJSONObject               JSON
-syntax keyword javaScriptJSONMethods              json stringify parse
+syn region  javaScriptEmbed	       start=+${+  end=+}+	contains=@javaScriptEmbededExpr
 
-syntax keyword javaScriptPropietaryObjects        ActiveXObject
-syntax keyword javaScriptPropietaryMethods        attachEvent detachEvent cancelBubble returnValue
-
-syntax keyword javaScriptHtmlElemProperties       className  clientHeight  clientLeft  clientTop  clientWidth  dir  href  id  innerHTML  lang  length  offsetHeight  offsetLeft  offsetParent  offsetTop  offsetWidth  scrollHeight  scrollLeft  scrollTop  scrollWidth  style  tabIndex  target  title
-
-syntax keyword javaScriptEventListenerKeywords    blur click focus mouseover mouseout load item
+syn match   javaScriptSpecialCharacter "'\\.'"
+syn match   javaScriptNumber	       "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+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
 
-syntax keyword javaScriptEventListenerMethods     scrollIntoView  addEventListener  dispatchEvent  removeEventListener preventDefault stopPropagation
-" }}}
-" DOM/HTML5/CSS specified things {{{
-	" Web API Interfaces (very long list of keywords) {{{
-	syntax keyword javaScriptWebAPI  AbstractWorker AnalyserNode AnimationEvent App Apps ArrayBuffer ArrayBufferView Attr AudioBuffer AudioBufferSourceNode AudioContext AudioDestinationNode AudioListener AudioNode AudioParam AudioProcessingEvent BatteryManager BiquadFilterNode Blob BlobBuilder BlobEvent CallEvent CameraCapabilities CameraControl CameraManager CanvasGradient CanvasImageSource CanvasPattern CanvasPixelArray CanvasRenderingContext2D CaretPosition CDATASection ChannelMergerNode ChannelSplitterNode CharacterData ChildNode ChromeWorker ClipboardEvent CloseEvent Comment CompositionEvent Connection Console ContactManager ConvolverNode Coordinates CSS CSSConditionRule CSSGroupingRule CSSKeyframeRule CSSKeyframesRule CSSMediaRule CSSNamespaceRule CSSPageRule CSSRule CSSRuleList CSSStyleDeclaration CSSStyleRule CSSStyleSheet CSSSupportsRule CustomEvent
-	syntax keyword javaScriptWebAPI  DataTransfer DataView DedicatedWorkerGlobalScope DelayNode DeviceAcceleration DeviceLightEvent DeviceMotionEvent DeviceOrientationEvent DeviceProximityEvent DeviceRotationRate DeviceStorage DeviceStorageChangeEvent DirectoryEntry DirectoryEntrySync DirectoryReader DirectoryReaderSync Document DocumentFragment DocumentTouch DocumentType DOMConfiguration DOMCursor DOMError DOMErrorHandler DOMException DOMHighResTimeStamp DOMImplementation DOMImplementationList DOMImplementationSource DOMLocator DOMObject DOMParser DOMRequest DOMString DOMStringList DOMStringMap DOMTimeStamp DOMTokenList DOMUserData DynamicsCompressorNode
-	syntax keyword javaScriptWebAPI  Element ElementTraversal Entity EntityReference Entry EntrySync ErrorEvent Event EventListener EventSource EventTarget Extensions File FileEntry FileEntrySync FileError FileException FileList FileReader FileSystem FileSystemSync Float32Array Float64Array FMRadio FocusEvent FormData GainNode Geolocation History
-	syntax keyword javaScriptWebAPI  HTMLAnchorElement HTMLAreaElement HTMLAudioElement HTMLBaseElement HTMLBaseFontElement HTMLBodyElement HTMLBRElement HTMLButtonElement HTMLCanvasElement HTMLCollection HTMLDataElement HTMLDataListElement HTMLDivElement HTMLDListElement HTMLDocument HTMLElement HTMLEmbedElement HTMLFieldSetElement HTMLFormControlsCollection HTMLFormElement HTMLHeadElement HTMLHeadingElement HTMLHRElement HTMLHtmlElement HTMLIFrameElement HTMLImageElement HTMLInputElement HTMLIsIndexElement HTMLKeygenElement HTMLLabelElement HTMLLegendElement HTMLLIElement HTMLLinkElement HTMLMapElement HTMLMediaElement HTMLMetaElement HTMLMeterElement HTMLModElement HTMLObjectElement HTMLOListElement HTMLOptGroupElement HTMLOptionElement HTMLOptionsCollection HTMLOutputElement HTMLParagraphElement HTMLParamElement HTMLPreElement HTMLProgressElement HTMLQuoteElement HTMLScriptElement HTMLSelectElement HTMLSourceElement HTMLSpanElement HTMLStyleElement HTMLTableCaptionElement HTMLTableCellElement HTMLTableColElement HTMLTableElement HTMLTableRowElement HTMLTableSectionElement HTMLTextAreaElement HTMLTimeElement HTMLTitleElement HTMLTrackElement HTMLUListElement HTMLUnknownElement HTMLVideoElement
-	syntax keyword javaScriptWebAPI  IDBCursor IDBCursorWithValue IDBDatabase IDBDatabaseException IDBEnvironment IDBFactory IDBIndex IDBKeyRange IDBObjectStore IDBOpenDBRequest IDBRequest IDBTransaction IDBVersionChangeEvent ImageData Int16Array Int32Array Int8Array KeyboardEvent LinkStyle LocalFileSystem LocalFileSystemSync Location MediaQueryList MediaQueryListListener MediaSource MediaStream MediaStreamTrack MessageEvent MouseEvent MouseScrollEvent MouseWheelEvent MozActivity MozActivityOptions MozActivityRequestHandler MozAlarmsManager MozContact MozContactChangeEvent MozIccManager MozMmsEvent MozMmsMessage MozMobileCellInfo MozMobileCFInfo MozMobileConnection MozMobileConnectionInfo MozMobileICCInfo MozMobileMessageManager MozMobileMessageThread MozMobileNetworkInfo MozNetworkStats MozNetworkStatsData MozNetworkStatsManager MozSettingsEvent MozSmsEvent MozSmsFilter MozSmsManager MozSmsMessage MozSmsSegmentInfo MozTimeManager MozWifiConnectionInfoEvent MutationObserver
-	syntax keyword javaScriptWebAPI  NamedNodeMap NameList Navigator NavigatorGeolocation NavigatorID NavigatorLanguage NavigatorOnLine NavigatorPlugins NetworkInformation Node NodeFilter NodeIterator NodeList Notation Notification NotifyAudioAvailableEvent OfflineAudioCompletionEvent OfflineAudioContext PannerNode ParentNode Performance PerformanceNavigation PerformanceTiming Plugin PluginArray Position PositionError PositionOptions PowerManager ProcessingInstruction ProgressEvent PromiseResolver PushManager
-	syntax keyword javaScriptWebAPI  Range ScriptProcessorNode Selection SettingsLock SettingsManager SharedWorker StyleSheet StyleSheetList SVGAElement SVGAngle SVGAnimateColorElement SVGAnimatedAngle SVGAnimatedBoolean SVGAnimatedEnumeration SVGAnimatedInteger SVGAnimatedLengthList SVGAnimatedNumber SVGAnimatedNumberList SVGAnimatedPoints SVGAnimatedPreserveAspectRatio SVGAnimatedRect SVGAnimatedString SVGAnimatedTransformList SVGAnimateElement SVGAnimateMotionElement SVGAnimateTransformElement SVGAnimationElement SVGCircleElement SVGClipPathElement SVGCursorElement SVGDefsElement SVGDescElement SVGElement SVGEllipseElement SVGFilterElement SVGFontElement SVGFontFaceElement SVGFontFaceFormatElement SVGFontFaceNameElement SVGFontFaceSrcElement SVGFontFaceUriElement
-	syntax keyword javaScriptWebAPI  SVGForeignObjectElement SVGGElement SVGGlyphElement SVGGradientElement SVGHKernElement SVGImageElement SVGLength SVGLengthList SVGLinearGradientElement SVGLineElement SVGMaskElement SVGMatrix SVGMissingGlyphElement SVGMPathElement SVGNumber SVGNumberList SVGPathElement SVGPatternElement SVGPolygonElement SVGPolylineElement SVGPreserveAspectRatio SVGRadialGradientElement SVGRect SVGRectElement SVGScriptElement SVGSetElement SVGStopElement SVGStringList SVGStylable SVGStyleElement SVGSVGElement SVGSwitchElement SVGSymbolElement SVGTests SVGTextElement SVGTextPositioningElement SVGTitleElement SVGTransform SVGTransformable SVGTransformList SVGTRefElement SVGTSpanElement SVGUseElement SVGViewElement SVGVKernElement TCPSocket Telephony TelephonyCall Text TextDecoder TextEncoder TextMetrics TimeRanges Touch TouchEvent TouchList Transferable TransitionEvent TreeWalker TypeInfo UIEvent Uint16Array Uint32Array Uint8Array Uint8ClampedArray URL URLUtils URLUtilsReadOnly
-	" }}}
-	" DOM2 CONSTANT {{{
-	syntax keyword javaScriptDomErrNo       INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR
-	syntax keyword javaScriptDomNodeConsts  ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE
-	"}}}
-	" HTML events and internal variables"{{{
-	syntax case ignore
-	syntax keyword javaScriptHtmlEvents     onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize onload onsubmit
-	syntax case match
-	"}}}
+syn keyword javaScriptConditional	if else switch
+syn keyword javaScriptRepeat		while for do in
+syn keyword javaScriptBranch		break continue
+syn keyword javaScriptOperator		new delete instanceof typeof
+syn keyword javaScriptType		Array Boolean Date Function Number Object String RegExp
+syn keyword javaScriptStatement		return with await
+syn keyword javaScriptBoolean		true false
+syn keyword javaScriptNull		null undefined
+syn keyword javaScriptIdentifier	arguments this var let
+syn keyword javaScriptLabel		case default
+syn keyword javaScriptException		try catch finally throw
+syn keyword javaScriptMessage		alert confirm prompt status
+syn keyword javaScriptGlobal		self window top parent
+syn keyword javaScriptMember		document event location 
+syn keyword javaScriptDeprecated	escape unescape
+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 async
 
-	" Follow stuff should be highligh within a special context
-	" While it can't be handled with context depended with Regex based highlight
-	" So, turn it off by default
-	if exists("javascript_enable_domhtmlcss")
-	" DOM2 things {{{
-	syntax match javaScriptDomElemAttrs     contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/
-	syntax match javaScriptDomElemFuncs     contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementsByTagName\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=javaScriptParen skipwhite
-	"}}}
-	" HTML things {{{
-	syntax match javaScriptHtmlElemAttrs    contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/
-	syntax match javaScriptHtmlElemFuncs    contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=javaScriptParen skipwhite
-	"}}}
-	" CSS Styles in JavaScript {{{
-	syntax keyword javaScriptCssStyles      contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition
-	syntax keyword javaScriptCssStyles      contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition
-	syntax keyword javaScriptCssStyles      contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode
-	syntax keyword javaScriptCssStyles      contained bottom height left position right top width zIndex
-	syntax keyword javaScriptCssStyles      contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout
-	syntax keyword javaScriptCssStyles      contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop
-	syntax keyword javaScriptCssStyles      contained listStyle listStyleImage listStylePosition listStyleType
-	syntax keyword javaScriptCssStyles      contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat
-	syntax keyword javaScriptCssStyles      contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType
-	syntax keyword javaScriptCssStyles      contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText
-	syntax keyword javaScriptCssStyles      contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor
-	"}}}
-	" Highlight ways {{{
-	syntax match javaScriptDotNotation      "\." nextgroup=javaScriptPrototype,javaScriptDomElemAttrs,javaScriptDomElemFuncs,javaScriptHtmlElemAttrs,javaScriptHtmlElemFuncs
-	syntax match javaScriptDotNotation      "\.style\." nextgroup=javaScriptCssStyles
-	"}}}
-	endif
-" end DOM/HTML/CSS specified things }}}
-" Code blocks"{{{
-syntax cluster javaScriptAll       contains=javaScriptComment,javaScriptLineComment,javaScriptDocComment,javaScriptString,javaScriptRegexpString,javaScriptNumber,javaScriptFloat,javaScriptLabel,javaScriptSource,javaScriptWebAPI,javaScriptOperator,javaScriptBoolean,javaScriptNull,javaScriptFuncKeyword,javaScriptConditional,javaScriptGlobal,javaScriptRepeat,javaScriptBranch,javaScriptStatement,javaScriptGlobalObjects,javaScriptMessage,javaScriptIdentifier,javaScriptExceptions,javaScriptReserved,javaScriptDeprecated,javaScriptDomErrNo,javaScriptDomNodeConsts,javaScriptHtmlEvents,javaScriptDotNotation,javaScriptBrowserObjects,javaScriptDOMObjects,javaScriptAjaxObjects,javaScriptPropietaryObjects,javaScriptDOMMethods,javaScriptHtmlElemProperties,javaScriptDOMProperties,javaScriptEventListenerKeywords,javaScriptEventListenerMethods,javaScriptAjaxProperties,javaScriptAjaxMethods,javaScriptFuncArg
+syn cluster  javaScriptEmbededExpr	contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT
+
+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	   "[{}\[\]]"
+    syn match	javaScriptParens	   "[()]"
+endif
+
+syn sync fromstart
+syn sync maxlines=100
 
 if main_syntax == "javascript"
-	syntax sync clear
-	syntax sync ccomment javaScriptComment minlines=200
-	" syntax sync match javaScriptHighlight grouphere javaScriptBlock /{/
+  syn sync ccomment javaScriptComment
 endif
-"}}}
-" Function and arguments highlighting {{{
-syntax keyword javaScriptFuncKeyword     function contained
-syntax region  javaScriptFuncExp         start=/\w\+\s\==\s\=function\>/ end="\([^)]*\)" contains=javaScriptFuncEq,javaScriptFuncKeyword,javaScriptFuncArg keepend
-syntax match   javaScriptFuncArg         "\(([^()]*)\)" contains=javaScriptParens,javaScriptFuncComma,javaScriptComment contained
-syntax match   javaScriptFuncComma       /,/ contained
-syntax match   javaScriptFuncEq          /=/ contained
-syntax region  javaScriptFuncDef         start="\<function\>" end="\([^)]*\)" contains=javaScriptFuncKeyword,javaScriptFuncArg keepend
-syntax match   javaScriptObjectKey       /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=javaScriptFunctionKey
-syntax match   javaScriptFunctionKey     /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ contained
-"}}}
-" Braces, Parens, symbols, colons {{{
-syntax match javaScriptBraces       "[{}\[\]]"
-syntax match javaScriptParens       "[()]"
-syntax match javaScriptOpSymbols    "=\{1,3}\|!==\|!=\|<\|>\|>=\|<=\|++\|+=\|--\|-="
-syntax match javaScriptEndColons    "[;,]"
-syntax match javaScriptLogicSymbols "\(&&\)\|\(||\)"
-"}}}
-" ES6 String Interpolation {{{
-syntax match  javaScriptTemplateDelim    "\${\|}" contained
-syntax region javaScriptTemplateVar      start=+${+ end=+}+                        contains=javaScriptTemplateDelim keepend
-syntax region javaScriptTemplateString   start=+`+  skip=+\\\(`\|$\)+  end=+`+     contains=javaScriptTemplateVar,javaScriptSpecial keepend
-"}}}
-" JavaScriptFold Function {{{
-
-function! JavaScriptFold()
-	setl foldmethod=syntax
-	setl foldlevelstart=1
-	syntax region foldBraces start=/{/ end=/}/ transparent fold keepend extend
-endfunction
-
-" }}}
-" Highlight links {{{
-" 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 javaScriptEndColons              Operator
-	HiLink javaScriptOpSymbols              Operator
-	HiLink javaScriptLogicSymbols           Boolean
-	HiLink javaScriptBraces                 Function
-	HiLink javaScriptParens                 Operator
-	HiLink javaScriptTemplateDelim          Operator
-
-	HiLink javaScriptComment                Comment
-	HiLink javaScriptLineComment            Comment
-	HiLink javaScriptDocComment             Comment
-	HiLink javaScriptCommentTodo            Todo
-
-	HiLink javaScriptDocTags                Special
-	HiLink javaScriptDocSeeTag              Function
-	HiLink javaScriptDocParam               Function
-
-	HiLink javaScriptString                 String
-	HiLink javaScriptRegexpString           String
-	HiLink javaScriptTemplateString         String
-
-	HiLink javaScriptNumber                 Number
-	HiLink javaScriptFloat                  Number
 
-	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 javaScriptMessage                Keyword
-	HiLink javaScriptReserved               Keyword
-	HiLink javaScriptOperator               Operator
-	HiLink javaScriptNull                   Type
-	HiLink javaScriptBoolean                Boolean
-	HiLink javaScriptLabel                  Label
-	HiLink javaScriptSpecial                Special
-	HiLink javaScriptSource                 Special
-	HiLink javaScriptGlobalObjects          Special
-	HiLink javaScriptExceptions             Special
-
-	HiLink javaScriptDeprecated             Exception
-	HiLink javaScriptError                  Error
-	HiLink javaScriptParensError            Error
-	HiLink javaScriptParensErrA             Error
-	HiLink javaScriptParensErrB             Error
-	HiLink javaScriptParensErrC             Error
-	HiLink javaScriptDomErrNo               Error
-
-	HiLink javaScriptDomNodeConsts          Constant
-	HiLink javaScriptDomElemAttrs           Label
-	HiLink javaScriptDomElemFuncs           Type
-
-	HiLink javaScriptWebAPI                 Type
-
-	HiLink javaScriptHtmlElemAttrs          Label
-	HiLink javaScriptHtmlElemFuncs          Type
-
-	HiLink javaScriptCssStyles              Type
-
-	HiLink javaScriptBrowserObjects         Constant
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link javaScriptComment		Comment
+hi def link javaScriptLineComment		Comment
+hi def link javaScriptCommentTodo		Todo
+hi def link javaScriptSpecial		Special
+hi def link javaScriptStringS		String
+hi def link javaScriptStringD		String
+hi def link javaScriptStringT		String
+hi def link javaScriptCharacter		Character
+hi def link javaScriptSpecialCharacter	javaScriptSpecial
+hi def link javaScriptNumber		javaScriptValue
+hi def link javaScriptConditional		Conditional
+hi def link javaScriptRepeat		Repeat
+hi def link javaScriptBranch		Conditional
+hi def link javaScriptOperator		Operator
+hi def link javaScriptType			Type
+hi def link javaScriptStatement		Statement
+hi def link javaScriptFunction		Function
+hi def link javaScriptBraces		Function
+hi def link javaScriptError		Error
+hi def link javaScrParenError		javaScriptError
+hi def link javaScriptNull			Keyword
+hi def link javaScriptBoolean		Boolean
+hi def link javaScriptRegexpString		String
 
-	HiLink javaScriptLocalStorageObjects    Constant
-	HiLink javaScriptLocalStorageMethods    Type
-
-	HiLink javaScriptFetchAPIObjects        Constant
-	HiLink javaScriptFetchAPIMethods        Type
-	HiLink javaScriptFetchAPIProperties     Label
-
-	HiLink javaScriptJSONObject             Constant
-	HiLink javaScriptJSONMethods            Type
-
-	HiLink javaScriptDOMObjects             Constant
-	HiLink javaScriptDOMMethods             Type
-	HiLink javaScriptDOMProperties          Label
-
-	HiLink javaScriptAjaxObjects            Constant
-	HiLink javaScriptAjaxMethods            Type
-	HiLink javaScriptAjaxProperties         Label
+hi def link javaScriptIdentifier		Identifier
+hi def link javaScriptLabel		Label
+hi def link javaScriptException		Exception
+hi def link javaScriptMessage		Keyword
+hi def link javaScriptGlobal		Keyword
+hi def link javaScriptMember		Keyword
+hi def link javaScriptDeprecated		Exception 
+hi def link javaScriptReserved		Keyword
+hi def link javaScriptDebug		Debug
+hi def link javaScriptConstant		Label
+hi def link javaScriptEmbed		Special
 
-	HiLink javaScriptFuncKeyword            Function
-	HiLink javaScriptFuncDef                PreProc
-	HiLink javaScriptFuncExp                Title
-	HiLink javaScriptFuncArg               	Special
-	HiLink javaScriptFuncComma              Operator
-	HiLink javaScriptFuncEq                 Operator
 
-	HiLink javaScriptHtmlEvents             Constant
-	HiLink javaScriptHtmlElemProperties     Label
-
-	HiLink javaScriptEventListenerKeywords  Type
-
-	HiLink javaScriptPropietaryObjects      Constant
-
-	delcommand HiLink
-endif
-" end Highlight links }}}
-
-" Define the htmlJavaScript for HTML syntax html.vim
-"syntax clear htmlJavaScript
-"syntax clear javaScriptExpression
-syntax cluster  htmlJavaScript contains=@javaScriptAll,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError
-syntax cluster  javaScriptExpression contains=@javaScriptAll,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError,@htmlPreproc
 
 let b:current_syntax = "javascript"
 if main_syntax == 'javascript'
-	unlet main_syntax
+  unlet main_syntax
 endif
-syntax region jsInJsdocExample matchgroup=Snip start="^\s*\* @example" end="\(^\s*\* [^[:space:]]\)\@=" containedin=@javaScriptComment contains=@javaScriptAll
-hi link Snip SpecialComment
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8