github-linguist 4.8.15 → 4.8.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +206 -58
  3. data/grammars/hint.message.haskell.json +206 -58
  4. data/grammars/hint.type.haskell.json +206 -58
  5. data/grammars/source.actionscript.3.json +20 -22
  6. data/grammars/source.bsl.json +41 -9
  7. data/grammars/source.c++.json +2 -2
  8. data/grammars/source.clojure.json +3 -2
  9. data/grammars/source.coffee.json +32 -50
  10. data/grammars/source.crystal.json +21 -9
  11. data/grammars/source.cs.json +6 -0
  12. data/grammars/source.css.less.json +11 -11
  13. data/grammars/source.elixir.json +3 -3
  14. data/grammars/source.emacs.lisp.json +105 -11
  15. data/grammars/source.gfm.json +147 -0
  16. data/grammars/source.haskell.json +202 -147
  17. data/grammars/source.js.embedded.html.json +10 -0
  18. data/grammars/source.js.json +73 -26
  19. data/grammars/source.lean.json +8 -4
  20. data/grammars/source.litcoffee.json +1 -0
  21. data/grammars/source.mql5.json +214 -0
  22. data/grammars/source.objc.json +1 -1
  23. data/grammars/source.pic.json +67 -22
  24. data/grammars/source.python.json +6 -6
  25. data/grammars/source.sdbl.json +1 -1
  26. data/grammars/source.shell.json +1 -1
  27. data/grammars/source.sqf.json +5 -1
  28. data/grammars/source.swift.json +2564 -707
  29. data/grammars/source.ts.json +2581 -702
  30. data/grammars/source.tsx.json +2779 -841
  31. data/grammars/source.yaml.json +2 -2
  32. data/grammars/text.html.asdoc.json +0 -2
  33. data/grammars/text.html.handlebars.json +1 -1
  34. data/grammars/text.restructuredtext.json +37 -8
  35. data/grammars/text.roff.json +9 -1
  36. data/grammars/text.shell-session.json +1 -1
  37. data/grammars/text.tex.latex.haskell.json +207 -152
  38. data/grammars/text.xml.flex-config.json +0 -2
  39. data/lib/linguist/heuristics.rb +2 -2
  40. data/lib/linguist/languages.json +1 -1
  41. data/lib/linguist/languages.yml +85 -32
  42. data/lib/linguist/samples.json +2046 -114
  43. data/lib/linguist/vendor.yml +6 -0
  44. data/lib/linguist/version.rb +1 -1
  45. metadata +7 -5
@@ -851,7 +851,7 @@
851
851
  "name": "meta.property-with-attributes.objc",
852
852
  "patterns": [
853
853
  {
854
- "match": "\\b(getter|setter|readonly|readwrite|assign|retain|copy|atomic|nonatomic|strong|weak|nullable|nonnull)\\b",
854
+ "match": "\\b(getter|setter|readonly|readwrite|assign|retain|copy|atomic|nonatomic|strong|weak|nullable|nonnull|class)\\b",
855
855
  "name": "keyword.other.property.attribute"
856
856
  }
857
857
  ]
@@ -7,26 +7,17 @@
7
7
  ],
8
8
  "firstLineMatch": "^#[!/].*\\bpic2plot\\b",
9
9
  "patterns": [
10
+ {
11
+ "include": "#binary"
12
+ },
10
13
  {
11
14
  "include": "#tags"
12
15
  },
13
16
  {
14
- "begin": "^(?=[.'][ \t]*(?:\\w|\\\\))",
15
- "end": "(?<!\\\\)$|(\\\\\".*)$",
16
- "patterns": [
17
- {
18
- "include": "text.roff"
19
- }
20
- ],
21
- "endCaptures": {
22
- "1": {
23
- "patterns": [
24
- {
25
- "include": "text.roff"
26
- }
27
- ]
28
- }
29
- }
17
+ "include": "#embedded-roff"
18
+ },
19
+ {
20
+ "include": "#embedded-latex"
30
21
  },
31
22
  {
32
23
  "include": "#main"
@@ -98,6 +89,11 @@
98
89
  }
99
90
  }
100
91
  },
92
+ "binary": {
93
+ "name": "raw.binary.data",
94
+ "begin": "^(?=.*[\\x00-\\x06\\x{FFFD}])",
95
+ "end": "(?=A)B"
96
+ },
101
97
  "boolean": {
102
98
  "name": "constant.boolean.$1.dformat.pic",
103
99
  "match": "\\b(true|false|on|off)\\b"
@@ -359,6 +355,37 @@
359
355
  }
360
356
  ]
361
357
  },
358
+ "embedded-latex": {
359
+ "name": "source.embedded.tex.pic",
360
+ "match": "^(?:\\\\\\w|%).*$",
361
+ "captures": {
362
+ "0": {
363
+ "patterns": [
364
+ {
365
+ "include": "text.tex"
366
+ }
367
+ ]
368
+ }
369
+ }
370
+ },
371
+ "embedded-roff": {
372
+ "begin": "^(?=[.'][ \t]*(?:\\w|\\\\))",
373
+ "end": "(?<!\\\\)$|(\\\\\".*)$",
374
+ "patterns": [
375
+ {
376
+ "include": "text.roff"
377
+ }
378
+ ],
379
+ "endCaptures": {
380
+ "1": {
381
+ "patterns": [
382
+ {
383
+ "include": "text.roff"
384
+ }
385
+ ]
386
+ }
387
+ }
388
+ },
362
389
  "escaped-newline": {
363
390
  "name": "constant.character.escape.newline.pic",
364
391
  "begin": "\\\\$\\n?",
@@ -517,7 +544,7 @@
517
544
  ]
518
545
  },
