|
279 | 279 | ]
|
280 | 280 | }
|
281 | 281 | {
|
282 |
| - 'match': '''(?x) |
283 |
| - (?<!\\.)\\b(super|this|arguments)(?!\\s*:)\\b |
284 |
| - | |
285 |
| - (?<=\\?)\\s*(super|this|arguments)(?=\\s*:) |
286 |
| - | |
287 |
| - (?<=[\\s}:;]case|^case)\\s+(super|this|arguments)(?=\\s*:) |
288 |
| - ''' |
289 |
| - 'captures': |
290 |
| - '1': |
291 |
| - 'name': 'variable.language.js' |
292 |
| - '2': |
293 |
| - 'name': 'variable.language.js' |
294 |
| - '3': |
295 |
| - 'name': 'variable.language.js' |
| 282 | + 'match': '(?<!\\.)\\b(super|this|arguments)(?!\\s*:)\\b' |
| 283 | + 'name': 'variable.language.js' |
296 | 284 | }
|
297 | 285 | {
|
298 | 286 | # [async] function [name](params)
|
|
890 | 878 | ]
|
891 | 879 | }
|
892 | 880 | {
|
893 |
| - 'match': '(?<!\\.)\\b(yield)(?!\\s*:)\\b(?:\\s*(\\*))?|(?<=\\?)(?:\\s*)(yield)(?=\\s*:)', |
| 881 | + 'match': '(?<!\\.)\\b(yield)(?!\\s*:)\\b(?:\\s*(\\*))?', |
894 | 882 | 'captures':
|
895 | 883 | '1':
|
896 | 884 | 'name': 'keyword.control.js'
|
897 | 885 | '2':
|
898 | 886 | 'name': 'storage.modifier.js'
|
899 |
| - '3': |
900 |
| - 'name': 'keyword.control.js' |
901 |
| - '4': |
902 |
| - 'name': 'storage.modifier.js' |
903 | 887 | 'name': 'meta.control.yield.js'
|
904 | 888 | }
|
905 | 889 | {
|
906 |
| - 'match': '(?<!\\.)\\b(await|break|case|catch|continue|do|else|finally|for|if|import|package|return|switch|throw|try|while|with)(?!\\s*:)\\b' |
| 890 | + 'match': '(?<!\\.)\\b(await|break|catch|continue|do|else|finally|for|if|import|package|return|throw|try|while|with)(?!\\s*:)\\b' |
907 | 891 | 'name': 'keyword.control.js'
|
908 | 892 | }
|
909 | 893 | {
|
910 |
| - 'match': '(?<!\\.)\\b(default)\\b' |
911 |
| - 'name': 'keyword.control.js' |
| 894 | + 'include': '#switch_statement' |
912 | 895 | }
|
913 | 896 | {
|
914 | 897 | 'match': '(?<!\\.)\\b(delete|in|of|instanceof|new|typeof|void)(?!\\s*:)\\b'
|
|
919 | 902 | 'name': 'keyword.operator.spread.js'
|
920 | 903 | }
|
921 | 904 | {
|
922 |
| - 'match': '''(?x) |
923 |
| - (?<!\\.)\\b(true|false)(?!\\s*:)\\b |
924 |
| - | |
925 |
| - (?<=\\?)\\s*(true|false)(?=\\s*:) |
926 |
| - | |
927 |
| - (?<=[\\s}:;]case|^case)\\s+(true|false)(?=\\s*:) |
928 |
| - ''' |
929 |
| - 'captures': |
930 |
| - '1': |
931 |
| - 'name': 'constant.language.boolean.$1.js' |
932 |
| - '2': |
933 |
| - 'name': 'constant.language.boolean.$2.js' |
934 |
| - '3': |
935 |
| - 'name': 'constant.language.boolean.$3.js' |
| 905 | + 'match': '(?<!\\.)\\b(true|false)(?!\\s*:)\\b' |
| 906 | + 'name': 'constant.language.boolean.$1.js' |
936 | 907 | }
|
937 | 908 | {
|
938 |
| - 'match': '''(?x) |
939 |
| - (?<!\\.)\\b(null)(?!\\s*:)\\b |
940 |
| - | |
941 |
| - (?<=\\?)\\s*(null)(?=\\s*:) |
942 |
| - | |
943 |
| - (?<=[\\s}:;]case|^case)\\s+(null)(?=\\s*:) |
944 |
| - ''' |
945 |
| - 'captures': |
946 |
| - '1': |
947 |
| - 'name': 'constant.language.null.js' |
948 |
| - '2': |
949 |
| - 'name': 'constant.language.null.js' |
950 |
| - '3': |
951 |
| - 'name': 'constant.language.null.js' |
| 909 | + 'match': '(?<!\\.)\\b(null)(?!\\s*:)\\b' |
| 910 | + 'name': 'constant.language.null.js' |
952 | 911 | }
|
953 | 912 | {
|
954 |
| - 'match': '''(?x) |
955 |
| - (?<!\\.)\\b(debugger)(?!\\s*:)\\b |
956 |
| - | |
957 |
| - (?<=\\?)\\s*(debugger)(?=\\s*:) |
958 |
| - | |
959 |
| - (?<=[\\s}:;]case|^case)\\s+(debugger)(?=\\s*:) |
960 |
| - ''' |
961 |
| - 'captures': |
962 |
| - '1': |
963 |
| - 'name': 'keyword.other.js' |
964 |
| - '2': |
965 |
| - 'name': 'keyword.other.js' |
966 |
| - '3': |
967 |
| - 'name': 'keyword.other.js' |
| 913 | + 'match': '(?<!\\.)\\b(debugger)(?!\\s*:)\\b' |
| 914 | + 'name': 'keyword.other.debugger.js' |
968 | 915 | }
|
969 | 916 | {
|
970 | 917 | 'match': '''(?x) (?<!\\$) \\b
|
|
1036 | 983 | 'name': 'support.constant.dom.js'
|
1037 | 984 | }
|
1038 | 985 | {
|
1039 |
| - 'match': '''(?x) |
1040 |
| - (?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b |
1041 |
| - | |
1042 |
| - (?<=\\?)\\s*(module|exports|__filename|__dirname|global|process)(?=\\s*:) |
1043 |
| - | |
1044 |
| - (?<=[\\s}:;]case|^case)\\s+(module|exports|__filename|__dirname|global|process)(?=\\s*:) |
1045 |
| - ''' |
1046 |
| - 'captures': |
1047 |
| - '1': |
1048 |
| - 'name': 'support.variable.js' |
1049 |
| - '2': |
1050 |
| - 'name': 'support.variable.js' |
1051 |
| - '3': |
1052 |
| - 'name': 'support.variable.js' |
| 986 | + 'match': '(?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b' |
| 987 | + 'name': 'support.variable.js' |
1053 | 988 | }
|
1054 | 989 | {
|
1055 | 990 | 'match': '\\b(Infinity|NaN|undefined)\\b'
|
|
1071 | 1006 | }
|
1072 | 1007 | ]
|
1073 | 1008 | }
|
| 1009 | + { |
| 1010 | + 'begin': '\\?' |
| 1011 | + 'beginCaptures': |
| 1012 | + '0': |
| 1013 | + 'name': 'keyword.operator.ternary.js' |
| 1014 | + 'end': ':' |
| 1015 | + 'endCaptures': |
| 1016 | + '0': |
| 1017 | + 'name': 'keyword.operator.ternary.js' |
| 1018 | + 'patterns': [ |
| 1019 | + { |
| 1020 | + 'include': '#prevent_object_keys_matching' |
| 1021 | + } |
| 1022 | + { |
| 1023 | + 'include': '$self' |
| 1024 | + } |
| 1025 | + ] |
| 1026 | + } |
1074 | 1027 | {
|
1075 | 1028 | 'include': '#operators'
|
1076 | 1029 | }
|
|
1090 | 1043 | 'include': '#properties'
|
1091 | 1044 | }
|
1092 | 1045 | {
|
1093 |
| - 'match': '(?<!\\.)\\b([A-Z][A-Z0-9_]+)(?!\\s*:)\\b|(?<=\\?)(?:\\s*)([A-Z][A-Z0-9_]+)(?=\\s*:)' |
1094 |
| - 'captures': |
1095 |
| - '1': |
1096 |
| - 'name': 'constant.other.js' |
1097 |
| - '2': |
1098 |
| - 'name': 'constant.other.js' |
| 1046 | + 'match': '(?<!\\.)\\b[A-Z][A-Z0-9_]+(?!\\s*:)\\b' |
| 1047 | + 'name': 'constant.other.js' |
1099 | 1048 | }
|
1100 | 1049 | {
|
1101 | 1050 | 'match': '(?<!\\$)\\b[0-9]+[\\w$]*'
|
|
1229 | 1178 | 'name': 'keyword.operator.bitwise.js'
|
1230 | 1179 | }
|
1231 | 1180 | {
|
1232 |
| - 'match': '\\?|:' |
1233 |
| - 'name': 'keyword.operator.js' |
1234 |
| - } |
1235 |
| - { |
1236 |
| - 'match': '=' |
| 1181 | + 'match': '=|:' |
1237 | 1182 | 'name': 'keyword.operator.assignment.js'
|
1238 | 1183 | }
|
1239 | 1184 | {
|
|
1816 | 1761 | ]
|
1817 | 1762 | }
|
1818 | 1763 | ]
|
| 1764 | + 'switch_statement': |
| 1765 | + 'patterns': [ |
| 1766 | + { |
| 1767 | + # switch(expression) {...} |
| 1768 | + 'begin': '\\bswitch\\b' |
| 1769 | + 'beginCaptures': |
| 1770 | + '0': |
| 1771 | + 'name': 'keyword.control.switch.js' |
| 1772 | + 'end': '}' |
| 1773 | + 'endCaptures': |
| 1774 | + '0': |
| 1775 | + 'name': 'punctuation.definition.section.switch-block.end.bracket.curly.js' |
| 1776 | + 'name': 'meta.switch-statement.js' |
| 1777 | + 'patterns': [ |
| 1778 | + { |
| 1779 | + 'begin': '\\(' |
| 1780 | + 'beginCaptures': |
| 1781 | + '0': |
| 1782 | + 'name': 'punctuation.definition.switch-expression.begin.bracket.round.js' |
| 1783 | + 'end': '\\)' |
| 1784 | + 'endCaptures': |
| 1785 | + '0': |
| 1786 | + 'name': 'punctuation.definition.switch-expression.end.bracket.round.js' |
| 1787 | + 'patterns': [ |
| 1788 | + 'include': '$self' |
| 1789 | + ] |
| 1790 | + } |
| 1791 | + { |
| 1792 | + 'begin': '{' |
| 1793 | + 'beginCaptures': |
| 1794 | + '0': |
| 1795 | + 'name': 'punctuation.definition.section.switch-block.begin.bracket.curly.js' |
| 1796 | + 'end': '(?=})' |
| 1797 | + 'patterns': [ |
| 1798 | + { |
| 1799 | + 'begin': '\\bcase\\b' |
| 1800 | + 'beginCaptures': |
| 1801 | + '0': |
| 1802 | + 'name': 'keyword.control.case.js' |
| 1803 | + 'end': ':' |
| 1804 | + 'endCaptures': |
| 1805 | + '0': |
| 1806 | + 'name': 'punctuation.definition.section.case-statement.js' |
| 1807 | + 'patterns': [ |
| 1808 | + { |
| 1809 | + 'include': '#prevent_object_keys_matching' |
| 1810 | + } |
| 1811 | + { |
| 1812 | + 'include': '$self' |
| 1813 | + } |
| 1814 | + ] |
| 1815 | + } |
| 1816 | + { |
| 1817 | + 'match': '(?:^\\s*)?\\b(default)\\b\\s*(:)' |
| 1818 | + 'captures': |
| 1819 | + '1': |
| 1820 | + 'name': 'keyword.control.default.js' |
| 1821 | + '2': |
| 1822 | + 'name': 'punctuation.definition.section.case-statement.js' |
| 1823 | + } |
| 1824 | + { |
| 1825 | + 'include': '$self' |
| 1826 | + } |
| 1827 | + ] |
| 1828 | + } |
| 1829 | + ] |
| 1830 | + } |
| 1831 | + ] |
| 1832 | + 'prevent_object_keys_matching': |
| 1833 | + 'patterns': [ |
| 1834 | + { |
| 1835 | + # e.g. don't treat null as an object key in |
| 1836 | + # ? null : |
| 1837 | + # case null: |
| 1838 | + 'match': '(\\w+)(?=\\s*:)' |
| 1839 | + 'captures': |
| 1840 | + '1': |
| 1841 | + 'patterns': [ |
| 1842 | + 'include': '$self' |
| 1843 | + ] |
| 1844 | + } |
| 1845 | + ] |
0 commit comments