From 6a3fdd55e60ec94b782c3ee77dc9ba4339e3dc18 Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 26 Apr 2005 09:18:33 +0000 Subject: [PATCH] Update JavaScript syntax to include all of the niceties of the JavaScript (PHP) syntax Update the White background settings to color all of the special JavaScript keyword types nicely git-svn-id: http://macromates.com/svn/Bundles/trunk/Bundles/JavaScript.tmbundle@744 dfb7d73b-c2ec-0310-8fea-fb051d288c6d --- Syntaxes/JavaScript.plist | 69 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 65 insertions(+), 4 deletions(-) diff --git a/Syntaxes/JavaScript.plist b/Syntaxes/JavaScript.plist index bcc5744..69e539d 100644 --- a/Syntaxes/JavaScript.plist +++ b/Syntaxes/JavaScript.plist @@ -1,4 +1,14 @@ { + /* ----------------- + + JavaScript + ========== + + Created by god knows who, but extensively modified by Kevin Ballard + Modifications based in part on the JavaScript (PHP) syntax by Mats Persson (mats@imediatec.co.uk) + + ----------------- */ + name = "JavaScript"; scopeName = "source.javascript"; uuid = "93E017CC-6F27-11D9-90EB-000D93589AF6"; @@ -8,16 +18,15 @@ foldingStopMarker = "^\\s*\\}"; patterns = ( - { name = "declaration.function.js"; + { name = "declaration.function.js"; match = "^\\s*(function)\\s*([a-zA-Z_]\\w*)\\s*\\(([^)]*)\\)"; captures = { - 1 = { name = "keyword.js"; }; + 1 = { name = "keyword.declaration.js"; }; 2 = { name = "function-name"; }; 3 = { name = "function-argument"; }; }; }, - { name = "keyword.js"; match = "\\<(this|typeof|new|true|false|undefined|null|for|in|break|continue|while|do|return|if|else|case|switch|var)\\>"; }, { name = "constant.numeric.js"; match = "\\<((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?))\\>"; }, /*{ // This is useless - why match called methods? @@ -46,8 +55,60 @@ { name = "comment.block.js"; begin = "/\\*"; end = "\\*/"; swallow = "\\\\."; }, { name = "comment.line.js"; match = "//.*"; }, + + /* HTML COMMENTS: inside embedded in a HTML page */ + { name = "comment.html.js"; + match = "()"; + }, + + /* KEYWORDS: */ + { name = "keyword.declaration.js"; + match = "\\<(function)\\>"; + }, + + /* KEYWORDS: Reserved */ + { name = "keyword.reserved.js"; + match = "\\<(boolean|break|byte|case|catch|char|class|const|continue|debugger|default|delete|do|double|else|enum|export|extends|false|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|null|package|private|protected|public|return|short|static|super|switch|synchronized|this|throw|throws|transient|true|try|typeof|var|void|volatile|while|with)\\>"; + }, + + /* OBJECTS:: */ + { name = "keyword.object.js"; + /* CASE Sensitive Objects * / + match = "\\<(Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest)\\>"; + /* */ + /* CASE InSensitive Objects */ + match = "\\<((?i:Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest))\\>"; + /* */ + }, + + /* OBJECTS:: Methods */ + { name = "keyword.method.js"; + match = "\\<(abort|abs|acos|alert|anchor|apply|asin|atan|atan2|atob|attachEvent|back|big|blink|blur|bold|borderWidths|btoa|call|captureEvents|ceil|charAt|charCodeAt|clear|clearInterval|clearTimeout|click|close|compile|concat|confirm|contextual|cos|createElement|createEventObject|createPopup|createStyleSheet|createTextNode|detachEvent|disableExternalCapture|dump|elementFromPoint|enableExternalCapture|escape|eval|exec|execCommand|execScript|exp|fileCreatedDate|fileModifiedDate|fileSize|fileUpdatedDate|find|firstChild|fixed|floor|focus|fontcolor|fontsize|fromCharCode|forward|getAllResponseHeaders|getAttention|getDate|getDay|getElementById|getElementsByName|getElementsByTagName|getFullYear|getHours|getMilliseconds|getMinutes|getMonth|getResponseHeader|getSeconds|getSelection|getTime|getTimezoneOffset|getUTCDate|getUTCDay|getUTCFullYear|getUTCHours|getUTCMilliseconds|getUTCMinutes|getUTCMonth|getUTCSeconds|getYear|go|handleEvent|home|indexOf|isFinite|isNaN|italics|javaEnabled|join|lastIndexOf|link|load|log|margins|match|max|mergeAttributes|min|moveAbove|moveBelow|moveBy|moveTo|moveToAbsolute|navigate|open|paddings|parse|parseFloat|parseInt|plugins.refresh|pop|pow|preference|print|prompt|push|queryCommandEnabled|queryCommandIndeterm|queryCommandState|queryCommandValue|random|recalc|releaseCapture|releaseEvents|reload|replace|reset|resizeBy|resizeTo|returnValue|reverse|round|routeEvents|savePreferences|scroll|scrollBy|scrollByLines|scrollByPages|scrollTo|scrollX|scrollY|search|select|send|setDate|setFullYear|setActive|setCursor|setHotKeys|setHours|setInterval|setMilliseconds|setMinutes|setMonth|setResizable|setRequestHeader|setSeconds|setTime|setTimeout|setUTCDate|setUTCFullYear|setUTCHours|setUTCMilliseconds|setUTCMinutes|setUTCMonth|setUTCSeconds|setYear|setZOptions|shift|showHelp|showModalDialog|showModelessDialog|sidebar|sin|signText|sizeToContent|slice|small|sort|splice|split|sqrt|strike|stop|sub|submit|substr|substring|sup|taint|taintEnabled|tan|test|toGMTString|toLocaleString|toLowerCase|toSource|toString|toUpperCase|toUTCString|UTC|unescape|unshift|untaint|updateCommands|unwatch|valueOf|watch|write|writeln)\\>(?=\\()"; + }, + + /* OBJECTS:: Properties */ + { match = "\\.\\<(_content|above|action|align|aLinkcolor|all|anchors|appCodeName|appCore|appMinorVersion|appName|applets|appVersion|arguments|arguments.callee|arguments.caller|arguments.length|arity|attributes|availHeight|availLeft|availTop|availWidth|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor|borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|bottom|bufferDepth|characterSet|checked|childNodes|classes|className|clientInformation|clip|clipboardData|closed|colorDepth|complete|components|constructor|controllers|cookie|cookieEnabled|cpuClass|crypto|current|data|defaultCharset|defaultChecked|defaultStatus|defaultValue|defaultView|description|dialogArguments|dialogHeight|dialogLeft|dialogTop|dialogWidth|dir|directories|display|doctype|documentElement|domain|E|elements|embeds|enabledPlugin|encoding|expando|external|fgColor|filename|fontFamily|fontSize|fontWeight|form|formName|forms|frameElement|frames|global|hasFocus|hash|height|history|host|hostname|href|hspace|ids|ignoreCase|images|implementation|input|innerHeight|innerWidth|index|LN10|LN2|LOG10E|LOG2E|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layers|layerX|left|leftContext|length|lineHeight|linkColor|links|listStyleType|localName|location|locationbar|lowsrc|MAX_VALUE|MIN_VALUE|marginBottom|marginLeft|marginRight|marginTop|media|method|menubar|mimeTypes|multiline|NEGATIVE_INFINITY|name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|oscpu|options|outerHeight|outerWidth|ownerDocument|POSITIVE_INFINITY|PI|paddingBottom|paddingLeft|paddingRight|paddingTop|pageX|pageY|pageXOffset|pageYOffset|parent|parentLayer|parentNode|parentWindow|pathname|personalbar|pixelDepth|platform|plugins|pkcs11|port|prefix|previous|previousSibling|product|productSub|prompter|protocol|prototype|readyState|referrer|responseText|responseXML|right|rightContext|SQRT1_2|SQRT2|screenLeft|screenTop|screenX|screenY|scripts|scrollbars|security|securityPolicy|selected|selection|selectedIndex|self|siblingAbove|siblingBelow|src|source|status|statusbar|statusText|styleSheets|suffixes|systemLanguage|tags|target|text|textAlign|textDecoration|textIndent|textTransform|title|toolbar|top|type|URL|URLUnencoded|undefined|uniqueID|updateInterval|userAgent|userLanguage|userProfile|value|vendor|vendorSub|visibility|vLinkcolor|vspace|whiteSpace|width|XMLDocument|XSLDocument|x|y|zIndex)\\>"; + captures = { + 1 = { name = "keyword.property.js"; }; + }; + }, + + /* OBJECTS:: Event Handlers:: */ + { name = "keyword.event-handler.js"; + match = "\\<(onAbort|onActivate|onAfterprint|onAfterupdate|onBeforeactivate|onBeforecut|onBeforedeactivate|onBeforeeditfocus|onBeforepaste|onBeforeprint|onBeforeunload|onBeforeupdate|onBlur|onCellchange|onChange|onClick|onClose|onContextmenu|onControlselect|onCut|onDataavailable|onDatasetchanged|onDatasetcomplete|onDblclick|onDeactivate|onDrag|onDragdrop|onDragend|onDragenter|onDragleave|onDragover|onDragstart|onDrop|onError|onErrorupdate|onFocus|onHelp|onKeydown|onKeypress|onKeyup|onLoad|onMousedown|onMousemove|onMouseout|onMouseover|onMouseup|onPaste|onPropertychange|onReadystatechange|onReset|onResize|onResizeend|onResizestart|onRowenter|onRowexit|onRowsdelete|onRowsinserted|onScroll|onSelect|onSelectionchange|onSelectstart|onStop|onSubmit|onUnload)\\>"; + }, + + /* OPERATORS:: */ + { name = "keyword.operator.js"; + match = "(!|\\$|%|&|\\*|\\+|\\-|\\-\\-|\\+\\+|~|==|===|!=|!==|<>|<|>|<=|>=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|<<=|>>=|>>>=|&=|\\^=|\\|=)|\\<(in|instanceof|new|delete|typeof|void)\\>"; + }, + + /* CONSTANTS:: */ + { name = "constant.js"; + match = "\\<(Infinity|NaN|Undefined)\\>"; + }, - { begin = "(([=(]|^)\\s*)(/)(?![*/])"; end = "(/([igm]+)?)"; + { begin = "(([=(]|^)\\s*)(/)(?![*/])"; end = "(/([igm]+)?)"; beginCaptures = { 1 = { name = "dummy.regexp-start"; }; 3 = { name = "string.regexp.js"; };