519
546
  "label": {
520
- "match": "([A-Z][^#\\s:]*)(:)",
547
+ "match": "([A-Z][^#(\"\\s:]*)(:)",
521
548
  "captures": {
522
549
  "1": {
523
550
  "name": "storage.type.label.pic"
@@ -590,6 +617,10 @@
590
617
  },
591
618
  "operators": {
592
619
  "patterns": [
620
+ {
621
+ "match": "<->|<-|->",
622
+ "name": "keyword.operator.arrow.pic"
623
+ },
593
624
  {
594
625
  "match": "[=><]=?|!=|&&|\\|\\|",
595
626
  "name": "keyword.operator.comparison.pic"
@@ -598,10 +629,6 @@
598
629
  "match": ":?=",
599
630
  "name": "keyword.operator.assignment.pic"
600
631
  },
601
- {
602
- "match": "<-|<->|->",
603
- "name": "keyword.operator.arrow.pic"
604
- },
605
632
  {
606
633
  "match": "[-/+*%^]",
607
634
  "name": "keyword.operator.arithmetic.pic"
@@ -679,7 +706,25 @@
679
706
  },
680
707
  "patterns": [
681
708
  {
682
- "include": "text.roff#escapes"
709
+ "name": "constant.character.escape.pic",
710
+ "match": "(\\\\)[\\\\\"]",
711
+ "captures": {
712
+ "1": {
713
+ "name": "punctuation.definition.escape.pic"
714
+ }
715
+ }
716
+ },
717
+ {
718
+ "match": "(?:[^\"\\\\]|\\\\[^\"])+",
719
+ "captures": {
720
+ "0": {
721
+ "patterns": [
722
+ {
723
+ "include": "text.roff#escapes"
724
+ }
725
+ ]
726
+ }
727
+ }
683
728
  }
684
729
  ]
685
730
  },
@@ -553,16 +553,16 @@
553
553
  },
554
554
  "number-float": {
555
555
  "name": "constant.numeric.float.python",
556
- "match": "(?x)\n (?<! \\w)(?:\n [0-9]*\\.[0-9]+ ([eE][+-]?[0-9]+)?\n | [0-9]+\\. ([eE][+-]?[0-9]+)?\n | [0-9]+ ([eE][+-]?[0-9]+)\n )([jJ])?\\b\n",
556
+ "match": "(?x)\n (?<! \\w)(?:\n (?:\n \\.[0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\.\n ) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?\n |\n [0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )\n )([jJ])?\\b\n",
557
557
  "captures": {
558
- "4": {
558
+ "1": {
559
559
  "name": "storage.type.imaginary.number.python"
560
560
  }
561
561
  }
562
562
  },
563
563
  "number-dec": {
564
564
  "name": "constant.numeric.dec.python",
565
- "match": "(?x)\n (?<![\\w\\.])(?:\n [1-9][0-9]*\n |\n 0+\n |\n [0-9]+ ([jJ])\n |\n 0 ([0-9]+)(?![eE\\.])\n )\\b\n",
565
+ "match": "(?x)\n (?<![\\w\\.])(?:\n [1-9](?: _?[0-9] )*\n |\n 0+\n |\n [0-9](?: _?[0-9] )* ([jJ])\n |\n 0 ([0-9]+)(?![eE\\.])\n )\\b\n",
566
566
  "captures": {
567
567
  "1": {
568
568
  "name": "storage.type.imaginary.number.python"
@@ -577,7 +577,7 @@
577
577
  },
578
578
  "number-hex": {
579
579
  "name": "constant.numeric.hex.python",
580
- "match": "(?x)\n (?<![\\w\\.])\n (0[xX]) [0-9a-fA-F]+\n \\b\n",
580
+ "match": "(?x)\n (?<![\\w\\.])\n (0[xX]) (_?[0-9a-fA-F])+\n \\b\n",
581
581
  "captures": {
582
582
  "1": {
583
583
  "name": "storage.type.number.python"
@@ -586,7 +586,7 @@
586
586
  },
587
587
  "number-oct": {
588
588
  "name": "constant.numeric.oct.python",
589
- "match": "(?x)\n (?<![\\w\\.])\n (0[oO]) [0-7]+\n \\b\n",
589
+ "match": "(?x)\n (?<![\\w\\.])\n (0[oO]) (_?[0-7])+\n \\b\n",
590
590
  "captures": {
591
591
  "1": {
592
592
  "name": "storage.type.number.python"
@@ -595,7 +595,7 @@
595
595
  },
596
596
  "number-bin": {
597
597
  "name": "constant.numeric.bin.python",
598
- "match": "(?x)\n (?<![\\w\\.])\n (0[bB]) [01]+\n \\b\n",
598
+ "match": "(?x)\n (?<![\\w\\.])\n (0[bB]) (_?[01])+\n \\b\n",
599
599
  "captures": {
600
600
  "1": {
601
601
  "name": "storage.type.number.python"
@@ -58,7 +58,7 @@
58
58
  },
59
59
  {
60
60
  "name": "keyword.control.sdbl",
61
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Выбрать|Select|Разрешенные|Allowed|Различные|Distinct|Первые|Top|Как|As|ПустаяТаблица|EpmtyTable|Поместить|Into|Уничтожить|Drop|Из|From|((Левое|Left|Правое|Right|Полное|Full)\\s+(Внешнее|Outer\\s+)?Соединение|Join)|((Внутреннее\\s+|Inner\\s+)?Соединение|Join)|Где|Where|(Сгруппировать\\s+По)|(Group\\s+By)|Имеющие|Having|Объединить(\\s+Все)?|Union(\\s+All)?|(Упорядочить\\s+По)|(Order\\s+By)|Автоупорядочивание|Autoorder|Итоги|Totals|По(\\s+Общие)?|By(\\s+Overall)|(Только\\s+)?Иерархия|(Only\\s+)Hierarchy|Периодами|Periods|Индексировать|Index|Выразить|Cast|Возр|Asc|Убыв|Desc|Для\\s+Изменения|(For\\sUpdate(\\s+Of)?)|Спецсимвол|Escape)(?=[^\\wа-яё\\.]|$)"
61
+ "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Выбрать|Select|Разрешенные|Allowed|Различные|Distinct|Первые|Top|Как|As|ПустаяТаблица|EpmtyTable|Поместить|Into|Уничтожить|Drop|Из|From|((Левое|Left|Правое|Right|Полное|Full)\\s+(Внешнее\\s+|Outer\\s+)?Соединение|Join)|((Внутреннее\\s+|Inner\\s+)?Соединение|Join)|Где|Where|(Сгруппировать\\s+По)|(Group\\s+By)|Имеющие|Having|Объединить(\\s+Все)?|Union(\\s+All)?|(Упорядочить\\s+По)|(Order\\s+By)|Автоупорядочивание|Autoorder|Итоги|Totals|По(\\s+Общие)?|By(\\s+Overall)|(Только\\s+)?Иерархия|(Only\\s+)Hierarchy|Периодами|Periods|Индексировать|Index|Выразить|Cast|Возр|Asc|Убыв|Desc|Для\\s+Изменения|(For\\sUpdate(\\s+Of)?)|Спецсимвол|Escape)(?=[^\\wа-яё\\.]|$)"
62
62
  },
63
63
  {
64
64
  "comment": "Функции языка запросов",
@@ -26,7 +26,7 @@
26
26
  "bats",
27
27
  "ebuild"
28
28
  ],
29
- "firstLineMatch": "^#!.*\\b(bash|zsh|sh|tcsh|ksh|dash|ash|csh|rc)|(?i:^\\s*#\\s*-\\*-[^*]*mode:\\s*shell-script[^*]*-\\*-)",
29
+ "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/)\n (?:bash|zsh|sh|tcsh|ksh|dash|ash|csh|rc)\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n (?:shell-script|sh)\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s* set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n sh\n (?=\\s|:|$)\n)",
30
30
  "patterns": [
31
31
  {
32
32
  "include": "#comment"
@@ -12,12 +12,16 @@
12
12
  "foldingStartMarker": "(\\{\\s*(#.*)?$)",
13
13
  "foldingStopMarker": "^\\s*(\\})",
14
14
  "patterns": [
15
+ {
16
+ "match": "\\#define|\\#undef|\\#ifdef|\\#ifndef|\\#else|\\#endif|\\#include|__EVAL|__EXEC|__FILE__|__LINE__",
17
+ "name": "keyword.other.sqf"
18
+ },
15
19
  {
16
20
  "match": "\\b(?i:DIK_0|DIK_1|DIK_2|DIK_3|DIK_4|DIK_5|DIK_6|DIK_7|DIK_8|DIK_9|DIK_A|DIK_ABNT_C1|DIK_ABNT_C2|DIK_ADD|DIK_APOSTROPHE|DIK_APPS|DIK_AT|DIK_AX|DIK_B|DIK_BACK|DIK_BACKSLASH|DIK_BACKSPACE|DIK_C|DIK_CALCULATOR|DIK_CAPITAL|DIK_CAPSLOCK|DIK_CIRCUMFLEX|DIK_COLON|DIK_COMMA|DIK_CONVERT|DIK_D|DIK_DECIMAL|DIK_DELETE|DIK_DIVIDE|DIK_DOWN|DIK_DOWNARROW|DIK_E|DIK_END|DIK_EQUALS|DIK_ESCAPE|DIK_F|DIK_F1|DIK_F10|DIK_F11|DIK_F12|DIK_F13|DIK_F14|DIK_F15|DIK_F2|DIK_F3|DIK_F4|DIK_F5|DIK_F6|DIK_F7|DIK_F8|DIK_F9|DIK_G|DIK_GRAVE|DIK_H|DIK_HOME|DIK_I|DIK_INSERT|DIK_J|DIK_K|DIK_KANA|DIK_KANJI|DIK_L|DIK_LALT|DIK_LBRACKET|DIK_LCONTROL|DIK_LEFT|DIK_LEFTARROW|DIK_LMENU|DIK_LSHIFT|DIK_LWIN|DIK_M|DIK_MAIL|DIK_MEDIASELECT|DIK_MEDIASTOP|DIK_MINUS|DIK_MULTIPLY|DIK_MUTE|DIK_MYCOMPUTER|DIK_N|DIK_NEXT|DIK_NEXTTRACK|DIK_NOCONVERT|DIK_NUMLOCK|DIK_NUMPAD0|DIK_NUMPAD1|DIK_NUMPAD2|DIK_NUMPAD3|DIK_NUMPAD4|DIK_NUMPAD5|DIK_NUMPAD6|DIK_NUMPAD7|DIK_NUMPAD8|DIK_NUMPAD9|DIK_NUMPADCOMMA|DIK_NUMPADENTER|DIK_NUMPADEQUALS|DIK_NUMPADMINUS|DIK_NUMPADPERIOD|DIK_NUMPADPLUS|DIK_NUMPADSLASH|DIK_NUMPADSTAR|DIK_O|DIK_OEM_102|DIK_P|DIK_PAUSE|DIK_PERIOD|DIK_PGDN|DIK_PGUP|DIK_PLAYPAUSE|DIK_POWER|DIK_PREVTRACK|DIK_PRIOR|DIK_Q|DIK_R|DIK_RALT|DIK_RBRACKET|DIK_RCONTROL|DIK_RETURN|DIK_RIGHT|DIK_RIGHTARROW|DIK_RMENU|DIK_RSHIFT|DIK_RWIN|DIK_S|DIK_SCROLL|DIK_SEMICOLON|DIK_SLASH|DIK_SLEEP|DIK_SPACE|DIK_STOP|DIK_SUBTRACT|DIK_SYSRQ|DIK_T|DIK_TAB|DIK_U|DIK_UNDERLINE|DIK_UNLABELED|DIK_UP|DIK_UPARROW|DIK_V|DIK_VOLUMEDOWN|DIK_VOLUMEUP|DIK_W|DIK_WAKE|DIK_WEBBACK|DIK_WEBFAVORITES|DIK_WEBFORWARD|DIK_WEBHOME|DIK_WEBREFRESH|DIK_WEBSEARCH|DIK_WEBSTOP|DIK_X|DIK_Y|DIK_YEN|DIK_Z|private|if|then|else|exitWith|while|do|switch|case|default|for|from|to|step|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|try|throw|catch|scopeName|breakTo|breakOut|with|call|spawn|preprocessFile|preprocessFileLineNumbers|execVM|execFSM|nil|true|false|not|and|or|_exception|_forEachIndex|_this|_thisFSM|_thisList|_thisScript|_x)\\b|\\:|\\!|&&|\\|\\||>>",
17
21
  "name": "keyword.control.sqf"
18
22
  },
19
23
  {
20
- "match": "\\b(?i:abs|accTime|acos|action|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityRTD|airportSide|AISFinishHeal|alive|all3DENEntities|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|and|animate|animateDoor|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|breakOut|breakTo|briefingName|buildingExit|buildingPos|buttonAction|buttonSetAction|cadetMode|call|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canUnloadInCombat|canVehicleCargo|captive|captiveNum|case|catch|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPMissionsDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlType|ctrlVisible|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|default|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureSlowFrame|diag_codePerformance|diag_fps|diag_fpsMin|diag_frameNo|diag_log|diag_logSlowFrame|diag_tickTime|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|driver|drop|east|echo|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|else|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableTeamSwitch|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesRpmRTD|enginesTorqueRTD|entities|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|execEditorScript|execFSM|execVM|exitWith|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|false|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|for|forceAddUniform|forcedMap|forceEnd|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|from|fromEditor|fuel|fullCrew|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllHitPointsDamage|getAllOwnedMines|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getConnectedUAV|getCustomAimingCoef|getDammage|getDescription|getDir|getDirVisual|getDLCs|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getFatigue|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getModelInfo|getMousePosition|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPlayerChannel|getPlayerScores|getPlayerUID|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getShadowDistance|getShotParents|getSlingLoad|getSpeed|getStamina|getSuppression|getTerrainHeightASL|getText|getUnitLoadout|getUnitTrait|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|if|image|importAllGroups|importance|in|inArea|incapacitatedState|independent|inflame|inflamed|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isArray|isAutoHoverOn|isAutonomous|isAutotest|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isServer|isShowing3DIcons|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUniformAllowed|isVehicleCargo|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbSelection|lbSetColor|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbSetColor|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetText|lnbSetValue|lnbSize|lnbText|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|mod|modelToWorld|modelToWorldVisual|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nil|nMenuItems|not|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openMap|openYoutubeVideo|opfor|or|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|preprocessFile|preprocessFileLineNumbers|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|private|processDiaryLink|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerRemoteExecFunc|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponGlobal|removeWeaponTurret|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safezoneH|safezoneW|safezoneWAbs|safezoneX|safezoneXAbs|safezoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|scopeName|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectNoPlayer|selectPlayer|selectRandom|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setAirportSide|setAmmo|setAmmoCargo|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTi|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDropInterval|setEditorMode|setEditorObjectScope|setEffectCondition|setFace|setFaceAnimation|setFatigue|setFlagOwner|setFlagSide|setFlagTexture|setFog|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotLight|setPiPEffect|setPitch|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setShadowDistance|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleLock|setVehiclePosition|setVehicleTiPars|setVehicleVarName|setVelocity|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|spawn|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|step|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switch|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|text|textLog|textLogFormat|tg|then|throw|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|to|toArray|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|true|try|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvPicture|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAISteeringComponent|useAudioTimeForMoves|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|while|wind|windDir|windStr|wingsForcesRTD|with|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\\b",
24
+ "match": "\\b(?i:abs|accTime|acos|action|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityRTD|airportSide|AISFinishHeal|alive|all3DENEntities|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|and|animate|animateDoor|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|breakOut|breakTo|briefingName|buildingExit|buildingPos|buttonAction|buttonSetAction|cadetMode|call|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canUnloadInCombat|canVehicleCargo|captive|captiveNum|case|catch|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPMissionsDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlType|ctrlVisible|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|default|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureSlowFrame|diag_codePerformance|diag_fps|diag_fpsMin|diag_frameNo|diag_log|diag_logSlowFrame|diag_tickTime|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|driver|drop|east|echo|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|else|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableTeamSwitch|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesRpmRTD|enginesTorqueRTD|entities|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|execEditorScript|execFSM|execVM|exitWith|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|false|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|for|forceAddUniform|forcedMap|forceEnd|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|from|fromEditor|fuel|fullCrew|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllHitPointsDamage|getAllOwnedMines|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getConnectedUAV|getCustomAimingCoef|getDammage|getDescription|getDir|getDirVisual|getDLCs|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getFatigue|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getModelInfo|getMousePosition|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlayerChannel|getPlayerScores|getPlayerUID|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getShadowDistance|getShotParents|getSlingLoad|getSpeed|getStamina|getSuppression|getTerrainHeightASL|getText|getUnitLoadout|getUnitTrait|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|if|image|importAllGroups|importance|in|inArea|incapacitatedState|independent|inflame|inflamed|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isArray|isAutoHoverOn|isAutonomous|isAutotest|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isServer|isShowing3DIcons|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUniformAllowed|isVehicleCargo|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbSelection|lbSetColor|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbSetColor|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetText|lnbSetValue|lnbSize|lnbText|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|mod|modelToWorld|modelToWorldVisual|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nil|nMenuItems|not|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openMap|openYoutubeVideo|opfor|or|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|preprocessFile|preprocessFileLineNumbers|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|private|processDiaryLink|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerRemoteExecFunc|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponGlobal|removeWeaponTurret|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safezoneH|safezoneW|safezoneWAbs|safezoneX|safezoneXAbs|safezoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|scopeName|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectNoPlayer|selectPlayer|selectRandom|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setAirportSide|setAmmo|setAmmoCargo|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTi|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDropInterval|setEditorMode|setEditorObjectScope|setEffectCondition|setFace|setFaceAnimation|setFatigue|setFlagOwner|setFlagSide|setFlagTexture|setFog|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setShadowDistance|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleLock|setVehiclePosition|setVehicleTiPars|setVehicleVarName|setVelocity|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|spawn|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|step|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switch|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|text|textLog|textLogFormat|tg|then|throw|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|to|toArray|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|true|try|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvPicture|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAISteeringComponent|useAudioTimeForMoves|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|while|wind|windDir|windStr|wingsForcesRTD|with|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\\b",
21
25
  "name": "support.function.sqf"
22
26
  },
23
27
  {
@@ -7,89 +7,14 @@
7
7
  "name": "Swift",
8
8
  "patterns": [
9
9
  {
10
- "include": "#shebang-line"
11
- },
12
- {
13
- "include": "#comment"
14
- },
15
- {
16
- "include": "#attribute"
17
- },
18
- {
19
- "include": "#literal"
20
- },
21
- {
22
- "include": "#operator"
23
- },
24
- {
25
- "include": "#declaration"
26
- },
27
- {
28
- "include": "#storage-type"
29
- },
30
- {
31
- "include": "#keyword"
32
- },
33
- {
34
- "include": "#type"
35
- },
36
- {
37
- "include": "#builtin-global-function"
38
- },
39
- {
40
- "include": "#builtin-function"
41
- },
42
- {
43
- "include": "#builtin-property"
44
- },
45
- {
46
- "include": "#builtin-static-property"
47
- },
48
- {
49
- "include": "#builtin-constant"
50
- },
51
- {
52
- "include": "#section-punctuation"
10
+ "include": "#root"
53
11
  }
54
12
  ],
55
13
  "repository": {
56
- "arithmetic-operator": {
57
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(\\+|\\-|\\*|\\/)(?![/=\\-+!*%<>&|\\^~.])",
58
- "name": "keyword.operator.arithmetic.swift"
59
- },
60
- "array-type": {
61
- "begin": "\\b(Array)(\\[)",
62
- "beginCaptures": {
63
- "1": {
64
- "name": "support.type.array.swift"
65
- },
66
- "2": {
67
- "name": "punctuation.definition.array.begin.swift"
68
- }
69
- },
70
- "end": "(\\])",
71
- "endCaptures": {
72
- "1": {
73
- "name": "punctuation.definition.array.end.swift"
74
- }
75
- },
76
- "name": "meta.array.swift",
77
- "patterns": [
78
- {
79
- "include": "$self"
80
- }
81
- ]
82
- },
83
- "assignment-operator": {
84
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(\\+|\\-|\\*|\\/|%|<<|>>|&|\\^|\\||&&|\\|\\|)?=(?![/=\\-+!*%<>&|\\^~.])",
85
- "name": "keyword.operator.assignment.swift"
86
- },
87
- "attribute": {
88
- "comment": "attribute",
89
- "name": "meta.attribute.swift",
14
+ "attributes": {
90
15
  "patterns": [
91
16
  {
92
- "begin": "((@)(\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B))(\\()",
17
+ "begin": "((@)available)(\\()",
93
18
  "beginCaptures": {
94
19
  "1": {
95
20
  "name": "storage.modifier.attribute.swift"
@@ -98,101 +23,246 @@
98
23
  "name": "punctuation.definition.attribute.swift"
99
24
  },
100
25
  "3": {
101
- "name": "punctuation.definition.attribute-arguments.begin.swift"
26
+ "name": "punctuation.definition.arguments.begin.swift"
102
27
  }
103
28
  },
104
- "contentName": "meta.attribute.arguments.swift",
105
29
  "end": "\\)",
106
30
  "endCaptures": {
107
31
  "0": {
108
- "name": "punctuation.definition.attribute-arguments.end.swift"
32
+ "name": "punctuation.definition.arguments.end.swift"
109
33
  }
110
34
  },
35
+ "name": "meta.attribute.available.swift",
111
36
  "patterns": [
112
37
  {
113
- "include": "$self"
38
+ "captures": {
39
+ "1": {
40
+ "name": "keyword.other.platform.os.swift"
41
+ },
42
+ "2": {
43
+ "name": "constant.numeric.swift"
44
+ }
45
+ },
46
+ "match": "\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?"
47
+ },
48
+ {
49
+ "begin": "\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*",
50
+ "beginCaptures": {
51
+ "1": {
52
+ "name": "keyword.other.swift"
53
+ },
54
+ "2": {
55
+ "name": "punctuation.separator.key-value.swift"
56
+ }
57
+ },
58
+ "end": "(?!\\G)",
59
+ "patterns": [
60
+ {
61
+ "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
62
+ "name": "constant.numeric.swift"
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
68
+ "beginCaptures": {
69
+ "1": {
70
+ "name": "keyword.other.swift"
71
+ },
72
+ "2": {
73
+ "name": "punctuation.separator.key-value.swift"
74
+ }
75
+ },
76
+ "end": "(?!\\G)",
77
+ "patterns": [
78
+ {
79
+ "include": "#literals"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "captures": {
85
+ "1": {
86
+ "name": "keyword.other.platform.all.swift"
87
+ },
88
+ "2": {
89
+ "name": "keyword.other.swift"
90
+ },
91
+ "3": {
92
+ "name": "invalid.illegal.character-not-allowed-here.swift"
93
+ }
94
+ },
95
+ "match": "(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])"
114
96
  }
115
97
  ]
116
98
  },
117
99
  {
118
- "captures": {
100
+ "begin": "((@)objc)(\\()",
101
+ "beginCaptures": {
119
102
  "1": {
120
103
  "name": "storage.modifier.attribute.swift"
121
104
  },
122
105
  "2": {
123
106
  "name": "punctuation.definition.attribute.swift"
107
+ },
108
+ "3": {
109
+ "name": "punctuation.definition.arguments.begin.swift"
110
+ }
111
+ },
112
+ "end": "\\)",
113
+ "endCaptures": {
114
+ "0": {
115
+ "name": "punctuation.definition.arguments.end.swift"
116
+ }
117
+ },
118
+ "name": "meta.attribute.objc.swift",
119
+ "patterns": [
120
+ {
121
+ "captures": {
122
+ "1": {
123
+ "name": "invalid.illegal.missing-colon-after-selector-piece.swift"
124
+ }
125
+ },
126
+ "match": "\\w*(?::(?:\\w*:)*(\\w*))?",
127
+ "name": "entity.name.function.swift"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "begin": "(@)(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)",
133
+ "beginCaptures": {
134
+ "0": {
135
+ "name": "storage.modifier.attribute.swift"
136
+ },
137
+ "1": {
138
+ "name": "punctuation.definition.attribute.swift"
139
+ },
140
+ "2": {
141
+ "name": "punctuation.definition.identifier.swift"
142
+ },
143
+ "3": {
144
+ "name": "punctuation.definition.identifier.swift"
124
145
  }
125
146
  },
126
- "match": "((@)(\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B))"
147
+ "comment": "any other attribute",
148
+ "end": "(?!\\G\\()",
149
+ "name": "meta.attribute.swift",
150
+ "patterns": [
151
+ {
152
+ "begin": "\\(",
153
+ "beginCaptures": {
154
+ "0": {
155
+ "name": "punctuation.definition.arguments.begin.swift"
156
+ }
157
+ },
158
+ "end": "\\)",
159
+ "endCaptures": {
160
+ "0": {
161
+ "name": "punctuation.definition.arguments.end.swift"
162
+ }
163
+ },
164
+ "name": "meta.arguments.attribute.swift",
165
+ "patterns": [
166
+ {
167
+ "include": "#expressions"
168
+ }
169
+ ]
170
+ }
171
+ ]
127
172
  }
128
173
  ]
129
174
  },
130
- "bitwise-operator": {
131
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(&|\\||\\^|<<|>>)(?![/=\\-+!*%<>&|\\^~.])",
132
- "name": "keyword.operator.bitwise.swift"
133
- },
134
- "boolean-literal": {
135
- "match": "\\b(true|false)\\b",
136
- "name": "constant.language.boolean.swift"
137
- },
138
- "branch-statement-keyword": {
139
- "name": "keyword.control.branch.swift",
175
+ "builtin-functions": {
140
176
  "patterns": [
141
177
  {
142
- "include": "#if-statement-keyword"
178
+ "comment": "Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses",
179
+ "match": "(?<=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\s*[({])\\b",
180
+ "name": "support.function.swift"
143
181
  },
144
182
  {
145
- "include": "#switch-statement-keyword"
183
+ "comment": "Member functions in the standard library in Swift 3",
184
+ "match": "(?<=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()",
185
+ "name": "support.function.swift"
186
+ },
187
+ {
188
+ "comment": "Member functions in the standard library in Swift 2 only",
189
+ "match": "(?<=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()",
190
+ "name": "support.function.swift"
146
191
  }
147
192
  ]
148
193
  },
149
- "builtin-class-type": {
150
- "comment": "Builtin class types",
151
- "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b",
152
- "name": "support.class.swift"
153
- },
154
- "builtin-constant": {
155
- "comment": "Process is really an enum, but it acts like a constant",
156
- "match": "\\bProcess\\b",
157
- "name": "support.constant.swift"
158
- },
159
- "builtin-enum-type": {
160
- "comment": "Builtin enum types",
161
- "match": "\\b(MirrorDisposition|Bit|ImplicitlyUnwrappedOptional|Optional|UnicodeDecodingResult|QuickLookObject|FloatingPointClassification)\\b",
162
- "name": "support.type.swift"
163
- },
164
- "builtin-function": {
165
- "comment": "Functions provided in the standard library; found by searching ^[ \\t]+func\\s+(\\w+?)[<(]",
166
- "match": "(?<=\\.)(s(tartsWith|ort|u(ccessor|perclassMirror|btract)|amePositionIn)|has(Suffix|Prefix)|next(Object)?|c(haracterAtIndex|o(ntains|untByEnumeratingWithState|pyWithZone)|ustom(Mirror|PlaygroundQuickLook)|lamp)|t(o(IntMax|Opaque|UIntMax)|ake(RetainedValue|UnretainedValue))|i(s(S(trictSu(persetOf|bsetOf)|u(persetOf|bsetOf))|DisjointWith|EmptyInput|ASCII)|n(tersect|itialize(From)?|dex(Of|ForKey)))|object(Enumerator|ForKey|AtIndex)|d(istanceTo|e(s(cendant|troy)|alloc))|un(ion|derestimateCount)|join|p(ut|redecessor)|e(scape|numerate|lementsEqual|xclusiveOr)|keyEnumerator|f(ilter|latMap)|w(ith(CString|U(nsafe(MutablePointer(s|To(Elements|Value))|BufferPointer)|TF8Buffer))|riteTo)|le(ngth|xicographicalCompare)|a(ssign(BackwardFrom|From)|dvancedBy|utorelease)|re(tain|duce|verse|questNativeBuffer|lease)|ge(nerate|t(Mirror|Objects))|m(inElement|ove(Initialize(BackwardFrom|From)|AssignFrom)?|ember|a(p|xElement)))\\b",
167
- "name": "support.function.swift"
168
- },
169
- "builtin-global-function": {
170
- "comment": "Global functions provided in the standard library; found by searching ^func\\s+(\\w+?)[<(]",
171
- "match": "\\b(s(tride(of(Value)?)?|izeof(Value)?|ort|uffix|pli(ce|t)|wap)|numericCast|transcode|i(sUniquelyReferenced(NonObjC)?|nsert)|zip|overlaps|d(istance|ump|ebugPrint|rop(First|Last))|unsafe(BitCast|Downcast|Unwrap|AddressOf)|join|pr(int|e(condition|fix))|extend|with(Unsafe(MutablePointer(s)?|Pointer(s)?)|ExtendedLifetime|VaList)|lazy|a(ssert(ionFailure)?|nyGenerator|dvance|lignof(Value)?|bs)|re(flect|adLine|move(Range|Last|A(tIndex|ll)))|getVaList|m(in|ax))\\b",
172
- "name": "support.function.swift"
173
- },
174
- "builtin-property": {
175
- "comment": "Properties provided in the standard library; found by searching ^\\s+var\\s+(\\w+?)\\W",
176
- "match": "(?<=\\.)(s(t(art(Index)?|ringValue)|ummary)|has(hValue|PointerRepresentation)|nulTerminatedUTF8|c(haracters|ount|apacity)|i(s(S(ign(Minus|aling)|ubnormal)|N(ormal|aN)|Infinite|Zero|Empty|Finite|ASCII)|ndices|dentity)|o(wner|bjectIdentifier)|d(isposition|e(scription|bugDescription))|u(nicodeScalar(s)?|tf(16|8(Start)?)|intValue|ppercaseString)|end(Index)?|value(s|Type)?|keys|quickLookObject|f(irst|loatingPointClass)|l(ittleEndian|owercaseString|ast)|a(llocatedElementCount|rray)|rawValue|memory|b(yteS(ize|wapped)|igEndian|oolValue|uffer|aseAddress))\\b",
177
- "name": "support.variable.swift"
178
- },
179
- "builtin-protocol-type": {
180
- "comment": "Builtin protocol types",
181
- "match": "\\b(Ra(n(domAccessIndexType|geReplaceableCollectionType)|wRepresentable)|GeneratorType|M(irror(Type|PathType)|utable(Sliceable|CollectionType))|B(i(twiseOperationsType|directionalIndexType)|oolean(Type|LiteralConvertible))|S(tr(i(ng(InterpolationConvertible|LiteralConvertible)|deable)|eamable)|i(nkType|gned(NumberType|IntegerType))|e(tAlgebraType|quenceType)|liceable)|Hashable|NilLiteralConvertible|C(o(llectionType|mparable)|ustom(Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArgType)|Inte(rvalType|ger(Type|LiteralConvertible|ArithmeticType))|O(utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(signedIntegerType|icode(ScalarLiteralConvertible|CodecType))|E(quatable|rrorType|xten(sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(orwardIndexType|loat(ingPointType|LiteralConvertible))|A(ny(CollectionType|Object)|rrayLiteralConvertible|bsoluteValuable))\\b",
182
- "name": "support.type.swift"
183
- },
184
- "builtin-static-property": {
185
- "comment": "Static properties provided in the standard library; found by searching ^\\s*(class|static)\\s+var\\s+(\\w+?)\\W",
186
- "match": "(?<=\\.)(infinity|NaN|quietNaN|allZeros|m(in|ax))\\b|(?<=\\bProcess\\.)(arguments|argc|unsafeArgv)\\b",
187
- "name": "support.variable.swift"
194
+ "builtin-global-functions": {
195
+ "patterns": [
196
+ {
197
+ "begin": "\\b(type)(\\()\\s*(of)(:)",
198
+ "beginCaptures": {
199
+ "1": {
200
+ "name": "support.function.dynamic-type.swift"
201
+ },
202
+ "2": {
203
+ "name": "punctuation.definition.arguments.begin.swift"
204
+ },
205
+ "3": {
206
+ "name": "support.variable.parameter.swift"
207
+ },
208
+ "4": {
209
+ "name": "punctuation.separator.argument-label.begin.swift"
210
+ }
211
+ },
212
+ "end": "\\)",
213
+ "endCaptures": {
214
+ "0": {
215
+ "name": "punctuation.definition.arguments.end.swift"
216
+ }
217
+ },
218
+ "patterns": [
219
+ {
220
+ "include": "#expressions"
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ "comment": "Global functions available in Swift 3 which may be used with trailing closures and no parentheses",
226
+ "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b",
227
+ "name": "support.function.swift"
228
+ },
229
+ {
230
+ "comment": "Global functions available in Swift 3",
231
+ "match": "\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()",
232
+ "name": "support.function.swift"
233
+ },
234
+ {
235
+ "comment": "Global functions available in Swift 2 only",
236
+ "match": "\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()",
237
+ "name": "support.function.swift"
238
+ }
239
+ ]
188
240
  },
189
- "builtin-struct-type": {
190
- "comment": "Builtin struct types",
191
- "match": "\\b(R(e(peat|verse(RandomAccess(Collection|Index)|Collection|Index))|a(nge(Generator)?|wByte))|Generator(Sequence|OfOne)|M(irror|a(nagedBufferPointer|p(Generator|Sequence|Collection)))|Bool|S(t(aticString|ri(ng|deT(hrough(Generator)?|o(Generator)?)))|inkOf|et(Generator|Index)?)|HalfOpenInterval|C(haracter|o(ntiguousArray|llectionOfOne)|OpaquePointer|losedInterval|VaListPointer)|In(t(16|8|32|64)?|dexingGenerator)|Zip2(Generator|Sequence)|ObjectIdentifier|D(ictionary(Generator|Index|Literal)?|ouble)|U(n(safe(Mutable(BufferPointer|Pointer)|BufferPointer(Generator)?|Pointer)|icodeScalar|managed)|TF(16|8|32)|Int(16|8|32|64)?)|PermutationGenerator|E(numerate(Generator|Sequence)|mpty(Generator|Collection))|F(ilter(Generator|Sequence|Collection(Index)?)|loat(80)?)|Lazy(RandomAccessCollection|BidirectionalCollection|Sequence|ForwardCollection)|A(ny(RandomAccess(Collection|Index)|Bidirectional(Collection|Index)|Sequence|Forward(Collection|Index))|utoreleasingUnsafeMutablePointer|rray(Slice)?))\\b",
192
- "name": "support.type.swift"
241
+ "builtin-properties": {
242
+ "patterns": [
243
+ {
244
+ "match": "(?<=\\bProcess\\.|\\bCommandLine\\.)(arguments|argc|unsafeArgv)",
245
+ "name": "support.variable.swift"
246
+ },
247
+ {
248
+ "comment": "Properties in the standard library in Swift 3",
249
+ "match": "(?<=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b",
250
+ "name": "support.variable.swift"
251
+ },
252
+ {
253
+ "comment": "Properties in the standard library in Swift 2 only",
254
+ "match": "(?<=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b",
255
+ "name": "support.variable.swift"
256
+ },
257
+ {
258
+ "comment": "Enum cases in the standard library - note that there is some overlap between these and the properties",
259
+ "match": "(?<=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b",
260
+ "name": "support.variable.swift"
261
+ }
262
+ ]
193
263
  },
194
- "builtin-type": {
195
- "comment": "Types provided in the standard library; found by searching ^(@objc\\s+)?(struct|protocol|class|enum)\\s+(\\w+)[\\s<].+$",
264
+ "builtin-types": {
265
+ "comment": "Types provided in the standard library",
196
266
  "patterns": [
197
267
  {
198
268
  "include": "#builtin-class-type"
@@ -208,35 +278,97 @@
208
278
  },
209
279
  {
210
280
  "include": "#builtin-typealias"
281
+ },
282
+ {
283
+ "match": "\\bAny\\b",
284
+ "name": "support.type.any.swift"
211
285
  }
212
- ]
213
- },
214
- "builtin-typealias": {
215
- "comment": "Builtin typealiases",
216
- "match": "\\b(BooleanLiteralType|StringLiteralType|C(Bool|S(hort|ignedChar)|Char(16|32)?|Int|Double|Unsigned(Short|Char|Int|Long(Long)?)|Float|WideChar|Long(Long)?)|Int(Max|egerLiteralType)|U(nicodeScalarType|IntMax|Word)|PlaygroundQuickLook|ExtendedGraphemeClusterType|Void|Float(32|LiteralType|64)|Word|Any(Class)?)\\b",
217
- "name": "support.type.swift"
218
- },
219
- "capture-specifier": {
220
- "comment": "matches weak, unowned, unowned(safe), unowned(unsafe)",
221
- "match": "\\b(weak|unowned(?:\\((?:un)?safe\\))?)",
222
- "name": "keyword.other.capture-specifier.swift"
223
- },
224
- "coalescing-operator": {
225
- "match": "(?<![?/=\\-+!*%<>&|\\^~.])\\?\\?(?![?/=\\-+!*%<>&|\\^~.])",
226
- "name": "keyword.operator.coalescing.swift"
286
+ ],
287
+ "repository": {
288
+ "builtin-class-type": {
289
+ "comment": "Builtin class types",
290
+ "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b",
291
+ "name": "support.class.swift"
292
+ },
293
+ "builtin-enum-type": {
294
+ "patterns": [
295
+ {
296
+ "comment": "CommandLine is an enum, but it acts like a constant",
297
+ "match": "\\b(?:CommandLine|Process(?=\\.))\\b",
298
+ "name": "support.constant.swift"
299
+ },
300
+ {
301
+ "comment": "The return type of a function that never returns",
302
+ "match": "\\bNever\\b",
303
+ "name": "support.constant.never.swift"
304
+ },
305
+ {
306
+ "comment": "Enum types in the standard library in Swift 3",
307
+ "match": "\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b",
308
+ "name": "support.type.swift"
309
+ },
310
+ {
311
+ "comment": "Enum types in the standard library in Swift 2 only",
312
+ "match": "\\b(?:MirrorDisposition|QuickLookObject)\\b",
313
+ "name": "support.type.swift"
314
+ }
315
+ ]
316
+ },
317
+ "builtin-protocol-type": {
318
+ "patterns": [
319
+ {
320
+ "comment": "Protocols in the standard library in Swift 3",
321
+ "match": "\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b",
322
+ "name": "support.type.swift"
323
+ },
324
+ {
325
+ "comment": "Protocols in the standard library in Swift 2 only",
326
+ "match": "\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b",
327
+ "name": "support.type.swift"
328
+ }
329
+ ]
330
+ },
331
+ "builtin-struct-type": {
332
+ "patterns": [
333
+ {
334
+ "comment": "Structs in the standard library in Swift 3",
335
+ "match": "\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b",
336
+ "name": "support.type.swift"
337
+ },
338
+ {
339
+ "comment": "Structs in the standard library in Swift 2 only",
340
+ "match": "\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b",
341
+ "name": "support.type.swift"
342
+ }
343
+ ]
344
+ },
345
+ "builtin-typealias": {
346
+ "patterns": [
347
+ {
348
+ "comment": "Typealiases in the standard library in Swift 3",
349
+ "match": "\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b",
350
+ "name": "support.type.swift"
351
+ },
352
+ {
353
+ "comment": "Typealiases in the standard library in Swift 2 only",
354
+ "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b",
355
+ "name": "support.type.swift"
356
+ }
357
+ ]
358
+ }
359
+ }
227
360
  },
228
361
  "code-block": {
229
- "begin": "(\\{)",
362
+ "begin": "\\{",
230
363
  "beginCaptures": {
231
- "1": {
232
- "name": "punctuation.definition.code-block.begin.swift"
364
+ "0": {
365
+ "name": "punctuation.section.scope.begin.swift"
233
366
  }
234
367
  },
235
- "comment": "code-block",
236
- "end": "(\\})",
368
+ "end": "\\}",
237
369
  "endCaptures": {
238
- "1": {
239
- "name": "punctuation.definition.code-block.end.swift"
370
+ "0": {
371
+ "name": "punctuation.section.scope.end.swift"
240
372
  }
241
373
  },
242
374
  "patterns": [
@@ -245,125 +377,83 @@
245
377
  }
246
378
  ]
247
379
  },
248
- "collection-type": {
249
- "comment": "Collection types",
250
- "patterns": [
251
- {
252
- "include": "#array-type"
253
- },
254
- {
255
- "include": "#dictionary-type"
256
- }
257
- ]
258
- },
259
- "comment": {
260
- "comment": "All comment types",
380
+ "comments": {
261
381
  "patterns": [
262
382
  {
263
- "include": "#block-doc"
264
- },
265
- {
266
- "include": "#block"
267
- },
268
- {
269
- "include": "#inline-doc"
383
+ "captures": {
384
+ "1": {
385
+ "name": "punctuation.definition.comment.swift"
386
+ }
387
+ },
388
+ "match": "\\A^(#!).*$\\n?",
389
+ "name": "comment.line.number-sign.swift"
270
390
  },
271
391
  {
272
- "include": "#inline"
273
- }
274
- ],
275
- "repository": {
276
- "block": {
277
- "begin": "/\\*",
392
+ "begin": "/\\*\\*(?!/)",
278
393
  "beginCaptures": {
279
394
  "0": {
280
- "name": "punctuation.definition.comment.block.begin.swift"
395
+ "name": "punctuation.definition.comment.begin.swift"
281
396
  }
282
397
  },
283
398
  "end": "\\*/",
284
399
  "endCaptures": {
285
400
  "0": {
286
- "name": "punctuation.definition.comment.block.end.swift"
401
+ "name": "punctuation.definition.comment.end.swift"
287
402
  }
288
403
  },
289
- "name": "comment.block.swift",
404
+ "name": "comment.block.documentation.swift",
290
405
  "patterns": [
291
406
  {
292
407
  "include": "#nested"
293
408
  }
294
- ],
295
- "repository": {
296
- "nested": {
297
- "begin": "/\\*",
298
- "end": "\\*/",
299
- "patterns": [
300
- {
301
- "include": "#nested"
302
- }
303
- ]
304
- }
305
- }
409
+ ]
306
410
  },
307
- "block-doc": {
308
- "begin": "/\\*\\*",
411
+ {
412
+ "begin": "/\\*:",
309
413
  "beginCaptures": {
310
414
  "0": {
311
- "name": "punctuation.definition.comment.block.documentation.begin.swift"
415
+ "name": "punctuation.definition.comment.begin.swift"
312
416
  }
313
417
  },
314
418
  "end": "\\*/",
315
419
  "endCaptures": {
316
420
  "0": {
317
- "name": "punctuation.definition.comment.block.documentation.end.swift"
421
+ "name": "punctuation.definition.comment.end.swift"
318
422
  }
319
423
  },
320
- "name": "comment.block.documentation.swift",
424
+ "name": "comment.block.documentation.playground.swift",
321
425
  "patterns": [
322
426
  {
323
427
  "include": "#nested"
324
- },
325
- {
326
- "include": "text.restructuredtext#tags"
327
- }
328
- ],
329
- "repository": {
330
- "nested": {
331
- "begin": "/\\*",
332
- "end": "\\*/",
333
- "patterns": [
334
- {
335
- "include": "#nested"
336
- },
337
- {
338
- "include": "text.restructuredtext#tags"
339
- }
340
- ]
341
428
  }
342
- }
429
+ ]
343
430
  },
344
- "inline": {
345
- "begin": "(^[ \\t]+)?(?=//)",
431
+ {
432
+ "begin": "/\\*",
346
433
  "beginCaptures": {
347
- "1": {
348
- "name": "punctuation.whitespace.comment.leading.swift"
434
+ "0": {
435
+ "name": "punctuation.definition.comment.begin.swift"
349
436
  }
350
437
  },
351
- "end": "(?!\\G)",
438
+ "end": "\\*/",
439
+ "endCaptures": {
440
+ "0": {
441
+ "name": "punctuation.definition.comment.end.swift"
442
+ }
443
+ },
444
+ "name": "comment.block.swift",
352
445
  "patterns": [
353
446
  {
354
- "begin": "//",
355
- "beginCaptures": {
356
- "0": {
357
- "name": "punctuation.definition.comment.swift"
358
- }
359
- },
360
- "end": "\\n",
361
- "name": "comment.line.double-slash.swift"
447
+ "include": "#nested"
362
448
  }
363
449
  ]
364
450
  },
365
- "inline-doc": {
366
- "begin": "(^[ \\t]+)?(?=///)",
451
+ {
452
+ "match": "\\*/",
453
+ "name": "invalid.illegal.unexpected-end-of-block-comment.swift"
454
+ },
455
+ {
456
+ "begin": "(^[ \\t]+)?(?=//)",
367
457
  "beginCaptures": {
368
458
  "1": {
369
459
  "name": "punctuation.whitespace.comment.leading.swift"
@@ -378,606 +468,2373 @@
378
468
  "name": "punctuation.definition.comment.swift"
379
469
  }
380
470
  },
381
- "end": "\\n",
382
- "name": "comment.line.triple-slash.swift"
471
+ "end": "^",
472
+ "name": "comment.line.triple-slash.documentation.swift"
473
+ },
474
+ {
475
+ "begin": "//:",
476
+ "beginCaptures": {
477
+ "0": {
478
+ "name": "punctuation.definition.comment.swift"
479
+ }
480
+ },
481
+ "end": "^",
482
+ "name": "comment.line.double-slash.documentation.swift"
483
+ },
484
+ {
485
+ "begin": "//",
486
+ "beginCaptures": {
487
+ "0": {
488
+ "name": "punctuation.definition.comment.swift"
489
+ }
490
+ },
491
+ "end": "^",
492
+ "name": "comment.line.double-slash.swift"
493
+ }
494
+ ]
495
+ }
496
+ ],
497
+ "repository": {
498
+ "nested": {
499
+ "begin": "/\\*",
500
+ "end": "\\*/",
501
+ "patterns": [
502
+ {
503
+ "include": "#nested"
383
504
  }
384
505
  ]
385
506
  }
386
507
  }
387
508
  },
388
- "comparative-operator": {
389
- "match": "(?<![/=\\-+!*%<>&|\\^~.])((=|!)==?|(<|>)=?|~=)(?![/=\\-+!*%<>&|\\^~.])",
390
- "name": "keyword.operator.comparative.swift"
391
- },
392
- "control-transfer-statement-keyword": {
393
- "comment": "control-transfer-statement",
394
- "match": "\\b(continue|break|fallthrough|return)\\b",
395
- "name": "keyword.control.transfer.swift"
396
- },
397
- "custom-operator": {
509
+ "compiler-control": {
398
510
  "patterns": [
399
511
  {
400
- "match": "(?<=[\\s(\\[{,;:])([/=\\-+!*%<>&|\\^~.]++)(?![\\s)\\]},;:])",
401
- "name": "keyword.operator.custom.prefix.unary.swift"
512
+ "begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",
513
+ "beginCaptures": {
514
+ "0": {
515
+ "name": "meta.preprocessor.conditional.swift"
516
+ },
517
+ "1": {
518
+ "name": "punctuation.definition.preprocessor.swift"
519
+ },
520
+ "2": {
521
+ "name": "keyword.control.preprocessor.conditional.swift"
522
+ },
523
+ "3": {
524
+ "name": "constant.language.boolean.swift"
525
+ }
526
+ },
527
+ "contentName": "comment.block.preprocessor.swift",
528
+ "end": "(?=^\\s*(#(elseif|else|endif)\\b))"
529
+ },
530
+ {
531
+ "begin": "^\\s*(#)(if|elseif)\\s+",
532
+ "captures": {
533
+ "1": {
534
+ "name": "punctuation.definition.preprocessor.swift"
535
+ },
536
+ "2": {
537
+ "name": "keyword.control.preprocessor.conditional.swift"
538
+ }
539
+ },
540
+ "end": "(?=\\s*(?://|/\\*))|$",
541
+ "name": "meta.preprocessor.conditional.swift",
542
+ "patterns": [
543
+ {
544
+ "match": "(&&|\\|\\|)",
545
+ "name": "keyword.operator.logical.swift"
546
+ },
547
+ {
548
+ "match": "\\b(true|false)\\b",
549
+ "name": "constant.language.boolean.swift"
550
+ },
551
+ {
552
+ "captures": {
553
+ "1": {
554
+ "name": "keyword.other.condition.swift"
555
+ },
556
+ "2": {
557
+ "name": "punctuation.definition.parameters.begin.swift"
558
+ },
559
+ "3": {
560
+ "name": "support.constant.platform.architecture.swift"
561
+ },
562
+ "4": {
563
+ "name": "punctuation.definition.parameters.end.swift"
564
+ }
565
+ },
566
+ "match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))"
567
+ },
568
+ {
569
+ "captures": {
570
+ "1": {
571
+ "name": "keyword.other.condition.swift"
572
+ },
573
+ "2": {
574
+ "name": "punctuation.definition.parameters.begin.swift"
575
+ },
576
+ "3": {
577
+ "name": "support.constant.platform.os.swift"
578
+ },
579
+ "4": {
580
+ "name": "punctuation.definition.parameters.end.swift"
581
+ }
582
+ },
583
+ "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))"
584
+ },
585
+ {
586
+ "begin": "\\b(swift)\\s*(\\()",
587
+ "beginCaptures": {
588
+ "1": {
589
+ "name": "keyword.other.condition.swift"
590
+ },
591
+ "2": {
592
+ "name": "punctuation.definition.parameters.begin.swift"
593
+ }
594
+ },
595
+ "end": "(\\))|$",
596
+ "endCaptures": {
597
+ "1": {
598
+ "name": "punctuation.definition.parameters.end.swift"
599
+ }
600
+ },
601
+ "patterns": [
602
+ {
603
+ "match": ">=",
604
+ "name": "keyword.operator.comparison.swift"
605
+ },
606
+ {
607
+ "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
608
+ "name": "constant.numeric.swift"
609
+ }
610
+ ]
611
+ }
612
+ ]
402
613
  },
403
614
  {
404
- "match": "(?<![\\s(\\[{,;:])([/=\\-+!*%<>&|\\^~.]++)(?![\\s)\\]},;:\\.])",
405
- "name": "keyword.operator.custom.postfix.unary.swift"
615
+ "captures": {
616
+ "1": {
617
+ "name": "punctuation.definition.preprocessor.swift"
618
+ },
619
+ "2": {
620
+ "name": "keyword.control.preprocessor.conditional.swift"
621
+ },
622
+ "3": {
623
+ "patterns": [
624
+ {
625
+ "match": "\\S+",
626
+ "name": "invalid.illegal.character-not-allowed-here.swift"
627
+ }
628
+ ]
629
+ }
630
+ },
631
+ "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",
632
+ "name": "meta.preprocessor.conditional.swift"
406
633
  },
407
634
  {
408
- "match": "(?<=[\\s(\\[{,;:])([/=\\-+!*%<>&|\\^~.]++)(?=[\\s)\\]},;:])",
409
- "name": "keyword.operator.custom.binary.swift"
635
+ "captures": {
636
+ "1": {
637
+ "name": "punctuation.definition.preprocessor.swift"
638
+ },
639
+ "2": {
640
+ "name": "keyword.control.preprocessor.sourcelocation.swift"
641
+ },
642
+ "4": {
643
+ "name": "punctuation.definition.parameters.begin.swift"
644
+ },
645
+ "5": {
646
+ "patterns": [
647
+ {
648
+ "begin": "(file)\\s*(:)\\s*(?=\")",
649
+ "beginCaptures": {
650
+ "1": {
651
+ "name": "support.variable.parameter.swift"
652
+ },
653
+ "2": {
654
+ "name": "punctuation.separator.key-value.swift"
655
+ }
656
+ },
657
+ "end": "(?!\\G)",
658
+ "patterns": [
659
+ {
660
+ "include": "#literals"
661
+ }
662
+ ]
663
+ },
664
+ {
665
+ "captures": {
666
+ "1": {
667
+ "name": "support.variable.parameter.swift"
668
+ },
669
+ "2": {
670
+ "name": "punctuation.separator.key-value.swift"
671
+ },
672
+ "3": {
673
+ "name": "constant.numeric.integer.swift"
674
+ }
675
+ },
676
+ "match": "(line)\\s*(:)\\s*([0-9]+)"
677
+ },
678
+ {
679
+ "match": ",",
680
+ "name": "punctuation.separator.parameters.swift"
681
+ },
682
+ {
683
+ "match": "\\S+",
684
+ "name": "invalid.illegal.character-not-allowed-here.swift"
685
+ }
686
+ ]
687
+ },
688
+ "6": {
689
+ "name": "punctuation.definition.parameters.begin.swift"
690
+ },
691
+ "7": {
692
+ "patterns": [
693
+ {
694
+ "match": "\\S+",
695
+ "name": "invalid.illegal.character-not-allowed-here.swift"
696
+ }
697
+ ]
698
+ }
699
+ },
700
+ "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
701
+ "name": "meta.preprocessor.sourcelocation.swift"
410
702
  }
411
703
  ]
412
704
  },
413
- "declaration": {
414
- "comment": "declaration",
415
- "name": "meta.declaration.swift",
705
+ "declarations": {
416
706
  "patterns": [
417
707
  {
418
- "include": "#import-declaration"
708
+ "include": "#function"
419
709
  },
420
710
  {
421
- "include": "#function-declaration"
422
- }
423
- ]
424
- },
425
- "declaration-specifier": {
426
- "comment": "declaration-specifier",
427
- "match": "\\b(class|deinit|enum|extension|func|import|init|inout|internal|let|operator|private|protocol|public|static|struct|subscript|typealias|var)\\b",
428
- "name": "keyword.other.declaration-specifier.swift"
429
- },
430
- "dictionary-type": {
431
- "begin": "\\b(Dictionary)(\\[)",
432
- "beginCaptures": {
433
- "1": {
434
- "name": "support.type.dictionary.swift"
711
+ "include": "#function-initializer"
435
712
  },
436
- "2": {
437
- "name": "punctuation.definition.dictionary.begin.swift"
438
- }
439
- },
440
- "end": "(\\])",
441
- "endCaptures": {
442
- "1": {
443
- "name": "punctuation.definition.dictionary.end.swift"
444
- }
445
- },
446
- "name": "meta.dictionary.swift",
447
- "patterns": [
448
713
  {
449
- "include": "$self"
450
- }
451
- ]
452
- },
453
- "floating-point-literal": {
454
- "name": "constant.numeric.floating-point.swift",
455
- "patterns": [
714
+ "include": "#import"
715
+ },
456
716
  {
457
- "comment": "floating-point-literal -> (decimal-literal)(decimal-fraction)?(decimal-exponent)?",
458
- "match": "\\b([0-9][0-9_]*)(\\.([0-9][0-9_]*))?([eE][+\\-]?([0-9][0-9_]*))?\\b"
717
+ "include": "#operator"
459
718
  },
460
719
  {
461
- "comment": "floating-point-literal -> (hexadecimal-literal)(hexadecimal-fraction)?(hexadecimal-exponent)",
462
- "match": "\\b(0x\\h[\\h_]*)(\\.(0x\\h[\\h_]*))?([pP][+\\-]?(0x\\h[\\h_]*))\\b"
463
- }
464
- ]
465
- },
466
- "function-declaration": {
467
- "begin": "\\b(func)\\s+(\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B|[/=\\-+!*%<>&|\\^~.]+)\\s*(?=\\(|<)",
468
- "beginCaptures": {
469
- "1": {
470
- "name": "storage.type.function.swift"
720
+ "include": "#precedencegroup"
471
721
  },
472
- "2": {
473
- "name": "entity.name.function.swift"
474
- }
475
- },
476
- "comment": "function-declaration",
477
- "end": "(?<=\\})|$",
478
- "name": "meta.function-declaration.swift",
479
- "patterns": [
480
722
  {
481
- "include": "#generic-parameter-clause"
723
+ "include": "#protocol"
482
724
  },
483
725
  {
484
- "include": "#parameter-clause"
726
+ "include": "#type"
485
727
  },
486
728
  {
487
- "include": "#function-result"
729
+ "include": "#extension"
488
730
  },
489
731
  {
490
- "begin": "(\\{)",
491
- "beginCaptures": {
492
- "1": {
493
- "name": "punctuation.section.function.begin.swift"
732
+ "include": "#typealias"
733
+ }
734
+ ],
735
+ "repository": {
736
+ "available-types": {
737
+ "patterns": [
738
+ {
739
+ "include": "#comments"
740
+ },
741
+ {
742
+ "include": "#builtin-types"
743
+ },
744
+ {
745
+ "include": "#attributes"
746
+ },
747
+ {
748
+ "match": "\\b(?:throws|rethrows)\\b",
749
+ "name": "keyword.control.exception.swift"
750
+ },
751
+ {
752
+ "match": "\\binout\\b",
753
+ "name": "storage.modifier.swift"
754
+ },
755
+ {
756
+ "match": "\\bSelf\\b",
757
+ "name": "variable.language.swift"
758
+ },
759
+ {
760
+ "captures": {
761
+ "1": {
762
+ "name": "keyword.operator.type.function.swift"
763
+ }
764
+ },
765
+ "match": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])"
766
+ },
767
+ {
768
+ "captures": {
769
+ "1": {
770
+ "name": "keyword.operator.type.composition.swift"
771
+ }
772
+ },
773
+ "comment": "Swift 3: A & B",
774
+ "match": "(?<![/=\\-+!*%<>&|\\^~.])(&)(?![/=\\-+!*%<>&|\\^~.])"
775
+ },
776
+ {
777
+ "match": "[?!]",
778
+ "name": "keyword.operator.type.optional.swift"
779
+ },
780
+ {
781
+ "match": "\\.\\.\\.",
782
+ "name": "keyword.operator.function.variadic-parameter.swift"
783
+ },
784
+ {
785
+ "comment": "Swift 2: protocol<A, B>",
786
+ "match": "\\bprotocol\\b",
787
+ "name": "keyword.operator.type.composition.swift"
788
+ },
789
+ {
790
+ "match": "(?<=\\.)(?:Protocol|Type)\\b",
791
+ "name": "keyword.operator.type.metatype.swift"
792
+ },
793
+ {
794
+ "include": "#tuple-type"
795
+ },
796
+ {
797
+ "include": "#collection-type"
798
+ },
799
+ {
800
+ "include": "#generic-argument-clause"
494
801
  }
495
- },
496
- "end": "(\\})",
497
- "endCaptures": {
802
+ ],
803
+ "repository": {
804
+ "collection-type": {
805
+ "begin": "\\[",
806
+ "beginCaptures": {
807
+ "0": {
808
+ "name": "punctuation.section.collection-type.begin.swift"
809
+ }
810
+ },
811
+ "comment": "array and dictionary types [Value] and [Key: Value]",
812
+ "end": "\\]|(?=[>){}])",
813
+ "endCaptures": {
814
+ "0": {
815
+ "name": "punctuation.section.collection-type.end.swift"
816
+ }
817
+ },
818
+ "patterns": [
819
+ {
820
+ "include": "#available-types"
821
+ },
822
+ {
823
+ "begin": ":",
824
+ "beginCaptures": {
825
+ "0": {
826
+ "name": "punctuation.separator.key-value.swift"
827
+ }
828
+ },
829
+ "end": "(?=\\]|[>){}])",
830
+ "patterns": [
831
+ {
832
+ "match": ":",
833
+ "name": "invalid.illegal.extra-colon-in-dictionary-type.swift"
834
+ },
835
+ {
836
+ "include": "#available-types"
837
+ }
838
+ ]
839
+ }
840
+ ]
841
+ },
842
+ "tuple-type": {
843
+ "begin": "\\(",
844
+ "beginCaptures": {
845
+ "0": {
846
+ "name": "punctuation.section.tuple-type.begin.swift"
847
+ }
848
+ },
849
+ "end": "\\)|(?=[>\\]{}])",
850
+ "endCaptures": {
851
+ "0": {
852
+ "name": "punctuation.section.tuple-type.end.swift"
853
+ }
854
+ },
855
+ "patterns": [
856
+ {
857
+ "include": "#available-types"
858
+ }
859
+ ]
860
+ }
861
+ }
862
+ },
863
+ "extension": {
864
+ "begin": "\\b(extension)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
865
+ "beginCaptures": {
498
866
  "1": {
499
- "name": "punctuation.section.function.end.swift"
867
+ "name": "storage.type.$1.swift"
868
+ },
869
+ "2": {
870
+ "name": "entity.name.type.swift",
871
+ "patterns": [
872
+ {
873
+ "include": "#available-types"
874
+ }
875
+ ]
876
+ },
877
+ "3": {
878
+ "name": "punctuation.definition.identifier.swift"
879
+ },
880
+ "4": {
881
+ "name": "punctuation.definition.identifier.swift"
500
882
  }
501
883
  },
502
- "name": "meta.function-declaration.body.swift",
884
+ "end": "(?<=\\})",
885
+ "name": "meta.definition.type.$1.swift",
503
886
  "patterns": [
504
887
  {
505
- "include": "$self"
506
- }
507
- ]
508
- }
509
- ]
510
- },
511
- "function-result": {
512
- "begin": "(?<![/=\\-+!*%<>&|\\^~.])(\\->)(?![/=\\-+!*%<>&|\\^~.])\\s*",
513
- "beginCaptures": {
514
- "1": {
515
- "name": "keyword.operator.function-result.swift"
516
- }
517
- },
518
- "comment": "function-result",
519
- "end": "(?=\\{)|$",
520
- "name": "meta.function-result.swift",
521
- "patterns": [
522
- {
523
- "include": "#type"
888
+ "include": "#comments"
889
+ },
890
+ {
891
+ "comment": "SE-0143: Conditional Conformances",
892
+ "include": "#generic-where-clause"
893
+ },
894
+ {
895
+ "include": "#inheritance-clause"
896
+ },
897
+ {
898
+ "begin": "\\{",
899
+ "beginCaptures": {
900
+ "0": {
901
+ "name": "punctuation.definition.type.begin.swift"
902
+ }
903
+ },
904
+ "end": "\\}",
905
+ "endCaptures": {
906
+ "0": {
907
+ "name": "punctuation.definition.type.end.swift"
908
+ }
909
+ },
910
+ "name": "meta.definition.type.body.swift",
911
+ "patterns": [
912
+ {
913
+ "include": "$self"
914
+ }
915
+ ]
916
+ }
917
+ ]
918
+ },
919
+ "function": {
920
+ "begin": "(?x)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t\t\t\t\t | (?:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t(?=\\(|<)\n\t\t\t\t\t",
921
+ "beginCaptures": {
922
+ "1": {
923
+ "name": "storage.type.function.swift"
924
+ },
925
+ "2": {
926
+ "name": "entity.name.function.swift"
927
+ },
928
+ "3": {
929
+ "name": "punctuation.definition.identifier.swift"
930
+ },
931
+ "4": {
932
+ "name": "punctuation.definition.identifier.swift"
933
+ }
934
+ },
935
+ "end": "(?<=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",
936
+ "name": "meta.definition.function.swift",
937
+ "patterns": [
938
+ {
939
+ "include": "#comments"
940
+ },
941
+ {
942
+ "include": "#generic-parameter-clause"
943
+ },
944
+ {
945
+ "include": "#parameter-clause"
946
+ },
947
+ {
948
+ "include": "#function-result"
949
+ },
950
+ {
951
+ "match": "\\b(?:throws|rethrows)\\b",
952
+ "name": "keyword.control.exception.swift"
953
+ },
954
+ {
955
+ "comment": "Swift 3: generic constraints after the parameters and return type",
956
+ "include": "#generic-where-clause"
957
+ },
958
+ {
959
+ "begin": "(\\{)",
960
+ "beginCaptures": {
961
+ "1": {
962
+ "name": "punctuation.section.function.begin.swift"
963
+ }
964
+ },
965
+ "end": "(\\})",
966
+ "endCaptures": {
967
+ "1": {
968
+ "name": "punctuation.section.function.end.swift"
969
+ }
970
+ },
971
+ "name": "meta.definition.function.body.swift",
972
+ "patterns": [
973
+ {
974
+ "include": "$self"
975
+ }
976
+ ]
977
+ }
978
+ ]
979
+ },
980
+ "function-initializer": {
981
+ "begin": "(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",
982
+ "beginCaptures": {
983
+ "1": {
984
+ "name": "storage.type.function.swift",
985
+ "patterns": [
986
+ {
987
+ "match": "(?<=[?!])[?!]+",
988
+ "name": "invalid.illegal.character-not-allowed-here.swift"
989
+ }
990
+ ]
991
+ }
992
+ },
993
+ "end": "(?<=\\})|$",
994
+ "name": "meta.definition.function.initializer.swift",
995
+ "patterns": [
996
+ {
997
+ "include": "#comments"
998
+ },
999
+ {
1000
+ "include": "#generic-parameter-clause"
1001
+ },
1002
+ {
1003
+ "include": "#parameter-clause"
1004
+ },
1005
+ {
1006
+ "match": "\\b(?:throws|rethrows)\\b",
1007
+ "name": "keyword.control.exception.swift"
1008
+ },
1009
+ {
1010
+ "comment": "Swift 3: generic constraints after the parameters and return type",
1011
+ "include": "#generic-where-clause"
1012
+ },
1013
+ {
1014
+ "begin": "(\\{)",
1015
+ "beginCaptures": {
1016
+ "1": {
1017
+ "name": "punctuation.section.function.begin.swift"
1018
+ }
1019
+ },
1020
+ "end": "(\\})",
1021
+ "endCaptures": {
1022
+ "1": {
1023
+ "name": "punctuation.section.function.end.swift"
1024
+ }
1025
+ },
1026
+ "name": "meta.definition.function.body.swift",
1027
+ "patterns": [
1028
+ {
1029
+ "include": "$self"
1030
+ }
1031
+ ]
1032
+ }
1033
+ ]
1034
+ },
1035
+ "function-result": {
1036
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])\\s*",
1037
+ "beginCaptures": {
1038
+ "1": {
1039
+ "name": "keyword.operator.function-result.swift"
1040
+ }
1041
+ },
1042
+ "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$",
1043
+ "name": "meta.function-result.swift",
1044
+ "patterns": [
1045
+ {
1046
+ "include": "#available-types"
1047
+ }
1048
+ ]
1049
+ },
1050
+ "generic-argument-clause": {
1051
+ "begin": "<",
1052
+ "beginCaptures": {
1053
+ "0": {
1054
+ "name": "punctuation.separator.generic-argument-clause.begin.swift"
1055
+ }
1056
+ },
1057
+ "end": ">|(?=[)\\]{}])",
1058
+ "endCaptures": {
1059
+ "0": {
1060
+ "name": "punctuation.separator.generic-argument-clause.end.swift"
1061
+ }
1062
+ },
1063
+ "name": "meta.generic-argument-clause.swift",
1064
+ "patterns": [
1065
+ {
1066
+ "include": "#available-types"
1067
+ }
1068
+ ]
1069
+ },
1070
+ "generic-parameter-clause": {
1071
+ "begin": "<",
1072
+ "beginCaptures": {
1073
+ "0": {
1074
+ "name": "punctuation.separator.generic-parameter-clause.begin.swift"
1075
+ }
1076
+ },
1077
+ "end": ">|(?=[^\\w\\d:<>\\s,=&`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)",
1078
+ "endCaptures": {
1079
+ "0": {
1080
+ "name": "punctuation.separator.generic-parameter-clause.end.swift"
1081
+ }
1082
+ },
1083
+ "name": "meta.generic-parameter-clause.swift",
1084
+ "patterns": [
1085
+ {
1086
+ "include": "#comments"
1087
+ },
1088
+ {
1089
+ "comment": "Swift 2: constraints inside the generic param list",
1090
+ "include": "#generic-where-clause"
1091
+ },
1092
+ {
1093
+ "captures": {
1094
+ "1": {
1095
+ "name": "variable.language.generic-parameter.swift"
1096
+ }
1097
+ },
1098
+ "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b"
1099
+ },
1100
+ {
1101
+ "match": ",",
1102
+ "name": "punctuation.separator.generic-parameters.swift"
1103
+ },
1104
+ {
1105
+ "begin": "(:)\\s*",
1106
+ "beginCaptures": {
1107
+ "1": {
1108
+ "name": "punctuation.separator.generic-parameter-constraint.swift"
1109
+ }
1110
+ },
1111
+ "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
1112
+ "name": "meta.generic-parameter-constraint.swift",
1113
+ "patterns": [
1114
+ {
1115
+ "begin": "\\G",
1116
+ "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
1117
+ "name": "entity.other.inherited-class.swift",
1118
+ "patterns": [
1119
+ {
1120
+ "include": "#type-identifier"
1121
+ }
1122
+ ]
1123
+ }
1124
+ ]
1125
+ }
1126
+ ]
1127
+ },
1128
+ "generic-where-clause": {
1129
+ "begin": "\\b(where)\\b\\s*",
1130
+ "beginCaptures": {
1131
+ "1": {
1132
+ "name": "keyword.other.generic-constraint-introducer.swift"
1133
+ }
1134
+ },
1135
+ "end": "(?!\\G)\\n|(?=[>{};\\n])",
1136
+ "name": "meta.generic-where-clause.swift",
1137
+ "patterns": [
1138
+ {
1139
+ "include": "#comments"
1140
+ },
1141
+ {
1142
+ "include": "#requirement-list"
1143
+ }
1144
+ ],
1145
+ "repository": {
1146
+ "requirement-list": {
1147
+ "begin": "\\G|,\\s*",
1148
+ "end": "(?=[,>{};\\n])",
1149
+ "patterns": [
1150
+ {
1151
+ "include": "#comments"
1152
+ },
1153
+ {
1154
+ "include": "#constraint"
1155
+ },
1156
+ {
1157
+ "include": "#available-types"
1158
+ },
1159
+ {
1160
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(==)(?![/=\\-+!*%<>&|\\^~.])",
1161
+ "beginCaptures": {
1162
+ "1": {
1163
+ "name": "keyword.operator.generic-constraint.same-type.swift"
1164
+ }
1165
+ },
1166
+ "end": "(?=\\s*[,>{};\\n])",
1167
+ "name": "meta.generic-where-clause.same-type-requirement.swift",
1168
+ "patterns": [
1169
+ {
1170
+ "include": "#available-types"
1171
+ }
1172
+ ]
1173
+ },
1174
+ {
1175
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])",
1176
+ "beginCaptures": {
1177
+ "1": {
1178
+ "name": "keyword.operator.generic-constraint.conforms-to.swift"
1179
+ }
1180
+ },
1181
+ "end": "(?=\\s*[,>{};\\n])",
1182
+ "name": "meta.generic-where-clause.conformance-requirement.swift",
1183
+ "patterns": [
1184
+ {
1185
+ "begin": "\\G\\s*",
1186
+ "contentName": "entity.other.inherited-class.swift",
1187
+ "end": "(?=\\s*[,>{};\\n])",
1188
+ "patterns": [
1189
+ {
1190
+ "include": "#available-types"
1191
+ }
1192
+ ]
1193
+ }
1194
+ ]
1195
+ }
1196
+ ]
1197
+ }
1198
+ }
1199
+ },
1200
+ "import": {
1201
+ "begin": "(?<!\\.)\\b(import)\\s+",
1202
+ "beginCaptures": {
1203
+ "1": {
1204
+ "name": "keyword.control.import.swift"
1205
+ }
1206
+ },
1207
+ "end": "(;)|$\\n?|(?=//|/\\*)",
1208
+ "endCaptures": {
1209
+ "1": {
1210
+ "name": "punctuation.terminator.statement.swift"
1211
+ }
1212
+ },
1213
+ "name": "meta.import.swift",
1214
+ "patterns": [
1215
+ {
1216
+ "begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?",
1217
+ "beginCaptures": {
1218
+ "1": {
1219
+ "name": "storage.modifier.swift"
1220
+ }
1221
+ },
1222
+ "end": "(?=;|$|//|/\\*)",
1223
+ "patterns": [
1224
+ {
1225
+ "captures": {
1226
+ "1": {
1227
+ "name": "punctuation.definition.identifier.swift"
1228
+ },
1229
+ "2": {
1230
+ "name": "punctuation.definition.identifier.swift"
1231
+ }
1232
+ },
1233
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t\t\t\t\t\t\t\t",
1234
+ "name": "entity.name.type.swift"
1235
+ },
1236
+ {
1237
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t",
1238
+ "name": "entity.name.type.swift"
1239
+ },
1240
+ {
1241
+ "captures": {
1242
+ "1": {
1243
+ "patterns": [
1244
+ {
1245
+ "match": "\\.",
1246
+ "name": "invalid.illegal.dot-not-allowed-here.swift"
1247
+ }
1248
+ ]
1249
+ }
1250
+ },
1251
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t(?=\\.|;|$|//|/\\*|\\s)\n\t\t\t\t\t\t\t\t\t",
1252
+ "name": "entity.name.type.swift"
1253
+ },
1254
+ {
1255
+ "match": "\\.",
1256
+ "name": "punctuation.separator.import.swift"
1257
+ },
1258
+ {
1259
+ "begin": "(?!;|$|//|/\\*)",
1260
+ "end": "(?=;|$|//|/\\*)",
1261
+ "name": "invalid.illegal.character-not-allowed-here.swift"
1262
+ }
1263
+ ]
1264
+ }
1265
+ ]
1266
+ },
1267
+ "inheritance-clause": {
1268
+ "begin": "(:)(?=\\s*\\{)|(:)\\s*",
1269
+ "beginCaptures": {
1270
+ "1": {
1271
+ "name": "invalid.illegal.empty-inheritance-clause.swift"
1272
+ },
1273
+ "2": {
1274
+ "name": "punctuation.separator.inheritance-clause.swift"
1275
+ }
1276
+ },
1277
+ "end": "(?!\\G)\\n|(?=[={}]|(?!\\G)\\bwhere\\b)",
1278
+ "name": "meta.inheritance-clause.swift",
1279
+ "patterns": [
1280
+ {
1281
+ "begin": "\\G",
1282
+ "end": "(?!\\G)\\n|(?=[={}]|(?!\\G)\\bwhere\\b)",
1283
+ "name": "entity.other.inherited-class.swift",
1284
+ "patterns": [
1285
+ {
1286
+ "include": "#available-types"
1287
+ }
1288
+ ]
1289
+ }
1290
+ ]
1291
+ },
1292
+ "operator": {
1293
+ "begin": "(?x)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\\b(prefix|infix|postfix)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(operator)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t | \\.\t\t\t\t\t\t\t\t\t# Invalid dot\n\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)*+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )++ )\t\t\t# Dot operators\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t",
1294
+ "beginCaptures": {
1295
+ "1": {
1296
+ "name": "storage.modifier.swift"
1297
+ },
1298
+ "2": {
1299
+ "name": "storage.type.function.operator.swift"
1300
+ },
1301
+ "3": {
1302
+ "name": "entity.name.function.operator.swift"
1303
+ },
1304
+ "4": {
1305
+ "patterns": [
1306
+ {
1307
+ "match": "\\.",
1308
+ "name": "invalid.illegal.dot-not-allowed-here.swift"
1309
+ }
1310
+ ]
1311
+ }
1312
+ },
1313
+ "end": "(;)|$\\n?|(?=//|/\\*)",
1314
+ "endCaptures": {
1315
+ "1": {
1316
+ "name": "punctuation.terminator.statement.swift"
1317
+ }
1318
+ },
1319
+ "name": "meta.definition.operator.swift",
1320
+ "patterns": [
1321
+ {
1322
+ "include": "#swift2"
1323
+ },
1324
+ {
1325
+ "include": "#swift3"
1326
+ },
1327
+ {
1328
+ "match": "((?!$|;|//|/\\*)\\S)+",
1329
+ "name": "invalid.illegal.character-not-allowed-here.swift"
1330
+ }
1331
+ ],
1332
+ "repository": {
1333
+ "swift2": {
1334
+ "begin": "\\G(\\{)",
1335
+ "beginCaptures": {
1336
+ "1": {
1337
+ "name": "punctuation.definition.operator.begin.swift"
1338
+ }
1339
+ },
1340
+ "end": "(\\})",
1341
+ "endCaptures": {
1342
+ "1": {
1343
+ "name": "punctuation.definition.operator.end.swift"
1344
+ }
1345
+ },
1346
+ "patterns": [
1347
+ {
1348
+ "include": "#comments"
1349
+ },
1350
+ {
1351
+ "captures": {
1352
+ "1": {
1353
+ "name": "storage.modifier.swift"
1354
+ },
1355
+ "2": {
1356
+ "name": "keyword.other.operator.associativity.swift"
1357
+ }
1358
+ },
1359
+ "match": "\\b(associativity)\\s+(left|right)\\b"
1360
+ },
1361
+ {
1362
+ "captures": {
1363
+ "1": {
1364
+ "name": "storage.modifier.swift"
1365
+ },
1366
+ "2": {
1367
+ "name": "constant.numeric.integer.swift"
1368
+ }
1369
+ },
1370
+ "match": "\\b(precedence)\\s+([0-9]+)\\b"
1371
+ },
1372
+ {
1373
+ "captures": {
1374
+ "1": {
1375
+ "name": "storage.modifier.swift"
1376
+ }
1377
+ },
1378
+ "match": "\\b(assignment)\\b"
1379
+ }
1380
+ ]
1381
+ },
1382
+ "swift3": {
1383
+ "captures": {
1384
+ "2": {
1385
+ "name": "entity.other.inherited-class.swift",
1386
+ "patterns": [
1387
+ {
1388
+ "include": "#types-precedencegroup"
1389
+ }
1390
+ ]
1391
+ },
1392
+ "3": {
1393
+ "name": "punctuation.definition.identifier.swift"
1394
+ },
1395
+ "4": {
1396
+ "name": "punctuation.definition.identifier.swift"
1397
+ }
1398
+ },
1399
+ "match": "\\G(:)\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
1400
+ }
1401
+ }
1402
+ },
1403
+ "parameter-clause": {
1404
+ "begin": "(\\()",
1405
+ "beginCaptures": {
1406
+ "1": {
1407
+ "name": "punctuation.definition.parameters.begin.swift"
1408
+ }
1409
+ },
1410
+ "end": "(\\))",
1411
+ "endCaptures": {
1412
+ "1": {
1413
+ "name": "punctuation.definition.parameters.end.swift"
1414
+ }
1415
+ },
1416
+ "name": "meta.parameter-clause.swift",
1417
+ "patterns": [
1418
+ {
1419
+ "include": "#parameter-list"
1420
+ }
1421
+ ]
1422
+ },
1423
+ "parameter-list": {
1424
+ "patterns": [
1425
+ {
1426
+ "captures": {
1427
+ "1": {
1428
+ "name": "entity.name.function.swift"
1429
+ },
1430
+ "2": {
1431
+ "name": "punctuation.definition.identifier.swift"
1432
+ },
1433
+ "3": {
1434
+ "name": "punctuation.definition.identifier.swift"
1435
+ },
1436
+ "4": {
1437
+ "name": "variable.parameter.function.swift"
1438
+ },
1439
+ "5": {
1440
+ "name": "punctuation.definition.identifier.swift"
1441
+ },
1442
+ "6": {
1443
+ "name": "punctuation.definition.identifier.swift"
1444
+ }
1445
+ },
1446
+ "comment": "External parameter labels are considered part of the function name",
1447
+ "match": "((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>))\\s+((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>))(?=\\s*:)"
1448
+ },
1449
+ {
1450
+ "captures": {
1451
+ "1": {
1452
+ "name": "entity.name.function.swift"
1453
+ },
1454
+ "2": {
1455
+ "name": "variable.parameter.function.swift"
1456
+ },
1457
+ "3": {
1458
+ "name": "punctuation.definition.identifier.swift"
1459
+ },
1460
+ "4": {
1461
+ "name": "punctuation.definition.identifier.swift"
1462
+ }
1463
+ },
1464
+ "comment": "If no external label is given, the name is both the external label and the internal variable name",
1465
+ "match": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)))(?=\\s*:)"
1466
+ },
1467
+ {
1468
+ "begin": ":\\s*(?!\\s)",
1469
+ "end": "(?=[,)])",
1470
+ "patterns": [
1471
+ {
1472
+ "include": "#available-types"
1473
+ },
1474
+ {
1475
+ "match": ":",
1476
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
1477
+ },
1478
+ {
1479
+ "begin": "=",
1480
+ "beginCaptures": {
1481
+ "0": {
1482
+ "name": "keyword.operator.assignment.swift"
1483
+ }
1484
+ },
1485
+ "comment": "a parameter's default value",
1486
+ "end": "(?=[,)])",
1487
+ "patterns": [
1488
+ {
1489
+ "include": "#expressions"
1490
+ }
1491
+ ]
1492
+ }
1493
+ ]
1494
+ }
1495
+ ]
1496
+ },
1497
+ "precedencegroup": {
1498
+ "begin": "\\b(precedencegroup)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(?=\\{)",
1499
+ "beginCaptures": {
1500
+ "1": {
1501
+ "name": "storage.type.precedencegroup.swift"
1502
+ },
1503
+ "2": {
1504
+ "name": "entity.name.type.precedencegroup.swift"
1505
+ },
1506
+ "3": {
1507
+ "name": "punctuation.definition.identifier.swift"
1508
+ },
1509
+ "4": {
1510
+ "name": "punctuation.definition.identifier.swift"
1511
+ }
1512
+ },
1513
+ "end": "(?!\\G)",
1514
+ "name": "meta.definition.precedencegroup.swift",
1515
+ "patterns": [
1516
+ {
1517
+ "begin": "\\{",
1518
+ "beginCaptures": {
1519
+ "0": {
1520
+ "name": "punctuation.definition.precedencegroup.begin.swift"
1521
+ }
1522
+ },
1523
+ "end": "\\}",
1524
+ "endCaptures": {
1525
+ "0": {
1526
+ "name": "punctuation.definition.precedencegroup.end.swift"
1527
+ }
1528
+ },
1529
+ "patterns": [
1530
+ {
1531
+ "include": "#comments"
1532
+ },
1533
+ {
1534
+ "captures": {
1535
+ "1": {
1536
+ "name": "storage.modifier.swift"
1537
+ },
1538
+ "2": {
1539
+ "name": "entity.other.inherited-class.swift",
1540
+ "patterns": [
1541
+ {
1542
+ "include": "#types-precedencegroup"
1543
+ }
1544
+ ]
1545
+ },
1546
+ "3": {
1547
+ "name": "punctuation.definition.identifier.swift"
1548
+ },
1549
+ "4": {
1550
+ "name": "punctuation.definition.identifier.swift"
1551
+ }
1552
+ },
1553
+ "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
1554
+ },
1555
+ {
1556
+ "captures": {
1557
+ "1": {
1558
+ "name": "storage.modifier.swift"
1559
+ },
1560
+ "2": {
1561
+ "name": "keyword.other.operator.associativity.swift"
1562
+ }
1563
+ },
1564
+ "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?"
1565
+ },
1566
+ {
1567
+ "captures": {
1568
+ "1": {
1569
+ "name": "storage.modifier.swift"
1570
+ },
1571
+ "2": {
1572
+ "name": "constant.language.boolean.swift"
1573
+ }
1574
+ },
1575
+ "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?"
1576
+ }
1577
+ ]
1578
+ }
1579
+ ]
1580
+ },
1581
+ "protocol": {
1582
+ "begin": "\\b(protocol)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1583
+ "beginCaptures": {
1584
+ "1": {
1585
+ "name": "storage.type.$1.swift"
1586
+ },
1587
+ "2": {
1588
+ "name": "entity.name.type.$1.swift"
1589
+ },
1590
+ "3": {
1591
+ "name": "punctuation.definition.identifier.swift"
1592
+ },
1593
+ "4": {
1594
+ "name": "punctuation.definition.identifier.swift"
1595
+ }
1596
+ },
1597
+ "end": "(?<=\\})",
1598
+ "name": "meta.definition.type.protocol.swift",
1599
+ "patterns": [
1600
+ {
1601
+ "include": "#comments"
1602
+ },
1603
+ {
1604
+ "include": "#inheritance-clause"
1605
+ },
1606
+ {
1607
+ "begin": "\\{",
1608
+ "beginCaptures": {
1609
+ "0": {
1610
+ "name": "punctuation.definition.type.begin.swift"
1611
+ }
1612
+ },
1613
+ "end": "\\}",
1614
+ "endCaptures": {
1615
+ "0": {
1616
+ "name": "punctuation.definition.type.end.swift"
1617
+ }
1618
+ },
1619
+ "name": "meta.definition.type.body.swift",
1620
+ "patterns": [
1621
+ {
1622
+ "include": "#protocol-method"
1623
+ },
1624
+ {
1625
+ "include": "#associated-type"
1626
+ },
1627
+ {
1628
+ "include": "$self"
1629
+ }
1630
+ ]
1631
+ }
1632
+ ],
1633
+ "repository": {
1634
+ "associated-type": {
1635
+ "begin": "\\b(associatedtype)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
1636
+ "beginCaptures": {
1637
+ "1": {
1638
+ "name": "keyword.other.declaration-specifier.swift"
1639
+ },
1640
+ "2": {
1641
+ "name": "variable.language.associatedtype.swift"
1642
+ },
1643
+ "3": {
1644
+ "name": "punctuation.definition.identifier.swift"
1645
+ },
1646
+ "4": {
1647
+ "name": "punctuation.definition.identifier.swift"
1648
+ }
1649
+ },
1650
+ "end": "(?!\\G)\\n|(?=[;}]|$)",
1651
+ "name": "meta.definition.associatedtype.swift",
1652
+ "patterns": [
1653
+ {
1654
+ "include": "#inheritance-clause"
1655
+ },
1656
+ {
1657
+ "comment": "SE-0142: Permit where clauses to constrain associated types",
1658
+ "include": "#generic-where-clause"
1659
+ },
1660
+ {
1661
+ "include": "#typealias-assignment"
1662
+ }
1663
+ ]
1664
+ },
1665
+ "protocol-method": {
1666
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\\b\n\t\t\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t \t\t\t\t\t\t | (?:\n\t\t \t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t \t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t \t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t \t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t \t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t \t\t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t)*\n\t\t \t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t \t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t(?=\\(|<)\n\t\t\t\t\t\t\t",
1667
+ "beginCaptures": {
1668
+ "1": {
1669
+ "name": "storage.type.function.swift"
1670
+ },
1671
+ "2": {
1672
+ "name": "entity.name.function.swift"
1673
+ },
1674
+ "3": {
1675
+ "name": "punctuation.definition.identifier.swift"
1676
+ },
1677
+ "4": {
1678
+ "name": "punctuation.definition.identifier.swift"
1679
+ }
1680
+ },
1681
+ "end": "$|(?=;|//|/\\*|\\})",
1682
+ "name": "meta.definition.function.swift",
1683
+ "patterns": [
1684
+ {
1685
+ "include": "#comments"
1686
+ },
1687
+ {
1688
+ "include": "#generic-parameter-clause"
1689
+ },
1690
+ {
1691
+ "include": "#parameter-clause"
1692
+ },
1693
+ {
1694
+ "include": "#function-result"
1695
+ },
1696
+ {
1697
+ "match": "\\b(?:throws|rethrows)\\b",
1698
+ "name": "keyword.control.exception.swift"
1699
+ },
1700
+ {
1701
+ "comment": "Swift 3: generic constraints after the parameters and return type",
1702
+ "include": "#generic-where-clause"
1703
+ },
1704
+ {
1705
+ "begin": "\\{",
1706
+ "beginCaptures": {
1707
+ "0": {
1708
+ "name": "punctuation.section.function.begin.swift"
1709
+ }
1710
+ },
1711
+ "end": "\\}",
1712
+ "endCaptures": {
1713
+ "0": {
1714
+ "name": "punctuation.section.function.end.swift"
1715
+ }
1716
+ },
1717
+ "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1718
+ "patterns": [
1719
+ {
1720
+ "include": "$self"
1721
+ }
1722
+ ]
1723
+ }
1724
+ ]
1725
+ }
1726
+ }
1727
+ },
1728
+ "type": {
1729
+ "patterns": [
1730
+ {
1731
+ "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1732
+ "beginCaptures": {
1733
+ "1": {
1734
+ "name": "storage.type.$1.swift"
1735
+ },
1736
+ "2": {
1737
+ "name": "entity.name.type.$1.swift"
1738
+ },
1739
+ "3": {
1740
+ "name": "punctuation.definition.identifier.swift"
1741
+ },
1742
+ "4": {
1743
+ "name": "punctuation.definition.identifier.swift"
1744
+ }
1745
+ },
1746
+ "end": "(?<=\\})",
1747
+ "name": "meta.definition.type.$1.swift",
1748
+ "patterns": [
1749
+ {
1750
+ "include": "#comments"
1751
+ },
1752
+ {
1753
+ "include": "#generic-parameter-clause"
1754
+ },
1755
+ {
1756
+ "comment": "Swift 3: generic constraints after the generic param list",
1757
+ "include": "#generic-where-clause"
1758
+ },
1759
+ {
1760
+ "include": "#inheritance-clause"
1761
+ },
1762
+ {
1763
+ "begin": "\\{",
1764
+ "beginCaptures": {
1765
+ "0": {
1766
+ "name": "punctuation.definition.type.begin.swift"
1767
+ }
1768
+ },
1769
+ "end": "\\}",
1770
+ "endCaptures": {
1771
+ "0": {
1772
+ "name": "punctuation.definition.type.end.swift"
1773
+ }
1774
+ },
1775
+ "name": "meta.definition.type.body.swift",
1776
+ "patterns": [
1777
+ {
1778
+ "include": "$self"
1779
+ }
1780
+ ]
1781
+ }
1782
+ ]
1783
+ },
1784
+ {
1785
+ "include": "#type-enum"
1786
+ }
1787
+ ]
1788
+ },
1789
+ "type-enum": {
1790
+ "begin": "\\b(enum)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1791
+ "beginCaptures": {
1792
+ "1": {
1793
+ "name": "storage.type.$1.swift"
1794
+ },
1795
+ "2": {
1796
+ "name": "entity.name.type.$1.swift"
1797
+ },
1798
+ "3": {
1799
+ "name": "punctuation.definition.identifier.swift"
1800
+ },
1801
+ "4": {
1802
+ "name": "punctuation.definition.identifier.swift"
1803
+ }
1804
+ },
1805
+ "end": "(?<=\\})",
1806
+ "name": "meta.definition.type.$1.swift",
1807
+ "patterns": [
1808
+ {
1809
+ "include": "#comments"
1810
+ },
1811
+ {
1812
+ "include": "#generic-parameter-clause"
1813
+ },
1814
+ {
1815
+ "comment": "Swift 3: generic constraints after the generic param list",
1816
+ "include": "#generic-where-clause"
1817
+ },
1818
+ {
1819
+ "include": "#inheritance-clause"
1820
+ },
1821
+ {
1822
+ "begin": "\\{",
1823
+ "beginCaptures": {
1824
+ "0": {
1825
+ "name": "punctuation.definition.type.begin.swift"
1826
+ }
1827
+ },
1828
+ "end": "\\}",
1829
+ "endCaptures": {
1830
+ "0": {
1831
+ "name": "punctuation.definition.type.end.swift"
1832
+ }
1833
+ },
1834
+ "name": "meta.definition.type.body.swift",
1835
+ "patterns": [
1836
+ {
1837
+ "include": "#enum-case-clause"
1838
+ },
1839
+ {
1840
+ "include": "$self"
1841
+ }
1842
+ ]
1843
+ }
1844
+ ],
1845
+ "repository": {
1846
+ "associated-values": {
1847
+ "begin": "\\G\\(",
1848
+ "beginCaptures": {
1849
+ "0": {
1850
+ "name": "punctuation.definition.parameters.begin.swift"
1851
+ }
1852
+ },
1853
+ "end": "\\)",
1854
+ "endCaptures": {
1855
+ "0": {
1856
+ "name": "punctuation.definition.parameters.end.swift"
1857
+ }
1858
+ },
1859
+ "patterns": [
1860
+ {
1861
+ "include": "#comments"
1862
+ },
1863
+ {
1864
+ "captures": {
1865
+ "1": {
1866
+ "name": "invalid.illegal.distinct-labels-not-allowed.swift"
1867
+ },
1868
+ "3": {
1869
+ "name": "entity.name.function.swift"
1870
+ },
1871
+ "4": {
1872
+ "name": "variable.parameter.function.swift"
1873
+ },
1874
+ "6": {
1875
+ "name": "punctuation.separator.argument-label.swift"
1876
+ }
1877
+ },
1878
+ "end": "(?=[,)\\]])",
1879
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q1>)\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q2>))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)"
1880
+ },
1881
+ {
1882
+ "begin": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q>))\\s*(:)",
1883
+ "beginCaptures": {
1884
+ "1": {
1885
+ "name": "entity.name.function.swift"
1886
+ },
1887
+ "2": {
1888
+ "name": "variable.parameter.function.swift"
1889
+ },
1890
+ "4": {
1891
+ "name": "punctuation.separator.argument-label.swift"
1892
+ }
1893
+ },
1894
+ "end": "(?=[,)\\]])",
1895
+ "patterns": [
1896
+ {
1897
+ "include": "#available-types"
1898
+ }
1899
+ ]
1900
+ },
1901
+ {
1902
+ "begin": "(?![,)\\]])(?=\\S)",
1903
+ "comment": "an element without a label (i.e. anything else)",
1904
+ "end": "(?=[,)\\]])",
1905
+ "patterns": [
1906
+ {
1907
+ "include": "#available-types"
1908
+ },
1909
+ {
1910
+ "match": ":",
1911
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
1912
+ }
1913
+ ]
1914
+ }
1915
+ ]
1916
+ },
1917
+ "enum-case": {
1918
+ "begin": "(?x)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
1919
+ "beginCaptures": {
1920
+ "1": {
1921
+ "name": "constant.other.swift"
1922
+ }
1923
+ },
1924
+ "end": "(?<=\\))|(?![=(])",
1925
+ "patterns": [
1926
+ {
1927
+ "include": "#comments"
1928
+ },
1929
+ {
1930
+ "include": "#associated-values"
1931
+ },
1932
+ {
1933
+ "include": "#raw-value-assignment"
1934
+ }
1935
+ ]
1936
+ },
1937
+ "enum-case-clause": {
1938
+ "begin": "\\b(case)\\b\\s*",
1939
+ "beginCaptures": {
1940
+ "1": {
1941
+ "name": "storage.type.enum.case.swift"
1942
+ }
1943
+ },
1944
+ "end": "(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])",
1945
+ "patterns": [
1946
+ {
1947
+ "include": "#comments"
1948
+ },
1949
+ {
1950
+ "include": "#enum-case"
1951
+ },
1952
+ {
1953
+ "include": "#more-cases"
1954
+ }
1955
+ ]
1956
+ },
1957
+ "more-cases": {
1958
+ "begin": ",\\s*",
1959
+ "end": "(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])",
1960
+ "name": "meta.enum-case.more-cases",
1961
+ "patterns": [
1962
+ {
1963
+ "include": "#comments"
1964
+ },
1965
+ {
1966
+ "include": "#enum-case"
1967
+ },
1968
+ {
1969
+ "include": "#more-cases"
1970
+ }
1971
+ ]
1972
+ },
1973
+ "raw-value-assignment": {
1974
+ "begin": "(=)\\s*",
1975
+ "beginCaptures": {
1976
+ "1": {
1977
+ "name": "keyword.operator.assignment.swift"
1978
+ }
1979
+ },
1980
+ "end": "(?!\\G)",
1981
+ "patterns": [
1982
+ {
1983
+ "include": "#comments"
1984
+ },
1985
+ {
1986
+ "include": "#literals"
1987
+ }
1988
+ ]
1989
+ }
1990
+ }
1991
+ },
1992
+ "type-identifier": {
1993
+ "patterns": [
1994
+ {
1995
+ "captures": {
1996
+ "0": {
1997
+ "patterns": [
1998
+ {
1999
+ "include": "#builtin-types"
2000
+ }
2001
+ ]
2002
+ },
2003
+ "1": {
2004
+ "name": "punctuation.definition.identifier.swift"
2005
+ },
2006
+ "2": {
2007
+ "name": "punctuation.definition.identifier.swift"
2008
+ }
2009
+ },
2010
+ "match": "(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)",
2011
+ "name": "meta.type-name.swift"
2012
+ },
2013
+ {
2014
+ "begin": "(?!\\G)(?=<)",
2015
+ "end": "(?!\\G)",
2016
+ "patterns": [
2017
+ {
2018
+ "include": "#generic-argument-clause"
2019
+ }
2020
+ ]
2021
+ }
2022
+ ]
2023
+ },
2024
+ "typealias": {
2025
+ "begin": "\\b(typealias)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
2026
+ "beginCaptures": {
2027
+ "1": {
2028
+ "name": "keyword.other.declaration-specifier.swift"
2029
+ },
2030
+ "2": {
2031
+ "name": "entity.name.type.typealias.swift"
2032
+ },
2033
+ "3": {
2034
+ "name": "punctuation.definition.identifier.swift"
2035
+ },
2036
+ "4": {
2037
+ "name": "punctuation.definition.identifier.swift"
2038
+ }
2039
+ },
2040
+ "end": "(?!\\G)\\n|(?=;|$)",
2041
+ "name": "meta.definition.typealias.swift",
2042
+ "patterns": [
2043
+ {
2044
+ "include": "#generic-parameter-clause"
2045
+ },
2046
+ {
2047
+ "include": "#typealias-assignment"
2048
+ }
2049
+ ]
2050
+ },
2051
+ "typealias-assignment": {
2052
+ "begin": "(=)\\s*",
2053
+ "beginCaptures": {
2054
+ "1": {
2055
+ "name": "keyword.operator.assignment.swift"
2056
+ }
2057
+ },
2058
+ "end": "(?!\\G)",
2059
+ "patterns": [
2060
+ {
2061
+ "include": "#available-types"
2062
+ }
2063
+ ]
2064
+ },
2065
+ "types-precedencegroup": {
2066
+ "patterns": [
2067
+ {
2068
+ "comment": "Precedence groups in the standard library",
2069
+ "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b",
2070
+ "name": "support.type.swift"
2071
+ }
2072
+ ]
524
2073
  }
525
- ]
2074
+ }
526
2075
  },
527
- "generic-parameter-clause": {
528
- "begin": "(<)",
529
- "beginCaptures": {
530
- "1": {
531
- "name": "punctuation.definition.generic-parameter-clause.begin.swift"
532
- }
533
- },
534
- "comment": "generic-parameter-clause",
535
- "end": "(>)",
536
- "endCaptures": {
537
- "1": {
538
- "name": "punctuation.definition.generic-parameter-clause.end.swift"
539
- }
540
- },
541
- "name": "meta.generic-parameter-clause.swift",
2076
+ "expressions": {
542
2077
  "patterns": [
543
2078
  {
544
- "include": "$self"
2079
+ "include": "#comments"
2080
+ },
2081
+ {
2082
+ "include": "#code-block"
2083
+ },
2084
+ {
2085
+ "include": "#attributes"
2086
+ },
2087
+ {
2088
+ "include": "#closure-parameter"
2089
+ },
2090
+ {
2091
+ "include": "#literals"
2092
+ },
2093
+ {
2094
+ "include": "#operators"
2095
+ },
2096
+ {
2097
+ "include": "#builtin-types"
2098
+ },
2099
+ {
2100
+ "include": "#builtin-functions"
2101
+ },
2102
+ {
2103
+ "include": "#builtin-global-functions"
2104
+ },
2105
+ {
2106
+ "include": "#builtin-properties"
2107
+ },
2108
+ {
2109
+ "include": "#compound-name"
2110
+ },
2111
+ {
2112
+ "include": "#keywords"
2113
+ },
2114
+ {
2115
+ "include": "#function-call-expression"
2116
+ },
2117
+ {
2118
+ "include": "#subscript-expression"
2119
+ },
2120
+ {
2121
+ "include": "#parenthesized-expression"
2122
+ },
2123
+ {
2124
+ "include": "#member-reference"
2125
+ },
2126
+ {
2127
+ "include": "#availability-condition"
2128
+ },
2129
+ {
2130
+ "match": "\\b_\\b",
2131
+ "name": "support.variable.discard-value.swift"
545
2132
  }
546
- ]
547
- },
548
- "identifier": {
549
- "comment": "identifier",
550
- "match": "(\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B)",
551
- "name": "meta.identifier.swift"
552
- },
553
- "if-statement-keyword": {
554
- "comment": "if-statement",
555
- "match": "\\b(if|else)\\b",
556
- "name": "keyword.control.if.swift"
557
- },
558
- "import-declaration": {
559
- "captures": {
560
- "1": {
561
- "name": "keyword.other.import.swift"
2133
+ ],
2134
+ "repository": {
2135
+ "availability-condition": {
2136
+ "begin": "\\B(#available)(\\()",
2137
+ "beginCaptures": {
2138
+ "1": {
2139
+ "name": "support.function.availability-condition.swift"
2140
+ },
2141
+ "2": {
2142
+ "name": "punctuation.definition.arguments.begin.swift"
2143
+ }
2144
+ },
2145
+ "end": "\\)",
2146
+ "endCaptures": {
2147
+ "0": {
2148
+ "name": "punctuation.definition.arguments.end.swift"
2149
+ }
2150
+ },
2151
+ "patterns": [
2152
+ {
2153
+ "captures": {
2154
+ "1": {
2155
+ "name": "keyword.other.platform.os.swift"
2156
+ },
2157
+ "2": {
2158
+ "name": "constant.numeric.swift"
2159
+ }
2160
+ },
2161
+ "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))"
2162
+ },
2163
+ {
2164
+ "captures": {
2165
+ "1": {
2166
+ "name": "keyword.other.platform.all.swift"
2167
+ },
2168
+ "2": {
2169
+ "name": "invalid.illegal.character-not-allowed-here.swift"
2170
+ }
2171
+ },
2172
+ "match": "(\\*)\\s*(.*?)(?=[,)])"
2173
+ },
2174
+ {
2175
+ "match": "[^\\s,)]+",
2176
+ "name": "invalid.illegal.character-not-allowed-here.swift"
2177
+ }
2178
+ ]
562
2179
  },
563
- "2": {
564
- "name": "storage.modifier.swift"
2180
+ "closure-parameter": {
2181
+ "match": "\\$[0-9]+",
2182
+ "name": "variable.other.closure-parameter.swift"
2183
+ },
2184
+ "compound-name": {
2185
+ "captures": {
2186
+ "1": {
2187
+ "name": "entity.name.function.compound-name.swift"
2188
+ },
2189
+ "2": {
2190
+ "name": "punctuation.definition.entity.swift"
2191
+ },
2192
+ "3": {
2193
+ "name": "punctuation.definition.entity.swift"
2194
+ },
2195
+ "4": {
2196
+ "patterns": [
2197
+ {
2198
+ "captures": {
2199
+ "1": {
2200
+ "name": "punctuation.definition.entity.swift"
2201
+ },
2202
+ "2": {
2203
+ "name": "punctuation.definition.entity.swift"
2204
+ }
2205
+ },
2206
+ "match": "(?<q>`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>):",
2207
+ "name": "entity.name.function.compound-name.swift"
2208
+ }
2209
+ ]
2210
+ }
2211
+ },
2212
+ "comment": "a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.",
2213
+ "match": "(?x)\n\t\t\t\t\t\t((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>)) \t\t# function name\n\t\t\t\t\t\t\\(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>)) \t# argument label\n\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t\t\t\t\t# colon\n\t\t\t\t\t\t\t\t)+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\\)\n\t\t\t\t\t"
2214
+ },
2215
+ "expression-element-list": {
2216
+ "patterns": [
2217
+ {
2218
+ "include": "#comments"
2219
+ },
2220
+ {
2221
+ "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(:)",
2222
+ "beginCaptures": {
2223
+ "1": {
2224
+ "name": "support.function.any-method.swift"
2225
+ },
2226
+ "2": {
2227
+ "name": "punctuation.definition.identifier.swift"
2228
+ },
2229
+ "3": {
2230
+ "name": "punctuation.definition.identifier.swift"
2231
+ },
2232
+ "4": {
2233
+ "name": "punctuation.separator.argument-label.swift"
2234
+ }
2235
+ },
2236
+ "comment": "an element with a label",
2237
+ "end": "(?=[,)\\]])",
2238
+ "patterns": [
2239
+ {
2240
+ "include": "#expressions"
2241
+ }
2242
+ ]
2243
+ },
2244
+ {
2245
+ "begin": "(?![,)\\]])(?=\\S)",
2246
+ "comment": "an element without a label (i.e. anything else)",
2247
+ "end": "(?=[,)\\]])",
2248
+ "patterns": [
2249
+ {
2250
+ "include": "#expressions"
2251
+ }
2252
+ ]
2253
+ }
2254
+ ]
2255
+ },
2256
+ "function-call-expression": {
2257
+ "patterns": [
2258
+ {
2259
+ "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(\\()",
2260
+ "beginCaptures": {
2261
+ "1": {
2262
+ "name": "support.function.any-method.swift"
2263
+ },
2264
+ "2": {
2265
+ "name": "punctuation.definition.identifier.swift"
2266
+ },
2267
+ "3": {
2268
+ "name": "punctuation.definition.identifier.swift"
2269
+ },
2270
+ "4": {
2271
+ "name": "punctuation.definition.arguments.begin.swift"
2272
+ }
2273
+ },
2274
+ "comment": "foo(args) -- a call whose callee is a highlightable name",
2275
+ "end": "\\)",
2276
+ "endCaptures": {
2277
+ "0": {
2278
+ "name": "punctuation.definition.arguments.end.swift"
2279
+ }
2280
+ },
2281
+ "name": "meta.function-call.swift",
2282
+ "patterns": [
2283
+ {
2284
+ "include": "#expression-element-list"
2285
+ }
2286
+ ]
2287
+ },
2288
+ {
2289
+ "begin": "(?<=[`\\])}>\\p{L}_\\p{N}\\p{M}])\\s*(\\()",
2290
+ "beginCaptures": {
2291
+ "1": {
2292
+ "name": "punctuation.definition.arguments.begin.swift"
2293
+ }
2294
+ },
2295
+ "comment": "[Int](args) -- a call whose callee is a more complicated expression",
2296
+ "end": "\\)",
2297
+ "endCaptures": {
2298
+ "0": {
2299
+ "name": "punctuation.definition.arguments.end.swift"
2300
+ }
2301
+ },
2302
+ "name": "meta.function-call.swift",
2303
+ "patterns": [
2304
+ {
2305
+ "include": "#expression-element-list"
2306
+ }
2307
+ ]
2308
+ }
2309
+ ]
2310
+ },
2311
+ "member-reference": {
2312
+ "patterns": [
2313
+ {
2314
+ "captures": {
2315
+ "1": {
2316
+ "name": "variable.other.swift"
2317
+ },
2318
+ "2": {
2319
+ "name": "punctuation.definition.identifier.swift"
2320
+ },
2321
+ "3": {
2322
+ "name": "punctuation.definition.identifier.swift"
2323
+ }
2324
+ },
2325
+ "match": "(?<=\\.)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
2326
+ }
2327
+ ]
2328
+ },
2329
+ "parenthesized-expression": {
2330
+ "begin": "\\(",
2331
+ "beginCaptures": {
2332
+ "0": {
2333
+ "name": "punctuation.section.tuple.begin.swift"
2334
+ }
2335
+ },
2336
+ "end": "\\)",
2337
+ "endCaptures": {
2338
+ "0": {
2339
+ "name": "punctuation.section.tuple.end.swift"
2340
+ }
2341
+ },
2342
+ "patterns": [
2343
+ {
2344
+ "include": "#expression-element-list"
2345
+ }
2346
+ ]
565
2347
  },
566
- "3": {
567
- "name": "support.type.module.import.swift"
2348
+ "subscript-expression": {
2349
+ "begin": "(?<=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",
2350
+ "beginCaptures": {
2351
+ "1": {
2352
+ "name": "punctuation.definition.arguments.begin.swift"
2353
+ }
2354
+ },
2355
+ "end": "\\]",
2356
+ "endCaptures": {
2357
+ "0": {
2358
+ "name": "punctuation.definition.arguments.end.swift"
2359
+ }
2360
+ },
2361
+ "name": "meta.subscript-expression.swift",
2362
+ "patterns": [
2363
+ {
2364
+ "include": "#expression-element-list"
2365
+ }
2366
+ ]
568
2367
  }
569
- },
570
- "comment": "import-declaration",
571
- "match": "\\b(import)\\s+(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?((?:\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B|[/=\\-+!*%<>&|\\^~.]+)(?:\\.(?:\\B\\$[0-9]+|\\b[\\w^\\d][\\w\\d]*\\b|\\B`[\\w^\\d][\\w\\d]*`\\B|[/=\\-+!*%<>&|\\^~.]+))*)",
572
- "name": "meta.import.swift"
573
- },
574
- "increment-decrement-operator": {
575
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(\\+\\+|\\-\\-)(?![/=\\-+!*%<>&|\\^~.])",
576
- "name": "keyword.operator.increment-or-decrement.swift"
2368
+ }
577
2369
  },
578
- "integer-literal": {
579
- "name": "constant.numeric.integer.swift",
2370
+ "keywords": {
580
2371
  "patterns": [
581
2372
  {
582
- "comment": "binary-literal",
583
- "match": "(\\B\\-|\\b)(0b[01][01_]*)\\b",
584
- "name": "constant.numeric.integer.binary.swift"
585
- },
586
- {
587
- "comment": "octal-literal",
588
- "match": "(\\B\\-|\\b)(0o[0-7][0-7_]*)\\b",
589
- "name": "constant.numeric.integer.octal.swift"
2373
+ "match": "(?<!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b",
2374
+ "name": "keyword.control.branch.swift"
590
2375
  },
591
2376
  {
592
- "comment": "decimal-literal",
593
- "match": "(\\B\\-|\\b)([0-9][0-9_]*)\\b",
594
- "name": "constant.numeric.integer.decimal.swift"
2377
+ "match": "(?<!\\.)\\b(?:continue|break|fallthrough|return)\\b",
2378
+ "name": "keyword.control.transfer.swift"
595
2379
  },
596
2380
  {
597
- "comment": "hexadecimal-literal",
598
- "match": "(\\B\\-|\\b)(0x\\h[\\h_]*)\\b",
599
- "name": "constant.numeric.integer.hexadecimal.swift"
600
- }
601
- ]
602
- },
603
- "keyword": {
604
- "patterns": [
605
- {
606
- "include": "#branch-statement-keyword"
2381
+ "match": "(?<!\\.)\\b(?:while|for|in)\\b",
2382
+ "name": "keyword.control.loop.swift"
607
2383
  },
608
2384
  {
609
- "include": "#control-transfer-statement-keyword"
2385
+ "captures": {
2386
+ "1": {
2387
+ "name": "keyword.control.loop.swift"
2388
+ },
2389
+ "2": {
2390
+ "name": "punctuation.whitespace.trailing.repeat.swift"
2391
+ }
2392
+ },
2393
+ "comment": "extra scopes for repeat-while snippet",
2394
+ "match": "(?<!\\.)\\b(repeat)\\b(\\s*)"
610
2395
  },
611
2396
  {
612
- "include": "#loop-statement-keyword"
2397
+ "match": "(?<!\\.)\\bdefer\\b",
2398
+ "name": "keyword.control.defer.swift"
613
2399
  },
614
2400
  {
615
- "include": "#declaration-specifier"
2401
+ "match": "(?<!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B",
2402
+ "name": "keyword.control.exception.swift"
616
2403
  },
617
2404
  {
618
- "include": "#capture-specifier"
2405
+ "captures": {
2406
+ "1": {
2407
+ "name": "keyword.control.exception.swift"
2408
+ },
2409
+ "2": {
2410
+ "name": "punctuation.whitespace.trailing.do.swift"
2411
+ }
2412
+ },
2413
+ "comment": "extra scopes for do-catch snippet",
2414
+ "match": "(?<!\\.)\\b(do)\\b(\\s*)"
619
2415
  },
620
2416
  {
621
- "include": "#operator-declaration-keyword"
2417
+ "match": "(?<!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b",
2418
+ "name": "keyword.other.declaration-specifier.swift"
622
2419
  },
623
2420
  {
624
- "comment": "declaration keyword",
625
- "match": "\\b(class|deinit|enum|extension|func|import|init|inout|internal|let|operator|private|protocol|public|static|struct|subscript|typealias|var)\\b",
626
- "name": "storage.type.declaration.swift"
2421
+ "match": "(?<!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b",
2422
+ "name": "storage.type.$1.swift"
627
2423
  },
628
2424
  {
629
- "comment": "statement keyword",
630
- "match": "\\b(break|case|continue|default|defer|do|else|fallthrough|for|guard|if|in|repeat|return|switch|where|while)\\b",
631
- "name": "keyword.control.statement.swift"
2425
+ "match": "(?<!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b",
2426
+ "name": "storage.modifier.swift"
632
2427
  },
633
2428
  {
634
- "comment": "expression and type keyword",
635
- "match": "\\b(as|catch|dynamicType|false|is|nil|rethrows|super|self|Self|throw|throws|true|try|__COLUMN__|__FILE__|__FUNCTION__|__LINE__)\\b",
636
- "name": "keyword.other.statement.swift"
2429
+ "match": "\\binit[?!]|\\binit\\b|(?<!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b",
2430
+ "name": "storage.type.function.swift"
637
2431
  },
638
2432
  {
639
- "comment": "other keyword",
640
- "match": "\\b(associativity|convenience|dynamic|didSet|final|get|infix|indirect|lazy|left|mutating|none|nonmutating|optional|override|postfix|precedence|prefix|Protocol|required|right|set|Type|unowned|weak|willSet)\\b",
641
- "name": "keyword.other.swift"
642
- }
643
- ]
644
- },
645
- "literal": {
646
- "patterns": [
647
- {
648
- "include": "#integer-literal"
2433
+ "match": "(?<!\\.)\\b(?:fileprivate|private|internal|public|open)\\b",
2434
+ "name": "keyword.other.declaration-specifier.accessibility.swift"
649
2435
  },
650
2436
  {
651
- "include": "#floating-point-literal"
2437
+ "comment": "matches weak, unowned, unowned(safe), unowned(unsafe)",
2438
+ "match": "(?<!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)",
2439
+ "name": "keyword.other.capture-specifier.swift"
652
2440
  },
653
2441
  {
654
- "include": "#string-literal"
2442
+ "captures": {
2443
+ "1": {
2444
+ "name": "keyword.operator.type.swift"
2445
+ },
2446
+ "2": {
2447
+ "name": "keyword.operator.type.metatype.swift"
2448
+ }
2449
+ },
2450
+ "match": "(?<=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b"
655
2451
  },
656
2452
  {
657
- "include": "#special-literal"
2453
+ "match": "(?<!\\.)\\b(?:super|self|Self)\\b",
2454
+ "name": "variable.language.swift"
658
2455
  },
659
2456
  {
660
- "include": "#boolean-literal"
2457
+ "match": "\\B(?:#file|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b",
2458
+ "name": "support.variable.swift"
661
2459
  },
662
2460
  {
663
- "include": "#nil-literal"
2461
+ "match": "(?<!\\.)\\bimport\\b",
2462
+ "name": "keyword.control.import.swift"
664
2463
  }
665
2464
  ]
666
2465
  },
667
- "logical-operator": {
668
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(!|&&|\\|\\|)(?![/=\\-+!*%<>&|\\^~.])",
669
- "name": "keyword.operator.logical.swift"
670
- },
671
- "loop-statement-keyword": {
672
- "comment": "loop-statement",
673
- "match": "\\b(while|do|for|in)\\b",
674
- "name": "keyword.control.loop.swift"
675
- },
676
- "nil-literal": {
677
- "match": "\\bnil\\b",
678
- "name": "constant.language.nil.swift"
679
- },
680
- "operator": {
2466
+ "literals": {
681
2467
  "patterns": [
682
2468
  {
683
- "include": "#comparative-operator"
684
- },
685
- {
686
- "include": "#assignment-operator"
687
- },
688
- {
689
- "include": "#logical-operator"
690
- },
691
- {
692
- "include": "#remainder-operator"
693
- },
694
- {
695
- "include": "#increment-decrement-operator"
696
- },
697
- {
698
- "include": "#overflow-operator"
699
- },
700
- {
701
- "include": "#range-operator"
702
- },
703
- {
704
- "include": "#bitwise-operator"
2469
+ "include": "#boolean"
705
2470
  },
706
2471
  {
707
- "include": "#arithmetic-operator"
2472
+ "include": "#numeric"
708
2473
  },
709
2474
  {
710
- "include": "#ternary-operator"
2475
+ "include": "#string"
711
2476
  },
712
2477
  {
713
- "include": "#type-casting-operator"
2478
+ "match": "\\bnil\\b",
2479
+ "name": "constant.language.nil.swift"
714
2480
  },
715
2481
  {
716
- "include": "#coalescing-operator"
2482
+ "comment": "object \"literals\" used in playgrounds",
2483
+ "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b",
2484
+ "name": "support.function.object-literal.swift"
717
2485
  },
718
2486
  {
719
- "include": "#custom-operator"
720
- }
721
- ]
722
- },
723
- "operator-declaration-keyword": {
724
- "comment": "operator-declaration",
725
- "match": "\\b(operator|prefix|infix|postfix)\\b",
726
- "name": "keyword.other.operator.swift"
727
- },
728
- "optional-type": {
729
- "beginCaptures": {
730
- "1": {
731
- "name": "support.type.optional.swift"
2487
+ "match": "\\B#keyPath\\b",
2488
+ "name": "support.function.key-path.swift"
732
2489
  },
733
- "2": {
734
- "name": "punctuation.definition.optional.begin.swift"
735
- }
736
- },
737
- "end": "(>)",
738
- "endCaptures": {
739
- "1": {
740
- "name": "punctuation.definition.optional.end.swift"
741
- }
742
- },
743
- "match": "\\b(Optional)(<)",
744
- "name": "meta.optional.swift",
745
- "patterns": [
746
- {
747
- "include": "$self"
748
- }
749
- ]
750
- },
751
- "overflow-operator": {
752
- "match": "(?<![/=\\-+!*%<>&|\\^~.])\\&(\\+|\\-|\\*|\\/|%)(?![/=\\-+!*%<>&|\\^~.])",
753
- "name": "keyword.operator.overflow.swift"
754
- },
755
- "parameter-clause": {
756
- "begin": "(\\()",
757
- "beginCaptures": {
758
- "1": {
759
- "name": "punctuation.definition.function-arguments.begin.swift"
760
- }
761
- },
762
- "comment": "parameter-clause",
763
- "end": "(\\))",
764
- "endCaptures": {
765
- "1": {
766
- "name": "punctuation.definition.function-arguments.end.swift"
767
- }
768
- },
769
- "name": "meta.parameter-clause.swift",
770
- "patterns": [
771
2490
  {
772
- "captures": {
2491
+ "begin": "\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?",
2492
+ "beginCaptures": {
773
2493
  "1": {
774
- "name": "entity.name.function.swift"
2494
+ "name": "support.function.selector-reference.swift"
775
2495
  },
776
2496
  "2": {
777
- "name": "variable.parameter.function.swift"
2497
+ "name": "punctuation.definition.arguments.begin.swift"
2498
+ },
2499
+ "3": {
2500
+ "name": "support.variable.parameter.swift"
2501
+ },
2502
+ "4": {
2503
+ "name": "punctuation.separator.argument-label.swift"
778
2504
  }
779
2505
  },
780
- "comment": "named parameters",
781
- "match": "\\b([\\w^\\d][\\w\\d]*)\\b\\s+\\b([\\w^\\d][\\w\\d]*)\\b"
782
- },
783
- {
784
- "include": "$self"
785
- }
786
- ]
787
- },
788
- "protocol-composition-type": {
789
- "beginCaptures": {
790
- "1": {
791
- "name": "support.type.protocol.swift"
792
- },
793
- "2": {
794
- "name": "punctuation.definition.protocol.begin.swift"
795
- }
796
- },
797
- "end": "(>)",
798
- "endCaptures": {
799
- "1": {
800
- "name": "punctuation.definition.protocol.end.swift"
801
- }
802
- },
803
- "match": "\\b(protocol)(<)",
804
- "name": "meta.protocol.swift",
805
- "patterns": [
806
- {
807
- "include": "$self"
808
- }
809
- ]
810
- },
811
- "range-operator": {
812
- "match": "(?<![/=\\-+!*%<>&|\\^~.])\\.\\.[.<]?(?![/=\\-+!*%<>&|\\^~.])",
813
- "name": "keyword.operator.range.swift"
814
- },
815
- "remainder-operator": {
816
- "match": "(?<![/=\\-+!*%<>&|\\^~.])\\%(?![/=\\-+!*%<>&|\\^~.])",
817
- "name": "keyword.operator.remainder.swift"
818
- },
819
- "section-punctuation": {
820
- "patterns": [
821
- {
822
- "captures": {
823
- "1": {
824
- "name": "punctuation.section.scope.begin.swift"
825
- },
826
- "2": {
827
- "name": "punctuation.section.scope.end.swift"
2506
+ "end": "\\)",
2507
+ "endCaptures": {
2508
+ "0": {
2509
+ "name": "punctuation.definition.arguments.end.swift"
828
2510
  }
829
2511
  },
830
- "comment": "Allows the special return snippet to fire.",
831
- "match": "(\\{)(\\})"
2512
+ "patterns": [
2513
+ {
2514
+ "include": "#expressions"
2515
+ }
2516
+ ]
2517
+ }
2518
+ ],
2519
+ "repository": {
2520
+ "boolean": {
2521
+ "match": "\\b(true|false)\\b",
2522
+ "name": "constant.language.boolean.swift"
832
2523
  },
833
- {
834
- "captures": {
835
- "1": {
836
- "name": "punctuation.section.scope.begin.swift"
2524
+ "numeric": {
2525
+ "patterns": [
2526
+ {
2527
+ "comment": "0.1, -4_2.5, 6.022e23, 10E-5",
2528
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])",
2529
+ "name": "constant.numeric.float.decimal.swift"
837
2530
  },
838
- "2": {
839
- "name": "punctuation.section.scope.end.swift"
2531
+ {
2532
+ "comment": "-0x1.ap2_3, 0x31p-4",
2533
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x\\h[\\h_]*)(?:\\.\\h[\\h_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])",
2534
+ "name": "constant.numeric.float.hexadecimal.swift"
2535
+ },
2536
+ {
2537
+ "comment": "0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz",
2538
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x\\h[\\h_]*)(?:\\.\\h[\\h_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])",
2539
+ "name": "invalid.illegal.numeric.float.invalid-exponent.swift"
2540
+ },
2541
+ {
2542
+ "comment": "0x1.5w (note that 0x1.f may be a valid expression)",
2543
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x\\h[\\h_]*)\\.[0-9][\\w.]*",
2544
+ "name": "invalid.illegal.numeric.float.missing-exponent.swift"
2545
+ },
2546
+ {
2547
+ "comment": "-.5, .2f (note that 1.-.5 may be a valid expression)",
2548
+ "match": "(?<=\\s|^)\\-?\\.[0-9][\\w.]*",
2549
+ "name": "invalid.illegal.numeric.float.missing-leading-zero.swift"
2550
+ },
2551
+ {
2552
+ "comment": "0b_0_1, 0x_1p+3q",
2553
+ "match": "(\\B\\-|\\b)0[box]_[\\h_]*(?:[pPeE][+-]?\\w+)?[\\w.]+",
2554
+ "name": "invalid.illegal.numeric.leading-underscore.swift"
2555
+ },
2556
+ {
2557
+ "comment": "tuple positional member: not really a numeric literal, but not invalid",
2558
+ "match": "(?<=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"
2559
+ },
2560
+ {
2561
+ "comment": "0b010, 0b1_0",
2562
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])",
2563
+ "name": "constant.numeric.integer.binary.swift"
2564
+ },
2565
+ {
2566
+ "comment": "0o1, 0o7_3",
2567
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])",
2568
+ "name": "constant.numeric.integer.octal.swift"
2569
+ },
2570
+ {
2571
+ "comment": "02, 3_456",
2572
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])",
2573
+ "name": "constant.numeric.integer.decimal.swift"
2574
+ },
2575
+ {
2576
+ "comment": "0x4, 0xF_7",
2577
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x\\h[\\h_]*\\b(?!\\.[0-9])",
2578
+ "name": "constant.numeric.integer.hexadecimal.swift"
2579
+ },
2580
+ {
2581
+ "match": "(\\B\\-|\\b)[0-9][\\w.]*",
2582
+ "name": "invalid.illegal.numeric.other.swift"
840
2583
  }
841
- },
842
- "comment": "Allows the special return snippet to fire.",
843
- "match": "(\\()(\\))"
2584
+ ]
844
2585
  },
845
- {
846
- "captures": {
847
- "1": {
848
- "name": "punctuation.section.scope.begin.swift"
849
- },
850
- "2": {
851
- "name": "punctuation.section.scope.end.swift"
2586
+ "string": {
2587
+ "patterns": [
2588
+ {
2589
+ "begin": "\"",
2590
+ "beginCaptures": {
2591
+ "0": {
2592
+ "name": "punctuation.definition.string.begin.swift"
2593
+ }
2594
+ },
2595
+ "end": "\"",
2596
+ "endCaptures": {
2597
+ "0": {
2598
+ "name": "punctuation.definition.string.end.swift"
2599
+ }
2600
+ },
2601
+ "name": "string.quoted.double.swift",
2602
+ "patterns": [
2603
+ {
2604
+ "match": "\\r|\\n",
2605
+ "name": "invalid.illegal.returns-not-allowed.swift"
2606
+ },
2607
+ {
2608
+ "match": "\\\\[0\\\\tnr\"']",
2609
+ "name": "constant.character.escape.swift"
2610
+ },
2611
+ {
2612
+ "match": "\\\\u\\{\\h{1,8}\\}",
2613
+ "name": "constant.character.escape.unicode.swift"
2614
+ },
2615
+ {
2616
+ "captures": {
2617
+ "1": {
2618
+ "name": "punctuation.section.embedded.begin.swift"
2619
+ },
2620
+ "2": {
2621
+ "name": "source.swift",
2622
+ "patterns": [
2623
+ {
2624
+ "include": "#root"
2625
+ }
2626
+ ]
2627
+ },
2628
+ "5": {
2629
+ "name": "punctuation.section.embedded.end.swift"
2630
+ },
2631
+ "6": {
2632
+ "name": "source.swift"
2633
+ }
2634
+ },
2635
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(\\\\\\()\t\t\t\t\t\t\t# Opening\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t(?<parens>\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[^()\"]\t\t\t\t# Anything except parens\n\t\t\t\t\t\t\t\t\t\t\t\t | \\(\t\t\t\t\t# Matched pairs of parens\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g<parens>\t\t\t# …that can be nested\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\)\n\t\t\t\t\t\t\t\t\t\t\t\t | \"\t\t\t\t\t# Strings\n\t\t\t\t\t\t\t\t\t\t\t\t\t([^\\\\]|\\\\.)*\t\t# Contents allowing for escapes\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t((\\)))\t\t\t\t\t\t\t# Closing\n\t\t\t\t\t\t\t\t\t",
2636
+ "name": "meta.embedded.line.swift"
2637
+ },
2638
+ {
2639
+ "match": "\\\\.",
2640
+ "name": "invalid.illegal.escape-not-recognized"
2641
+ }
2642
+ ]
852
2643
  }
853
- },
854
- "comment": "Allows the special return snippet to fire.",
855
- "match": "(\\[)(\\])"
856
- }
857
- ]
858
- },
859
- "shebang-line": {
860
- "captures": {
861
- "1": {
862
- "name": "punctuation.definition.comment.line.shebang.swift"
2644
+ ]
863
2645
  }
864
- },
865
- "comment": "Shebang line",
866
- "match": "^(#!).*$",
867
- "name": "comment.line.shebang.swift"
868
- },
869
- "special-literal": {
870
- "match": "\\b__(FILE|LINE|COLUMN|FUNCTION)__\\b",
871
- "name": "keyword.other.literal.swift"
872
- },
873
- "storage-type": {
874
- "match": "\\b(var|func|let|class|enum|struct|protocol|extension|typealias)\\b",
875
- "name": "storage.type.swift"
2646
+ }
876
2647
  },
877
- "string-literal": {
878
- "begin": "\"",
879
- "beginCaptures": {
880
- "0": {
881
- "name": "punctuation.definition.string.begin.swift"
882
- }
883
- },
884
- "end": "\"",
885
- "endCaptures": {
886
- "0": {
887
- "name": "punctuation.definition.string.end.swift"
888
- }
889
- },
890
- "name": "string.quoted.double.swift",
2648
+ "operators": {
891
2649
  "patterns": [
892
2650
  {
893
- "captures": {
894
- "1": {
895
- "name": "punctuation.definition.escape.swift"
896
- }
897
- },
898
- "match": "(\\\\)[0\\\\tnr\"']",
899
- "name": "constant.character.escape.swift"
900
- },
901
- {
902
- "captures": {
903
- "1": {
904
- "name": "punctuation.definition.escape.swift"
905
- }
906
- },
907
- "match": "(\\\\)u\\{\\h{1,8}\\}",
908
- "name": "constant.character.escape.swift"
2651
+ "comment": "Type casting",
2652
+ "match": "\\b(is\\b|as([!?]\\B|\\b))",
2653
+ "name": "keyword.operator.type-casting.swift"
909
2654
  },
910
2655
  {
911
- "begin": "\\\\\\(",
912
- "beginCaptures": {
913
- "0": {
914
- "name": "punctuation.section.embedded.begin.swift"
915
- }
916
- },
917
- "contentName": "source.swift",
918
- "end": "\\)",
919
- "endCaptures": {
920
- "0": {
921
- "name": "punctuation.section.embedded.end.swift"
922
- },
923
- "1": {
924
- "name": "source.swift"
925
- }
926
- },
927
- "name": "meta.embedded.line.swift",
2656
+ "begin": "(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\g<oph>\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
2657
+ "comment": "This rule helps us speed up the matching.",
2658
+ "end": "(?!\\G)",
928
2659
  "patterns": [
929
2660
  {
930
- "include": "$self"
2661
+ "captures": {
2662
+ "0": {
2663
+ "patterns": [
2664
+ {
2665
+ "match": "\\G(\\+\\+|\\-\\-)$",
2666
+ "name": "keyword.operator.increment-or-decrement.swift"
2667
+ },
2668
+ {
2669
+ "match": "\\G(\\+|\\-)$",
2670
+ "name": "keyword.operator.arithmetic.unary.swift"
2671
+ },
2672
+ {
2673
+ "match": "\\G!$",
2674
+ "name": "keyword.operator.logical.not.swift"
2675
+ },
2676
+ {
2677
+ "match": "\\G~$",
2678
+ "name": "keyword.operator.bitwise.not.swift"
2679
+ },
2680
+ {
2681
+ "match": ".+",
2682
+ "name": "keyword.operator.custom.prefix.swift"
2683
+ }
2684
+ ]
2685
+ }
2686
+ },
2687
+ "comment": "Prefix unary operator",
2688
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
931
2689
  },
932
2690
  {
933
- "begin": "\\(",
934
- "comment": "Nested parens",
935
- "end": "\\)"
2691
+ "captures": {
2692
+ "0": {
2693
+ "patterns": [
2694
+ {
2695
+ "match": "\\G(\\+\\+|\\-\\-)$",
2696
+ "name": "keyword.operator.increment-or-decrement.swift"
2697
+ },
2698
+ {
2699
+ "match": "\\G!$",
2700
+ "name": "keyword.operator.increment-or-decrement.swift"
2701
+ },
2702
+ {
2703
+ "match": ".+",
2704
+ "name": "keyword.operator.custom.postfix.swift"
2705
+ }
2706
+ ]
2707
+ }
2708
+ },
2709
+ "comment": "Postfix unary operator",
2710
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
2711
+ },
2712
+ {
2713
+ "captures": {
2714
+ "0": {
2715
+ "patterns": [
2716
+ {
2717
+ "match": "\\G=$",
2718
+ "name": "keyword.operator.assignment.swift"
2719
+ },
2720
+ {
2721
+ "match": "\\G(\\+|\\-|\\*|/|%|<<|>>|&|\\^|\\||&&|\\|\\|)=$",
2722
+ "name": "keyword.operator.assignment.compound.swift"
2723
+ },
2724
+ {
2725
+ "match": "\\G(\\+|\\-|\\*|/)$",
2726
+ "name": "keyword.operator.arithmetic.swift"
2727
+ },
2728
+ {
2729
+ "match": "\\G&(\\+|\\-|\\*)$",
2730
+ "name": "keyword.operator.arithmetic.overflow.swift"
2731
+ },
2732
+ {
2733
+ "match": "\\G%$",
2734
+ "name": "keyword.operator.arithmetic.remainder.swift"
2735
+ },
2736
+ {
2737
+ "match": "\\G(==|!=|>|<|>=|<=|~=)$",
2738
+ "name": "keyword.operator.comparison.swift"
2739
+ },
2740
+ {
2741
+ "match": "\\G\\?\\?$",
2742
+ "name": "keyword.operator.coalescing.swift"
2743
+ },
2744
+ {
2745
+ "match": "\\G(&&|\\|\\|)$",
2746
+ "name": "keyword.operator.logical.swift"
2747
+ },
2748
+ {
2749
+ "match": "\\G(&|\\||\\^|<<|>>)$",
2750
+ "name": "keyword.operator.bitwise.swift"
2751
+ },
2752
+ {
2753
+ "match": "\\G(===|!==)$",
2754
+ "name": "keyword.operator.bitwise.swift"
2755
+ },
2756
+ {
2757
+ "match": "\\G\\?$",
2758
+ "name": "keyword.operator.ternary.swift"
2759
+ },
2760
+ {
2761
+ "match": ".+",
2762
+ "name": "keyword.operator.custom.infix.swift"
2763
+ }
2764
+ ]
2765
+ }
2766
+ },
2767
+ "comment": "Infix operator",
2768
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t"
2769
+ },
2770
+ {
2771
+ "captures": {
2772
+ "0": {
2773
+ "patterns": [
2774
+ {
2775
+ "match": ".+",
2776
+ "name": "keyword.operator.custom.prefix.dot.swift"
2777
+ }
2778
+ ]
2779
+ }
2780
+ },
2781
+ "comment": "Dot prefix unary operator",
2782
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
2783
+ },
2784
+ {
2785
+ "captures": {
2786
+ "0": {
2787
+ "patterns": [
2788
+ {
2789
+ "match": ".+",
2790
+ "name": "keyword.operator.custom.postfix.dot.swift"
2791
+ }
2792
+ ]
2793
+ }
2794
+ },
2795
+ "comment": "Dot postfix unary operator",
2796
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
2797
+ },
2798
+ {
2799
+ "captures": {
2800
+ "0": {
2801
+ "patterns": [
2802
+ {
2803
+ "match": "\\G\\.\\.[.<]$",
2804
+ "name": "keyword.operator.range.swift"
2805
+ },
2806
+ {
2807
+ "match": ".+",
2808
+ "name": "keyword.operator.custom.infix.dot.swift"
2809
+ }
2810
+ ]
2811
+ }
2812
+ },
2813
+ "comment": "Dot infix operator",
2814
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t"
936
2815
  }
937
2816
  ]
938
2817
  },
939
2818
  {
940
- "captures": {
941
- "1": {
942
- "name": "punctuation.definition.escape.swift"
943
- }
944
- },
945
- "match": "(\\\\).",
946
- "name": "invalid.illegal.unrecognized-escape.swift"
2819
+ "match": ":",
2820
+ "name": "keyword.operator.ternary.swift"
947
2821
  }
948
2822
  ]
949
2823
  },
950
- "switch-statement-keyword": {
951
- "comment": "switch-statement",
952
- "match": "\\b(switch|case|default|where)\\b",
953
- "name": "keyword.control.switch.swift"
954
- },
955
- "ternary-operator": {
956
- "match": "(?<=[\\s(\\[{,;:])(\\?|:)(?=[\\s)\\]},;:])",
957
- "name": "keyword.operator.ternary.swift"
958
- },
959
- "type": {
960
- "comment": "type",
2824
+ "root": {
961
2825
  "patterns": [
962
2826
  {
963
- "include": "#builtin-type"
964
- },
965
- {
966
- "include": "#collection-type"
2827
+ "include": "#compiler-control"
967
2828
  },
968
2829
  {
969
- "include": "#optional-type"
2830
+ "include": "#declarations"
970
2831
  },
971
2832
  {
972
- "include": "#protocol-composition-type"
2833
+ "include": "#expressions"
973
2834
  }
974
2835
  ]
975
- },
976
- "type-casting-operator": {
977
- "match": "\\b(is\\b|as([!?]\\B|\\b))",
978
- "name": "keyword.operator.type-casting.swift"
979
2836
  }
980
2837
  },
981
2838
  "scopeName": "source.swift",
982
- "uuid": "D133338A-DEED-4ECC-9852-A392C44D10AC"
2839
+ "uuid": "8C743E89-9C8D-4833-8149-6500D82AA463"
983
2840
  }