|
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