Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit d7f5332

Browse files
WliuWliu
authored andcommitted
Merge pull request #321 from MaximSokolov/patch-1
Fix function/method calls being superseded
2 parents 558ce8d + da6cb67 commit d7f5332

File tree

2 files changed

+277
-184
lines changed

2 files changed

+277
-184
lines changed

grammars/javascript.cson

Lines changed: 128 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -617,16 +617,30 @@
617617
'name': 'meta.class.instance.constructor'
618618
}
619619
{
620-
'match': '\\b(console)\\b'
621-
'name': 'entity.name.type.object.js.console'
622-
}
623-
{
624-
'match': '\\b(\\.)(assert|clear|debug|error|info|log|profile|profileEnd|time|timeEnd|warn)(?=\\()'
625-
'captures':
626-
'1':
627-
'name': 'meta.delimiter.method.period.js'
628-
'2':
629-
'name': 'support.function.js.console'
620+
# console
621+
# console.log(arg1, "arg2", [...])
622+
'begin': '\\bconsole\\b'
623+
'beginCaptures':
624+
'0':
625+
'name': 'entity.name.type.object.console.js'
626+
'end': '(?!\\G)'
627+
'patterns': [
628+
{
629+
'begin': '\\s*(\\.)\\s*(assert|clear|debug|error|info|log|profile|profileEnd|time|timeEnd|warn)\\s*(?=\\()'
630+
'beginCaptures':
631+
'1':
632+
'name': 'meta.delimiter.method.period.js'
633+
'2':
634+
'name': 'support.function.console.js'
635+
'end': '(?<=\\))'
636+
'name': 'meta.method-call.js'
637+
'patterns': [
638+
{
639+
'include': '#arguments'
640+
}
641+
]
642+
}
643+
]
630644
}
631645
{
632646
'include': '#strings'
@@ -777,22 +791,6 @@
777791
'match': '(?<!\\$)\\b(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|Map|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|Set|String|Style|Submit|Symbol|screen|sun|Text|Textarea|WeakMap|WeakSet|window|XMLHttpRequest)\\b'
778792
'name': 'support.class.js'
779793
}
780-
{
781-
'match': '(\\.)?(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|scrollByLines|scrollY|scrollTo|stop|strike|sin|sizeToContent|sidebar|signText|sort|sup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|Month|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|Time|Hotkeys|Cursor|Timeout|Interval|ZOptions|Active|Resizable|RequestHeader)|search|sqrt|slice|savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|cos|concat|contextual|confirm|compile|ceil|clear|clearTimeout|clearInterval|captureEvents|call|createStyleSheet|createPopup|createEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|test|tan|taint|taintEnabled|isNaN|isFinite|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|untaint|unescape|unwatch|updateCommands|join|javaEnabled|pop|pow|push|plugins.refresh|paddings|parse|parseInt|parseFloat|print|prompt|preference|escape|enableExternalCapture|eval|elementFromPoint|exp|exec|execScript|execCommand|valueOf|UTC|queryCommandState|queryCommandIndeterm|queryCommandEnabled|queryCommandValue|find|file|fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|forward|floor|fromCharCode|watch|link|load|log|lastIndexOf|asin|anchor|acos|attachEvent|atob|atan|atan2|apply|alert|abs|abort|round|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|releaseCapture|releaseEvents|random|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|Time|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|Attention|Selection|ResponseHeader|AllResponseHeaders)|min|moveBy|moveBelow|moveTo|moveToAbsolute|moveAbove|mergeAttributes|match|margins|max|btoa|big|bold|borderWidths|blink|back)\\b(?=\\()'
782-
'captures':
783-
'1':
784-
'name': 'meta.delimiter.method.period.js'
785-
'2':
786-
'name': 'support.function.js'
787-
}
788-
{
789-
'match': '(\\.)(substringData|submit|splitText|setNamedItem|setAttribute|setAttributeNode|select|hasChildNodes|hasFeature|namedItem|click|close|cloneNode|createComment|createCDATASection|createCaption|createTHead|createTextNode|createTFoot|createDocumentFragment|createProcessingInstruction|createEntityReference|createElement|createAttribute|tabIndex|insertRow|insertBefore|insertCell|insertData|item|open|deleteRow|deleteCell|deleteCaption|deleteTHead|deleteTFoot|deleteData|focus|write|writeln|add|appendChild|appendData|reset|replaceChild|replaceData|move|moveNamedItem|moveChild|moveAttribute|moveAttributeNode|getNamedItem|getElementsByName|getElementsByTagName|getElementById|getAttribute|getAttributeNode|blur)\\b(?=\\\()'
790-
'captures':
791-
'1':
792-
'name': 'meta.delimiter.method.period.js'
793-
'2':
794-
'name': 'support.function.dom.js'
795-
}
796794
{
797795
'match': '(\\.)(systemLanguage|scripts|scrollbars|screenX|screenY|screenTop|screenLeft|style|styleSheets|status|statusText|statusbar|siblingBelow|siblingAbove|source|suffixes|security|securityPolicy|selection|self|history|host|hostname|hash|hasFocus|XMLDocument|XSLDocument|next|namespaces|namespaceURI|nameProp|MIN_VALUE|MAX_VALUE|characterSet|constructor|controllers|cookieEnabled|colorDepth|components|complete|current|cpuClass|clip|clipBoardData|clientInformation|closed|classes|callee|caller|crypto|toolbar|top|textTransform|textIndent|textDecoration|textAlign|tags|SQRT1_2|SQRT2|innerHeight|innerWidth|input|ids|ignoreCase|zIndex|oscpu|onreadystatechange|onLine|outerHeight|outerWidth|opsProfile|opener|offscreenBuffering|NEGATIVE_INFINITY|display|dialogHeight|dialogTop|dialogWidth|dialogLeft|dialogArguments|directories|description|defaultStatus|defaultChecked|defaultCharset|defaultView|userProfile|userLanguage|userAgent|uniqueID|undefined|updateInterval|_content|pixelDepth|port|personalbar|pkcs11|plugins|platform|pathname|paddingRight|paddingBottom|paddingTop|paddingLeft|parent|parentWindow|parentLayer|pageX|pageXOffset|pageY|pageYOffset|protocol|prototype|product|productSub|prompter|previous|prefix|encoding|enabledPlugin|external|expando|embeds|visiblity|vendor|vendorSub|vLinkcolor|URLUnencoded|PI|POSITIVE_INFINITY|filename|fontSize|fontFamily|fontWeight|formName|frames|frameElement|fgColor|E|whiteSpace|listStyleType|lineHeight|linkColor|location|locationbar|localName|lowsrc|length|left|leftContext|lastModified|lastMatch|lastIndex|lastParen|layers|layerX|language|appMinorVersion|appName|appCodeName|appCore|appVersion|availHeight|availTop|availWidth|availLeft|all|arity|arguments|aLinkcolor|above|right|rightContext|responseXML|responeText|readyState|global|x|y|z|mimeTypes|multiline|menubar|marginRight|marginBottom|marginTop|marginLeft|LN10|LN2|LOG10E|LOG2E|bottom|border(Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth)|bufferDepth|below|backgroundColor|backgroundImage)\\b'
798796
'captures':
@@ -813,14 +811,6 @@
813811
'match': '\\b(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|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)\\b'
814812
'name': 'support.constant.dom.js'
815813
}
816-
{
817-
'match': '\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|Before(cut|deactivate|unload|update|paste|print|editfocus|activate)|Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\b'
818-
'name': 'support.function.event-handler.js'
819-
}
820-
{
821-
'match': '(?<!\\.)\\b(require)(?!\\s*:)\\b'
822-
'name': 'support.function.js'
823-
}
824814
{
825815
'match': '(?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b|(?<=\\?)(?:\\s*)(module|exports|__filename|__dirname|global|process)(?=\\s*:)'
826816
'captures':
@@ -853,10 +843,10 @@
853843
'include': '#operators'
854844
}
855845
{
856-
'include': '#method_call'
846+
'include': '#method_calls'
857847
}
858848
{
859-
'include': '#function_call'
849+
'include': '#function_calls'
860850
}
861851
{
862852
'include': '#numbers'
@@ -1185,25 +1175,94 @@
11851175
'arguments':
11861176
'patterns': [
11871177
{
1188-
'include': '$self'
1178+
'begin': '\\('
1179+
'beginCaptures':
1180+
'0':
1181+
'name': 'punctuation.definition.arguments.begin.bracket.round.js'
1182+
'end': '\\)'
1183+
'endCaptures':
1184+
'0':
1185+
'name': 'punctuation.definition.arguments.end.bracket.round.js'
1186+
'name': 'meta.arguments.js'
1187+
'patterns': [
1188+
{
1189+
'include': '$self'
1190+
}
1191+
]
11891192
}
11901193
]
1191-
'method_call':
1194+
'method_calls':
11921195
'patterns': [
11931196
{
1194-
'comment': '.methodCall(arg1, "arg2", [...])'
1195-
'begin': '(\\.)([a-zA-Z_$][\\w$]*)\\s*(\\()'
1197+
# .methodCall(arg1, "arg2", [...])
1198+
'begin': '(\\.)\\s*([\\w$]+)\\s*(?=\\()'
11961199
'beginCaptures':
11971200
'1':
11981201
'name': 'meta.delimiter.method.period.js'
11991202
'2':
1200-
'name': 'entity.name.function.js'
1201-
'3':
1202-
'name': 'punctuation.definition.arguments.begin.js'
1203-
'end': '\\)'
1204-
'endCaptures':
1205-
'0':
1206-
'name': 'punctuation.definition.arguments.end.js'
1203+
'patterns': [
1204+
{
1205+
'match': '''(?x)
1206+
\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|
1207+
Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|
1208+
Before(cut|deactivate|unload|update|paste|print|editfocus|activate)|
1209+
Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|
1210+
Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|
1211+
Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|
1212+
Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|
1213+
Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\b
1214+
'''
1215+
'name': 'support.function.event-handler.js'
1216+
}
1217+
{
1218+
'match': '''(?x)
1219+
\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|
1220+
scrollByLines|scrollY|scrollTo|stop|strike|sin|sizeToContent|sidebar|signText|sort|
1221+
sup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|
1222+
Month|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|
1223+
Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|sqrt|slice|
1224+
savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|cos|concat|
1225+
contextual|confirm|compile|ceil|clear|captureEvents|call|createStyleSheet|createPopup|
1226+
createEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|
1227+
test|tan|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|
1228+
untaint|unwatch|updateCommands|join|javaEnabled|pop|pow|push|plugins.refresh|paddings|parse|
1229+
print|prompt|preference|enableExternalCapture|elementFromPoint|exp|exec|execScript|
1230+
execCommand|valueOf|UTC|queryCommandState|queryCommandIndeterm|queryCommandEnabled|
1231+
queryCommandValue|find|file|fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|
1232+
fixed|fontsize|fontcolor|forward|floor|fromCharCode|watch|link|load|log|lastIndexOf|
1233+
asin|anchor|acos|attachEvent|atob|atan|atan2|apply|alert|abs|abort|round|routeEvents|
1234+
resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|releaseCapture|
1235+
releaseEvents|random|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|
1236+
Time|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|
1237+
Attention|Selection|ResponseHeader|AllResponseHeaders)|min|moveBy|moveBelow|moveTo|
1238+
moveToAbsolute|moveAbove|mergeAttributes|match|margins|max|btoa|big|bold|borderWidths|blink|back)\\b
1239+
'''
1240+
'name': 'support.function.js'
1241+
}
1242+
{
1243+
'match': '''(?x)
1244+
\\b(substringData|submit|splitText|setNamedItem|setAttribute|setAttributeNode|select|
1245+
hasChildNodes|hasFeature|namedItem|click|close|cloneNode|createComment|createCDATASection|
1246+
createCaption|createTHead|createTextNode|createTFoot|createDocumentFragment|
1247+
createProcessingInstruction|createEntityReference|createElement|createAttribute|
1248+
tabIndex|insertRow|insertBefore|insertCell|insertData|item|open|deleteRow|deleteCell|
1249+
deleteCaption|deleteTHead|deleteTFoot|deleteData|focus|write|writeln|add|appendChild|
1250+
appendData|reset|replaceChild|replaceData|move|moveNamedItem|moveChild|moveAttribute|
1251+
moveAttributeNode|getNamedItem|getElementsByName|getElementsByTagName|getElementById|
1252+
getAttribute|getAttributeNode|blur)\\b
1253+
'''
1254+
'name': 'support.function.dom.js'
1255+
}
1256+
{
1257+
'match': "[a-zA-Z_$][\\w$]*"
1258+
'name': 'entity.name.function.js'
1259+
}
1260+
{
1261+
'match': '\\d[\\w$]*'
1262+
'name': 'invalid.illegal.identifier.js'
1263+
}
1264+
]
1265+
'end': '(?<=\\))'
12071266
'name': 'meta.method-call.js'
12081267
'patterns': [
12091268
{
@@ -1212,22 +1271,32 @@
12121271
]
12131272
}
12141273
]
1215-
'function_call':
1274+
'function_calls':
12161275
'patterns': [
12171276
{
1218-
'comment': 'functionCall(arg1, "arg2", [...])'
1219-
'begin': '(?:(\\d\\w*)|([a-zA-Z_$][\\w$]*))\\s*(\\()'
1277+
# functionCall(arg1, "arg2", [...])
1278+
'begin': '([\\w$]+)\\s*(?=\\()'
12201279
'beginCaptures':
12211280
'1':
1222-
'name': 'invalid.illegal.identifier.js'
1223-
'2':
1224-
'name': 'entity.name.function.js'
1225-
'3':
1226-
'name': 'punctuation.definition.arguments.begin.js'
1227-
'end': '\\)'
1228-
'endCaptures':
1229-
'0':
1230-
'name': 'punctuation.definition.arguments.end.js'
1281+
'patterns': [
1282+
{
1283+
'match': '''(?x)
1284+
\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|
1285+
decodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|
1286+
require|set(Interval|Timeout)|clear(Interval|Timeout))\\b
1287+
'''
1288+
'name': 'support.function.js'
1289+
}
1290+
{
1291+
'match': "[a-zA-Z_$][\\w$]*"
1292+
'name': 'entity.name.function.js'
1293+
}
1294+
{
1295+
'match': '\\d[\\w$]*'
1296+
'name': 'invalid.illegal.identifier.js'
1297+
}
1298+
]
1299+
'end': '(?<=\\))'
12311300
'name': 'meta.function-call.js'
12321301
'patterns': [
12331302
{

0 commit comments

Comments
 (0)