| author | |
| committer | |
| log | 00306a3d8c31b6a24d62794b40df738acd543577 |
| tree | 232e59fd389e62315c651b297cff79200bbac7bc |
| parent | fa86e0da8bb2677603cb5bcda64b565a362359a6 |
| signature | Commit is signed but in an unrecognized format. |
82 files changed, 58218 insertions(+), 5 deletions(-)
meow.txt created| Binary files /dev/null and b/meow.txt differ |
package-lock.json+514| ... | ... | @@ -8,6 +8,7 @@ |
| 8 | 8 | "@hono/node-server": "^1.14.3", |
| 9 | 9 | "@mdx-js/mdx": "^3.1.0", |
| 10 | 10 | "@paperclover/console": "git+https://git.paperclover.net/clo/console.git", |
| 11 | "blurhash": "^2.0.5", | |
| 11 | 12 | "codemirror": "^6.0.1", |
| 12 | 13 | "devalue": "^5.1.1", |
| 13 | 14 | "esbuild": "^0.25.5", |
| ... | ... | @@ -15,6 +16,7 @@ |
| 15 | 16 | "hono": "^4.7.11", |
| 16 | 17 | "marko": "^6.0.20", |
| 17 | 18 | "puppeteer": "^24.10.1", |
| 19 | "sharp": "^0.34.2", | |
| 18 | 20 | "unique-names-generator": "^4.7.1" |
| 19 | 21 | }, |
| 20 | 22 | "devDependencies": { |
| ... | ... | @@ -487,6 +489,16 @@ |
| 487 | 489 | "w3c-keyname": "^2.2.4" |
| 488 | 490 | } |
| 489 | 491 | }, |
| 492 | "node_modules/@emnapi/runtime": { | |
| 493 | "version": "1.4.3", | |
| 494 | "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", | |
| 495 | "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", | |
| 496 | "license": "MIT", | |
| 497 | "optional": true, | |
| 498 | "dependencies": { | |
| 499 | "tslib": "^2.4.0" | |
| 500 | } | |
| 501 | }, | |
| 490 | 502 | "node_modules/@esbuild/aix-ppc64": { |
| 491 | 503 | "version": "0.25.5", |
| 492 | 504 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", |
| ... | ... | @@ -899,6 +911,402 @@ |
| 899 | 911 | "hono": "^4" |
| 900 | 912 | } |
| 901 | 913 | }, |
| 914 | "node_modules/@img/sharp-darwin-arm64": { | |
| 915 | "version": "0.34.2", | |
| 916 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", | |
| 917 | "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", | |
| 918 | "cpu": [ | |
| 919 | "arm64" | |
| 920 | ], | |
| 921 | "license": "Apache-2.0", | |
| 922 | "optional": true, | |
| 923 | "os": [ | |
| 924 | "darwin" | |
| 925 | ], | |
| 926 | "engines": { | |
| 927 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 928 | }, | |
| 929 | "funding": { | |
| 930 | "url": "https://opencollective.com/libvips" | |
| 931 | }, | |
| 932 | "optionalDependencies": { | |
| 933 | "@img/sharp-libvips-darwin-arm64": "1.1.0" | |
| 934 | } | |
| 935 | }, | |
| 936 | "node_modules/@img/sharp-darwin-x64": { | |
| 937 | "version": "0.34.2", | |
| 938 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", | |
| 939 | "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", | |
| 940 | "cpu": [ | |
| 941 | "x64" | |
| 942 | ], | |
| 943 | "license": "Apache-2.0", | |
| 944 | "optional": true, | |
| 945 | "os": [ | |
| 946 | "darwin" | |
| 947 | ], | |
| 948 | "engines": { | |
| 949 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 950 | }, | |
| 951 | "funding": { | |
| 952 | "url": "https://opencollective.com/libvips" | |
| 953 | }, | |
| 954 | "optionalDependencies": { | |
| 955 | "@img/sharp-libvips-darwin-x64": "1.1.0" | |
| 956 | } | |
| 957 | }, | |
| 958 | "node_modules/@img/sharp-libvips-darwin-arm64": { | |
| 959 | "version": "1.1.0", | |
| 960 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", | |
| 961 | "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", | |
| 962 | "cpu": [ | |
| 963 | "arm64" | |
| 964 | ], | |
| 965 | "license": "LGPL-3.0-or-later", | |
| 966 | "optional": true, | |
| 967 | "os": [ | |
| 968 | "darwin" | |
| 969 | ], | |
| 970 | "funding": { | |
| 971 | "url": "https://opencollective.com/libvips" | |
| 972 | } | |
| 973 | }, | |
| 974 | "node_modules/@img/sharp-libvips-darwin-x64": { | |
| 975 | "version": "1.1.0", | |
| 976 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", | |
| 977 | "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", | |
| 978 | "cpu": [ | |
| 979 | "x64" | |
| 980 | ], | |
| 981 | "license": "LGPL-3.0-or-later", | |
| 982 | "optional": true, | |
| 983 | "os": [ | |
| 984 | "darwin" | |
| 985 | ], | |
| 986 | "funding": { | |
| 987 | "url": "https://opencollective.com/libvips" | |
| 988 | } | |
| 989 | }, | |
| 990 | "node_modules/@img/sharp-libvips-linux-arm": { | |
| 991 | "version": "1.1.0", | |
| 992 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", | |
| 993 | "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", | |
| 994 | "cpu": [ | |
| 995 | "arm" | |
| 996 | ], | |
| 997 | "license": "LGPL-3.0-or-later", | |
| 998 | "optional": true, | |
| 999 | "os": [ | |
| 1000 | "linux" | |
| 1001 | ], | |
| 1002 | "funding": { | |
| 1003 | "url": "https://opencollective.com/libvips" | |
| 1004 | } | |
| 1005 | }, | |
| 1006 | "node_modules/@img/sharp-libvips-linux-arm64": { | |
| 1007 | "version": "1.1.0", | |
| 1008 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", | |
| 1009 | "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", | |
| 1010 | "cpu": [ | |
| 1011 | "arm64" | |
| 1012 | ], | |
| 1013 | "license": "LGPL-3.0-or-later", | |
| 1014 | "optional": true, | |
| 1015 | "os": [ | |
| 1016 | "linux" | |
| 1017 | ], | |
| 1018 | "funding": { | |
| 1019 | "url": "https://opencollective.com/libvips" | |
| 1020 | } | |
| 1021 | }, | |
| 1022 | "node_modules/@img/sharp-libvips-linux-ppc64": { | |
| 1023 | "version": "1.1.0", | |
| 1024 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", | |
| 1025 | "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", | |
| 1026 | "cpu": [ | |
| 1027 | "ppc64" | |
| 1028 | ], | |
| 1029 | "license": "LGPL-3.0-or-later", | |
| 1030 | "optional": true, | |
| 1031 | "os": [ | |
| 1032 | "linux" | |
| 1033 | ], | |
| 1034 | "funding": { | |
| 1035 | "url": "https://opencollective.com/libvips" | |
| 1036 | } | |
| 1037 | }, | |
| 1038 | "node_modules/@img/sharp-libvips-linux-s390x": { | |
| 1039 | "version": "1.1.0", | |
| 1040 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", | |
| 1041 | "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", | |
| 1042 | "cpu": [ | |
| 1043 | "s390x" | |
| 1044 | ], | |
| 1045 | "license": "LGPL-3.0-or-later", | |
| 1046 | "optional": true, | |
| 1047 | "os": [ | |
| 1048 | "linux" | |
| 1049 | ], | |
| 1050 | "funding": { | |
| 1051 | "url": "https://opencollective.com/libvips" | |
| 1052 | } | |
| 1053 | }, | |
| 1054 | "node_modules/@img/sharp-libvips-linux-x64": { | |
| 1055 | "version": "1.1.0", | |
| 1056 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", | |
| 1057 | "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", | |
| 1058 | "cpu": [ | |
| 1059 | "x64" | |
| 1060 | ], | |
| 1061 | "license": "LGPL-3.0-or-later", | |
| 1062 | "optional": true, | |
| 1063 | "os": [ | |
| 1064 | "linux" | |
| 1065 | ], | |
| 1066 | "funding": { | |
| 1067 | "url": "https://opencollective.com/libvips" | |
| 1068 | } | |
| 1069 | }, | |
| 1070 | "node_modules/@img/sharp-libvips-linuxmusl-arm64": { | |
| 1071 | "version": "1.1.0", | |
| 1072 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", | |
| 1073 | "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", | |
| 1074 | "cpu": [ | |
| 1075 | "arm64" | |
| 1076 | ], | |
| 1077 | "license": "LGPL-3.0-or-later", | |
| 1078 | "optional": true, | |
| 1079 | "os": [ | |
| 1080 | "linux" | |
| 1081 | ], | |
| 1082 | "funding": { | |
| 1083 | "url": "https://opencollective.com/libvips" | |
| 1084 | } | |
| 1085 | }, | |
| 1086 | "node_modules/@img/sharp-libvips-linuxmusl-x64": { | |
| 1087 | "version": "1.1.0", | |
| 1088 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", | |
| 1089 | "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", | |
| 1090 | "cpu": [ | |
| 1091 | "x64" | |
| 1092 | ], | |
| 1093 | "license": "LGPL-3.0-or-later", | |
| 1094 | "optional": true, | |
| 1095 | "os": [ | |
| 1096 | "linux" | |
| 1097 | ], | |
| 1098 | "funding": { | |
| 1099 | "url": "https://opencollective.com/libvips" | |
| 1100 | } | |
| 1101 | }, | |
| 1102 | "node_modules/@img/sharp-linux-arm": { | |
| 1103 | "version": "0.34.2", | |
| 1104 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", | |
| 1105 | "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", | |
| 1106 | "cpu": [ | |
| 1107 | "arm" | |
| 1108 | ], | |
| 1109 | "license": "Apache-2.0", | |
| 1110 | "optional": true, | |
| 1111 | "os": [ | |
| 1112 | "linux" | |
| 1113 | ], | |
| 1114 | "engines": { | |
| 1115 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1116 | }, | |
| 1117 | "funding": { | |
| 1118 | "url": "https://opencollective.com/libvips" | |
| 1119 | }, | |
| 1120 | "optionalDependencies": { | |
| 1121 | "@img/sharp-libvips-linux-arm": "1.1.0" | |
| 1122 | } | |
| 1123 | }, | |
| 1124 | "node_modules/@img/sharp-linux-arm64": { | |
| 1125 | "version": "0.34.2", | |
| 1126 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", | |
| 1127 | "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", | |
| 1128 | "cpu": [ | |
| 1129 | "arm64" | |
| 1130 | ], | |
| 1131 | "license": "Apache-2.0", | |
| 1132 | "optional": true, | |
| 1133 | "os": [ | |
| 1134 | "linux" | |
| 1135 | ], | |
| 1136 | "engines": { | |
| 1137 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1138 | }, | |
| 1139 | "funding": { | |
| 1140 | "url": "https://opencollective.com/libvips" | |
| 1141 | }, | |
| 1142 | "optionalDependencies": { | |
| 1143 | "@img/sharp-libvips-linux-arm64": "1.1.0" | |
| 1144 | } | |
| 1145 | }, | |
| 1146 | "node_modules/@img/sharp-linux-s390x": { | |
| 1147 | "version": "0.34.2", | |
| 1148 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", | |
| 1149 | "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", | |
| 1150 | "cpu": [ | |
| 1151 | "s390x" | |
| 1152 | ], | |
| 1153 | "license": "Apache-2.0", | |
| 1154 | "optional": true, | |
| 1155 | "os": [ | |
| 1156 | "linux" | |
| 1157 | ], | |
| 1158 | "engines": { | |
| 1159 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1160 | }, | |
| 1161 | "funding": { | |
| 1162 | "url": "https://opencollective.com/libvips" | |
| 1163 | }, | |
| 1164 | "optionalDependencies": { | |
| 1165 | "@img/sharp-libvips-linux-s390x": "1.1.0" | |
| 1166 | } | |
| 1167 | }, | |
| 1168 | "node_modules/@img/sharp-linux-x64": { | |
| 1169 | "version": "0.34.2", | |
| 1170 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", | |
| 1171 | "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", | |
| 1172 | "cpu": [ | |
| 1173 | "x64" | |
| 1174 | ], | |
| 1175 | "license": "Apache-2.0", | |
| 1176 | "optional": true, | |
| 1177 | "os": [ | |
| 1178 | "linux" | |
| 1179 | ], | |
| 1180 | "engines": { | |
| 1181 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1182 | }, | |
| 1183 | "funding": { | |
| 1184 | "url": "https://opencollective.com/libvips" | |
| 1185 | }, | |
| 1186 | "optionalDependencies": { | |
| 1187 | "@img/sharp-libvips-linux-x64": "1.1.0" | |
| 1188 | } | |
| 1189 | }, | |
| 1190 | "node_modules/@img/sharp-linuxmusl-arm64": { | |
| 1191 | "version": "0.34.2", | |
| 1192 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", | |
| 1193 | "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", | |
| 1194 | "cpu": [ | |
| 1195 | "arm64" | |
| 1196 | ], | |
| 1197 | "license": "Apache-2.0", | |
| 1198 | "optional": true, | |
| 1199 | "os": [ | |
| 1200 | "linux" | |
| 1201 | ], | |
| 1202 | "engines": { | |
| 1203 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1204 | }, | |
| 1205 | "funding": { | |
| 1206 | "url": "https://opencollective.com/libvips" | |
| 1207 | }, | |
| 1208 | "optionalDependencies": { | |
| 1209 | "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" | |
| 1210 | } | |
| 1211 | }, | |
| 1212 | "node_modules/@img/sharp-linuxmusl-x64": { | |
| 1213 | "version": "0.34.2", | |
| 1214 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", | |
| 1215 | "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", | |
| 1216 | "cpu": [ | |
| 1217 | "x64" | |
| 1218 | ], | |
| 1219 | "license": "Apache-2.0", | |
| 1220 | "optional": true, | |
| 1221 | "os": [ | |
| 1222 | "linux" | |
| 1223 | ], | |
| 1224 | "engines": { | |
| 1225 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1226 | }, | |
| 1227 | "funding": { | |
| 1228 | "url": "https://opencollective.com/libvips" | |
| 1229 | }, | |
| 1230 | "optionalDependencies": { | |
| 1231 | "@img/sharp-libvips-linuxmusl-x64": "1.1.0" | |
| 1232 | } | |
| 1233 | }, | |
| 1234 | "node_modules/@img/sharp-wasm32": { | |
| 1235 | "version": "0.34.2", | |
| 1236 | "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", | |
| 1237 | "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", | |
| 1238 | "cpu": [ | |
| 1239 | "wasm32" | |
| 1240 | ], | |
| 1241 | "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", | |
| 1242 | "optional": true, | |
| 1243 | "dependencies": { | |
| 1244 | "@emnapi/runtime": "^1.4.3" | |
| 1245 | }, | |
| 1246 | "engines": { | |
| 1247 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1248 | }, | |
| 1249 | "funding": { | |
| 1250 | "url": "https://opencollective.com/libvips" | |
| 1251 | } | |
| 1252 | }, | |
| 1253 | "node_modules/@img/sharp-win32-arm64": { | |
| 1254 | "version": "0.34.2", | |
| 1255 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", | |
| 1256 | "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", | |
| 1257 | "cpu": [ | |
| 1258 | "arm64" | |
| 1259 | ], | |
| 1260 | "license": "Apache-2.0 AND LGPL-3.0-or-later", | |
| 1261 | "optional": true, | |
| 1262 | "os": [ | |
| 1263 | "win32" | |
| 1264 | ], | |
| 1265 | "engines": { | |
| 1266 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1267 | }, | |
| 1268 | "funding": { | |
| 1269 | "url": "https://opencollective.com/libvips" | |
| 1270 | } | |
| 1271 | }, | |
| 1272 | "node_modules/@img/sharp-win32-ia32": { | |
| 1273 | "version": "0.34.2", | |
| 1274 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", | |
| 1275 | "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", | |
| 1276 | "cpu": [ | |
| 1277 | "ia32" | |
| 1278 | ], | |
| 1279 | "license": "Apache-2.0 AND LGPL-3.0-or-later", | |
| 1280 | "optional": true, | |
| 1281 | "os": [ | |
| 1282 | "win32" | |
| 1283 | ], | |
| 1284 | "engines": { | |
| 1285 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1286 | }, | |
| 1287 | "funding": { | |
| 1288 | "url": "https://opencollective.com/libvips" | |
| 1289 | } | |
| 1290 | }, | |
| 1291 | "node_modules/@img/sharp-win32-x64": { | |
| 1292 | "version": "0.34.2", | |
| 1293 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", | |
| 1294 | "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", | |
| 1295 | "cpu": [ | |
| 1296 | "x64" | |
| 1297 | ], | |
| 1298 | "license": "Apache-2.0 AND LGPL-3.0-or-later", | |
| 1299 | "optional": true, | |
| 1300 | "os": [ | |
| 1301 | "win32" | |
| 1302 | ], | |
| 1303 | "engines": { | |
| 1304 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 1305 | }, | |
| 1306 | "funding": { | |
| 1307 | "url": "https://opencollective.com/libvips" | |
| 1308 | } | |
| 1309 | }, | |
| 902 | 1310 | "node_modules/@jridgewell/gen-mapping": { |
| 903 | 1311 | "version": "0.3.8", |
| 904 | 1312 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", |
| ... | ... | @@ -1385,6 +1793,12 @@ |
| 1385 | 1793 | "node": ">=10.0.0" |
| 1386 | 1794 | } |
| 1387 | 1795 | }, |
| 1796 | "node_modules/blurhash": { | |
| 1797 | "version": "2.0.5", | |
| 1798 | "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", | |
| 1799 | "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==", | |
| 1800 | "license": "MIT" | |
| 1801 | }, | |
| 1388 | 1802 | "node_modules/browserslist": { |
| 1389 | 1803 | "version": "4.25.0", |
| 1390 | 1804 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", |
| ... | ... | @@ -1596,6 +2010,19 @@ |
| 1596 | 2010 | "url": "https://github.com/sponsors/wooorm" |
| 1597 | 2011 | } |
| 1598 | 2012 | }, |
| 2013 | "node_modules/color": { | |
| 2014 | "version": "4.2.3", | |
| 2015 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", | |
| 2016 | "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", | |
| 2017 | "license": "MIT", | |
| 2018 | "dependencies": { | |
| 2019 | "color-convert": "^2.0.1", | |
| 2020 | "color-string": "^1.9.0" | |
| 2021 | }, | |
| 2022 | "engines": { | |
| 2023 | "node": ">=12.5.0" | |
| 2024 | } | |
| 2025 | }, | |
| 1599 | 2026 | "node_modules/color-convert": { |
| 1600 | 2027 | "version": "2.0.1", |
| 1601 | 2028 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |
| ... | ... | @@ -1614,6 +2041,16 @@ |
| 1614 | 2041 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
| 1615 | 2042 | "license": "MIT" |
| 1616 | 2043 | }, |
| 2044 | "node_modules/color-string": { | |
| 2045 | "version": "1.9.1", | |
| 2046 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", | |
| 2047 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", | |
| 2048 | "license": "MIT", | |
| 2049 | "dependencies": { | |
| 2050 | "color-name": "^1.0.0", | |
| 2051 | "simple-swizzle": "^0.2.2" | |
| 2052 | } | |
| 2053 | }, | |
| 1617 | 2054 | "node_modules/comma-separated-tokens": { |
| 1618 | 2055 | "version": "2.0.3", |
| 1619 | 2056 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", |
| ... | ... | @@ -1739,6 +2176,15 @@ |
| 1739 | 2176 | "node": ">=6" |
| 1740 | 2177 | } |
| 1741 | 2178 | }, |
| 2179 | "node_modules/detect-libc": { | |
| 2180 | "version": "2.0.4", | |
| 2181 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", | |
| 2182 | "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", | |
| 2183 | "license": "Apache-2.0", | |
| 2184 | "engines": { | |
| 2185 | "node": ">=8" | |
| 2186 | } | |
| 2187 | }, | |
| 1742 | 2188 | "node_modules/devalue": { |
| 1743 | 2189 | "version": "5.1.1", |
| 1744 | 2190 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", |
| ... | ... | @@ -3723,6 +4169,74 @@ |
| 3723 | 4169 | "semver": "bin/semver.js" |
| 3724 | 4170 | } |
| 3725 | 4171 | }, |
| 4172 | "node_modules/sharp": { | |
| 4173 | "version": "0.34.2", | |
| 4174 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", | |
| 4175 | "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", | |
| 4176 | "hasInstallScript": true, | |
| 4177 | "license": "Apache-2.0", | |
| 4178 | "dependencies": { | |
| 4179 | "color": "^4.2.3", | |
| 4180 | "detect-libc": "^2.0.4", | |
| 4181 | "semver": "^7.7.2" | |
| 4182 | }, | |
| 4183 | "engines": { | |
| 4184 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" | |
| 4185 | }, | |
| 4186 | "funding": { | |
| 4187 | "url": "https://opencollective.com/libvips" | |
| 4188 | }, | |
| 4189 | "optionalDependencies": { | |
| 4190 | "@img/sharp-darwin-arm64": "0.34.2", | |
| 4191 | "@img/sharp-darwin-x64": "0.34.2", | |
| 4192 | "@img/sharp-libvips-darwin-arm64": "1.1.0", | |
| 4193 | "@img/sharp-libvips-darwin-x64": "1.1.0", | |
| 4194 | "@img/sharp-libvips-linux-arm": "1.1.0", | |
| 4195 | "@img/sharp-libvips-linux-arm64": "1.1.0", | |
| 4196 | "@img/sharp-libvips-linux-ppc64": "1.1.0", | |
| 4197 | "@img/sharp-libvips-linux-s390x": "1.1.0", | |
| 4198 | "@img/sharp-libvips-linux-x64": "1.1.0", | |
| 4199 | "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", | |
| 4200 | "@img/sharp-libvips-linuxmusl-x64": "1.1.0", | |
| 4201 | "@img/sharp-linux-arm": "0.34.2", | |
| 4202 | "@img/sharp-linux-arm64": "0.34.2", | |
| 4203 | "@img/sharp-linux-s390x": "0.34.2", | |
| 4204 | "@img/sharp-linux-x64": "0.34.2", | |
| 4205 | "@img/sharp-linuxmusl-arm64": "0.34.2", | |
| 4206 | "@img/sharp-linuxmusl-x64": "0.34.2", | |
| 4207 | "@img/sharp-wasm32": "0.34.2", | |
| 4208 | "@img/sharp-win32-arm64": "0.34.2", | |
| 4209 | "@img/sharp-win32-ia32": "0.34.2", | |
| 4210 | "@img/sharp-win32-x64": "0.34.2" | |
| 4211 | } | |
| 4212 | }, | |
| 4213 | "node_modules/sharp/node_modules/semver": { | |
| 4214 | "version": "7.7.2", | |
| 4215 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", | |
| 4216 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", | |
| 4217 | "license": "ISC", | |
| 4218 | "bin": { | |
| 4219 | "semver": "bin/semver.js" | |
| 4220 | }, | |
| 4221 | "engines": { | |
| 4222 | "node": ">=10" | |
| 4223 | } | |
| 4224 | }, | |
| 4225 | "node_modules/simple-swizzle": { | |
| 4226 | "version": "0.2.2", | |
| 4227 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", | |
| 4228 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", | |
| 4229 | "license": "MIT", | |
| 4230 | "dependencies": { | |
| 4231 | "is-arrayish": "^0.3.1" | |
| 4232 | } | |
| 4233 | }, | |
| 4234 | "node_modules/simple-swizzle/node_modules/is-arrayish": { | |
| 4235 | "version": "0.3.2", | |
| 4236 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", | |
| 4237 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", | |
| 4238 | "license": "MIT" | |
| 4239 | }, | |
| 3726 | 4240 | "node_modules/smart-buffer": { |
| 3727 | 4241 | "version": "4.2.0", |
| 3728 | 4242 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", |
package.json+2| ... | ... | @@ -4,6 +4,7 @@ |
| 4 | 4 | "@hono/node-server": "^1.14.3", |
| 5 | 5 | "@mdx-js/mdx": "^3.1.0", |
| 6 | 6 | "@paperclover/console": "git+https://git.paperclover.net/clo/console.git", |
| 7 | "blurhash": "^2.0.5", | |
| 7 | 8 | "codemirror": "^6.0.1", |
| 8 | 9 | "devalue": "^5.1.1", |
| 9 | 10 | "esbuild": "^0.25.5", |
| ... | ... | @@ -11,6 +12,7 @@ |
| 11 | 12 | "hono": "^4.7.11", |
| 12 | 13 | "marko": "^6.0.20", |
| 13 | 14 | "puppeteer": "^24.10.1", |
| 15 | "sharp": "^0.34.2", | |
| 14 | 16 | "unique-names-generator": "^4.7.1" |
| 15 | 17 | }, |
| 16 | 18 | "devDependencies": { |
src/blog/pages/25/marko-intro.markodown+7-1| ... | ... | @@ -17,7 +17,7 @@ JavaScript into HTML. Attributes are JavaScript expressions. |
| 17 | 17 | |
| 18 | 18 | ```marko |
| 19 | 19 | <div> |
| 20 | // `input` is like props, but in global scope | |
| 20 | // `input` is like props, but given in the top-level scope | |
| 21 | 21 | <time datetime=input.date.toISOString()> |
| 22 | 22 | // Interpolation with JS template string syntax |
| 23 | 23 | ${formatTimeNicely(input.date)} |
| ... | ... | @@ -28,6 +28,12 @@ JavaScript into HTML. Attributes are JavaScript expressions. |
| 28 | 28 | |
| 29 | 29 | // Capital letter variables for imported components |
| 30 | 30 | <MarkdownContent message=input.message /> |
| 31 | ||
| 32 | // Components also can be auto-imported by lowercase. | |
| 33 | // This will look upwards for a `tags/` folder containing | |
| 34 | // "custom-footer.marko", similar to how Node.js finds | |
| 35 | // package names in all upwards `node_modules` folders. | |
| 36 | <custom-footer /> | |
| 31 | 37 | </div> |
| 32 | 38 | |
| 33 | 39 | // ESM `import` / `export` just work as expected. |
src/file-viewer/backend.tsx created+425| ... | ... | @@ -0,0 +1,425 @@ |
| 1 | import { type Context, Hono } from "hono"; | |
| 2 | import * as path from "node:path"; | |
| 3 | import { etagMatches, serveAsset } from "../assets.ts"; | |
| 4 | import { FilePermissions, MediaFile } from "../db.ts"; | |
| 5 | import { renderDynamicPage } from "../framework/dynamic-pages.ts"; | |
| 6 | import { renderToStringSync } from "../framework/render-to-string.ts"; | |
| 7 | import { MediaPanel } from "../pages-dynamic/file_viewer.tsx"; | |
| 8 | import mimeTypeDb from "./mime.json" with { type: "json" }; | |
| 9 | import { Speedbump } from "./cotyledon.tsx"; | |
| 10 | import { hasAsset } from "../assets.ts"; | |
| 11 | import { CompressionFormat, fetchFile, prefetchFile } from "./cache.ts"; | |
| 12 | import { requireFriendAuth } from "../journal/backend.ts"; | |
| 13 | ||
| 14 | const app = new Hono(); | |
| 15 | ||
| 16 | interface APIDirectoryList { | |
| 17 | path: string; | |
| 18 | readme: string | null; | |
| 19 | files: APIFile[]; | |
| 20 | } | |
| 21 | ||
| 22 | interface APIFile { | |
| 23 | basename: string; | |
| 24 | dir: boolean; | |
| 25 | time: number; | |
| 26 | size: number; | |
| 27 | duration: number | null; | |
| 28 | } | |
| 29 | ||
| 30 | function checkCotyledonCookie(c: Context) { | |
| 31 | const cookie = c.req.header("Cookie"); | |
| 32 | if (!cookie) return false; | |
| 33 | const cookies = cookie.split("; ").map((x) => x.split("=")); | |
| 34 | return cookies.some( | |
| 35 | (kv) => kv[0].trim() === "cotyledon" && kv[1].trim() === "agree", | |
| 36 | ); | |
| 37 | } | |
| 38 | ||
| 39 | function isCotyledonPath(path: string) { | |
| 40 | if (path === "/cotyledon") return true; | |
| 41 | const year = path.match(/^\/(\d{4})($|\/)/); | |
| 42 | if (!year) return false; | |
| 43 | const yearInt = parseInt(year[1]); | |
| 44 | if (yearInt < 2025 && yearInt >= 2017) return true; | |
| 45 | return false; | |
| 46 | } | |
| 47 | ||
| 48 | app.post("/file/cotyledon", async (c) => { | |
| 49 | c.res = new Response(null, { | |
| 50 | status: 200, | |
| 51 | headers: { | |
| 52 | "Set-Cookie": "cotyledon=agree; Path=/", | |
| 53 | }, | |
| 54 | }); | |
| 55 | }); | |
| 56 | ||
| 57 | app.get("/file/*", async (c, next) => { | |
| 58 | if (c.req.header("User-Agent")?.toLowerCase()?.includes("discordbot")) { | |
| 59 | return next(); | |
| 60 | } | |
| 61 | let rawFilePath = c.req.path.slice(5) || "/"; | |
| 62 | if (rawFilePath.endsWith("$partial")) { | |
| 63 | return getPartialPage(c, rawFilePath.slice(0, -"$partial".length)); | |
| 64 | } | |
| 65 | let hasCotyledonCookie = checkCotyledonCookie(c); | |
| 66 | if (isCotyledonPath(rawFilePath)) { | |
| 67 | if (!hasCotyledonCookie) { | |
| 68 | return serveAsset(c, "/file/cotyledon_speedbump", 403); | |
| 69 | } else if (rawFilePath === "/cotyledon") { | |
| 70 | return serveAsset(c, "/file/cotyledon_enterance", 200); | |
| 71 | } | |
| 72 | } | |
| 73 | while (rawFilePath.length > 1 && rawFilePath.endsWith("/")) { | |
| 74 | rawFilePath = rawFilePath.slice(0, -1); | |
| 75 | } | |
| 76 | const file = MediaFile.getByPath(rawFilePath); | |
| 77 | if (!file) { | |
| 78 | // perhaps a specific 404 page for media files? | |
| 79 | return next(); | |
| 80 | } | |
| 81 | ||
| 82 | const permissions = FilePermissions.getByPrefix(rawFilePath); | |
| 83 | if (permissions !== 0) { | |
| 84 | const friendAuthChallenge = requireFriendAuth(c); | |
| 85 | if (friendAuthChallenge) return friendAuthChallenge; | |
| 86 | } | |
| 87 | ||
| 88 | // File listings | |
| 89 | if (file.kind === MediaFile.Kind.directory) { | |
| 90 | if (c.req.header("Accept")?.includes("application/json")) { | |
| 91 | const json = { | |
| 92 | path: file.path, | |
| 93 | files: file.getPublicChildren().map((f) => ({ | |
| 94 | basename: f.basename, | |
| 95 | dir: f.kind === MediaFile.Kind.directory, | |
| 96 | time: f.date.getTime(), | |
| 97 | size: f.size, | |
| 98 | duration: f.duration ? f.duration : null, | |
| 99 | })), | |
| 100 | readme: file.contents ? file.contents : null, | |
| 101 | } satisfies APIDirectoryList; | |
| 102 | return c.json(json); | |
| 103 | } | |
| 104 | c.res = await renderDynamicPage(c.req.raw, "file_viewer", { | |
| 105 | file, | |
| 106 | hasCotyledonCookie, | |
| 107 | }); | |
| 108 | return; | |
| 109 | } | |
| 110 | ||
| 111 | // Redirect to directory list for regular files if client accepts HTML | |
| 112 | let viewMode = c.req.query("view"); | |
| 113 | if (c.req.query("dl") !== undefined) { | |
| 114 | viewMode = "download"; | |
| 115 | } | |
| 116 | if (viewMode == undefined && c.req.header("Accept")?.includes("text/html")) { | |
| 117 | prefetchFile(file.path); | |
| 118 | c.res = await renderDynamicPage(c.req.raw, "file_viewer", { | |
| 119 | file, | |
| 120 | hasCotyledonCookie, | |
| 121 | }); | |
| 122 | return; | |
| 123 | } | |
| 124 | const download = viewMode === "download"; | |
| 125 | ||
| 126 | const etag = file.hash; | |
| 127 | const filePath = file.path; | |
| 128 | const expectedSize = file.size; | |
| 129 | ||
| 130 | let encoding = decideEncoding(c.req.header("Accept-Encoding")); | |
| 131 | ||
| 132 | let sizeHeader = encoding === "raw" | |
| 133 | ? expectedSize | |
| 134 | // Size cannot be known because of compression modes | |
| 135 | : undefined; | |
| 136 | ||
| 137 | // Etag | |
| 138 | { | |
| 139 | const ifNoneMatch = c.req.header("If-None-Match"); | |
| 140 | if (ifNoneMatch && etagMatches(etag, ifNoneMatch)) { | |
| 141 | c.res = new Response(null, { | |
| 142 | status: 304, | |
| 143 | statusText: "Not Modified", | |
| 144 | headers: fileHeaders(file, download, sizeHeader), | |
| 145 | }); | |
| 146 | return; | |
| 147 | } | |
| 148 | } | |
| 149 | ||
| 150 | // Head | |
| 151 | if (c.req.method === "HEAD") { | |
| 152 | c.res = new Response(null, { | |
| 153 | headers: fileHeaders(file, download, sizeHeader), | |
| 154 | }); | |
| 155 | return; | |
| 156 | } | |
| 157 | ||
| 158 | // Prevalidate range requests | |
| 159 | let rangeHeader = c.req.header("Range") ?? null; | |
| 160 | if (rangeHeader) encoding = "raw"; | |
| 161 | ||
| 162 | const ifRangeHeader = c.req.header("If-Range"); | |
| 163 | if (ifRangeHeader && ifRangeOutdated(file, ifRangeHeader)) { | |
| 164 | // > If the condition is not fulfilled, the full resource is | |
| 165 | // > sent back with a 200 OK status. | |
| 166 | rangeHeader = null; | |
| 167 | } | |
| 168 | ||
| 169 | let foundFile; | |
| 170 | while (true) { | |
| 171 | let second = false; | |
| 172 | try { | |
| 173 | foundFile = await fetchFile(filePath, encoding); | |
| 174 | if (second) { | |
| 175 | console.warn(`File ${filePath} has missing compression: ${encoding}`); | |
| 176 | } | |
| 177 | break; | |
| 178 | } catch (error) { | |
| 179 | if (encoding !== "raw") { | |
| 180 | encoding = "raw"; | |
| 181 | sizeHeader = file.size; | |
| 182 | second = true; | |
| 183 | continue; | |
| 184 | } | |
| 185 | ||
| 186 | return c.text( | |
| 187 | "internal server error: this file is present in the database but could not be fetched", | |
| 188 | ); | |
| 189 | } | |
| 190 | } | |
| 191 | const [streamOrBuffer, actualEncoding, src] = foundFile; | |
| 192 | encoding = actualEncoding; | |
| 193 | ||
| 194 | // Range requests | |
| 195 | // https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests | |
| 196 | // Compression is skipped because it's a confusing, but solvable problem. | |
| 197 | // See https://stackoverflow.com/questions/33947562/is-it-possible-to-send-http-response-using-gzip-and-byte-ranges-at-the-same-time | |
| 198 | if (rangeHeader) { | |
| 199 | const ranges = parseRange(rangeHeader, file.size); | |
| 200 | // TODO: multiple ranges | |
| 201 | if (ranges && ranges.length === 1) { | |
| 202 | return (c.res = handleRanges(ranges, file, streamOrBuffer, download)); | |
| 203 | } | |
| 204 | } | |
| 205 | ||
| 206 | // Respond in a streaming fashion | |
| 207 | c.res = new Response(streamOrBuffer, { | |
| 208 | headers: { | |
| 209 | ...fileHeaders(file, download, sizeHeader), | |
| 210 | ...(encoding !== "raw" && { | |
| 211 | "Content-Encoding": encoding, | |
| 212 | }), | |
| 213 | "X-Cache": src, | |
| 214 | }, | |
| 215 | }); | |
| 216 | }); | |
| 217 | ||
| 218 | app.get("/canvas/:script", async (c, next) => { | |
| 219 | const script = c.req.param("script"); | |
| 220 | if (!hasAsset(`/js/canvas/${script}.js`)) { | |
| 221 | return next(); | |
| 222 | } | |
| 223 | return renderDynamicPage(c.req.raw, "canvas", { | |
| 224 | script, | |
| 225 | }); | |
| 226 | }); | |
| 227 | ||
| 228 | function decideEncoding(encodings: string | undefined): CompressionFormat { | |
| 229 | if (encodings?.includes("zstd")) return "zstd"; | |
| 230 | if (encodings?.includes("gzip")) return "gzip"; | |
| 231 | return "raw"; | |
| 232 | } | |
| 233 | ||
| 234 | function fileHeaders( | |
| 235 | file: MediaFile, | |
| 236 | download: boolean, | |
| 237 | size: number | undefined = file.size, | |
| 238 | ) { | |
| 239 | return { | |
| 240 | Vary: "Accept-Encoding, Accept", | |
| 241 | "Content-Type": mimeType(file.path), | |
| 242 | "Content-Length": size.toString(), | |
| 243 | ETag: file.hash, | |
| 244 | "Last-Modified": file.date.toUTCString(), | |
| 245 | ...(download && { | |
| 246 | "Content-Disposition": `attachment; filename="${file.basename}"`, | |
| 247 | }), | |
| 248 | }; | |
| 249 | } | |
| 250 | ||
| 251 | function ifRangeOutdated(file: MediaFile, ifRangeHeader: string) { | |
| 252 | // etag | |
| 253 | if (ifRangeHeader[0] === '"') { | |
| 254 | return ifRangeHeader.slice(1, -1) !== file.hash; | |
| 255 | } | |
| 256 | // date | |
| 257 | return new Date(ifRangeHeader) < file.date; | |
| 258 | } | |
| 259 | ||
| 260 | /** The end is inclusive */ | |
| 261 | type Ranges = Array<[start: number, end: number]>; | |
| 262 | ||
| 263 | function parseRange(rangeHeader: string, fileSize: number): Ranges | null { | |
| 264 | const [unit, ranges] = rangeHeader.split("="); | |
| 265 | if (unit !== "bytes") return null; | |
| 266 | ||
| 267 | const result: Array<[start: number, end: number]> = []; | |
| 268 | const rangeParts = ranges.split(","); | |
| 269 | ||
| 270 | for (const range of rangeParts) { | |
| 271 | const split = range.split("-"); | |
| 272 | if (split.length !== 2) return null; | |
| 273 | const [start, end] = split; | |
| 274 | if (start === "" && end === "") return null; | |
| 275 | const parsedRange: [number, number] = [ | |
| 276 | start === "" ? fileSize - +end : +start, | |
| 277 | end === "" ? fileSize - 1 : +end, | |
| 278 | ]; | |
| 279 | result.push(parsedRange); | |
| 280 | } | |
| 281 | ||
| 282 | // Validate that ranges do not intersect | |
| 283 | result.sort((a, b) => a[0] - b[0]); | |
| 284 | for (let i = 1; i < result.length; i++) { | |
| 285 | if (result[i][0] <= result[i - 1][1]) { | |
| 286 | return null; | |
| 287 | } | |
| 288 | } | |
| 289 | ||
| 290 | return result; | |
| 291 | } | |
| 292 | ||
| 293 | function handleRanges( | |
| 294 | ranges: Ranges, | |
| 295 | file: MediaFile, | |
| 296 | streamOrBuffer: ReadableStream | Buffer, | |
| 297 | download: boolean, | |
| 298 | ): Response { | |
| 299 | // TODO: multiple ranges | |
| 300 | const rangeSize = ranges.reduce((a, b) => a + (b[1] - b[0] + 1), 0); | |
| 301 | const rangeBody = streamOrBuffer instanceof ReadableStream | |
| 302 | ? applySingleRangeToStream(streamOrBuffer, ranges) | |
| 303 | : applyRangesToBuffer(streamOrBuffer, ranges, rangeSize); | |
| 304 | return new Response(rangeBody, { | |
| 305 | status: 206, | |
| 306 | headers: { | |
| 307 | ...fileHeaders(file, download, rangeSize), | |
| 308 | "Content-Range": `bytes ${ranges[0][0]}-${ranges[0][1]}/${file.size}`, | |
| 309 | }, | |
| 310 | }); | |
| 311 | } | |
| 312 | ||
| 313 | function applyRangesToBuffer( | |
| 314 | buffer: Buffer, | |
| 315 | ranges: Ranges, | |
| 316 | rangeSize: number, | |
| 317 | ): Uint8Array { | |
| 318 | const result = new Uint8Array(rangeSize); | |
| 319 | let offset = 0; | |
| 320 | for (const [start, end] of ranges) { | |
| 321 | result.set(buffer.slice(start, end + 1), offset); | |
| 322 | offset += end - start + 1; | |
| 323 | } | |
| 324 | return result; | |
| 325 | } | |
| 326 | ||
| 327 | function applySingleRangeToStream( | |
| 328 | stream: ReadableStream, | |
| 329 | ranges: Ranges, | |
| 330 | ): ReadableStream { | |
| 331 | let reader: ReadableStreamDefaultReader<Uint8Array>; | |
| 332 | let position = 0; | |
| 333 | const [start, end] = ranges[0]; | |
| 334 | return new ReadableStream({ | |
| 335 | async start(controller) { | |
| 336 | reader = stream.getReader(); | |
| 337 | try { | |
| 338 | while (position <= end) { | |
| 339 | const { done, value } = await reader.read(); | |
| 340 | ||
| 341 | if (done) { | |
| 342 | controller.close(); | |
| 343 | return; | |
| 344 | } | |
| 345 | ||
| 346 | const buffer = new Uint8Array(value); | |
| 347 | ||
| 348 | const bufferStart = position; | |
| 349 | const bufferEnd = position + buffer.length - 1; | |
| 350 | ||
| 351 | position += buffer.length; | |
| 352 | ||
| 353 | if (bufferEnd < start) { | |
| 354 | continue; | |
| 355 | } | |
| 356 | ||
| 357 | if (bufferStart > end) { | |
| 358 | break; | |
| 359 | } | |
| 360 | ||
| 361 | const sendStart = Math.max(0, start - bufferStart); | |
| 362 | const sendEnd = Math.min(buffer.length - 1, end - bufferStart); | |
| 363 | ||
| 364 | if (sendStart <= sendEnd) { | |
| 365 | controller.enqueue(buffer.slice(sendStart, sendEnd + 1)); | |
| 366 | } | |
| 367 | } | |
| 368 | ||
| 369 | controller.close(); | |
| 370 | } catch (error) { | |
| 371 | controller.error(error); | |
| 372 | } finally { | |
| 373 | reader.releaseLock(); | |
| 374 | } | |
| 375 | }, | |
| 376 | cancel() { | |
| 377 | reader?.releaseLock(); | |
| 378 | }, | |
| 379 | }); | |
| 380 | } | |
| 381 | ||
| 382 | function mimeType(file: string) { | |
| 383 | return (mimeTypeDb as any)[path.extname(file)] ?? "application/octet-stream"; | |
| 384 | } | |
| 385 | ||
| 386 | function getPartialPage(c: Context, rawFilePath: string) { | |
| 387 | if (isCotyledonPath(rawFilePath)) { | |
| 388 | if (!checkCotyledonCookie(c)) { | |
| 389 | let root = Speedbump(); | |
| 390 | // Remove the root element, it's created client side! | |
| 391 | root = root.props.children; | |
| 392 | ||
| 393 | const html = renderToStringSync(root); | |
| 394 | c.header("X-Cotyledon", "true"); | |
| 395 | return c.html(html); | |
| 396 | } | |
| 397 | } | |
| 398 | ||
| 399 | const file = MediaFile.getByPath(rawFilePath); | |
| 400 | const permissions = FilePermissions.getByPrefix(rawFilePath); | |
| 401 | if (permissions !== 0) { | |
| 402 | const friendAuthChallenge = requireFriendAuth(c); | |
| 403 | if (friendAuthChallenge) return friendAuthChallenge; | |
| 404 | } | |
| 405 | if (rawFilePath.endsWith("/")) { | |
| 406 | rawFilePath = rawFilePath.slice(0, -1); | |
| 407 | } | |
| 408 | if (!file) { | |
| 409 | return c.json({ error: "File not found" }, 404); | |
| 410 | } | |
| 411 | ||
| 412 | let root = MediaPanel({ | |
| 413 | file, | |
| 414 | isLast: true, | |
| 415 | activeFilename: null, | |
| 416 | hasCotyledonCookie: rawFilePath === "" && checkCotyledonCookie(c), | |
| 417 | }); | |
| 418 | // Remove the root element, it's created client side! | |
| 419 | root = root.props.children; | |
| 420 | ||
| 421 | const html = renderToStringSync(root); | |
| 422 | return c.html(html); | |
| 423 | } | |
| 424 | ||
| 425 | export { app as mediaApp }; |
src/file-viewer/bin/extension-stats.ts created+83| ... | ... | @@ -0,0 +1,83 @@ |
| 1 | import * as path from "node:path"; | |
| 2 | import { cache, MediaFile } from "../db"; | |
| 3 | ||
| 4 | // Function to get file extension statistics | |
| 5 | function getExtensionStats() { | |
| 6 | // Get all files (not directories) from the database | |
| 7 | const query = ` | |
| 8 | SELECT path FROM media_files | |
| 9 | WHERE kind = ${MediaFile.Kind.file} | |
| 10 | `; | |
| 11 | ||
| 12 | // Use raw query to get all file paths | |
| 13 | const rows = cache.query(query).all() as { path: string }[]; | |
| 14 | ||
| 15 | // Count extensions | |
| 16 | const extensionCounts: Record<string, number> = {}; | |
| 17 | ||
| 18 | for (const row of rows) { | |
| 19 | const extension = path.extname(row.path).toLowerCase(); | |
| 20 | extensionCounts[extension] = (extensionCounts[extension] || 0) + 1; | |
| 21 | } | |
| 22 | ||
| 23 | // Sort extensions by count (descending) | |
| 24 | const sortedExtensions = Object.entries(extensionCounts) | |
| 25 | .sort((a, b) => b[1] - a[1]); | |
| 26 | ||
| 27 | return { | |
| 28 | totalFiles: rows.length, | |
| 29 | extensions: sortedExtensions, | |
| 30 | }; | |
| 31 | } | |
| 32 | ||
| 33 | // Function to print a visual table | |
| 34 | function printExtensionTable() { | |
| 35 | const stats = getExtensionStats(); | |
| 36 | ||
| 37 | // Calculate column widths | |
| 38 | const extensionColWidth = Math.max( | |
| 39 | ...stats.extensions.map(([ext]) => ext.length), | |
| 40 | "Extension".length, | |
| 41 | ) + 2; | |
| 42 | ||
| 43 | const countColWidth = Math.max( | |
| 44 | ...stats.extensions.map(([_, count]) => count.toString().length), | |
| 45 | "Count".length, | |
| 46 | ) + 2; | |
| 47 | ||
| 48 | const percentColWidth = "Percentage".length + 2; | |
| 49 | ||
| 50 | // Print header | |
| 51 | console.log("MediaFile Extension Statistics"); | |
| 52 | console.log(`Total files: ${stats.totalFiles}`); | |
| 53 | console.log(); | |
| 54 | ||
| 55 | // Print table header | |
| 56 | console.log( | |
| 57 | "Extension".padEnd(extensionColWidth) + | |
| 58 | "Count".padEnd(countColWidth) + | |
| 59 | "Percentage".padEnd(percentColWidth), | |
| 60 | ); | |
| 61 | ||
| 62 | // Print separator | |
| 63 | console.log( | |
| 64 | "-".repeat(extensionColWidth) + | |
| 65 | "-".repeat(countColWidth) + | |
| 66 | "-".repeat(percentColWidth), | |
| 67 | ); | |
| 68 | ||
| 69 | // Print rows | |
| 70 | for (const [extension, count] of stats.extensions) { | |
| 71 | const percentage = ((count / stats.totalFiles) * 100).toFixed(2); | |
| 72 | const ext = extension || "(no extension)"; | |
| 73 | ||
| 74 | console.log( | |
| 75 | ext.padEnd(extensionColWidth) + | |
| 76 | count.toString().padEnd(countColWidth) + | |
| 77 | `${percentage}%`.padEnd(percentColWidth), | |
| 78 | ); | |
| 79 | } | |
| 80 | } | |
| 81 | ||
| 82 | // Run the program | |
| 83 | printExtensionTable(); |
src/file-viewer/bin/scan.ts created+1015| ... | ... | @@ -0,0 +1,1015 @@ |
| 1 | // This file was started by AI and maintained by hand since. | |
| 2 | import "@paperclover/console/inject"; | |
| 3 | import { Progress } from "@paperclover/console/Progress"; | |
| 4 | import { Spinner } from "@paperclover/console/Spinner"; | |
| 5 | import assert from "node:assert"; | |
| 6 | import { execFile } from "node:child_process"; | |
| 7 | import { existsSync, Stats } from "node:fs"; | |
| 8 | import * as fsp from "node:fs/promises"; | |
| 9 | import * as path from "node:path"; | |
| 10 | import { promisify } from "node:util"; | |
| 11 | import { BlobAsset, cache, FilePermissions, MediaFile } from "../db.ts"; | |
| 12 | import { formatDate, formatSize } from "./share.ts"; | |
| 13 | import { highlightCode, type Language } from "./highlight.ts"; | |
| 14 | ||
| 15 | const execFileAsync = promisify(execFile); | |
| 16 | ||
| 17 | // Configuration | |
| 18 | const FILE_ROOT = process.env.SCAN_FILE_ROOT; | |
| 19 | if (!FILE_ROOT) { | |
| 20 | throw new Error( | |
| 21 | "FILE_ROOT environment variable not set (e.g. '/path/to/files')", | |
| 22 | ); | |
| 23 | } | |
| 24 | const LOCAL_DIR = path.resolve(FILE_ROOT); | |
| 25 | const DRY_RUN = process.argv.includes("--dry-run"); | |
| 26 | const SHOULD_COMPRESS = true; | |
| 27 | const VERBOSE = process.argv.includes("--verbose"); | |
| 28 | const SHOULD_SCRUB = true; | |
| 29 | const COMPRESS_STORE = process.env.COMPRESS_STORE || | |
| 30 | path.join(process.cwd(), ".clover/compressed"); | |
| 31 | ||
| 32 | // Helper function for logging that respects verbose flag | |
| 33 | function log(message: string, always = false): void { | |
| 34 | if (always || VERBOSE) { | |
| 35 | console.log(message); | |
| 36 | } | |
| 37 | } | |
| 38 | ||
| 39 | // File extensions that need duration metadata | |
| 40 | const MEDIA_EXTENSIONS = new Set([ | |
| 41 | ".mp4", | |
| 42 | ".mkv", | |
| 43 | ".webm", | |
| 44 | ".avi", | |
| 45 | ".mov", | |
| 46 | ".mp3", | |
| 47 | ".flac", | |
| 48 | ".wav", | |
| 49 | ".ogg", | |
| 50 | ".m4a", | |
| 51 | ]); | |
| 52 | ||
| 53 | // File extensions that need dimension metadata | |
| 54 | const IMAGE_EXTENSIONS = new Set([ | |
| 55 | ".jpg", | |
| 56 | ".jpeg", | |
| 57 | ".png", | |
| 58 | ".gif", | |
| 59 | ".webp", | |
| 60 | ".avif", | |
| 61 | ".heic", | |
| 62 | ".svg", | |
| 63 | ]); | |
| 64 | ||
| 65 | const VIDEO_EXTENSIONS = new Set([".mp4", ".mkv", ".webm", ".avi", ".mov"]); | |
| 66 | ||
| 67 | // File extensions that need metadata scrubbing | |
| 68 | const SCRUB_EXTENSIONS = new Set([ | |
| 69 | ".jpg", | |
| 70 | ".jpeg", | |
| 71 | ".png", | |
| 72 | ".mov", | |
| 73 | ".mp4", | |
| 74 | ".m4a", | |
| 75 | ]); | |
| 76 | ||
| 77 | const CODE_EXTENSIONS: Record<string, Language> = { | |
| 78 | ".json": "json", | |
| 79 | ".toml": "toml", | |
| 80 | ".ts": "ts", | |
| 81 | ".js": "ts", | |
| 82 | ".tsx": "tsx", | |
| 83 | ".jsx": "tsx", | |
| 84 | ".css": "css", | |
| 85 | ".py": "python", | |
| 86 | ".lua": "lua", | |
| 87 | ".sh": "shell", | |
| 88 | ".bat": "dosbatch", | |
| 89 | ".ps1": "powershell", | |
| 90 | ".cmd": "dosbatch", | |
| 91 | ".yaml": "yaml", | |
| 92 | ".yml": "yaml", | |
| 93 | ".zig": "zig", | |
| 94 | ".astro": "astro", | |
| 95 | ".mdx": "mdx", | |
| 96 | ".xml": "xml", | |
| 97 | ".jsonc": "json", | |
| 98 | ".php": "php", | |
| 99 | ".patch": "diff", | |
| 100 | ".diff": "diff", | |
| 101 | }; | |
| 102 | ||
| 103 | const READ_CONTENTS_EXTENSIONS = new Set([".txt", ".chat"]); | |
| 104 | ||
| 105 | // For files that have changed indexing logic, update the date here rescanning | |
| 106 | // will reconstruct the entire file object. This way you can incrementally | |
| 107 | // update new file types without having to reindex everything. | |
| 108 | const lastUpdateTypes: Record<string, Date> = {}; | |
| 109 | lastUpdateTypes[".lnk"] = new Date("2025-05-13 13:58:00"); | |
| 110 | for (const ext in CODE_EXTENSIONS) { | |
| 111 | lastUpdateTypes[ext] = new Date("2025-05-13 13:58:00"); | |
| 112 | } | |
| 113 | for (const ext of READ_CONTENTS_EXTENSIONS) { | |
| 114 | lastUpdateTypes[ext] = new Date("2025-05-13 13:58:00"); | |
| 115 | } | |
| 116 | lastUpdateTypes[".diff"] = new Date("2025-05-18 13:58:00"); | |
| 117 | lastUpdateTypes[".patch"] = new Date("2025-05-18 13:58:00"); | |
| 118 | ||
| 119 | // Helper functions for metadata extraction | |
| 120 | async function calculateHash(filePath: string): Promise<string> { | |
| 121 | try { | |
| 122 | const hash = await execFileAsync("sha1sum", [filePath]); | |
| 123 | return hash.stdout.split(" ")[0]; | |
| 124 | } catch (error) { | |
| 125 | console.error(`Error calculating hash for ${filePath}:`, error); | |
| 126 | throw error; | |
| 127 | } | |
| 128 | } | |
| 129 | ||
| 130 | async function calculateDuration(filePath: string): Promise<number> { | |
| 131 | try { | |
| 132 | const ext = path.extname(filePath).toLowerCase(); | |
| 133 | if (!MEDIA_EXTENSIONS.has(ext)) return 0; | |
| 134 | ||
| 135 | const { stdout } = await execFileAsync("ffprobe", [ | |
| 136 | "-v", | |
| 137 | "error", | |
| 138 | "-show_entries", | |
| 139 | "format=duration", | |
| 140 | "-of", | |
| 141 | "default=noprint_wrappers=1:nokey=1", | |
| 142 | filePath, | |
| 143 | ]); | |
| 144 | return Math.ceil(parseFloat(stdout.trim())); | |
| 145 | } catch (error) { | |
| 146 | console.error(`Error calculating duration for ${filePath}:`, error); | |
| 147 | return 0; // Return 0 for duration on error | |
| 148 | } | |
| 149 | } | |
| 150 | ||
| 151 | async function calculateDimensions(filePath: string): Promise<string> { | |
| 152 | const ext = path.extname(filePath).toLowerCase(); | |
| 153 | if (!IMAGE_EXTENSIONS.has(ext) && !VIDEO_EXTENSIONS.has(ext)) return ""; | |
| 154 | ||
| 155 | try { | |
| 156 | if (ext === ".svg") { | |
| 157 | // For SVG files, parse the file and extract width/height | |
| 158 | const content = await fsp.readFile(filePath, "utf8"); | |
| 159 | const widthMatch = content.match(/width="(\d+)"/); | |
| 160 | const heightMatch = content.match(/height="(\d+)"/); | |
| 161 | ||
| 162 | if (widthMatch && heightMatch) { | |
| 163 | return `${widthMatch[1]}x${heightMatch[1]}`; | |
| 164 | } | |
| 165 | } else if (IMAGE_EXTENSIONS.has(ext) || VIDEO_EXTENSIONS.has(ext)) { | |
| 166 | // Use ffprobe for images and videos | |
| 167 | const { stdout } = await execFileAsync("ffprobe", [ | |
| 168 | "-v", | |
| 169 | "error", | |
| 170 | "-select_streams", | |
| 171 | "v:0", | |
| 172 | "-show_entries", | |
| 173 | "stream=width,height", | |
| 174 | "-of", | |
| 175 | "csv=s=x:p=0", | |
| 176 | filePath, | |
| 177 | ]); | |
| 178 | return stdout.trim(); | |
| 179 | } | |
| 180 | } catch (error) { | |
| 181 | console.error(`Error calculating dimensions for ${filePath}:`, error); | |
| 182 | } | |
| 183 | ||
| 184 | return ""; | |
| 185 | } | |
| 186 | ||
| 187 | // Helper function to check and remove location metadata | |
| 188 | async function scrubLocationMetadata( | |
| 189 | filePath: string, | |
| 190 | stats: Stats, | |
| 191 | ): Promise<boolean> { | |
| 192 | try { | |
| 193 | const ext = path.extname(filePath).toLowerCase(); | |
| 194 | if (!SCRUB_EXTENSIONS.has(ext)) return false; | |
| 195 | ||
| 196 | let hasLocation = false; | |
| 197 | let args: string[] = []; | |
| 198 | ||
| 199 | // Check for location metadata based on file type | |
| 200 | const tempOutput = path.join( | |
| 201 | path.dirname(filePath), | |
| 202 | `.tmp.${path.basename(filePath)}`, | |
| 203 | ); | |
| 204 | switch (ext) { | |
| 205 | case ".jpg": | |
| 206 | case ".jpeg": | |
| 207 | case ".png": | |
| 208 | // Check for GPS tags in EXIF | |
| 209 | const { stdout: gpsCheck } = await execFileAsync("exiftool", [ | |
| 210 | "-gps:all", | |
| 211 | filePath, | |
| 212 | ]); | |
| 213 | hasLocation = gpsCheck.trim().length > 0; | |
| 214 | args = ["-gps:all=", filePath, "-o", tempOutput]; | |
| 215 | break; | |
| 216 | case ".mov": | |
| 217 | case ".mp4": | |
| 218 | // Check for GPS metadata in video files | |
| 219 | const { stdout: videoCheck } = await execFileAsync("exiftool", [ | |
| 220 | "-ee", | |
| 221 | "-G3", | |
| 222 | "-s", | |
| 223 | filePath, | |
| 224 | ]); | |
| 225 | hasLocation = videoCheck.includes("GPS") || | |
| 226 | videoCheck.includes("Location"); | |
| 227 | args = ["-gps:all=", "-xmp:all=", filePath, "-o", tempOutput]; | |
| 228 | break; | |
| 229 | case ".m4a": | |
| 230 | // Check for location and other metadata in m4a files | |
| 231 | const { stdout: m4aCheck } = await execFileAsync("exiftool", [ | |
| 232 | "-ee", | |
| 233 | "-G3", | |
| 234 | "-s", | |
| 235 | filePath, | |
| 236 | ]); | |
| 237 | hasLocation = m4aCheck.includes("GPS") || | |
| 238 | m4aCheck.includes("Location") || | |
| 239 | m4aCheck.includes("Filename") || | |
| 240 | m4aCheck.includes("Title"); | |
| 241 | ||
| 242 | if (hasLocation) { | |
| 243 | args = [ | |
| 244 | "-gps:all=", | |
| 245 | "-location:all=", | |
| 246 | "-filename:all=", | |
| 247 | "-title=", | |
| 248 | "-m4a:all=", | |
| 249 | filePath, | |
| 250 | "-o", | |
| 251 | tempOutput, | |
| 252 | ]; | |
| 253 | } | |
| 254 | break; | |
| 255 | } | |
| 256 | ||
| 257 | const accessTime = stats.atime; | |
| 258 | const modTime = stats.mtime; | |
| 259 | ||
| 260 | let backup: string | null = null; | |
| 261 | try { | |
| 262 | if (hasLocation) { | |
| 263 | if (DRY_RUN) return true; | |
| 264 | ||
| 265 | // Prepare a backup | |
| 266 | const tmp = path.join( | |
| 267 | path.dirname(filePath), | |
| 268 | `.tmp.backup.${path.basename(filePath)}`, | |
| 269 | ); | |
| 270 | await fsp.copyFile(filePath, tmp); | |
| 271 | await fsp.utimes(tmp, accessTime, modTime); | |
| 272 | backup = tmp; | |
| 273 | ||
| 274 | // Remove metadata | |
| 275 | await execFileAsync("exiftool", args); | |
| 276 | if (!existsSync(tempOutput)) { | |
| 277 | throw new Error(`Failed to create output file: ${tempOutput}`); | |
| 278 | } | |
| 279 | ||
| 280 | // Restore original timestamps | |
| 281 | await fsp.rename(tempOutput, filePath); | |
| 282 | await fsp.utimes(filePath, accessTime, modTime); | |
| 283 | ||
| 284 | // Backup is no longer needed | |
| 285 | await fsp.unlink(backup); | |
| 286 | ||
| 287 | log( | |
| 288 | `Scrubbed location metadata in ${path.relative(LOCAL_DIR, filePath)}`, | |
| 289 | true, | |
| 290 | ); | |
| 291 | return true; | |
| 292 | } | |
| 293 | } catch (error) { | |
| 294 | if (backup) { | |
| 295 | await fsp.rename(backup, filePath); | |
| 296 | } | |
| 297 | if (existsSync(tempOutput)) { | |
| 298 | await fsp.unlink(tempOutput); | |
| 299 | } | |
| 300 | throw error; | |
| 301 | } | |
| 302 | } catch (error) { | |
| 303 | console.error(`Error scrubbing metadata for ${filePath}:`, error); | |
| 304 | } | |
| 305 | ||
| 306 | return false; | |
| 307 | } | |
| 308 | ||
| 309 | // Queue implementation for parallel processing | |
| 310 | type AsyncQueueProcessor<T> = (s: Spinner, item: T) => Promise<void>; | |
| 311 | class AsyncQueue<T> { | |
| 312 | private queue: T[] = []; | |
| 313 | private running = 0; | |
| 314 | private maxConcurrent: number; | |
| 315 | private processed = 0; | |
| 316 | private progress?: Progress<{ active: Spinner[] }>; | |
| 317 | private name: string; | |
| 318 | private estimate?: number; | |
| 319 | ||
| 320 | constructor(name: string, maxConcurrent: number) { | |
| 321 | this.maxConcurrent = maxConcurrent; | |
| 322 | this.name = name; | |
| 323 | } | |
| 324 | ||
| 325 | setEstimate(estimate: number) { | |
| 326 | this.estimate = estimate; | |
| 327 | if (this.progress) { | |
| 328 | this.progress.total = Math.max( | |
| 329 | this.processed + this.queue.length, | |
| 330 | estimate, | |
| 331 | ); | |
| 332 | } | |
| 333 | } | |
| 334 | ||
| 335 | getProgress() { | |
| 336 | if (!this.progress) { | |
| 337 | this.progress = new Progress({ | |
| 338 | spinner: null, | |
| 339 | text: ({ active }) => { | |
| 340 | const now = performance.now(); | |
| 341 | let text = `[${this.processed}/${ | |
| 342 | this.processed + this.queue.length | |
| 343 | }] ${this.name}`; | |
| 344 | let n = 0; | |
| 345 | for (const item of active) { | |
| 346 | let itemText = "- " + item.format(now); | |
| 347 | text += `\n` + | |
| 348 | itemText.slice(0, Math.max(0, process.stdout.columns - 1)); | |
| 349 | if (n > 10) { | |
| 350 | text += `\n ... + ${active.length - n} more`; | |
| 351 | break; | |
| 352 | } | |
| 353 | n++; | |
| 354 | } | |
| 355 | return text; | |
| 356 | }, | |
| 357 | props: { | |
| 358 | active: [] as Spinner[], | |
| 359 | }, | |
| 360 | }); | |
| 361 | this.progress.total = this.estimate ?? 0; | |
| 362 | this.progress.value = 0; | |
| 363 | this.progress.fps = 30; | |
| 364 | } | |
| 365 | return this.progress; | |
| 366 | } | |
| 367 | ||
| 368 | async add(item: T, processor: AsyncQueueProcessor<T>): Promise<void> { | |
| 369 | this.queue.push(item); | |
| 370 | this.getProgress().total = Math.max( | |
| 371 | this.processed + this.queue.length, | |
| 372 | this.estimate ?? 0, | |
| 373 | ); | |
| 374 | return this.processNext(processor); | |
| 375 | } | |
| 376 | ||
| 377 | async addBatch(items: T[], processor: AsyncQueueProcessor<T>): Promise<void> { | |
| 378 | this.queue.push(...items); | |
| 379 | this.getProgress().total = Math.max( | |
| 380 | this.processed + this.queue.length, | |
| 381 | this.estimate ?? 0, | |
| 382 | ); | |
| 383 | return this.processNext(processor); | |
| 384 | } | |
| 385 | ||
| 386 | private async processNext(processor: AsyncQueueProcessor<T>): Promise<void> { | |
| 387 | if (this.running >= this.maxConcurrent || this.queue.length === 0) { | |
| 388 | return; | |
| 389 | } | |
| 390 | ||
| 391 | const item = this.queue.shift(); | |
| 392 | if (!item) return; | |
| 393 | ||
| 394 | this.running++; | |
| 395 | ||
| 396 | try { | |
| 397 | const progress = this.getProgress(); | |
| 398 | ||
| 399 | let itemText = ""; | |
| 400 | if (typeof item === "string") { | |
| 401 | itemText = item; | |
| 402 | } else if (typeof item === "object" && item !== null && "path" in item) { | |
| 403 | itemText = "" + item.path; | |
| 404 | } else { | |
| 405 | itemText = JSON.stringify(item); | |
| 406 | } | |
| 407 | if (itemText.startsWith(LOCAL_DIR)) { | |
| 408 | itemText = path.relative(LOCAL_DIR, itemText); | |
| 409 | } | |
| 410 | ||
| 411 | const spinner = new Spinner(itemText); | |
| 412 | spinner.stop(); | |
| 413 | progress.props.active.unshift(spinner); | |
| 414 | await processor(spinner, item); | |
| 415 | progress.props = { | |
| 416 | active: progress.props.active.filter((s) => s !== spinner), | |
| 417 | }; | |
| 418 | this.processed++; | |
| 419 | progress.value = this.processed; | |
| 420 | } catch (error) { | |
| 421 | console.error(`Error processing ${this.name} queue item:`, error); | |
| 422 | this.processed++; | |
| 423 | this.getProgress().value = this.processed; | |
| 424 | } finally { | |
| 425 | this.running--; | |
| 426 | await this.processNext(processor); | |
| 427 | } | |
| 428 | } | |
| 429 | ||
| 430 | async waitForCompletion(): Promise<void> { | |
| 431 | if (this.queue.length === 0 && this.running === 0) { | |
| 432 | if (this.processed > 0) { | |
| 433 | this.#success(); | |
| 434 | } | |
| 435 | return; | |
| 436 | } | |
| 437 | ||
| 438 | return new Promise((resolve) => { | |
| 439 | const checkInterval = setInterval(() => { | |
| 440 | if (this.queue.length === 0 && this.running === 0) { | |
| 441 | clearInterval(checkInterval); | |
| 442 | this.#success(); | |
| 443 | resolve(); | |
| 444 | } | |
| 445 | }, 100); | |
| 446 | }); | |
| 447 | } | |
| 448 | ||
| 449 | #success() { | |
| 450 | this.getProgress().success(`${this.processed} ${this.name}`); | |
| 451 | } | |
| 452 | } | |
| 453 | ||
| 454 | function skipBasename(basename: string): boolean { | |
| 455 | // dot files must be incrementally tracked | |
| 456 | if (basename === ".dirsort") return true; | |
| 457 | if (basename === ".friends") return true; | |
| 458 | ||
| 459 | return ( | |
| 460 | basename.startsWith(".") || | |
| 461 | basename.startsWith("._") || | |
| 462 | basename.startsWith(".tmp") || | |
| 463 | basename === ".DS_Store" || | |
| 464 | basename.toLowerCase() === "thumbs.db" || | |
| 465 | basename.toLowerCase() === "desktop.ini" | |
| 466 | ); | |
| 467 | } | |
| 468 | ||
| 469 | // File system scanner | |
| 470 | class FileSystemScanner { | |
| 471 | private visitedPaths = new Set<string>(); | |
| 472 | private previousPaths = new Set<string>(); | |
| 473 | private dirQueue = new AsyncQueue<string>("Scan Directories", 10); | |
| 474 | private fileQueue = new AsyncQueue<{ path: string; stat: any }>( | |
| 475 | "File metadata", | |
| 476 | 20, | |
| 477 | ); | |
| 478 | private compressQueue: AsyncQueue<{ file: MediaFile; path: string }> | null = | |
| 479 | SHOULD_COMPRESS ? new AsyncQueue("Compress Assets", 10) : null; | |
| 480 | ||
| 481 | private getDbPath(localPath: string): string { | |
| 482 | // Convert local file system path to database path | |
| 483 | const relativePath = path.relative(LOCAL_DIR, localPath); | |
| 484 | return "/" + relativePath.split(path.sep).join(path.posix.sep); | |
| 485 | } | |
| 486 | ||
| 487 | private getLocalPath(dbPath: string): string { | |
| 488 | // Convert database path to local file system path | |
| 489 | return path.join(LOCAL_DIR, dbPath.slice(1)); | |
| 490 | } | |
| 491 | ||
| 492 | async scanFile(s: Spinner, filePath: string, stat: any): Promise<void> { | |
| 493 | const dbPath = this.getDbPath(filePath); | |
| 494 | ||
| 495 | // Skip hidden files | |
| 496 | const basename = path.basename(filePath); | |
| 497 | if (skipBasename(basename)) { | |
| 498 | return; | |
| 499 | } | |
| 500 | ||
| 501 | this.visitedPaths.add(dbPath); | |
| 502 | ||
| 503 | // Get existing file info from db | |
| 504 | const existingFile = MediaFile.getByPath(dbPath); | |
| 505 | ||
| 506 | // Determine which date to use (for date protection) | |
| 507 | let dateToUse = stat.mtime; | |
| 508 | const year2025Start = new Date("2025-01-01T00:00:00Z"); | |
| 509 | ||
| 510 | if ( | |
| 511 | existingFile && | |
| 512 | existingFile.date < year2025Start && | |
| 513 | stat.mtime >= year2025Start | |
| 514 | ) { | |
| 515 | console.error( | |
| 516 | `Error: ${dbPath} is ${ | |
| 517 | formatDate( | |
| 518 | existingFile.date, | |
| 519 | ) | |
| 520 | }, got modified to ${formatDate(stat.mtime)}`, | |
| 521 | ); | |
| 522 | dateToUse = existingFile.date; | |
| 523 | } | |
| 524 | ||
| 525 | // Check if we need to reprocess the file | |
| 526 | if (existingFile && existingFile.size === stat.size && existingFile.hash) { | |
| 527 | maybe_skip: { | |
| 528 | const lastUpdateDate = lastUpdateTypes[path.extname(filePath)]; | |
| 529 | if (lastUpdateDate && existingFile.lastUpdateDate < lastUpdateDate) { | |
| 530 | console.log( | |
| 531 | `Reprocessing ${dbPath} because indexing logic changed after ${ | |
| 532 | formatDate( | |
| 533 | lastUpdateDate, | |
| 534 | ) | |
| 535 | }`, | |
| 536 | ); | |
| 537 | break maybe_skip; | |
| 538 | } | |
| 539 | ||
| 540 | if (SHOULD_COMPRESS && existingFile.processed !== 2) { | |
| 541 | this.compressQueue!.add( | |
| 542 | { file: existingFile, path: dbPath }, | |
| 543 | this.compressFile.bind(this), | |
| 544 | ); | |
| 545 | } | |
| 546 | ||
| 547 | // File hasn't changed, no need to reprocess | |
| 548 | MediaFile.createFile({ | |
| 549 | path: dbPath, | |
| 550 | date: dateToUse, | |
| 551 | hash: existingFile.hash, | |
| 552 | size: stat.size, | |
| 553 | duration: existingFile.duration, | |
| 554 | dimensions: existingFile.dimensions, | |
| 555 | content: existingFile.contents, | |
| 556 | }); | |
| 557 | return; | |
| 558 | } | |
| 559 | } | |
| 560 | ||
| 561 | // Process the file | |
| 562 | log(`Processing file: ${dbPath}`); | |
| 563 | ||
| 564 | // Scrub location metadata if needed | |
| 565 | if (SHOULD_SCRUB) { | |
| 566 | if (await scrubLocationMetadata(filePath, stat)) { | |
| 567 | // Re-stat the file in case it was modified | |
| 568 | const newStat = await fsp.stat(filePath); | |
| 569 | stat.size = newStat.size; | |
| 570 | } | |
| 571 | } | |
| 572 | ||
| 573 | // Extract content | |
| 574 | const hash = await calculateHash(filePath); | |
| 575 | let content = ""; | |
| 576 | if (filePath.endsWith(".lnk")) { | |
| 577 | content = (await fsp.readFile(filePath, "utf8")).trim(); | |
| 578 | } | |
| 579 | const language = CODE_EXTENSIONS[path.extname(filePath)]; | |
| 580 | if (language) { | |
| 581 | read_code: { | |
| 582 | // An issue is that .ts is an overloaded extension, shared between | |
| 583 | // 'transport stream' and 'typescript'. | |
| 584 | // | |
| 585 | // Filter used here is: | |
| 586 | // - more than 1mb | |
| 587 | // - invalid UTF-8 | |
| 588 | if (stat.size > 1_000_000) break read_code; | |
| 589 | let code; | |
| 590 | const buf = await fsp.readFile(filePath); | |
| 591 | try { | |
| 592 | code = new TextDecoder("utf-8", { fatal: true }).decode(buf); | |
| 593 | } catch (error) { | |
| 594 | break read_code; | |
| 595 | } | |
| 596 | content = await highlightCode(code, language); | |
| 597 | } | |
| 598 | } | |
| 599 | if (!content && READ_CONTENTS_EXTENSIONS.has(path.extname(filePath))) { | |
| 600 | content = await fsp.readFile(filePath, "utf8"); | |
| 601 | } | |
| 602 | // End extract content | |
| 603 | ||
| 604 | if (hash === existingFile?.hash) { | |
| 605 | MediaFile.createFile({ | |
| 606 | path: dbPath, | |
| 607 | date: dateToUse, | |
| 608 | hash, | |
| 609 | size: stat.size, | |
| 610 | duration: existingFile.duration, | |
| 611 | dimensions: existingFile.dimensions, | |
| 612 | content, | |
| 613 | }); | |
| 614 | return; | |
| 615 | } else if (existingFile) { | |
| 616 | if (existingFile.processed === 2) { | |
| 617 | if (BlobAsset.decrementOrDelete(existingFile.hash)) { | |
| 618 | log( | |
| 619 | `Deleted compressed asset ${existingFile.hash}.{gzip, zstd}`, | |
| 620 | true, | |
| 621 | ); | |
| 622 | await fsp.unlink( | |
| 623 | path.join( | |
| 624 | COMPRESS_STORE, | |
| 625 | existingFile.hash.substring(0, 2), | |
| 626 | existingFile.hash + ".gz", | |
| 627 | ), | |
| 628 | ); | |
| 629 | await fsp.unlink( | |
| 630 | path.join( | |
| 631 | COMPRESS_STORE, | |
| 632 | existingFile.hash.substring(0, 2), | |
| 633 | existingFile.hash + ".zstd", | |
| 634 | ), | |
| 635 | ); | |
| 636 | } | |
| 637 | } | |
| 638 | } | |
| 639 | const [duration, dimensions] = await Promise.all([ | |
| 640 | calculateDuration(filePath), | |
| 641 | calculateDimensions(filePath), | |
| 642 | ]); | |
| 643 | ||
| 644 | // Update database with all metadata | |
| 645 | MediaFile.createFile({ | |
| 646 | path: dbPath, | |
| 647 | date: dateToUse, | |
| 648 | hash, | |
| 649 | size: stat.size, | |
| 650 | duration, | |
| 651 | dimensions, | |
| 652 | content, | |
| 653 | }); | |
| 654 | ||
| 655 | if (SHOULD_COMPRESS) { | |
| 656 | this.compressQueue!.add( | |
| 657 | { | |
| 658 | file: MediaFile.getByPath(dbPath)!, | |
| 659 | path: dbPath, | |
| 660 | }, | |
| 661 | this.compressFile.bind(this), | |
| 662 | ); | |
| 663 | } | |
| 664 | } | |
| 665 | ||
| 666 | async compressFile(s: Spinner, { file }: { file: MediaFile }): Promise<void> { | |
| 667 | log(`Compressing file: ${file.path}`); | |
| 668 | if (DRY_RUN) return; | |
| 669 | ||
| 670 | const filePath = path.join(FILE_ROOT!, file.path); | |
| 671 | ||
| 672 | const hash = file.hash; | |
| 673 | const firstTwoChars = hash.substring(0, 2); | |
| 674 | const compressDir = `${COMPRESS_STORE}/${firstTwoChars}`; | |
| 675 | const compressPath = `${compressDir}/${hash}`; | |
| 676 | ||
| 677 | // Create directory structure if it doesn't exist | |
| 678 | await fsp.mkdir(compressDir, { recursive: true }); | |
| 679 | ||
| 680 | // Compress the file with gzip | |
| 681 | const blob = BlobAsset.putOrIncrement(hash); | |
| 682 | if (blob.refs > 1) { | |
| 683 | log( | |
| 684 | `Skipping compression of ${filePath} because it already exists in ${compressPath}`, | |
| 685 | ); | |
| 686 | return; | |
| 687 | } | |
| 688 | // Check if already exists | |
| 689 | if (existsSync(compressPath + ".gz")) { | |
| 690 | file.setCompressed(true); | |
| 691 | return; | |
| 692 | } | |
| 693 | try { | |
| 694 | const gzipProcess = Bun.spawn(["gzip", "-c", filePath, "-9"], { | |
| 695 | stdout: Bun.file(compressPath + ".gz"), | |
| 696 | }); | |
| 697 | const zstdProcess = Bun.spawn(["zstd", "-c", filePath, "-9"], { | |
| 698 | stdout: Bun.file(compressPath + ".zstd"), | |
| 699 | }); | |
| 700 | const [gzipExited, zstdExited] = await Promise.all([ | |
| 701 | gzipProcess.exited, | |
| 702 | zstdProcess.exited, | |
| 703 | ]); | |
| 704 | assert(gzipExited === 0); | |
| 705 | assert(zstdExited === 0); | |
| 706 | assert(existsSync(compressPath + ".gz")); | |
| 707 | assert(existsSync(compressPath + ".zstd")); | |
| 708 | file.setCompressed(true); | |
| 709 | } catch (error) { | |
| 710 | console.error(`Error compressing file ${filePath}:`, error); | |
| 711 | BlobAsset.decrementOrDelete(hash); | |
| 712 | file.setCompressed(false); | |
| 713 | } | |
| 714 | } | |
| 715 | ||
| 716 | async scanDirectory(s: Spinner, dirPath: string): Promise<void> { | |
| 717 | const dbPath = this.getDbPath(dirPath); | |
| 718 | ||
| 719 | this.visitedPaths.add(dbPath); | |
| 720 | ||
| 721 | // Create or update directory entry | |
| 722 | log(`Scanning directory: ${dbPath}`); | |
| 723 | if (!DRY_RUN) { | |
| 724 | MediaFile.createOrUpdateDirectory(dbPath); | |
| 725 | } | |
| 726 | ||
| 727 | try { | |
| 728 | const entries = await fsp.readdir(dirPath, { withFileTypes: true }); | |
| 729 | ||
| 730 | // Process files and subdirectories | |
| 731 | for (const entry of entries) { | |
| 732 | const entryPath = path.join(dirPath, entry.name); | |
| 733 | ||
| 734 | // Skip hidden files and system files | |
| 735 | if (skipBasename(entry.name)) { | |
| 736 | continue; | |
| 737 | } | |
| 738 | ||
| 739 | if (entry.isDirectory()) { | |
| 740 | // Queue subdirectory for scanning | |
| 741 | this.dirQueue.add(entryPath, this.scanDirectory.bind(this)); | |
| 742 | } else if (entry.isFile()) { | |
| 743 | // Queue file for processing | |
| 744 | const stat = await fsp.stat(entryPath); | |
| 745 | ||
| 746 | this.fileQueue.add( | |
| 747 | { path: entryPath, stat }, | |
| 748 | async (s, item) => await this.scanFile(s, item.path, item.stat), | |
| 749 | ); | |
| 750 | } | |
| 751 | } | |
| 752 | } catch (error) { | |
| 753 | console.error(`Error scanning directory ${dirPath}:`, error); | |
| 754 | } | |
| 755 | } | |
| 756 | ||
| 757 | async processDirectoryMetadata(dirPath: string): Promise<void> { | |
| 758 | const dbPath = this.getDbPath(dirPath); | |
| 759 | const dir = MediaFile.getByPath(dbPath); | |
| 760 | ||
| 761 | if (!dir || dir.kind !== MediaFile.Kind.directory) { | |
| 762 | return; | |
| 763 | } | |
| 764 | ||
| 765 | if (DRY_RUN) return; | |
| 766 | ||
| 767 | const children = dir.getChildren(); | |
| 768 | ||
| 769 | // Calculate directory metadata | |
| 770 | let totalSize = 0; | |
| 771 | let newestDate = new Date(0); | |
| 772 | let allHashes = ""; | |
| 773 | ||
| 774 | // Check for readme.txt | |
| 775 | let readmeContent = ""; | |
| 776 | ||
| 777 | try { | |
| 778 | readmeContent = await fsp.readFile( | |
| 779 | path.join(dirPath, "readme.txt"), | |
| 780 | "utf8", | |
| 781 | ); | |
| 782 | } catch (error: any) { | |
| 783 | console.info(`no readme ${dirPath}`); | |
| 784 | if (error.code !== "ENOENT") { | |
| 785 | console.error(`Error reading readme.txt in ${dirPath}:`, error); | |
| 786 | } | |
| 787 | } | |
| 788 | ||
| 789 | let dirsort: string[] | null = null; | |
| 790 | try { | |
| 791 | dirsort = (await fsp.readFile(path.join(dirPath, ".dirsort"), "utf8")) | |
| 792 | .split("\n") | |
| 793 | .map((x) => x.trim()) | |
| 794 | .filter(Boolean); | |
| 795 | } catch (error: any) { | |
| 796 | if (error.code !== "ENOENT") { | |
| 797 | console.error(`Error reading .dirsort in ${dirPath}:`, error); | |
| 798 | } | |
| 799 | } | |
| 800 | ||
| 801 | if (await fsp.exists(path.join(dirPath, ".friends"))) { | |
| 802 | FilePermissions.setPermissions(dbPath, 1); | |
| 803 | } else { | |
| 804 | FilePermissions.setPermissions(dbPath, 0); | |
| 805 | } | |
| 806 | ||
| 807 | // Process children | |
| 808 | for (const child of children) { | |
| 809 | totalSize += child.size; | |
| 810 | allHashes += child.hash; | |
| 811 | ||
| 812 | // Update newest date, ignoring readme.txt | |
| 813 | if (!child.path.endsWith("/readme.txt") && child.date > newestDate) { | |
| 814 | newestDate = child.date; | |
| 815 | } | |
| 816 | } | |
| 817 | ||
| 818 | // Create a hash for the directory | |
| 819 | const dirHash = new Bun.CryptoHasher("sha1") | |
| 820 | .update(dbPath + allHashes) | |
| 821 | .digest("hex"); | |
| 822 | ||
| 823 | // Update directory metadata | |
| 824 | MediaFile.markDirectoryProcessed({ | |
| 825 | id: dir.id, | |
| 826 | timestamp: newestDate, | |
| 827 | contents: readmeContent, | |
| 828 | size: totalSize, | |
| 829 | hash: dirHash, | |
| 830 | dirsort, | |
| 831 | }); | |
| 832 | } | |
| 833 | ||
| 834 | async findDeletedFiles(): Promise<void> { | |
| 835 | if (DRY_RUN) return; | |
| 836 | ||
| 837 | // Find all paths that exist in the DB but not in the filesystem | |
| 838 | const deletedPaths = Array.from(this.previousPaths).filter( | |
| 839 | (path) => !this.visitedPaths.has(path), | |
| 840 | ); | |
| 841 | ||
| 842 | for (const dbPath of deletedPaths) { | |
| 843 | const file = MediaFile.getByPath(dbPath); | |
| 844 | if (!file) continue; | |
| 845 | ||
| 846 | log(`Item Deleted: ${dbPath}`, true); | |
| 847 | if (file.processed === 2) { | |
| 848 | if (BlobAsset.decrementOrDelete(file.hash)) { | |
| 849 | log(`Deleted compressed asset ${file.hash}.{gzip, zstd}`, true); | |
| 850 | await fsp.unlink( | |
| 851 | path.join( | |
| 852 | COMPRESS_STORE, | |
| 853 | file.hash.substring(0, 2), | |
| 854 | file.hash + ".gz", | |
| 855 | ), | |
| 856 | ); | |
| 857 | await fsp.unlink( | |
| 858 | path.join( | |
| 859 | COMPRESS_STORE, | |
| 860 | file.hash.substring(0, 2), | |
| 861 | file.hash + ".zstd", | |
| 862 | ), | |
| 863 | ); | |
| 864 | } | |
| 865 | } | |
| 866 | MediaFile.deleteByPath(dbPath); | |
| 867 | } | |
| 868 | } | |
| 869 | ||
| 870 | async loadPreviousPaths(): Promise<void> { | |
| 871 | // Get all files and directories from the database | |
| 872 | // This uses a custom query to get all paths at once | |
| 873 | const getAllPathsQuery = cache | |
| 874 | .prepare(`SELECT path, kind FROM media_files`) | |
| 875 | .all() as { | |
| 876 | path: string; | |
| 877 | kind: MediaFile.Kind; | |
| 878 | }[]; | |
| 879 | ||
| 880 | let dirs = 0; | |
| 881 | let files = 0; | |
| 882 | for (const row of getAllPathsQuery) { | |
| 883 | this.previousPaths.add(row.path); | |
| 884 | if (row.kind === MediaFile.Kind.directory) { | |
| 885 | dirs++; | |
| 886 | } else { | |
| 887 | files++; | |
| 888 | } | |
| 889 | } | |
| 890 | ||
| 891 | this.dirQueue.setEstimate(dirs); | |
| 892 | this.fileQueue.setEstimate(files); | |
| 893 | ||
| 894 | // log(`Loaded ${this.previousPaths.size} paths from database`, true); | |
| 895 | } | |
| 896 | ||
| 897 | async scan(): Promise<void> { | |
| 898 | log(`Starting file system scan in ${LOCAL_DIR}`, true); | |
| 899 | ||
| 900 | // Check if the root directory exists and is accessible | |
| 901 | try { | |
| 902 | const rootStat = await fsp.stat(LOCAL_DIR); | |
| 903 | if (!rootStat.isDirectory()) { | |
| 904 | throw new Error(`${LOCAL_DIR} is not a directory`); | |
| 905 | } | |
| 906 | } catch (error) { | |
| 907 | console.error(`Error: Cannot access root directory ${LOCAL_DIR}`, error); | |
| 908 | console.error( | |
| 909 | `Aborting scan to prevent database corruption. Please check if the volume is mounted.`, | |
| 910 | ); | |
| 911 | process.exit(1); | |
| 912 | } | |
| 913 | ||
| 914 | await this.loadPreviousPaths(); | |
| 915 | ||
| 916 | await this.dirQueue.add(LOCAL_DIR, this.scanDirectory.bind(this)); | |
| 917 | ||
| 918 | await this.dirQueue.waitForCompletion(); | |
| 919 | await this.fileQueue.waitForCompletion(); | |
| 920 | ||
| 921 | await this.findDeletedFiles(); | |
| 922 | ||
| 923 | const allDirs = Array.from(this.visitedPaths) | |
| 924 | .filter((path) => { | |
| 925 | const file = MediaFile.getByPath(path); | |
| 926 | return file && file.kind === MediaFile.Kind.directory; | |
| 927 | }) | |
| 928 | .sort((a, b) => b.length - a.length); | |
| 929 | ||
| 930 | const dirMetadataQueue = new AsyncQueue<string>("Directory Metadata", 10); | |
| 931 | for (const dirPath of allDirs) { | |
| 932 | await this.processDirectoryMetadata(this.getLocalPath(dirPath)); | |
| 933 | } | |
| 934 | ||
| 935 | await dirMetadataQueue.waitForCompletion(); | |
| 936 | ||
| 937 | if (SHOULD_COMPRESS) { | |
| 938 | await this.compressQueue!.waitForCompletion(); | |
| 939 | } | |
| 940 | ||
| 941 | log("Scan completed successfully!", true); | |
| 942 | } | |
| 943 | } | |
| 944 | ||
| 945 | // Main execution | |
| 946 | function showHelp() { | |
| 947 | console.log(` | |
| 948 | MediaFile Scanner - Index filesystem content for paperclover.net | |
| 949 | ||
| 950 | Environment variables: | |
| 951 | FILE_ROOT Required. Path to the directory to scan | |
| 952 | COMPRESS_STORE Optional. Path to store compressed files (default: .clover/compressed) | |
| 953 | ||
| 954 | Options: | |
| 955 | --help Show this help message | |
| 956 | --dry-run Don't make any changes to the database | |
| 957 | --verbose Show detailed output | |
| 958 | ||
| 959 | Usage: | |
| 960 | bun ./media/scan.ts [options] | |
| 961 | ||
| 962 | `); | |
| 963 | process.exit(0); | |
| 964 | } | |
| 965 | ||
| 966 | { | |
| 967 | // Show help if requested | |
| 968 | if (process.argv.includes("--help")) { | |
| 969 | showHelp(); | |
| 970 | process.exit(0); | |
| 971 | } | |
| 972 | ||
| 973 | // Check if the root directory exists before starting | |
| 974 | if (!existsSync(LOCAL_DIR)) { | |
| 975 | console.error( | |
| 976 | `Error: Root directory ${LOCAL_DIR} does not exist or is not accessible.`, | |
| 977 | ); | |
| 978 | console.error(`Please check if the volume is mounted correctly.`); | |
| 979 | process.exit(1); | |
| 980 | } | |
| 981 | ||
| 982 | const startTime = Date.now(); | |
| 983 | ||
| 984 | try { | |
| 985 | const scanner = new FileSystemScanner(); | |
| 986 | await scanner.scan(); | |
| 987 | ||
| 988 | const endTime = Date.now(); | |
| 989 | log(`Scan completed in ${(endTime - startTime) / 1000} seconds`, true); | |
| 990 | ||
| 991 | const rootDir = MediaFile.getByPath("/")!; | |
| 992 | const totalEntries = cache | |
| 993 | .prepare(`SELECT COUNT(*) as count FROM media_files`) | |
| 994 | .get() as { count: number }; | |
| 995 | const totalDuration = cache | |
| 996 | .prepare(`SELECT SUM(duration) as duration FROM media_files`) | |
| 997 | .get() as { duration: number }; | |
| 998 | console.log(); | |
| 999 | console.log("Global Stats"); | |
| 1000 | console.log(` Entry count: ${totalEntries.count}`); | |
| 1001 | console.log(` Uncompressed size: ${formatSize(rootDir.size)}`); | |
| 1002 | console.log( | |
| 1003 | ` Total audio/video duration: ${ | |
| 1004 | ( | |
| 1005 | totalDuration.duration / | |
| 1006 | 60 / | |
| 1007 | 60 | |
| 1008 | ).toFixed(1) | |
| 1009 | } hours`, | |
| 1010 | ); | |
| 1011 | } catch (error) { | |
| 1012 | console.error("Error during scan:", error); | |
| 1013 | process.exit(1); | |
| 1014 | } | |
| 1015 | } |
src/file-viewer/cache.ts created+418| ... | ... | @@ -0,0 +1,418 @@ |
| 1 | import { Agent, get } from "node:https"; | |
| 2 | import * as fs from "node:fs"; | |
| 3 | import * as path from "node:path"; | |
| 4 | import { Buffer } from "node:buffer"; | |
| 5 | import type { ClientRequest } from "node:http"; | |
| 6 | import { LRUCache } from "lru-cache"; | |
| 7 | import { open } from "node:fs/promises"; | |
| 8 | import { createHash } from "node:crypto"; | |
| 9 | import { scoped } from "@paperclover/console"; | |
| 10 | import { escapeUri } from "./share.ts"; | |
| 11 | ||
| 12 | declare const Deno: any; | |
| 13 | ||
| 14 | const sourceOfTruth = "https://nas.paperclover.net:43250"; | |
| 15 | const caCert = fs.readFileSync(path.join(import.meta.dirname, "cert.pem")); | |
| 16 | ||
| 17 | const diskCacheRoot = path.join(import.meta.dirname, "../.clover/filecache/"); | |
| 18 | const diskCacheMaxSize = 14 * 1024 * 1024 * 1024; // 14GB | |
| 19 | const ramCacheMaxSize = 1 * 1024 * 1024 * 1024; // 1.5GB | |
| 20 | const loadInProgress = new Map< | |
| 21 | string, | |
| 22 | Promise<{ stream: ReadableStream }> | { stream: ReadableStream } | |
| 23 | >(); | |
| 24 | // Disk cache serializes the access times | |
| 25 | const diskCacheState: Record<string, [size: number, lastAccess: number]> = | |
| 26 | loadDiskCacheState(); | |
| 27 | const diskCache = new LRUCache<string, number>({ | |
| 28 | maxSize: diskCacheMaxSize, | |
| 29 | ttl: 0, | |
| 30 | sizeCalculation: (value) => value, | |
| 31 | dispose: (_, key) => { | |
| 32 | delete diskCacheState[key]; | |
| 33 | }, | |
| 34 | onInsert: (size, key) => { | |
| 35 | diskCacheState[key] = [size, Date.now()]; | |
| 36 | }, | |
| 37 | }); | |
| 38 | const ramCache = new LRUCache<string, Buffer>({ | |
| 39 | maxSize: ramCacheMaxSize, | |
| 40 | ttl: 0, | |
| 41 | sizeCalculation: (value) => value.byteLength, | |
| 42 | }); | |
| 43 | let diskCacheFlush: NodeJS.Timeout | undefined; | |
| 44 | ||
| 45 | { | |
| 46 | // Initialize the disk cache by validating all files exist, and then | |
| 47 | // inserting them in last to start order. State is repaired pessimistically. | |
| 48 | const toDelete = new Set(Object.keys(diskCacheState)); | |
| 49 | fs.mkdirSync(diskCacheRoot, { recursive: true }); | |
| 50 | for ( | |
| 51 | const file of fs.readdirSync(diskCacheRoot, { | |
| 52 | recursive: true, | |
| 53 | encoding: "utf-8", | |
| 54 | }) | |
| 55 | ) { | |
| 56 | const key = file.split("/").pop()!; | |
| 57 | if (key.length !== 40) continue; | |
| 58 | const entry = diskCacheState[key]; | |
| 59 | if (!entry) { | |
| 60 | fs.rmSync(path.join(diskCacheRoot, file), { | |
| 61 | recursive: true, | |
| 62 | force: true, | |
| 63 | }); | |
| 64 | delete diskCacheState[key]; | |
| 65 | continue; | |
| 66 | } | |
| 67 | toDelete.delete(key); | |
| 68 | } | |
| 69 | for (const key of toDelete) { | |
| 70 | delete diskCacheState[key]; | |
| 71 | } | |
| 72 | saveDiskCacheState(); | |
| 73 | const sorted = Object.keys(diskCacheState).sort((a, b) => | |
| 74 | diskCacheState[b][1] - diskCacheState[a][1] | |
| 75 | ); | |
| 76 | for (const key of sorted) { | |
| 77 | diskCache.set(key, diskCacheState[key][0]); | |
| 78 | } | |
| 79 | } | |
| 80 | ||
| 81 | export type CacheSource = "ram" | "disk" | "miss" | "lan" | "flight"; | |
| 82 | export type CompressionFormat = "gzip" | "zstd" | "raw"; | |
| 83 | const compressionFormatMap = { | |
| 84 | gzip: "gz", | |
| 85 | zstd: "zstd", | |
| 86 | raw: "file", | |
| 87 | } as const; | |
| 88 | ||
| 89 | const log = scoped("file_cache"); | |
| 90 | ||
| 91 | const lanMount = "/Volumes/clover/Published"; | |
| 92 | const hasLanMount = fs.existsSync(lanMount); | |
| 93 | ||
| 94 | /** | |
| 95 | * Fetches a file with the given compression format. | |
| 96 | * Uncompressed files are never persisted to disk. | |
| 97 | * | |
| 98 | * Returns a promise to either: | |
| 99 | * - Buffer: the data is from RAM cache | |
| 100 | * - ReadableStream: the data is being streamed in from disk/server | |
| 101 | * | |
| 102 | * Additionally, returns a string indicating the source of the data, for debugging. | |
| 103 | * | |
| 104 | * Callers must be able to consume both output types. | |
| 105 | */ | |
| 106 | export async function fetchFile( | |
| 107 | pathname: string, | |
| 108 | format: CompressionFormat = "raw", | |
| 109 | ): Promise< | |
| 110 | [Buffer | ReadableStream, encoding: CompressionFormat, src: CacheSource] | |
| 111 | > { | |
| 112 | // 1. Ram cache | |
| 113 | const cacheKey = hashKey(`${pathname}:${format}`); | |
| 114 | const ramCacheHit = ramCache.get(cacheKey); | |
| 115 | if (ramCacheHit) { | |
| 116 | log(`ram hit: ${format}${pathname}`); | |
| 117 | return [ramCacheHit, format, "ram"]; | |
| 118 | } | |
| 119 | ||
| 120 | // 2. Tee an existing loading stream. | |
| 121 | const inProgress = loadInProgress.get(cacheKey); | |
| 122 | if (inProgress) { | |
| 123 | const stream = await inProgress; | |
| 124 | const [stream1, stream2] = stream.stream.tee(); | |
| 125 | loadInProgress.set(cacheKey, { stream: stream2 }); | |
| 126 | log(`in-flight copy: ${format}${pathname}`); | |
| 127 | return [stream1, format, "flight"]; | |
| 128 | } | |
| 129 | ||
| 130 | // 3. Disk cache + Load into ram cache. | |
| 131 | if (format !== "raw") { | |
| 132 | const diskCacheHit = diskCache.get(cacheKey); | |
| 133 | if (diskCacheHit) { | |
| 134 | diskCacheState[cacheKey] = [diskCacheHit, Date.now()]; | |
| 135 | saveDiskCacheStateLater(); | |
| 136 | log(`disk hit: ${format}/${pathname}`); | |
| 137 | return [ | |
| 138 | startInProgress( | |
| 139 | cacheKey, | |
| 140 | new ReadableStream({ | |
| 141 | start: async (controller) => { | |
| 142 | const stream = fs.createReadStream( | |
| 143 | path.join(diskCacheRoot, cacheKey), | |
| 144 | ); | |
| 145 | const chunks: Buffer[] = []; | |
| 146 | stream.on("data", (chunk) => { | |
| 147 | controller.enqueue(chunk); | |
| 148 | chunks.push(chunk as Buffer); | |
| 149 | }); | |
| 150 | stream.on("end", () => { | |
| 151 | controller.close(); | |
| 152 | ramCache.set(cacheKey, Buffer.concat(chunks)); | |
| 153 | finishInProgress(cacheKey); | |
| 154 | }); | |
| 155 | stream.on("error", (error) => { | |
| 156 | controller.error(error); | |
| 157 | }); | |
| 158 | }, | |
| 159 | }), | |
| 160 | ), | |
| 161 | format, | |
| 162 | "disk", | |
| 163 | ]; | |
| 164 | } | |
| 165 | } | |
| 166 | ||
| 167 | // 4. Lan Mount (access files that prod may not have) | |
| 168 | if (hasLanMount) { | |
| 169 | log(`lan hit: ${format}/${pathname}`); | |
| 170 | return [ | |
| 171 | startInProgress( | |
| 172 | cacheKey, | |
| 173 | new ReadableStream({ | |
| 174 | start: async (controller) => { | |
| 175 | const stream = fs.createReadStream( | |
| 176 | path.join(lanMount, pathname), | |
| 177 | ); | |
| 178 | const chunks: Buffer[] = []; | |
| 179 | stream.on("data", (chunk) => { | |
| 180 | controller.enqueue(chunk); | |
| 181 | chunks.push(chunk as Buffer); | |
| 182 | }); | |
| 183 | stream.on("end", () => { | |
| 184 | controller.close(); | |
| 185 | ramCache.set(cacheKey, Buffer.concat(chunks)); | |
| 186 | finishInProgress(cacheKey); | |
| 187 | }); | |
| 188 | stream.on("error", (error) => { | |
| 189 | controller.error(error); | |
| 190 | }); | |
| 191 | }, | |
| 192 | }), | |
| 193 | ), | |
| 194 | "raw", | |
| 195 | "lan", | |
| 196 | ]; | |
| 197 | } | |
| 198 | ||
| 199 | // 4. Fetch from server | |
| 200 | const url = `${compressionFormatMap[format]}${escapeUri(pathname)}`; | |
| 201 | log(`miss: ${format}${pathname}`); | |
| 202 | const response = await startInProgress(cacheKey, fetchFileUncached(url)); | |
| 203 | const [stream1, stream2] = response.tee(); | |
| 204 | handleDownload(cacheKey, format, stream2); | |
| 205 | return [stream1, format, "miss"]; | |
| 206 | } | |
| 207 | ||
| 208 | export async function prefetchFile( | |
| 209 | pathname: string, | |
| 210 | format: CompressionFormat = "zstd", | |
| 211 | ) { | |
| 212 | const cacheKey = hashKey(`${pathname}:${format}`); | |
| 213 | const ramCacheHit = ramCache.get(cacheKey); | |
| 214 | if (ramCacheHit) { | |
| 215 | return; | |
| 216 | } | |
| 217 | if (hasLanMount) return; | |
| 218 | const url = `${compressionFormatMap[format]}${pathname}`; | |
| 219 | log(`prefetch: ${format}${pathname}`); | |
| 220 | const stream2 = await startInProgress(cacheKey, fetchFileUncached(url)); | |
| 221 | handleDownload(cacheKey, format, stream2); | |
| 222 | } | |
| 223 | ||
| 224 | async function handleDownload( | |
| 225 | cacheKey: string, | |
| 226 | format: CompressionFormat, | |
| 227 | stream2: ReadableStream, | |
| 228 | ) { | |
| 229 | let chunks: Buffer[] = []; | |
| 230 | if (format !== "raw") { | |
| 231 | const file = await open(path.join(diskCacheRoot, cacheKey), "w"); | |
| 232 | try { | |
| 233 | for await (const chunk of stream2) { | |
| 234 | await file.write(chunk); | |
| 235 | chunks.push(chunk); | |
| 236 | } | |
| 237 | } finally { | |
| 238 | file.close(); | |
| 239 | } | |
| 240 | } else { | |
| 241 | for await (const chunk of stream2) { | |
| 242 | chunks.push(chunk); | |
| 243 | } | |
| 244 | } | |
| 245 | const final = Buffer.concat(chunks); | |
| 246 | chunks.length = 0; | |
| 247 | ramCache.set(cacheKey, final); | |
| 248 | if (format !== "raw") { | |
| 249 | diskCache.set(cacheKey, final.byteLength); | |
| 250 | } | |
| 251 | finishInProgress(cacheKey); | |
| 252 | } | |
| 253 | ||
| 254 | function hashKey(key: string): string { | |
| 255 | return createHash("sha1").update(key).digest("hex"); | |
| 256 | } | |
| 257 | ||
| 258 | function startInProgress<T extends Promise<ReadableStream> | ReadableStream>( | |
| 259 | cacheKey: string, | |
| 260 | promise: T, | |
| 261 | ): T { | |
| 262 | if (promise instanceof Promise) { | |
| 263 | let resolve2: (stream: { stream: ReadableStream }) => void; | |
| 264 | let reject2: (error: Error) => void; | |
| 265 | const stream2Promise = new Promise<{ stream: ReadableStream }>( | |
| 266 | (resolve, reject) => { | |
| 267 | resolve2 = resolve; | |
| 268 | reject2 = reject; | |
| 269 | }, | |
| 270 | ); | |
| 271 | const stream1Promise = new Promise<ReadableStream>((resolve, reject) => { | |
| 272 | promise.then((stream) => { | |
| 273 | const [stream1, stream2] = stream.tee(); | |
| 274 | const stream2Obj = { stream: stream2 }; | |
| 275 | resolve2(stream2Obj); | |
| 276 | loadInProgress.set(cacheKey, stream2Obj); | |
| 277 | resolve(stream1); | |
| 278 | }, reject); | |
| 279 | }); | |
| 280 | loadInProgress.set(cacheKey, stream2Promise); | |
| 281 | return stream1Promise as T; | |
| 282 | } else { | |
| 283 | const [stream1, stream2] = promise.tee(); | |
| 284 | loadInProgress.set(cacheKey, { stream: stream2 }); | |
| 285 | return stream1 as T; | |
| 286 | } | |
| 287 | } | |
| 288 | ||
| 289 | function loadDiskCacheState(): Record< | |
| 290 | string, | |
| 291 | [size: number, lastAccess: number] | |
| 292 | > { | |
| 293 | try { | |
| 294 | const state = JSON.parse( | |
| 295 | fs.readFileSync(path.join(diskCacheRoot, "state.json"), "utf-8"), | |
| 296 | ); | |
| 297 | return state; | |
| 298 | } catch (error) { | |
| 299 | return {}; | |
| 300 | } | |
| 301 | } | |
| 302 | ||
| 303 | function saveDiskCacheStateLater() { | |
| 304 | if (diskCacheFlush) { | |
| 305 | return; | |
| 306 | } | |
| 307 | diskCacheFlush = setTimeout(() => { | |
| 308 | saveDiskCacheState(); | |
| 309 | }, 60_000) as NodeJS.Timeout; | |
| 310 | if (diskCacheFlush.unref) { | |
| 311 | diskCacheFlush.unref(); | |
| 312 | } | |
| 313 | } | |
| 314 | ||
| 315 | process.on("exit", () => { | |
| 316 | saveDiskCacheState(); | |
| 317 | }); | |
| 318 | ||
| 319 | function saveDiskCacheState() { | |
| 320 | fs.writeFileSync( | |
| 321 | path.join(diskCacheRoot, "state.json"), | |
| 322 | JSON.stringify(diskCacheState), | |
| 323 | ); | |
| 324 | } | |
| 325 | ||
| 326 | function finishInProgress(cacheKey: string) { | |
| 327 | loadInProgress.delete(cacheKey); | |
| 328 | } | |
| 329 | ||
| 330 | // Self signed certificate must be trusted to be able to request the above URL. | |
| 331 | // | |
| 332 | // Unfortunately, Bun and Deno are both not node.js compatible, so those two | |
| 333 | // runtimes need fallback implementations. The fallback implementations calls | |
| 334 | // fetch with the `agent` value as the RequestInit. Since `fetch` decompresses | |
| 335 | // the body for you, it must be disabled. | |
| 336 | const agent: any = typeof Bun !== "undefined" | |
| 337 | ? { | |
| 338 | // Bun has two non-standard fetch extensions | |
| 339 | decompress: false, | |
| 340 | tls: { | |
| 341 | ca: caCert, | |
| 342 | }, | |
| 343 | } | |
| 344 | // TODO: https://github.com/denoland/deno/issues/12291 | |
| 345 | // : typeof Deno !== "undefined" | |
| 346 | // ? { | |
| 347 | // // Deno configures through the non-standard `client` extension | |
| 348 | // client: Deno.createHttpClient({ | |
| 349 | // caCerts: [caCert.toString()], | |
| 350 | // }), | |
| 351 | // } | |
| 352 | // Node.js supports node:http | |
| 353 | : new Agent({ | |
| 354 | ca: caCert, | |
| 355 | }); | |
| 356 | ||
| 357 | function fetchFileNode(pathname: string): Promise<ReadableStream> { | |
| 358 | return new Promise((resolve, reject) => { | |
| 359 | const request: ClientRequest = get(`${sourceOfTruth}/${pathname}`, { | |
| 360 | agent, | |
| 361 | }); | |
| 362 | request.on("response", (response) => { | |
| 363 | if (response.statusCode !== 200) { | |
| 364 | reject(new Error(`Failed to fetch ${pathname}`)); | |
| 365 | return; | |
| 366 | } | |
| 367 | ||
| 368 | const stream = new ReadableStream({ | |
| 369 | start(controller) { | |
| 370 | response.on("data", (chunk) => { | |
| 371 | controller.enqueue(chunk); | |
| 372 | }); | |
| 373 | ||
| 374 | response.on("end", () => { | |
| 375 | controller.close(); | |
| 376 | }); | |
| 377 | ||
| 378 | response.on("error", (error) => { | |
| 379 | controller.error(error); | |
| 380 | reject(error); | |
| 381 | }); | |
| 382 | }, | |
| 383 | }); | |
| 384 | ||
| 385 | resolve(stream); | |
| 386 | }); | |
| 387 | ||
| 388 | request.on("error", (error) => { | |
| 389 | reject(error); | |
| 390 | }); | |
| 391 | }); | |
| 392 | } | |
| 393 | ||
| 394 | async function fetchFileDenoBun(pathname: string): Promise<ReadableStream> { | |
| 395 | const req = await fetch(`${sourceOfTruth}/${pathname}`, agent); | |
| 396 | if (!req.ok) { | |
| 397 | throw new Error(`Failed to fetch ${pathname}`); | |
| 398 | } | |
| 399 | return req.body!; | |
| 400 | } | |
| 401 | ||
| 402 | const fetchFileUncached = | |
| 403 | typeof Bun !== "undefined" || typeof Deno !== "undefined" | |
| 404 | ? fetchFileDenoBun | |
| 405 | : fetchFileNode; | |
| 406 | ||
| 407 | export async function toBuffer( | |
| 408 | stream: ReadableStream | Buffer, | |
| 409 | ): Promise<Buffer> { | |
| 410 | if (!(stream instanceof ReadableStream)) { | |
| 411 | return stream; | |
| 412 | } | |
| 413 | const chunks: Buffer[] = []; | |
| 414 | for await (const chunk of stream) { | |
| 415 | chunks.push(chunk); | |
| 416 | } | |
| 417 | return Buffer.concat(chunks); | |
| 418 | } |
src/file-viewer/cert.pem created+23| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | -----BEGIN CERTIFICATE----- | |
| 2 | MIIDxTCCAq2gAwIBAgIUBaaOXVkkE+6yarNyvzofETb+WLEwDQYJKoZIhvcNAQEL | |
| 3 | BQAwdzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5 | |
| 4 | MRUwEwYDVQQKDAxNZWRpYSBTZXJ2ZXIxDzANBgNVBAMMBnplbml0aDEhMB8GCSqG | |
| 5 | SIb3DQEJARYSbWVAcGFwZXJjbG92ZXIubmV0MB4XDTI1MDQyNzIxNTU0MFoXDTM1 | |
| 6 | MDQyNTIxNTU0MFowdzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYD | |
| 7 | VQQHDARDaXR5MRUwEwYDVQQKDAxNZWRpYSBTZXJ2ZXIxDzANBgNVBAMMBnplbml0 | |
| 8 | aDEhMB8GCSqGSIb3DQEJARYSbWVAcGFwZXJjbG92ZXIubmV0MIIBIjANBgkqhkiG | |
| 9 | 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv7lLwx8XwsuTeaIxTsHDL+Lx7eblsJ0XylVm | |
| 10 | 0/iIJS1Mrq6Be9St6vDWK/BWqqAn+MdqzSfLMy8EKazuHKtbTm2vlUIkjw28SoWP | |
| 11 | 6cRSCLx4hFGbF4tmRO+Bo+/4PpHPnheeolkjJ+CLO87tZ752D9JzjVND+WIj1QO+ | |
| 12 | bm+JBIi1TFREPh22/fSZBRpaRgqHcUEhICaiXaufvxQ6eihQfGSe00I7zRzGgnMl | |
| 13 | 51xjzkKkXd+r/FwTykd8ScJN25FMVDLsfJR59//geAZXYS25gQ4YL6R8u7ijidlS | |
| 14 | IoDG8N+Fzw7W4yI+y8fIN4W1x/HsjiQ665CuWY3TMYo98OaGwwIDAQABo0kwRzAm | |
| 15 | BgNVHREEHzAdggZ6ZW5pdGiCE25hcy5wYXBlcmNsb3Zlci5uZXQwHQYDVR0OBBYE | |
| 16 | FDXkgNsMYZv1Pr+95RCCk7eHACGOMA0GCSqGSIb3DQEBCwUAA4IBAQB6942odKyD | |
| 17 | TudifxRXbvcVe9LxSd7NimxRZzM5wTgA5KkxQT4CBM2wEPH/7e7Q/8scB9HbH2uP | |
| 18 | f2vixoCM+Z3BWiYHFFk+1pf2myUdiFV2BC9g80txEerRkGLc18V6CdYNJ9wNPkiO | |
| 19 | LW/RzXfEv+sqhaXh8dA46Ruz6SAbmscTMMYW4e9VYR+1p4Sm5UpTxrHzeg21YJKn | |
| 20 | ud8kO1r7RhVgUGzkAzNaIMiBuJqGGdD5yV7Ng5C/DlJ9AAeYu1diM5LkIKjf+/8M | |
| 21 | t/3l4eXS3Lda6+21rDvmfoK4Za6CAhcwgXIpqiRixE2MQNsxZ2XiJBVQHPrh8xYk | |
| 22 | L5fq8KTGFwtd | |
| 23 | -----END CERTIFICATE----- |
src/file-viewer/cotyledon.tsx created+291| ... | ... | @@ -0,0 +1,291 @@ |
| 1 | export function Speedbump() { | |
| 2 | return ( | |
| 3 | <div class="panel last"> | |
| 4 | <div className="header"> | |
| 5 | an interlude | |
| 6 | </div> | |
| 7 | <div className="content file-view file-view-text speedbump"> | |
| 8 | <canvas | |
| 9 | style="linear-gradient(45deg, #111318, #181f20)" | |
| 10 | data-canvas="cotyledon" | |
| 11 | > | |
| 12 | </canvas> | |
| 13 | <header> | |
| 14 | <h1>cotyledon</h1> | |
| 15 | </header> | |
| 16 | <div id="captcha" style="display: none;"> | |
| 17 | <p style="max-width:480px"> | |
| 18 | please prove you're not a robot by selecting all of the images with | |
| 19 | four-leaf clovers, until there are only regular clovers. | |
| 20 | <noscript> | |
| 21 | this will require javascript enabled on your computer to verify | |
| 22 | the mouse clicks. | |
| 23 | </noscript> | |
| 24 | </p> | |
| 25 | <div className="enter-container"> | |
| 26 | <div className="image-grid"> | |
| 27 | <button> | |
| 28 | <img src="/captcha/image/1.jpeg" alt="a four-leaf clover" /> | |
| 29 | </button> | |
| 30 | <button> | |
| 31 | <img src="/captcha/image/2.jpeg" alt="a four-leaf clover" /> | |
| 32 | </button> | |
| 33 | <button> | |
| 34 | <img src="/captcha/image/3.jpeg" alt="a four-leaf clover" /> | |
| 35 | </button> | |
| 36 | <button> | |
| 37 | <img src="/captcha/image/4.jpeg" alt="a four-leaf clover" /> | |
| 38 | </button> | |
| 39 | <button> | |
| 40 | <img src="/captcha/image/5.jpeg" alt="a four-leaf clover" /> | |
| 41 | </button> | |
| 42 | <button> | |
| 43 | <img src="/captcha/image/6.jpeg" alt="a four-leaf clover" /> | |
| 44 | </button> | |
| 45 | <button> | |
| 46 | <img src="/captcha/image/7.jpeg" alt="a four-leaf clover" /> | |
| 47 | </button> | |
| 48 | <button> | |
| 49 | <img src="/captcha/image/8.jpeg" alt="a four-leaf clover" /> | |
| 50 | </button> | |
| 51 | <button> | |
| 52 | <img src="/captcha/image/9.jpeg" alt="a four-leaf clover" /> | |
| 53 | </button> | |
| 54 | </div> | |
| 55 | </div> | |
| 56 | <div class="enter-container"> | |
| 57 | <button id="enter2">all done</button> | |
| 58 | </div> | |
| 59 | </div> | |
| 60 | <div id="first"> | |
| 61 | <p> | |
| 62 | this place is sacred, but dangerous. i have to keep visitors to an | |
| 63 | absolute minimum; you'll get dust on all the artifacts. | |
| 64 | </p> | |
| 65 | <p> | |
| 66 | by entering our museum, you agree not to use your camera. flash off | |
| 67 | isn't enough; the bits and bytes are alergic even to a camera's | |
| 68 | sensor | |
| 69 | </p> | |
| 70 | <p style="font-size:0.9rem;"> | |
| 71 | (in english: please do not store downloads after you're done viewing | |
| 72 | them) | |
| 73 | </p> | |
| 74 | <div class="enter-container"> | |
| 75 | <button id="enter">break my boundaries</button> | |
| 76 | </div> | |
| 77 | </div> | |
| 78 | </div> | |
| 79 | </div> | |
| 80 | ); | |
| 81 | } | |
| 82 | ||
| 83 | export function Readme() { | |
| 84 | return ( | |
| 85 | <div class="panel last"> | |
| 86 | <div className="header"> | |
| 87 | cotyledon | |
| 88 | </div> | |
| 89 | <div className="content file-view file-view-text"> | |
| 90 | <div style="max-width: 71ch;padding:3rem;font-family:rmo,monospace"> | |
| 91 | <p style="margin-top:0"> | |
| 92 | welcome to the archive. if this is your first time here, i recommend | |
| 93 | starting in '<a href="/file/2017">2017</a>' and going | |
| 94 | chronologically from there. however, there is truly no wrong way to | |
| 95 | explore. | |
| 96 | </p> | |
| 97 | <p> | |
| 98 | note that there is a blanket trigger warning for everything in this | |
| 99 | archive: while there is nothing visually offensive, some portions of | |
| 100 | the text and emotions conveyed through this may hit extremely hard. | |
| 101 | you are warned. | |
| 102 | </p> | |
| 103 | <p> | |
| 104 | all file dates are real. at least as real as i could figure out. | |
| 105 | when i moved data across drives over my years, i accidentally had a | |
| 106 | few points where i stamped over all the dates with the day that | |
| 107 | moved the files. even fucked it up a final time in february 2025, | |
| 108 | while in the process of unfucking things. | |
| 109 | </p> | |
| 110 | <p> | |
| 111 | thankfully, my past self knew i'd want to assemble this kind of | |
| 112 | site, and because of that they were crazy about storing the dates of | |
| 113 | things inside of html, json/yaml files, and even in fucking | |
| 114 | databases. i'm glad it was all stored though, but jeez what a nerd. | |
| 115 | </p> | |
| 116 | <p> | |
| 117 | a few files were touched up for privacy, or otherwise re-encoded. | |
| 118 | some of them i added extra metadata. | |
| 119 | </p> | |
| 120 | <p> | |
| 121 | from the bottom of my heart: i hope you enjoy. it has been a | |
| 122 | nightmare putting this all together. technically and emotionally | |
| 123 | speaking. i'm glad we can put this all behind us, mark it as | |
| 124 | completed, and get started with the good shit. | |
| 125 | </p> | |
| 126 | <p> | |
| 127 | love,<br />clo | |
| 128 | </p> | |
| 129 | <br /> | |
| 130 | <p> | |
| 131 | start here -&gt; <a href="/file/2017">2017</a> | |
| 132 | </p> | |
| 133 | </div> | |
| 134 | </div> | |
| 135 | </div> | |
| 136 | ); | |
| 137 | } | |
| 138 | ||
| 139 | export function ForEveryone() { | |
| 140 | // deno-fmt-ignore | |
| 141 | return <><div class="for_everyone"> | |
| 142 | <p>today is my 21st birthday. april 30th, 2025.</p> | |
| 143 | <p>it's been nearly six months starting hormones.</p> | |
| 144 | <p>sometimes i feel great,</p> | |
| 145 | <p>sometimes i get dysphoria.</p> | |
| 146 | <p>with the walls around me gone</p> | |
| 147 | <p>that shit hits way harder than it did before.</p> | |
| 148 | <p>ugh..</p> | |
| 149 | <p>i'm glad the pain i felt is now explained,</p> | |
| 150 | <p>but now rendered in high definition.</p> | |
| 151 | <p>the smallest strands of hair on my face and belly act</p> | |
| 152 | <p>as sharpened nails to pierce my soul.</p> | |
| 153 | <p></p> | |
| 154 | <p>it's all a pathway to better days; the sun had risen.</p> | |
| 155 | <p>one little step at a time for both of us.</p> | |
| 156 | <p>today i quit my job. free falling, it feels so weird.</p> | |
| 157 | <p>like sky diving.</p> | |
| 158 | <p>the only thing i feel is cold wind.</p> | |
| 159 | <p>the only thing i see is everything,</p> | |
| 160 | <p>and it's beautiful.</p> | |
| 161 | <p>i have a month of falling before the parachute activates,</p> | |
| 162 | <p>gonna spend as much time of it on art as i can.</p> | |
| 163 | <p>that was, after all, my life plan:</p> | |
| 164 | <p>i wanted to make art, all the time,</p> | |
| 165 | <p>for everyone.</p> | |
| 166 | <p></p> | |
| 167 | <p>then you see what happened</p> | |
| 168 | <p>to the world and the internet.</p> | |
| 169 | <p>i never really got to live through that golden age,</p> | |
| 170 | <p>it probably sucked back then too.</p> | |
| 171 | <p>but now the big sites definitely stopped being fun.</p> | |
| 172 | <p>they slide their cold hands up my body</p> | |
| 173 | <p>and feel me around. it's unwelcoming, and</p> | |
| 174 | <p>inconsiderate to how sensitive my skin is.</p> | |
| 175 | <p>i'm so fucking glad i broke up with YouTube</p> | |
| 176 | <p>and their devilish friends.</p> | |
| 177 | <p>my NAS is at 5 / 24 TB</p> | |
| 178 | <p>and probably wont fill for the next decade.</p> | |
| 179 | <p></p> | |
| 180 | <p>it took 2 months for me to notice my body changed.</p> | |
| 181 | <p>that day was really nice, but it hurt a lot.</p> | |
| 182 | <p>a sharp, satisfying pain in my chest gave me life.</p> | |
| 183 | <p>learned new instincts for my arms</p> | |
| 184 | <p>so they'd stop poking my new shape.</p> | |
| 185 | <p>when i look at my face</p> | |
| 186 | <p>it's like a different person.</p> | |
| 187 | <p>she was the same as before, but completely new.</p> | |
| 188 | <p>something changed</p> | |
| 189 | <p>or i'm now used to seeing what makes me smile.</p> | |
| 190 | <p>regardless, whatever i see in the mirror, i smile.</p> | |
| 191 | <p>and, i don't hear that old name much anymore</p> | |
| 192 | <p>aside from nightmares. and you'll never repeat it, ok?</p> | |
| 193 | <p>okay.</p> | |
| 194 | <p></p> | |
| 195 | <p>been playing 'new canaan' by 'bill wurtz' on loop</p> | |
| 196 | <p>in the background.</p> | |
| 197 | <p>it kinda just feels right.</p> | |
| 198 | <p>especially when that verse near the end comes on.</p> | |
| 199 | <p></p> | |
| 200 | <p>more people have been allowed to visit me.</p> | |
| 201 | <p>my apartment used to be just for me,</p> | |
| 202 | <p>but the more i felt like a person</p> | |
| 203 | <p>the more i felt like having others over.</p> | |
| 204 | <p>still have to decorate and clean it a little,</p> | |
| 205 | <p>but it isn't a job to do alone.</p> | |
| 206 | <p>we dragged a giant a rug across the city one day,</p> | |
| 207 | <p>and it felt was like anything was possible.</p> | |
| 208 | <p>sometimes i have ten people visit in a day,</p> | |
| 209 | <p>or sometimes i focus my little eyes on just one.</p> | |
| 210 | <p>i never really know what i want to do</p> | |
| 211 | <p>until the time actually comes.</p> | |
| 212 | <p></p> | |
| 213 | {/* FILIP */} | |
| 214 | <p>i think about the times i was by the water with you.</p> | |
| 215 | <p>the sun setting warmly, icy air fell on our shoulders.</p> | |
| 216 | {/* NATALIE */} | |
| 217 | <p>and how we walked up to the top of that hill,</p> | |
| 218 | <p>you picked up and disposed a nail on the ground,</p> | |
| 219 | <p>walking the city thru places i've never been.</p> | |
| 220 | {/* BEN */} | |
| 221 | <p>or hiking through the park talking about compilers,</p> | |
| 222 | <p>tiring me out until i'd fall asleep in your arms.</p> | |
| 223 | {/* ELENA */} | |
| 224 | <p>and the way you held on to my hand as i woke up,</p> | |
| 225 | <p>noticing how i was trying to hide nightmare's tears.</p> | |
| 226 | <p></p> | |
| 227 | {/* HIGH SCHOOL */} | |
| 228 | <p>i remember we were yelling lyrics loudly,</p> | |
| 229 | <p>out of key yet cheered on because it was fun.</p> | |
| 230 | {/* ADVAITH/NATALIE */} | |
| 231 | <p>and when we all toured the big corporate office,</p> | |
| 232 | {/* AYU/HARRIS */} | |
| 233 | <p>then snuck in to some startup's office after hours;</p> | |
| 234 | <p>i don't remember what movie we watched.</p> | |
| 235 | {/* COLLEGE, DAY 1 IN EV's ROOM */} | |
| 236 | <p>i remember laying on the bunk bed,</p> | |
| 237 | <p>while the rest played a card game.</p> | |
| 238 | {/* MEGHAN/MORE */} | |
| 239 | <p>with us all laying on the rug, staring at the TV</p> | |
| 240 | <p>as the ending twist to {/* SEVERANCE */'that show'} was revealed.</p> | |
| 241 | <p></p> | |
| 242 | <p>all the moments i cherish,</p> | |
| 243 | <p>i love because it was always me.</p> | |
| 244 | <p>i didn't have to pretend,</p> | |
| 245 | <p>even if i didn't know who i was at the time.</p> | |
| 246 | <p>you all were there. for me.</p> | |
| 247 | <p></p> | |
| 248 | <p>i don't want to pretend any more</p> | |
| 249 | <p>i want to be myself. for everyone.</p> | |
| 250 | <p></p> | |
| 251 | <p>oh, the song ended. i thought it was on loop?</p> | |
| 252 | <p>it's late... can hear the crickets...</p> | |
| 253 | <p>and i can almost see the moon... mmmm...</p> | |
| 254 | <p>...nah, too much light pollution.</p> | |
| 255 | <p></p> | |
| 256 | <p>one day. one day.</p> | |
| 257 | <p></p> | |
| 258 | <p class="normal">before i go, i want to show the uncensored version of "journal about a girl", because i can trust you at least. keep in mind, i think you're one of the first people to ever see this.</p> | |
| 259 | </div> | |
| 260 | <div class="for_everyone" style="max-width:80ch;"> | |
| 261 | <blockquote> | |
| 262 | <p>journal - 2024-09-14</p> | |
| 263 | <p>been at HackMIT today on behalf of the company. it's fun. me and zack were running around looking for people that might be good hires. he had this magic arbitrary criteria to tell "oh this person is probably cracked let's talk to them" and we go to the first one. they were a nerd, perfect. they seemed to be extremely talented with some extreme software projects.<br/> | |
| 264 | okay.. oof... its still clouding my mind<br/> | |
| 265 | i cant shake that feeling away</p> | |
| 266 | <p>hold on...</p> | |
| 267 | <p>at some point they open one of their profiles to navigate to some code, and it displays for a couple of seconds: "pronouns: she/they". i don't actually know anything about this person, but it was my perception that she is trans. their appearance, physique, and age felt similar to me, which tends makes people think you are male.</p> | |
| 268 | <p>but... she was having fun being herself. being a legend of identity and of her skill in computer science. winning the physics major. making cool shit at the hackathon, and probably in life. my perception of her was the exact essence of who i myself wanted to be. i was jealous of her life.</p> | |
| 269 | <p>i tried hard to avoid a breakdown. success. but i was feeling distant. the next hour or so was disorienting, trying not to think about it too hard. i think there was one possibly interesting person we talked to. i don't remember any of the other conversations. they were not important. but i couldn't think through them regardless.</p> | |
| 270 | <p>later, i decided to read some of her code. i either have a huge dislike towards the Rust programming language and/or it was not high quality code. welp, so just is a person studying. my perception was just a perception, inaccurate but impacting. i know i need to become myself, whoever that is. otherwise, i'm just going to feel this shit at higher doses. i think about this every day, and the amount of time i feel being consumed by these problems only grows.</p> | |
| 271 | <p>getting through it all is a lonely feeling. not because no one is around, but because i am isolated emotionally. i know other people hit these feelings, but we all are too afraid to speak up, and it's all lonely.</p> | |
| 272 | <p>waiting on a reply from someone from healthcare. it'll be slow, but it will be okay.</p> | |
| 273 | </blockquote> | |
| 274 | </div> | |
| 275 | <div class="for_everyone"> | |
| 276 | <p class="normal"> | |
| 277 | i've learned that even when i feel alone, it doesn't have to feel lonely. i know it's hard, dear. i know it's scary. but i promise it's possible. we're all in this together. struggling together. sacrificing together. we dedicate our lives to each you, and our art for everyone. | |
| 278 | </p> | |
| 279 | ||
| 280 | <p class="normal" style="font-size:2rem;color:#9C91FF;font-family:times,serif;font-style:italic"> | |
| 281 | and then we knew,<br/> | |
| 282 | just like paper airplanes: that we could fly... | |
| 283 | </p> | |
| 284 | <br /> | |
| 285 | <p class="normal"> | |
| 286 | <a href="/" style='text-decoration:underline;text-underline-offset:0.2em;'>fin.</a> | |
| 287 | </p> | |
| 288 | </div> | |
| 289 | </> | |
| 290 | } | |
| 291 | ForEveryone.class = "text"; |
src/file-viewer/format.ts created+264| ... | ... | @@ -0,0 +1,264 @@ |
| 1 | export function formatSize(bytes: number) { | |
| 2 | if (bytes < 1024) return `${bytes} bytes`; | |
| 3 | if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; | |
| 4 | if (bytes < 1024 * 1024 * 1024) { | |
| 5 | return `${(bytes / 1024 / 1024).toFixed(1)} MB`; | |
| 6 | } | |
| 7 | return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GB`; | |
| 8 | } | |
| 9 | export function formatDate(date: Date) { | |
| 10 | // YYYY-MM-DD, format in PST timezone | |
| 11 | return date.toLocaleDateString("sv", { timeZone: "America/Los_Angeles" }); | |
| 12 | } | |
| 13 | export function formatShortDate(date: Date) { | |
| 14 | // YY-MM-DD, format in PST timezone | |
| 15 | return formatDate(date).slice(2); | |
| 16 | } | |
| 17 | export function formatDuration(seconds: number) { | |
| 18 | const minutes = Math.floor(seconds / 60); | |
| 19 | const remainingSeconds = seconds % 60; | |
| 20 | return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`; | |
| 21 | } | |
| 22 | export const escapeUri = (uri: string) => | |
| 23 | encodeURIComponent(uri) | |
| 24 | .replace(/%2F/gi, "/") | |
| 25 | .replace(/%3A/gi, ":") | |
| 26 | .replace(/%2B/gi, "+") | |
| 27 | .replace(/%40/gi, "@") | |
| 28 | .replace(/%2D/gi, "-") | |
| 29 | .replace(/%5F/gi, "_") | |
| 30 | .replace(/%2E/gi, ".") | |
| 31 | .replace(/%2C/gi, ","); | |
| 32 | ||
| 33 | import type { MediaFile } from "../db.ts"; | |
| 34 | import { escapeHTML } from "../framework/bun-polyfill.ts"; | |
| 35 | const findDomain = "paperclover.net"; | |
| 36 | ||
| 37 | // Returns escaped HTML | |
| 38 | // Features: | |
| 39 | // - autolink detection | |
| 40 | // - via \bpaperclover.net/[a-zA-Z0-9_\.+-]+ | |
| 41 | // - via \b/file/[a-zA-Z0-9_\.+-]+ | |
| 42 | // - via \bhttps://... | |
| 43 | // - via name of a sibling file's basename | |
| 44 | // - reformat (c) into © | |
| 45 | // | |
| 46 | // This formatter was written with AI. | |
| 47 | export function highlightLinksInTextView( | |
| 48 | text: string, | |
| 49 | siblingFiles: MediaFile[] = [], | |
| 50 | ) { | |
| 51 | const siblingLookup = Object.fromEntries( | |
| 52 | siblingFiles | |
| 53 | .filter((f) => f.basename !== "readme.txt") | |
| 54 | .map((f) => [f.basename, f]), | |
| 55 | ); | |
| 56 | ||
| 57 | // First escape the HTML to prevent XSS | |
| 58 | let processedText = escapeHTML(text); | |
| 59 | ||
| 60 | // Replace (c) with © | |
| 61 | processedText = processedText.replace(/\(c\)/gi, "©"); | |
| 62 | ||
| 63 | // Process all URL patterns in a single pass to avoid nested links | |
| 64 | // This regex matches: | |
| 65 | // 1. https:// or http:// URLs | |
| 66 | // 2. domain URLs without protocol (e.g., paperclover.net/path) | |
| 67 | // 3. /file/ URLs | |
| 68 | // 4. ./ relative paths | |
| 69 | ||
| 70 | // We'll use a function to determine what kind of URL it is and format accordingly | |
| 71 | const urlRegex = new RegExp( | |
| 72 | "(" + | |
| 73 | // Group 1: https:// or http:// URLs | |
| 74 | "\\bhttps?:\\/\\/[a-zA-Z0-9_\\.\\-]+\\.[a-zA-Z0-9_\\.\\-]+[a-zA-Z0-9_\\.\\-\\/\\?=&%+#]*" + | |
| 75 | "|" + | |
| 76 | // Group 2: domain URLs without protocol | |
| 77 | findDomain + | |
| 78 | "\\/\\/[a-zA-Z0-9_\\.\\+\\-]+" + | |
| 79 | "|" + | |
| 80 | // Group 3: /file/ URLs | |
| 81 | "\\/file\\/[a-zA-Z0-9_\\.\\+\\-\\/]+" + | |
| 82 | ")\\b" + | |
| 83 | "|" + | |
| 84 | // Group 4: ./ relative paths (not word-bounded) | |
| 85 | "(?<=\\s|^)\\.\\/[\\w\\-\\.]+", | |
| 86 | "g", | |
| 87 | ); | |
| 88 | ||
| 89 | processedText = processedText.replace(urlRegex, (match: string) => { | |
| 90 | // Case 1: https:// or http:// URLs | |
| 91 | if (match.startsWith("http")) { | |
| 92 | if (match.includes(findDomain)) { | |
| 93 | return `<a href="${ | |
| 94 | match | |
| 95 | .replace(/https?:\/\/paperclover\.net\/+/, "/") | |
| 96 | .replace(/\/\/+/g, "/") | |
| 97 | }">${match}</a>`; | |
| 98 | } | |
| 99 | return `<a href="${ | |
| 100 | match.replace(/\/\/+/g, "/") | |
| 101 | }" target="_blank" rel="noopener noreferrer">${match}</a>`; | |
| 102 | } | |
| 103 | ||
| 104 | // Case 2: domain URLs without protocol | |
| 105 | if (match.startsWith(findDomain)) { | |
| 106 | return `<a href="${ | |
| 107 | match.replace(findDomain + "/", "/").replace(/\/\/+/g, "/") | |
| 108 | }">${match}</a>`; | |
| 109 | } | |
| 110 | ||
| 111 | // Case 3: /file/ URLs | |
| 112 | if (match.startsWith("/file/")) { | |
| 113 | return `<a href="${match}">${match}</a>`; | |
| 114 | } | |
| 115 | ||
| 116 | // Case 4: ./ relative paths | |
| 117 | if (match.startsWith("./")) { | |
| 118 | const filename = match.substring(2); | |
| 119 | ||
| 120 | // Check if the filename exists in sibling files | |
| 121 | const siblingFile = siblingFiles.find((f) => f.basename === filename); | |
| 122 | if (siblingFile) { | |
| 123 | return `<a href="/file/${siblingFile.path}">${match}</a>`; | |
| 124 | } | |
| 125 | ||
| 126 | // If no exact match but we have sibling files, try to create a reasonable link | |
| 127 | if (siblingFiles.length > 0) { | |
| 128 | const currentDir = siblingFiles[0].path | |
| 129 | .split("/") | |
| 130 | .slice(0, -1) | |
| 131 | .join("/"); | |
| 132 | return `<a href="/file/${currentDir}/${filename}">${match}</a>`; | |
| 133 | } | |
| 134 | } | |
| 135 | ||
| 136 | return match; | |
| 137 | }); | |
| 138 | ||
| 139 | // Match sibling file names (only if they're not already part of a link) | |
| 140 | if (siblingFiles.length > 0) { | |
| 141 | // Create a regex pattern that matches any of the sibling file basenames | |
| 142 | // We need to escape special regex characters in the filenames | |
| 143 | const escapedBasenames = siblingFiles.map((f) => | |
| 144 | f.basename.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") | |
| 145 | ); | |
| 146 | ||
| 147 | // Join all basenames with | for the regex alternation | |
| 148 | const pattern = new RegExp(`\\b(${escapedBasenames.join("|")})\\b`, "g"); | |
| 149 | ||
| 150 | // We need to be careful not to replace text that's already in a link | |
| 151 | // So we'll split the text by HTML tags and only process the text parts | |
| 152 | const parts = processedText.split(/(<[^>]*>)/); | |
| 153 | ||
| 154 | for (let i = 0; i < parts.length; i += 2) { | |
| 155 | // Only process text parts (even indices), not HTML tags (odd indices) | |
| 156 | if (i < parts.length) { | |
| 157 | parts[i] = parts[i].replace(pattern, (match: string) => { | |
| 158 | const file = siblingLookup[match]; | |
| 159 | if (file) { | |
| 160 | return `<a href="/file/${ | |
| 161 | file.path.replace(/^\//, "").replace(/\/\/+/g, "/") | |
| 162 | }">${match}</a>`; | |
| 163 | } | |
| 164 | return match; | |
| 165 | }); | |
| 166 | } | |
| 167 | } | |
| 168 | ||
| 169 | processedText = parts.join(""); | |
| 170 | } | |
| 171 | ||
| 172 | return processedText; | |
| 173 | } | |
| 174 | ||
| 175 | export function highlightConvo(text: string) { | |
| 176 | text = text.replace(/^#mode=convo\n/, ""); | |
| 177 | ||
| 178 | const lines = text.split("\n"); | |
| 179 | const paras: { speaker: string | null; lines: string[] }[] = []; | |
| 180 | let currentPara: string[] = []; | |
| 181 | let currentSpeaker: string | null = null; | |
| 182 | let firstSpeaker = null; | |
| 183 | ||
| 184 | const speakers: Record<string, string> = {}; | |
| 185 | const getSpeaker = (s: string) => { | |
| 186 | if (s[1] === " " && speakers[s[0]]) { | |
| 187 | return s[0]; | |
| 188 | } | |
| 189 | return null; | |
| 190 | }; | |
| 191 | ||
| 192 | for (const line of lines) { | |
| 193 | let trimmed = line.trim(); | |
| 194 | if (line.startsWith("#")) { | |
| 195 | // parse #X=Y | |
| 196 | const [_, speaker, color] = trimmed.match(/^#(.)=(.*)$/)!; | |
| 197 | speakers[speaker] = color; | |
| 198 | continue; | |
| 199 | } | |
| 200 | if (trimmed === "") { | |
| 201 | continue; | |
| 202 | } | |
| 203 | let speaker = getSpeaker(trimmed); | |
| 204 | if (speaker) { | |
| 205 | trimmed = trimmed.substring(speaker.length).trimStart(); | |
| 206 | speaker = speakers[speaker]; | |
| 207 | } else { | |
| 208 | speaker = "me"; | |
| 209 | } | |
| 210 | ||
| 211 | trimmed = trimmed.replace( | |
| 212 | /\[IMG:(\/file\/[^\]]+)\]/g, | |
| 213 | '<img src="$1" alt="attachment" class="convo-img" width="300" />', | |
| 214 | ); | |
| 215 | ||
| 216 | if (trimmed === "---" && speaker === "me") { | |
| 217 | trimmed = "<hr/>"; | |
| 218 | } | |
| 219 | ||
| 220 | if (speaker === currentSpeaker) { | |
| 221 | currentPara.push(trimmed); | |
| 222 | } else { | |
| 223 | if (currentPara.length > 0) { | |
| 224 | paras.push({ | |
| 225 | speaker: currentSpeaker, | |
| 226 | lines: currentPara, | |
| 227 | }); | |
| 228 | currentPara = []; | |
| 229 | } | |
| 230 | currentPara = [trimmed]; | |
| 231 | currentSpeaker = speaker; | |
| 232 | firstSpeaker ??= speaker; | |
| 233 | } | |
| 234 | } | |
| 235 | ||
| 236 | if (currentPara.length > 0) { | |
| 237 | paras.push({ | |
| 238 | speaker: currentSpeaker, | |
| 239 | lines: currentPara, | |
| 240 | }); | |
| 241 | } | |
| 242 | ||
| 243 | return paras | |
| 244 | .map(({ speaker, lines }) => { | |
| 245 | return `<div class="s-${speaker}">${ | |
| 246 | lines | |
| 247 | .map((line) => `<div class="line">${line}</div>`) | |
| 248 | .join("\n") | |
| 249 | }</div>`; | |
| 250 | }) | |
| 251 | .join("\n"); | |
| 252 | } | |
| 253 | ||
| 254 | export function highlightHashComments(text: string) { | |
| 255 | const lines = text.split("\n"); | |
| 256 | return lines | |
| 257 | .map((line) => { | |
| 258 | if (line.startsWith("#")) { | |
| 259 | return `<div style="color: var(--primary);">${line}</div>`; | |
| 260 | } | |
| 261 | return `<div>${line.trimEnd() || "&nbsp;"}</div>`; | |
| 262 | }) | |
| 263 | .join("\n"); | |
| 264 | } |
src/file-viewer/highlight-grammar/astro.plist created+1203| ... | ... | @@ -0,0 +1,1203 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>astro</string> | |
| 8 | 	</array> | |
| 9 | 	<key>foldingStartMarker</key> | |
| 10 | 	<string>(?x) | |
| 11 | (&lt;(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\b.*?&gt; | |
| 12 | |&lt;!--(?!.*--\s*&gt;) | |
| 13 | |^&lt;!--\ \#tminclude\ (?&gt;.*?--&gt;)$ | |
| 14 | |&lt;\?(?:php)?.*\b(if|for(each)?|while)\b.+: | |
| 15 | |\{\{?(if|foreach|capture|literal|foreach|php|section|strip) | |
| 16 | |\{\s*($|\?&gt;\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) | |
| 17 | )</string> | |
| 18 | 	<key>foldingStopMarker</key> | |
| 19 | 	<string>(?x) | |
| 20 | (&lt;/(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)&gt; | |
| 21 | |^(?!.*?&lt;!--).*?--\s*&gt; | |
| 22 | |^&lt;!--\ end\ tminclude\ --&gt;$ | |
| 23 | |&lt;\?(?:php)?.*\bend(if|for(each)?|while)\b | |
| 24 | |\{\{?/(if|foreach|capture|literal|foreach|php|section|strip) | |
| 25 | |^[^{]*\} | |
| 26 | )</string> | |
| 27 | 	<key>keyEquivalent</key> | |
| 28 | 	<string>^~H</string> | |
| 29 | 	<key>name</key> | |
| 30 | 	<string>Astro</string> | |
| 31 | 	<key>patterns</key> | |
| 32 | 	<array> | |
| 33 | 		<dict> | |
| 34 | 			<key>include</key> | |
| 35 | 			<string>#astro-markdown</string> | |
| 36 | 		</dict> | |
| 37 | 		<dict> | |
| 38 | 			<key>include</key> | |
| 39 | 			<string>#astro-expressions</string> | |
| 40 | 		</dict> | |
| 41 | 		<dict> | |
| 42 | 			<key>begin</key> | |
| 43 | 			<string>(&lt;)([a-zA-Z0-9:-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string> | |
| 44 | 			<key>beginCaptures</key> | |
| 45 | 			<dict> | |
| 46 | 				<key>1</key> | |
| 47 | 				<dict> | |
| 48 | 					<key>name</key> | |
| 49 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 50 | 				</dict> | |
| 51 | 				<key>2</key> | |
| 52 | 				<dict> | |
| 53 | 					<key>name</key> | |
| 54 | 					<string>entity.name.tag.html</string> | |
| 55 | 				</dict> | |
| 56 | 			</dict> | |
| 57 | 			<key>end</key> | |
| 58 | 			<string>(&gt;)(&lt;)(/)(\2)(&gt;)</string> | |
| 59 | 			<key>endCaptures</key> | |
| 60 | 			<dict> | |
| 61 | 				<key>1</key> | |
| 62 | 				<dict> | |
| 63 | 					<key>name</key> | |
| 64 | 					<string>punctuation.definition.tag.end.html</string> | |
| 65 | 				</dict> | |
| 66 | 				<key>2</key> | |
| 67 | 				<dict> | |
| 68 | 					<key>name</key> | |
| 69 | 					<string>punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html</string> | |
| 70 | 				</dict> | |
| 71 | 				<key>3</key> | |
| 72 | 				<dict> | |
| 73 | 					<key>name</key> | |
| 74 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 75 | 				</dict> | |
| 76 | 				<key>4</key> | |
| 77 | 				<dict> | |
| 78 | 					<key>name</key> | |
| 79 | 					<string>entity.name.tag.html</string> | |
| 80 | 				</dict> | |
| 81 | 				<key>5</key> | |
| 82 | 				<dict> | |
| 83 | 					<key>name</key> | |
| 84 | 					<string>punctuation.definition.tag.end.html</string> | |
| 85 | 				</dict> | |
| 86 | 			</dict> | |
| 87 | 			<key>name</key> | |
| 88 | 			<string>meta.tag.any.html</string> | |
| 89 | 			<key>patterns</key> | |
| 90 | 			<array> | |
| 91 | 				<dict> | |
| 92 | 					<key>include</key> | |
| 93 | 					<string>#tag-stuff</string> | |
| 94 | 				</dict> | |
| 95 | 			</array> | |
| 96 | 		</dict> | |
| 97 | 		<dict> | |
| 98 | 			<key>begin</key> | |
| 99 | 			<string>(&lt;\?)(xml)</string> | |
| 100 | 			<key>captures</key> | |
| 101 | 			<dict> | |
| 102 | 				<key>1</key> | |
| 103 | 				<dict> | |
| 104 | 					<key>name</key> | |
| 105 | 					<string>punctuation.definition.tag.html</string> | |
| 106 | 				</dict> | |
| 107 | 				<key>2</key> | |
| 108 | 				<dict> | |
| 109 | 					<key>name</key> | |
| 110 | 					<string>entity.name.tag.xml.html</string> | |
| 111 | 				</dict> | |
| 112 | 			</dict> | |
| 113 | 			<key>end</key> | |
| 114 | 			<string>(\?&gt;)</string> | |
| 115 | 			<key>name</key> | |
| 116 | 			<string>meta.tag.preprocessor.xml.html</string> | |
| 117 | 			<key>patterns</key> | |
| 118 | 			<array> | |
| 119 | 				<dict> | |
| 120 | 					<key>include</key> | |
| 121 | 					<string>#tag-generic-attribute</string> | |
| 122 | 				</dict> | |
| 123 | 				<dict> | |
| 124 | 					<key>include</key> | |
| 125 | 					<string>#string-double-quoted</string> | |
| 126 | 				</dict> | |
| 127 | 				<dict> | |
| 128 | 					<key>include</key> | |
| 129 | 					<string>#string-single-quoted</string> | |
| 130 | 				</dict> | |
| 131 | 			</array> | |
| 132 | 		</dict> | |
| 133 | 		<dict> | |
| 134 | 			<key>begin</key> | |
| 135 | 			<string>&lt;!--</string> | |
| 136 | 			<key>captures</key> | |
| 137 | 			<array> | |
| 138 | 				<dict> | |
| 139 | 					<key>name</key> | |
| 140 | 					<string>punctuation.definition.comment.html</string> | |
| 141 | 				</dict> | |
| 142 | 			</array> | |
| 143 | 			<key>end</key> | |
| 144 | 			<string>--\s*&gt;</string> | |
| 145 | 			<key>name</key> | |
| 146 | 			<string>comment.block.html</string> | |
| 147 | 			<key>patterns</key> | |
| 148 | 			<array> | |
| 149 | 				<dict> | |
| 150 | 					<key>match</key> | |
| 151 | 					<string>--</string> | |
| 152 | 					<key>name</key> | |
| 153 | 					<string>invalid.illegal.bad-comments-or-CDATA.html</string> | |
| 154 | 				</dict> | |
| 155 | 			</array> | |
| 156 | 		</dict> | |
| 157 | 		<dict> | |
| 158 | 			<key>begin</key> | |
| 159 | 			<string>&lt;!</string> | |
| 160 | 			<key>captures</key> | |
| 161 | 			<array> | |
| 162 | 				<dict> | |
| 163 | 					<key>name</key> | |
| 164 | 					<string>punctuation.definition.tag.html</string> | |
| 165 | 				</dict> | |
| 166 | 			</array> | |
| 167 | 			<key>end</key> | |
| 168 | 			<string>&gt;</string> | |
| 169 | 			<key>name</key> | |
| 170 | 			<string>meta.tag.sgml.html</string> | |
| 171 | 			<key>patterns</key> | |
| 172 | 			<array> | |
| 173 | 				<dict> | |
| 174 | 					<key>begin</key> | |
| 175 | 					<string>(?i:DOCTYPE|doctype)</string> | |
| 176 | 					<key>captures</key> | |
| 177 | 					<dict> | |
| 178 | 						<key>1</key> | |
| 179 | 						<dict> | |
| 180 | 							<key>name</key> | |
| 181 | 							<string>entity.name.tag.doctype.html</string> | |
| 182 | 						</dict> | |
| 183 | 					</dict> | |
| 184 | 					<key>end</key> | |
| 185 | 					<string>(?=&gt;)</string> | |
| 186 | 					<key>name</key> | |
| 187 | 					<string>meta.tag.sgml.doctype.html</string> | |
| 188 | 					<key>patterns</key> | |
| 189 | 					<array> | |
| 190 | 						<dict> | |
| 191 | 							<key>match</key> | |
| 192 | 							<string>"[^"&gt;]*"</string> | |
| 193 | 							<key>name</key> | |
| 194 | 							<string>string.quoted.double.doctype.identifiers-and-DTDs.html</string> | |
| 195 | 						</dict> | |
| 196 | 					</array> | |
| 197 | 				</dict> | |
| 198 | 				<dict> | |
| 199 | 					<key>begin</key> | |
| 200 | 					<string>\[CDATA\[</string> | |
| 201 | 					<key>end</key> | |
| 202 | 					<string>]](?=&gt;)</string> | |
| 203 | 					<key>name</key> | |
| 204 | 					<string>constant.other.inline-data.html</string> | |
| 205 | 				</dict> | |
| 206 | 				<dict> | |
| 207 | 					<key>match</key> | |
| 208 | 					<string>(\s*)(?!--|&gt;)\S(\s*)</string> | |
| 209 | 					<key>name</key> | |
| 210 | 					<string>invalid.illegal.bad-comments-or-CDATA.html</string> | |
| 211 | 				</dict> | |
| 212 | 			</array> | |
| 213 | 		</dict> | |
| 214 | 		<dict> | |
| 215 | 			<key>begin</key> | |
| 216 | 			<string>(?:^\s+)?(&lt;)((?i:style))\b(?=[^&gt;]*lang=(['"])css\1?)</string> | |
| 217 | 			<key>captures</key> | |
| 218 | 			<dict> | |
| 219 | 				<key>1</key> | |
| 220 | 				<dict> | |
| 221 | 					<key>name</key> | |
| 222 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 223 | 				</dict> | |
| 224 | 				<key>2</key> | |
| 225 | 				<dict> | |
| 226 | 					<key>name</key> | |
| 227 | 					<string>entity.name.tag.style.html</string> | |
| 228 | 				</dict> | |
| 229 | 				<key>3</key> | |
| 230 | 				<dict> | |
| 231 | 					<key>name</key> | |
| 232 | 					<string>punctuation.definition.tag.html</string> | |
| 233 | 				</dict> | |
| 234 | 			</dict> | |
| 235 | 			<key>end</key> | |
| 236 | 			<string>(&lt;/)((?i:style))(&gt;)(?:\s*\n)?</string> | |
| 237 | 			<key>name</key> | |
| 238 | 			<string>source.css.embedded.html</string> | |
| 239 | 			<key>patterns</key> | |
| 240 | 			<array> | |
| 241 | 				<dict> | |
| 242 | 					<key>include</key> | |
| 243 | 					<string>#tag-stuff</string> | |
| 244 | 				</dict> | |
| 245 | 				<dict> | |
| 246 | 					<key>begin</key> | |
| 247 | 					<string>(&gt;)</string> | |
| 248 | 					<key>beginCaptures</key> | |
| 249 | 					<dict> | |
| 250 | 						<key>1</key> | |
| 251 | 						<dict> | |
| 252 | 							<key>name</key> | |
| 253 | 							<string>punctuation.definition.tag.end.html</string> | |
| 254 | 						</dict> | |
| 255 | 					</dict> | |
| 256 | 					<key>end</key> | |
| 257 | 					<string>(?=&lt;/(?i:style))</string> | |
| 258 | 					<key>patterns</key> | |
| 259 | 					<array> | |
| 260 | 						<dict> | |
| 261 | 							<key>include</key> | |
| 262 | 							<string>source.css</string> | |
| 263 | 						</dict> | |
| 264 | 					</array> | |
| 265 | 				</dict> | |
| 266 | 			</array> | |
| 267 | 		</dict> | |
| 268 | 		<dict> | |
| 269 | 			<key>begin</key> | |
| 270 | 			<string>(?:^\s+)?(&lt;)((?i:style))\b(?=[^&gt;]*lang=(['"])sass\1?)</string> | |
| 271 | 			<key>captures</key> | |
| 272 | 			<dict> | |
| 273 | 				<key>1</key> | |
| 274 | 				<dict> | |
| 275 | 					<key>name</key> | |
| 276 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 277 | 				</dict> | |
| 278 | 				<key>2</key> | |
| 279 | 				<dict> | |
| 280 | 					<key>name</key> | |
| 281 | 					<string>entity.name.tag.style.html</string> | |
| 282 | 				</dict> | |
| 283 | 				<key>3</key> | |
| 284 | 				<dict> | |
| 285 | 					<key>name</key> | |
| 286 | 					<string>punctuation.definition.tag.html</string> | |
| 287 | 				</dict> | |
| 288 | 			</dict> | |
| 289 | 			<key>end</key> | |
| 290 | 			<string>(&lt;/)((?i:style))(&gt;)(?:\s*\n)?</string> | |
| 291 | 			<key>name</key> | |
| 292 | 			<string>source.sass.embedded.html</string> | |
| 293 | 			<key>patterns</key> | |
| 294 | 			<array> | |
| 295 | 				<dict> | |
| 296 | 					<key>include</key> | |
| 297 | 					<string>#tag-stuff</string> | |
| 298 | 				</dict> | |
| 299 | 				<dict> | |
| 300 | 					<key>begin</key> | |
| 301 | 					<string>(&gt;)</string> | |
| 302 | 					<key>beginCaptures</key> | |
| 303 | 					<dict> | |
| 304 | 						<key>1</key> | |
| 305 | 						<dict> | |
| 306 | 							<key>name</key> | |
| 307 | 							<string>punctuation.definition.tag.end.html</string> | |
| 308 | 						</dict> | |
| 309 | 					</dict> | |
| 310 | 					<key>end</key> | |
| 311 | 					<string>(?=&lt;/(?i:style))</string> | |
| 312 | 					<key>patterns</key> | |
| 313 | 					<array> | |
| 314 | 						<dict> | |
| 315 | 							<key>include</key> | |
| 316 | 							<string>source.sass</string> | |
| 317 | 						</dict> | |
| 318 | 					</array> | |
| 319 | 				</dict> | |
| 320 | 			</array> | |
| 321 | 		</dict> | |
| 322 | 		<dict> | |
| 323 | 			<key>begin</key> | |
| 324 | 			<string>(?:^\s+)?(&lt;)((?i:style))\b(?=[^&gt;]*lang=(['"])scss\1?)</string> | |
| 325 | 			<key>captures</key> | |
| 326 | 			<dict> | |
| 327 | 				<key>1</key> | |
| 328 | 				<dict> | |
| 329 | 					<key>name</key> | |
| 330 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 331 | 				</dict> | |
| 332 | 				<key>2</key> | |
| 333 | 				<dict> | |
| 334 | 					<key>name</key> | |
| 335 | 					<string>entity.name.tag.style.html</string> | |
| 336 | 				</dict> | |
| 337 | 				<key>3</key> | |
| 338 | 				<dict> | |
| 339 | 					<key>name</key> | |
| 340 | 					<string>punctuation.definition.tag.html</string> | |
| 341 | 				</dict> | |
| 342 | 			</dict> | |
| 343 | 			<key>end</key> | |
| 344 | 			<string>(&lt;/)((?i:style))(&gt;)(?:\s*\n)?</string> | |
| 345 | 			<key>name</key> | |
| 346 | 			<string>source.scss.embedded.html</string> | |
| 347 | 			<key>patterns</key> | |
| 348 | 			<array> | |
| 349 | 				<dict> | |
| 350 | 					<key>include</key> | |
| 351 | 					<string>#tag-stuff</string> | |
| 352 | 				</dict> | |
| 353 | 				<dict> | |
| 354 | 					<key>begin</key> | |
| 355 | 					<string>(&gt;)</string> | |
| 356 | 					<key>beginCaptures</key> | |
| 357 | 					<dict> | |
| 358 | 						<key>1</key> | |
| 359 | 						<dict> | |
| 360 | 							<key>name</key> | |
| 361 | 							<string>punctuation.definition.tag.end.html</string> | |
| 362 | 						</dict> | |
| 363 | 					</dict> | |
| 364 | 					<key>end</key> | |
| 365 | 					<string>(?=&lt;/(?i:style))</string> | |
| 366 | 					<key>patterns</key> | |
| 367 | 					<array> | |
| 368 | 						<dict> | |
| 369 | 							<key>include</key> | |
| 370 | 							<string>source.css.scss</string> | |
| 371 | 						</dict> | |
| 372 | 					</array> | |
| 373 | 				</dict> | |
| 374 | 			</array> | |
| 375 | 		</dict> | |
| 376 | 		<dict> | |
| 377 | 			<key>begin</key> | |
| 378 | 			<string>(?:^\s+)?(&lt;)((?i:style))\b(?![^&gt;]*/&gt;)</string> | |
| 379 | 			<key>captures</key> | |
| 380 | 			<dict> | |
| 381 | 				<key>1</key> | |
| 382 | 				<dict> | |
| 383 | 					<key>name</key> | |
| 384 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 385 | 				</dict> | |
| 386 | 				<key>2</key> | |
| 387 | 				<dict> | |
| 388 | 					<key>name</key> | |
| 389 | 					<string>entity.name.tag.style.html</string> | |
| 390 | 				</dict> | |
| 391 | 				<key>3</key> | |
| 392 | 				<dict> | |
| 393 | 					<key>name</key> | |
| 394 | 					<string>punctuation.definition.tag.html</string> | |
| 395 | 				</dict> | |
| 396 | 			</dict> | |
| 397 | 			<key>end</key> | |
| 398 | 			<string>(&lt;/)((?i:style))(&gt;)(?:\s*\n)?</string> | |
| 399 | 			<key>name</key> | |
| 400 | 			<string>source.css.embedded.html</string> | |
| 401 | 			<key>patterns</key> | |
| 402 | 			<array> | |
| 403 | 				<dict> | |
| 404 | 					<key>include</key> | |
| 405 | 					<string>#tag-stuff</string> | |
| 406 | 				</dict> | |
| 407 | 				<dict> | |
| 408 | 					<key>begin</key> | |
| 409 | 					<string>(&gt;)</string> | |
| 410 | 					<key>beginCaptures</key> | |
| 411 | 					<dict> | |
| 412 | 						<key>1</key> | |
| 413 | 						<dict> | |
| 414 | 							<key>name</key> | |
| 415 | 							<string>punctuation.definition.tag.end.html</string> | |
| 416 | 						</dict> | |
| 417 | 					</dict> | |
| 418 | 					<key>end</key> | |
| 419 | 					<string>(?=&lt;/(?i:style))</string> | |
| 420 | 					<key>patterns</key> | |
| 421 | 					<array> | |
| 422 | 						<dict> | |
| 423 | 							<key>include</key> | |
| 424 | 							<string>source.css</string> | |
| 425 | 						</dict> | |
| 426 | 					</array> | |
| 427 | 				</dict> | |
| 428 | 			</array> | |
| 429 | 		</dict> | |
| 430 | 		<dict> | |
| 431 | 			<key>begin</key> | |
| 432 | 			<string>(?:^\s+)?(&lt;)((?i:script))\b(?=[^&gt;]*lang=(['"])tsx\1?)</string> | |
| 433 | 			<key>beginCaptures</key> | |
| 434 | 			<dict> | |
| 435 | 				<key>1</key> | |
| 436 | 				<dict> | |
| 437 | 					<key>name</key> | |
| 438 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 439 | 				</dict> | |
| 440 | 				<key>2</key> | |
| 441 | 				<dict> | |
| 442 | 					<key>name</key> | |
| 443 | 					<string>entity.name.tag.script.html</string> | |
| 444 | 				</dict> | |
| 445 | 			</dict> | |
| 446 | 			<key>end</key> | |
| 447 | 			<string>(?&lt;=&lt;/(script|SCRIPT))(&gt;)(?:\s*\n)?</string> | |
| 448 | 			<key>endCaptures</key> | |
| 449 | 			<dict> | |
| 450 | 				<key>2</key> | |
| 451 | 				<dict> | |
| 452 | 					<key>name</key> | |
| 453 | 					<string>punctuation.definition.tag.html</string> | |
| 454 | 				</dict> | |
| 455 | 			</dict> | |
| 456 | 			<key>name</key> | |
| 457 | 			<string>source.tsx.embedded.html</string> | |
| 458 | 			<key>patterns</key> | |
| 459 | 			<array> | |
| 460 | 				<dict> | |
| 461 | 					<key>include</key> | |
| 462 | 					<string>#tag-stuff</string> | |
| 463 | 				</dict> | |
| 464 | 				<dict> | |
| 465 | 					<key>begin</key> | |
| 466 | 					<string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string> | |
| 467 | 					<key>captures</key> | |
| 468 | 					<dict> | |
| 469 | 						<key>1</key> | |
| 470 | 						<dict> | |
| 471 | 							<key>name</key> | |
| 472 | 							<string>punctuation.definition.tag.begin.html</string> | |
| 473 | 						</dict> | |
| 474 | 						<key>2</key> | |
| 475 | 						<dict> | |
| 476 | 							<key>name</key> | |
| 477 | 							<string>entity.name.tag.script.html</string> | |
| 478 | 						</dict> | |
| 479 | 					</dict> | |
| 480 | 					<key>end</key> | |
| 481 | 					<string>(&lt;/)((?i:script))</string> | |
| 482 | 					<key>patterns</key> | |
| 483 | 					<array> | |
| 484 | 						<dict> | |
| 485 | 							<key>include</key> | |
| 486 | 							<string>source.tsx</string> | |
| 487 | 						</dict> | |
| 488 | 					</array> | |
| 489 | 				</dict> | |
| 490 | 			</array> | |
| 491 | 		</dict> | |
| 492 | 		<dict> | |
| 493 | 			<key>begin</key> | |
| 494 | 			<string>(?:^\s+)?(&lt;)((?i:script))\b(?=[^&gt;]*lang=(['"])ts\1?)</string> | |
| 495 | 			<key>beginCaptures</key> | |
| 496 | 			<dict> | |
| 497 | 				<key>1</key> | |
| 498 | 				<dict> | |
| 499 | 					<key>name</key> | |
| 500 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 501 | 				</dict> | |
| 502 | 				<key>2</key> | |
| 503 | 				<dict> | |
| 504 | 					<key>name</key> | |
| 505 | 					<string>entity.name.tag.script.html</string> | |
| 506 | 				</dict> | |
| 507 | 			</dict> | |
| 508 | 			<key>end</key> | |
| 509 | 			<string>(?&lt;=&lt;/(script|SCRIPT))(&gt;)(?:\s*\n)?</string> | |
| 510 | 			<key>endCaptures</key> | |
| 511 | 			<dict> | |
| 512 | 				<key>2</key> | |
| 513 | 				<dict> | |
| 514 | 					<key>name</key> | |
| 515 | 					<string>punctuation.definition.tag.html</string> | |
| 516 | 				</dict> | |
| 517 | 			</dict> | |
| 518 | 			<key>name</key> | |
| 519 | 			<string>source.tsx.embedded.html</string> | |
| 520 | 			<key>patterns</key> | |
| 521 | 			<array> | |
| 522 | 				<dict> | |
| 523 | 					<key>include</key> | |
| 524 | 					<string>#tag-stuff</string> | |
| 525 | 				</dict> | |
| 526 | 				<dict> | |
| 527 | 					<key>begin</key> | |
| 528 | 					<string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string> | |
| 529 | 					<key>captures</key> | |
| 530 | 					<dict> | |
| 531 | 						<key>1</key> | |
| 532 | 						<dict> | |
| 533 | 							<key>name</key> | |
| 534 | 							<string>punctuation.definition.tag.begin.html</string> | |
| 535 | 						</dict> | |
| 536 | 						<key>2</key> | |
| 537 | 						<dict> | |
| 538 | 							<key>name</key> | |
| 539 | 							<string>entity.name.tag.script.html</string> | |
| 540 | 						</dict> | |
| 541 | 					</dict> | |
| 542 | 					<key>end</key> | |
| 543 | 					<string>(&lt;/)((?i:script))</string> | |
| 544 | 					<key>patterns</key> | |
| 545 | 					<array> | |
| 546 | 						<dict> | |
| 547 | 							<key>include</key> | |
| 548 | 							<string>source.tsx</string> | |
| 549 | 						</dict> | |
| 550 | 					</array> | |
| 551 | 				</dict> | |
| 552 | 			</array> | |
| 553 | 		</dict> | |
| 554 | 		<dict> | |
| 555 | 			<key>begin</key> | |
| 556 | 			<string>(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?![^&gt;]*(?i:type.?=.?text/((?!javascript|babel|ecmascript).*)))</string> | |
| 557 | 			<key>beginCaptures</key> | |
| 558 | 			<dict> | |
| 559 | 				<key>1</key> | |
| 560 | 				<dict> | |
| 561 | 					<key>name</key> | |
| 562 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 563 | 				</dict> | |
| 564 | 				<key>2</key> | |
| 565 | 				<dict> | |
| 566 | 					<key>name</key> | |
| 567 | 					<string>entity.name.tag.script.html</string> | |
| 568 | 				</dict> | |
| 569 | 			</dict> | |
| 570 | 			<key>end</key> | |
| 571 | 			<string>(?&lt;=&lt;/(script|SCRIPT))(&gt;)(?:\s*\n)?</string> | |
| 572 | 			<key>endCaptures</key> | |
| 573 | 			<dict> | |
| 574 | 				<key>2</key> | |
| 575 | 				<dict> | |
| 576 | 					<key>name</key> | |
| 577 | 					<string>punctuation.definition.tag.html</string> | |
| 578 | 				</dict> | |
| 579 | 			</dict> | |
| 580 | 			<key>name</key> | |
| 581 | 			<string>source.tsx.embedded.html</string> | |
| 582 | 			<key>patterns</key> | |
| 583 | 			<array> | |
| 584 | 				<dict> | |
| 585 | 					<key>include</key> | |
| 586 | 					<string>#tag-stuff</string> | |
| 587 | 				</dict> | |
| 588 | 				<dict> | |
| 589 | 					<key>begin</key> | |
| 590 | 					<string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string> | |
| 591 | 					<key>captures</key> | |
| 592 | 					<dict> | |
| 593 | 						<key>1</key> | |
| 594 | 						<dict> | |
| 595 | 							<key>name</key> | |
| 596 | 							<string>punctuation.definition.tag.begin.html</string> | |
| 597 | 						</dict> | |
| 598 | 						<key>2</key> | |
| 599 | 						<dict> | |
| 600 | 							<key>name</key> | |
| 601 | 							<string>entity.name.tag.script.html</string> | |
| 602 | 						</dict> | |
| 603 | 					</dict> | |
| 604 | 					<key>end</key> | |
| 605 | 					<string>(&lt;/)((?i:script))</string> | |
| 606 | 					<key>patterns</key> | |
| 607 | 					<array> | |
| 608 | 						<dict> | |
| 609 | 							<key>captures</key> | |
| 610 | 							<dict> | |
| 611 | 								<key>1</key> | |
| 612 | 								<dict> | |
| 613 | 									<key>name</key> | |
| 614 | 									<string>punctuation.definition.comment.js</string> | |
| 615 | 								</dict> | |
| 616 | 							</dict> | |
| 617 | 							<key>match</key> | |
| 618 | 							<string>(//).*?((?=&lt;/script)|$\n?)</string> | |
| 619 | 							<key>name</key> | |
| 620 | 							<string>comment.line.double-slash.js</string> | |
| 621 | 						</dict> | |
| 622 | 						<dict> | |
| 623 | 							<key>begin</key> | |
| 624 | 							<string>/\*</string> | |
| 625 | 							<key>captures</key> | |
| 626 | 							<array> | |
| 627 | 								<dict> | |
| 628 | 									<key>name</key> | |
| 629 | 									<string>punctuation.definition.comment.js</string> | |
| 630 | 								</dict> | |
| 631 | 							</array> | |
| 632 | 							<key>end</key> | |
| 633 | 							<string>\*/|(?=&lt;/script)</string> | |
| 634 | 							<key>name</key> | |
| 635 | 							<string>comment.block.js</string> | |
| 636 | 						</dict> | |
| 637 | 						<dict> | |
| 638 | 							<key>include</key> | |
| 639 | 							<string>source.tsx</string> | |
| 640 | 						</dict> | |
| 641 | 					</array> | |
| 642 | 				</dict> | |
| 643 | 			</array> | |
| 644 | 		</dict> | |
| 645 | 		<dict> | |
| 646 | 			<key>begin</key> | |
| 647 | 			<string>(&lt;/?)((?i:body|head|html)\b)</string> | |
| 648 | 			<key>captures</key> | |
| 649 | 			<dict> | |
| 650 | 				<key>1</key> | |
| 651 | 				<dict> | |
| 652 | 					<key>name</key> | |
| 653 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 654 | 				</dict> | |
| 655 | 				<key>2</key> | |
| 656 | 				<dict> | |
| 657 | 					<key>name</key> | |
| 658 | 					<string>entity.name.tag.structure.any.html</string> | |
| 659 | 				</dict> | |
| 660 | 			</dict> | |
| 661 | 			<key>end</key> | |
| 662 | 			<string>(&gt;)</string> | |
| 663 | 			<key>endCaptures</key> | |
| 664 | 			<dict> | |
| 665 | 				<key>1</key> | |
| 666 | 				<dict> | |
| 667 | 					<key>name</key> | |
| 668 | 					<string>punctuation.definition.tag.end.html</string> | |
| 669 | 				</dict> | |
| 670 | 			</dict> | |
| 671 | 			<key>name</key> | |
| 672 | 			<string>meta.tag.structure.any.html</string> | |
| 673 | 			<key>patterns</key> | |
| 674 | 			<array> | |
| 675 | 				<dict> | |
| 676 | 					<key>include</key> | |
| 677 | 					<string>#tag-stuff</string> | |
| 678 | 				</dict> | |
| 679 | 			</array> | |
| 680 | 		</dict> | |
| 681 | 		<dict> | |
| 682 | 			<key>begin</key> | |
| 683 | 			<string>(&lt;/?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b)</string> | |
| 684 | 			<key>beginCaptures</key> | |
| 685 | 			<dict> | |
| 686 | 				<key>1</key> | |
| 687 | 				<dict> | |
| 688 | 					<key>name</key> | |
| 689 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 690 | 				</dict> | |
| 691 | 				<key>2</key> | |
| 692 | 				<dict> | |
| 693 | 					<key>name</key> | |
| 694 | 					<string>entity.name.tag.block.any.html</string> | |
| 695 | 				</dict> | |
| 696 | 			</dict> | |
| 697 | 			<key>end</key> | |
| 698 | 			<string>(&gt;)</string> | |
| 699 | 			<key>endCaptures</key> | |
| 700 | 			<dict> | |
| 701 | 				<key>1</key> | |
| 702 | 				<dict> | |
| 703 | 					<key>name</key> | |
| 704 | 					<string>punctuation.definition.tag.end.html</string> | |
| 705 | 				</dict> | |
| 706 | 			</dict> | |
| 707 | 			<key>name</key> | |
| 708 | 			<string>meta.tag.block.any.html</string> | |
| 709 | 			<key>patterns</key> | |
| 710 | 			<array> | |
| 711 | 				<dict> | |
| 712 | 					<key>include</key> | |
| 713 | 					<string>#tag-stuff</string> | |
| 714 | 				</dict> | |
| 715 | 			</array> | |
| 716 | 		</dict> | |
| 717 | 		<dict> | |
| 718 | 			<key>begin</key> | |
| 719 | 			<string>(&lt;/?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b)</string> | |
| 720 | 			<key>beginCaptures</key> | |
| 721 | 			<dict> | |
| 722 | 				<key>1</key> | |
| 723 | 				<dict> | |
| 724 | 					<key>name</key> | |
| 725 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 726 | 				</dict> | |
| 727 | 				<key>2</key> | |
| 728 | 				<dict> | |
| 729 | 					<key>name</key> | |
| 730 | 					<string>entity.name.tag.inline.any.html</string> | |
| 731 | 				</dict> | |
| 732 | 			</dict> | |
| 733 | 			<key>end</key> | |
| 734 | 			<string>((?: ?/)?&gt;)</string> | |
| 735 | 			<key>endCaptures</key> | |
| 736 | 			<dict> | |
| 737 | 				<key>1</key> | |
| 738 | 				<dict> | |
| 739 | 					<key>name</key> | |
| 740 | 					<string>punctuation.definition.tag.end.html</string> | |
| 741 | 				</dict> | |
| 742 | 			</dict> | |
| 743 | 			<key>name</key> | |
| 744 | 			<string>meta.tag.inline.any.html</string> | |
| 745 | 			<key>patterns</key> | |
| 746 | 			<array> | |
| 747 | 				<dict> | |
| 748 | 					<key>include</key> | |
| 749 | 					<string>#tag-stuff</string> | |
| 750 | 				</dict> | |
| 751 | 			</array> | |
| 752 | 		</dict> | |
| 753 | 		<dict> | |
| 754 | 			<key>begin</key> | |
| 755 | 			<string>(&lt;/?)([A-Z][a-zA-Z0-9-\.]*|[a-z]+\.[a-zA-Z0-9-]+)(\:(load|idle|visible))?</string> | |
| 756 | 			<key>beginCaptures</key> | |
| 757 | 			<dict> | |
| 758 | 				<key>1</key> | |
| 759 | 				<dict> | |
| 760 | 					<key>name</key> | |
| 761 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 762 | 				</dict> | |
| 763 | 				<key>2</key> | |
| 764 | 				<dict> | |
| 765 | 					<key>name</key> | |
| 766 | 					<string>entity.name.tag.component.astro</string> | |
| 767 | 				</dict> | |
| 768 | 				<key>3</key> | |
| 769 | 				<dict> | |
| 770 | 					<key>name</key> | |
| 771 | 					<string>keyword.control.loading.astro</string> | |
| 772 | 				</dict> | |
| 773 | 			</dict> | |
| 774 | 			<key>end</key> | |
| 775 | 			<string>(/?&gt;)</string> | |
| 776 | 			<key>endCaptures</key> | |
| 777 | 			<dict> | |
| 778 | 				<key>1</key> | |
| 779 | 				<dict> | |
| 780 | 					<key>name</key> | |
| 781 | 					<string>punctuation.definition.tag.end.html</string> | |
| 782 | 				</dict> | |
| 783 | 			</dict> | |
| 784 | 			<key>name</key> | |
| 785 | 			<string>meta.tag.component.astro</string> | |
| 786 | 			<key>patterns</key> | |
| 787 | 			<array> | |
| 788 | 				<dict> | |
| 789 | 					<key>include</key> | |
| 790 | 					<string>#tag-stuff</string> | |
| 791 | 				</dict> | |
| 792 | 			</array> | |
| 793 | 		</dict> | |
| 794 | 		<dict> | |
| 795 | 			<key>begin</key> | |
| 796 | 			<string>(&lt;/?)([a-zA-Z0-9:-]+)</string> | |
| 797 | 			<key>beginCaptures</key> | |
| 798 | 			<dict> | |
| 799 | 				<key>1</key> | |
| 800 | 				<dict> | |
| 801 | 					<key>name</key> | |
| 802 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 803 | 				</dict> | |
| 804 | 				<key>2</key> | |
| 805 | 				<dict> | |
| 806 | 					<key>name</key> | |
| 807 | 					<string>entity.name.tag.other.html</string> | |
| 808 | 				</dict> | |
| 809 | 			</dict> | |
| 810 | 			<key>end</key> | |
| 811 | 			<string>(/?&gt;)</string> | |
| 812 | 			<key>endCaptures</key> | |
| 813 | 			<dict> | |
| 814 | 				<key>1</key> | |
| 815 | 				<dict> | |
| 816 | 					<key>name</key> | |
| 817 | 					<string>punctuation.definition.tag.end.html</string> | |
| 818 | 				</dict> | |
| 819 | 			</dict> | |
| 820 | 			<key>name</key> | |
| 821 | 			<string>meta.tag.other.html</string> | |
| 822 | 			<key>patterns</key> | |
| 823 | 			<array> | |
| 824 | 				<dict> | |
| 825 | 					<key>include</key> | |
| 826 | 					<string>#tag-stuff</string> | |
| 827 | 				</dict> | |
| 828 | 			</array> | |
| 829 | 		</dict> | |
| 830 | 		<dict> | |
| 831 | 			<key>include</key> | |
| 832 | 			<string>#entities</string> | |
| 833 | 		</dict> | |
| 834 | 		<dict> | |
| 835 | 			<key>include</key> | |
| 836 | 			<string>#frontmatter</string> | |
| 837 | 		</dict> | |
| 838 | 		<dict> | |
| 839 | 			<key>match</key> | |
| 840 | 			<string>&lt;&gt;</string> | |
| 841 | 			<key>name</key> | |
| 842 | 			<string>invalid.illegal.incomplete.html</string> | |
| 843 | 		</dict> | |
| 844 | 		<dict> | |
| 845 | 			<key>match</key> | |
| 846 | 			<string>&lt;</string> | |
| 847 | 			<key>name</key> | |
| 848 | 			<string>invalid.illegal.bad-angle-bracket.html</string> | |
| 849 | 		</dict> | |
| 850 | 	</array> | |
| 851 | 	<key>repository</key> | |
| 852 | 	<dict> | |
| 853 | 		<key>astro-expressions</key> | |
| 854 | 		<dict> | |
| 855 | 			<key>patterns</key> | |
| 856 | 			<array> | |
| 857 | 				<dict> | |
| 858 | 					<key>begin</key> | |
| 859 | 					<string>\{</string> | |
| 860 | 					<key>beginCaptures</key> | |
| 861 | 					<array> | |
| 862 | 						<dict> | |
| 863 | 							<key>name</key> | |
| 864 | 							<string>punctuation.definition.generic.begin.html</string> | |
| 865 | 						</dict> | |
| 866 | 					</array> | |
| 867 | 					<key>end</key> | |
| 868 | 					<string>\}</string> | |
| 869 | 					<key>endCaptures</key> | |
| 870 | 					<array> | |
| 871 | 						<dict> | |
| 872 | 							<key>name</key> | |
| 873 | 							<string>punctuation.definition.generic.end.html</string> | |
| 874 | 						</dict> | |
| 875 | 					</array> | |
| 876 | 					<key>name</key> | |
| 877 | 					<string>expression.embbeded.astro</string> | |
| 878 | 					<key>patterns</key> | |
| 879 | 					<array> | |
| 880 | 						<dict> | |
| 881 | 							<key>include</key> | |
| 882 | 							<string>source.tsx</string> | |
| 883 | 						</dict> | |
| 884 | 					</array> | |
| 885 | 				</dict> | |
| 886 | 			</array> | |
| 887 | 		</dict> | |
| 888 | 		<key>astro-markdown</key> | |
| 889 | 		<dict> | |
| 890 | 			<key>begin</key> | |
| 891 | 			<string>(&lt;)(Markdown)(&gt;)</string> | |
| 892 | 			<key>beginCaptures</key> | |
| 893 | 			<dict> | |
| 894 | 				<key>1</key> | |
| 895 | 				<dict> | |
| 896 | 					<key>name</key> | |
| 897 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 898 | 				</dict> | |
| 899 | 				<key>2</key> | |
| 900 | 				<dict> | |
| 901 | 					<key>name</key> | |
| 902 | 					<string>entity.name.tag.html</string> | |
| 903 | 				</dict> | |
| 904 | 				<key>3</key> | |
| 905 | 				<dict> | |
| 906 | 					<key>name</key> | |
| 907 | 					<string>punctuation.definition.tag.end.html</string> | |
| 908 | 				</dict> | |
| 909 | 			</dict> | |
| 910 | 			<key>end</key> | |
| 911 | 			<string>(&lt;/)(Markdown)(&gt;)</string> | |
| 912 | 			<key>endCaptures</key> | |
| 913 | 			<dict> | |
| 914 | 				<key>1</key> | |
| 915 | 				<dict> | |
| 916 | 					<key>name</key> | |
| 917 | 					<string>punctuation.definition.tag.begin.html</string> | |
| 918 | 				</dict> | |
| 919 | 				<key>2</key> | |
| 920 | 				<dict> | |
| 921 | 					<key>name</key> | |
| 922 | 					<string>entity.name.tag.html</string> | |
| 923 | 				</dict> | |
| 924 | 				<key>3</key> | |
| 925 | 				<dict> | |
| 926 | 					<key>name</key> | |
| 927 | 					<string>punctuation.definition.tag.end.html</string> | |
| 928 | 				</dict> | |
| 929 | 			</dict> | |
| 930 | 			<key>name</key> | |
| 931 | 			<string>text.html.astro.markdown</string> | |
| 932 | 			<key>patterns</key> | |
| 933 | 			<array> | |
| 934 | 				<dict> | |
| 935 | 					<key>include</key> | |
| 936 | 					<string>text.html.markdown.astro</string> | |
| 937 | 				</dict> | |
| 938 | 			</array> | |
| 939 | 		</dict> | |
| 940 | 		<key>entities</key> | |
| 941 | 		<dict> | |
| 942 | 			<key>patterns</key> | |
| 943 | 			<array> | |
| 944 | 				<dict> | |
| 945 | 					<key>captures</key> | |
| 946 | 					<dict> | |
| 947 | 						<key>1</key> | |
| 948 | 						<dict> | |
| 949 | 							<key>name</key> | |
| 950 | 							<string>punctuation.definition.entity.html</string> | |
| 951 | 						</dict> | |
| 952 | 						<key>3</key> | |
| 953 | 						<dict> | |
| 954 | 							<key>name</key> | |
| 955 | 							<string>punctuation.definition.entity.html</string> | |
| 956 | 						</dict> | |
| 957 | 					</dict> | |
| 958 | 					<key>match</key> | |
| 959 | 					<string>(&amp;)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)</string> | |
| 960 | 					<key>name</key> | |
| 961 | 					<string>constant.character.entity.html</string> | |
| 962 | 				</dict> | |
| 963 | 				<dict> | |
| 964 | 					<key>match</key> | |
| 965 | 					<string>&amp;</string> | |
| 966 | 					<key>name</key> | |
| 967 | 					<string>invalid.illegal.bad-ampersand.html</string> | |
| 968 | 				</dict> | |
| 969 | 			</array> | |
| 970 | 		</dict> | |
| 971 | 		<key>frontmatter</key> | |
| 972 | 		<dict> | |
| 973 | 			<key>begin</key> | |
| 974 | 			<string>\A(-{3})\s*$</string> | |
| 975 | 			<key>beginCaptures</key> | |
| 976 | 			<dict> | |
| 977 | 				<key>1</key> | |
| 978 | 				<dict> | |
| 979 | 					<key>name</key> | |
| 980 | 					<string>comment.block.html</string> | |
| 981 | 				</dict> | |
| 982 | 			</dict> | |
| 983 | 			<key>contentName</key> | |
| 984 | 			<string>meta.embedded.block.frontmatter</string> | |
| 985 | 			<key>end</key> | |
| 986 | 			<string>(^|\G)(-{3})|\.{3}\s*$</string> | |
| 987 | 			<key>endCaptures</key> | |
| 988 | 			<dict> | |
| 989 | 				<key>2</key> | |
| 990 | 				<dict> | |
| 991 | 					<key>name</key> | |
| 992 | 					<string>comment.block.html</string> | |
| 993 | 				</dict> | |
| 994 | 			</dict> | |
| 995 | 			<key>patterns</key> | |
| 996 | 			<array> | |
| 997 | 				<dict> | |
| 998 | 					<key>include</key> | |
| 999 | 					<string>source.tsx</string> | |
| 1000 | 				</dict> | |
| 1001 | 			</array> | |
| 1002 | 		</dict> | |
| 1003 | 		<key>string-double-quoted</key> | |
| 1004 | 		<dict> | |
| 1005 | 			<key>begin</key> | |
| 1006 | 			<string>"</string> | |
| 1007 | 			<key>beginCaptures</key> | |
| 1008 | 			<array> | |
| 1009 | 				<dict> | |
| 1010 | 					<key>name</key> | |
| 1011 | 					<string>punctuation.definition.string.begin.html</string> | |
| 1012 | 				</dict> | |
| 1013 | 			</array> | |
| 1014 | 			<key>end</key> | |
| 1015 | 			<string>"</string> | |
| 1016 | 			<key>endCaptures</key> | |
| 1017 | 			<array> | |
| 1018 | 				<dict> | |
| 1019 | 					<key>name</key> | |
| 1020 | 					<string>punctuation.definition.string.end.html</string> | |
| 1021 | 				</dict> | |
| 1022 | 			</array> | |
| 1023 | 			<key>name</key> | |
| 1024 | 			<string>string.quoted.double.html</string> | |
| 1025 | 			<key>patterns</key> | |
| 1026 | 			<array> | |
| 1027 | 				<dict> | |
| 1028 | 					<key>include</key> | |
| 1029 | 					<string>#entities</string> | |
| 1030 | 				</dict> | |
| 1031 | 			</array> | |
| 1032 | 		</dict> | |
| 1033 | 		<key>string-single-quoted</key> | |
| 1034 | 		<dict> | |
| 1035 | 			<key>begin</key> | |
| 1036 | 			<string>'</string> | |
| 1037 | 			<key>beginCaptures</key> | |
| 1038 | 			<array> | |
| 1039 | 				<dict> | |
| 1040 | 					<key>name</key> | |
| 1041 | 					<string>punctuation.definition.string.begin.html</string> | |
| 1042 | 				</dict> | |
| 1043 | 			</array> | |
| 1044 | 			<key>end</key> | |
| 1045 | 			<string>'</string> | |
| 1046 | 			<key>endCaptures</key> | |
| 1047 | 			<array> | |
| 1048 | 				<dict> | |
| 1049 | 					<key>name</key> | |
| 1050 | 					<string>punctuation.definition.string.end.html</string> | |
| 1051 | 				</dict> | |
| 1052 | 			</array> | |
| 1053 | 			<key>name</key> | |
| 1054 | 			<string>string.quoted.single.html</string> | |
| 1055 | 			<key>patterns</key> | |
| 1056 | 			<array> | |
| 1057 | 				<dict> | |
| 1058 | 					<key>include</key> | |
| 1059 | 					<string>#entities</string> | |
| 1060 | 				</dict> | |
| 1061 | 			</array> | |
| 1062 | 		</dict> | |
| 1063 | 		<key>tag-generic-attribute</key> | |
| 1064 | 		<dict> | |
| 1065 | 			<key>match</key> | |
| 1066 | 			<string>\b([a-zA-Z\-:]+)</string> | |
| 1067 | 			<key>name</key> | |
| 1068 | 			<string>entity.other.attribute-name.html</string> | |
| 1069 | 		</dict> | |
| 1070 | 		<key>tag-id-attribute</key> | |
| 1071 | 		<dict> | |
| 1072 | 			<key>begin</key> | |
| 1073 | 			<string>\b(id)\b\s*(=)</string> | |
| 1074 | 			<key>captures</key> | |
| 1075 | 			<dict> | |
| 1076 | 				<key>1</key> | |
| 1077 | 				<dict> | |
| 1078 | 					<key>name</key> | |
| 1079 | 					<string>entity.other.attribute-name.id.html</string> | |
| 1080 | 				</dict> | |
| 1081 | 				<key>2</key> | |
| 1082 | 				<dict> | |
| 1083 | 					<key>name</key> | |
| 1084 | 					<string>punctuation.separator.key-value.html</string> | |
| 1085 | 				</dict> | |
| 1086 | 			</dict> | |
| 1087 | 			<key>end</key> | |
| 1088 | 			<string>(?&lt;='|")</string> | |
| 1089 | 			<key>name</key> | |
| 1090 | 			<string>meta.attribute-with-value.id.html</string> | |
| 1091 | 			<key>patterns</key> | |
| 1092 | 			<array> | |
| 1093 | 				<dict> | |
| 1094 | 					<key>begin</key> | |
| 1095 | 					<string>"</string> | |
| 1096 | 					<key>beginCaptures</key> | |
| 1097 | 					<array> | |
| 1098 | 						<dict> | |
| 1099 | 							<key>name</key> | |
| 1100 | 							<string>punctuation.definition.string.begin.html</string> | |
| 1101 | 						</dict> | |
| 1102 | 					</array> | |
| 1103 | 					<key>contentName</key> | |
| 1104 | 					<string>meta.toc-list.id.html</string> | |
| 1105 | 					<key>end</key> | |
| 1106 | 					<string>"</string> | |
| 1107 | 					<key>endCaptures</key> | |
| 1108 | 					<array> | |
| 1109 | 						<dict> | |
| 1110 | 							<key>name</key> | |
| 1111 | 							<string>punctuation.definition.string.end.html</string> | |
| 1112 | 						</dict> | |
| 1113 | 					</array> | |
| 1114 | 					<key>name</key> | |
| 1115 | 					<string>string.quoted.double.html</string> | |
| 1116 | 					<key>patterns</key> | |
| 1117 | 					<array> | |
| 1118 | 						<dict> | |
| 1119 | 							<key>include</key> | |
| 1120 | 							<string>#astro-expressions</string> | |
| 1121 | 						</dict> | |
| 1122 | 						<dict> | |
| 1123 | 							<key>include</key> | |
| 1124 | 							<string>#entities</string> | |
| 1125 | 						</dict> | |
| 1126 | 					</array> | |
| 1127 | 				</dict> | |
| 1128 | 				<dict> | |
| 1129 | 					<key>begin</key> | |
| 1130 | 					<string>'</string> | |
| 1131 | 					<key>beginCaptures</key> | |
| 1132 | 					<array> | |
| 1133 | 						<dict> | |
| 1134 | 							<key>name</key> | |
| 1135 | 							<string>punctuation.definition.string.begin.html</string> | |
| 1136 | 						</dict> | |
| 1137 | 					</array> | |
| 1138 | 					<key>contentName</key> | |
| 1139 | 					<string>meta.toc-list.id.html</string> | |
| 1140 | 					<key>end</key> | |
| 1141 | 					<string>'</string> | |
| 1142 | 					<key>endCaptures</key> | |
| 1143 | 					<array> | |
| 1144 | 						<dict> | |
| 1145 | 							<key>name</key> | |
| 1146 | 							<string>punctuation.definition.string.end.html</string> | |
| 1147 | 						</dict> | |
| 1148 | 					</array> | |
| 1149 | 					<key>name</key> | |
| 1150 | 					<string>string.quoted.single.html</string> | |
| 1151 | 					<key>patterns</key> | |
| 1152 | 					<array> | |
| 1153 | 						<dict> | |
| 1154 | 							<key>include</key> | |
| 1155 | 							<string>#astro-expressions</string> | |
| 1156 | 						</dict> | |
| 1157 | 						<dict> | |
| 1158 | 							<key>include</key> | |
| 1159 | 							<string>#entities</string> | |
| 1160 | 						</dict> | |
| 1161 | 					</array> | |
| 1162 | 				</dict> | |
| 1163 | 			</array> | |
| 1164 | 		</dict> | |
| 1165 | 		<key>tag-stuff</key> | |
| 1166 | 		<dict> | |
| 1167 | 			<key>patterns</key> | |
| 1168 | 			<array> | |
| 1169 | 				<dict> | |
| 1170 | 					<key>include</key> | |
| 1171 | 					<string>#tag-id-attribute</string> | |
| 1172 | 				</dict> | |
| 1173 | 				<dict> | |
| 1174 | 					<key>include</key> | |
| 1175 | 					<string>#tag-generic-attribute</string> | |
| 1176 | 				</dict> | |
| 1177 | 				<dict> | |
| 1178 | 					<key>include</key> | |
| 1179 | 					<string>#string-double-quoted</string> | |
| 1180 | 				</dict> | |
| 1181 | 				<dict> | |
| 1182 | 					<key>include</key> | |
| 1183 | 					<string>#string-single-quoted</string> | |
| 1184 | 				</dict> | |
| 1185 | 				<dict> | |
| 1186 | 					<key>include</key> | |
| 1187 | 					<string>#astro-load-directive</string> | |
| 1188 | 				</dict> | |
| 1189 | 				<dict> | |
| 1190 | 					<key>include</key> | |
| 1191 | 					<string>#astro-expressions</string> | |
| 1192 | 				</dict> | |
| 1193 | 				<dict> | |
| 1194 | 					<key>include</key> | |
| 1195 | 					<string>#astro-markdown</string> | |
| 1196 | 				</dict> | |
| 1197 | 			</array> | |
| 1198 | 		</dict> | |
| 1199 | 	</dict> | |
| 1200 | 	<key>scopeName</key> | |
| 1201 | 	<string>text.html.astro</string> | |
| 1202 | </dict> | |
| 1203 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/css.plist created+1036| ... | ... | @@ -0,0 +1,1036 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>css</string> | |
| 8 | 		<string>css.erb</string> | |
| 9 | 	</array> | |
| 10 | 	<key>keyEquivalent</key> | |
| 11 | 	<string>^~C</string> | |
| 12 | 	<key>name</key> | |
| 13 | 	<string>CSS</string> | |
| 14 | 	<key>patterns</key> | |
| 15 | 	<array> | |
| 16 | 		<dict> | |
| 17 | 			<key>include</key> | |
| 18 | 			<string>#comment-block</string> | |
| 19 | 		</dict> | |
| 20 | 		<dict> | |
| 21 | 			<key>include</key> | |
| 22 | 			<string>#selector</string> | |
| 23 | 		</dict> | |
| 24 | 		<dict> | |
| 25 | 			<key>begin</key> | |
| 26 | 			<string>\s*((@)charset\b)\s*</string> | |
| 27 | 			<key>captures</key> | |
| 28 | 			<dict> | |
| 29 | 				<key>1</key> | |
| 30 | 				<dict> | |
| 31 | 					<key>name</key> | |
| 32 | 					<string>keyword.control.at-rule.charset.css</string> | |
| 33 | 				</dict> | |
| 34 | 				<key>2</key> | |
| 35 | 				<dict> | |
| 36 | 					<key>name</key> | |
| 37 | 					<string>punctuation.definition.keyword.css</string> | |
| 38 | 				</dict> | |
| 39 | 			</dict> | |
| 40 | 			<key>end</key> | |
| 41 | 			<string>\s*((?=;|$))</string> | |
| 42 | 			<key>name</key> | |
| 43 | 			<string>meta.at-rule.charset.css</string> | |
| 44 | 			<key>patterns</key> | |
| 45 | 			<array> | |
| 46 | 				<dict> | |
| 47 | 					<key>include</key> | |
| 48 | 					<string>#string-double</string> | |
| 49 | 				</dict> | |
| 50 | 				<dict> | |
| 51 | 					<key>include</key> | |
| 52 | 					<string>#string-single</string> | |
| 53 | 				</dict> | |
| 54 | 			</array> | |
| 55 | 		</dict> | |
| 56 | 		<dict> | |
| 57 | 			<key>begin</key> | |
| 58 | 			<string>\s*((@)import\b)\s*</string> | |
| 59 | 			<key>captures</key> | |
| 60 | 			<dict> | |
| 61 | 				<key>1</key> | |
| 62 | 				<dict> | |
| 63 | 					<key>name</key> | |
| 64 | 					<string>keyword.control.at-rule.import.css</string> | |
| 65 | 				</dict> | |
| 66 | 				<key>2</key> | |
| 67 | 				<dict> | |
| 68 | 					<key>name</key> | |
| 69 | 					<string>punctuation.definition.keyword.css</string> | |
| 70 | 				</dict> | |
| 71 | 			</dict> | |
| 72 | 			<key>end</key> | |
| 73 | 			<string>\s*((?=;|\}))</string> | |
| 74 | 			<key>name</key> | |
| 75 | 			<string>meta.at-rule.import.css</string> | |
| 76 | 			<key>patterns</key> | |
| 77 | 			<array> | |
| 78 | 				<dict> | |
| 79 | 					<key>include</key> | |
| 80 | 					<string>#string-double</string> | |
| 81 | 				</dict> | |
| 82 | 				<dict> | |
| 83 | 					<key>include</key> | |
| 84 | 					<string>#string-single</string> | |
| 85 | 				</dict> | |
| 86 | 				<dict> | |
| 87 | 					<key>begin</key> | |
| 88 | 					<string>\s*(url)\s*(\()\s*</string> | |
| 89 | 					<key>beginCaptures</key> | |
| 90 | 					<dict> | |
| 91 | 						<key>1</key> | |
| 92 | 						<dict> | |
| 93 | 							<key>name</key> | |
| 94 | 							<string>support.function.url.css</string> | |
| 95 | 						</dict> | |
| 96 | 						<key>2</key> | |
| 97 | 						<dict> | |
| 98 | 							<key>name</key> | |
| 99 | 							<string>punctuation.section.function.css</string> | |
| 100 | 						</dict> | |
| 101 | 					</dict> | |
| 102 | 					<key>end</key> | |
| 103 | 					<string>\s*(\))\s*</string> | |
| 104 | 					<key>endCaptures</key> | |
| 105 | 					<dict> | |
| 106 | 						<key>1</key> | |
| 107 | 						<dict> | |
| 108 | 							<key>name</key> | |
| 109 | 							<string>punctuation.section.function.css</string> | |
| 110 | 						</dict> | |
| 111 | 					</dict> | |
| 112 | 					<key>patterns</key> | |
| 113 | 					<array> | |
| 114 | 						<dict> | |
| 115 | 							<key>match</key> | |
| 116 | 							<string>[^'") \t]+</string> | |
| 117 | 							<key>name</key> | |
| 118 | 							<string>variable.parameter.url.css</string> | |
| 119 | 						</dict> | |
| 120 | 						<dict> | |
| 121 | 							<key>include</key> | |
| 122 | 							<string>#string-single</string> | |
| 123 | 						</dict> | |
| 124 | 						<dict> | |
| 125 | 							<key>include</key> | |
| 126 | 							<string>#string-double</string> | |
| 127 | 						</dict> | |
| 128 | 					</array> | |
| 129 | 				</dict> | |
| 130 | 				<dict> | |
| 131 | 					<key>include</key> | |
| 132 | 					<string>#media-query-list</string> | |
| 133 | 				</dict> | |
| 134 | 			</array> | |
| 135 | 		</dict> | |
| 136 | 		<dict> | |
| 137 | 			<key>begin</key> | |
| 138 | 			<string>^\s*((@)font-face)\s*(?=\{)</string> | |
| 139 | 			<key>beginCaptures</key> | |
| 140 | 			<dict> | |
| 141 | 				<key>1</key> | |
| 142 | 				<dict> | |
| 143 | 					<key>name</key> | |
| 144 | 					<string>keyword.control.at-rule.font-face.css</string> | |
| 145 | 				</dict> | |
| 146 | 				<key>2</key> | |
| 147 | 				<dict> | |
| 148 | 					<key>name</key> | |
| 149 | 					<string>punctuation.definition.keyword.css</string> | |
| 150 | 				</dict> | |
| 151 | 			</dict> | |
| 152 | 			<key>end</key> | |
| 153 | 			<string>(?!\G)</string> | |
| 154 | 			<key>name</key> | |
| 155 | 			<string>meta.at-rule.font-face.css</string> | |
| 156 | 			<key>patterns</key> | |
| 157 | 			<array> | |
| 158 | 				<dict> | |
| 159 | 					<key>include</key> | |
| 160 | 					<string>#rule-list</string> | |
| 161 | 				</dict> | |
| 162 | 			</array> | |
| 163 | 		</dict> | |
| 164 | 		<dict> | |
| 165 | 			<key>begin</key> | |
| 166 | 			<string>(?=^\s*@media\s*.*?\{)</string> | |
| 167 | 			<key>end</key> | |
| 168 | 			<string>\s*(\})</string> | |
| 169 | 			<key>endCaptures</key> | |
| 170 | 			<dict> | |
| 171 | 				<key>1</key> | |
| 172 | 				<dict> | |
| 173 | 					<key>name</key> | |
| 174 | 					<string>punctuation.section.property-list.end.css</string> | |
| 175 | 				</dict> | |
| 176 | 			</dict> | |
| 177 | 			<key>patterns</key> | |
| 178 | 			<array> | |
| 179 | 				<dict> | |
| 180 | 					<key>begin</key> | |
| 181 | 					<string>^\s*((@)media)(?=.*?\{)</string> | |
| 182 | 					<key>beginCaptures</key> | |
| 183 | 					<dict> | |
| 184 | 						<key>1</key> | |
| 185 | 						<dict> | |
| 186 | 							<key>name</key> | |
| 187 | 							<string>keyword.control.at-rule.media.css</string> | |
| 188 | 						</dict> | |
| 189 | 						<key>2</key> | |
| 190 | 						<dict> | |
| 191 | 							<key>name</key> | |
| 192 | 							<string>punctuation.definition.keyword.css</string> | |
| 193 | 						</dict> | |
| 194 | 						<key>3</key> | |
| 195 | 						<dict> | |
| 196 | 							<key>name</key> | |
| 197 | 							<string>support.constant.media.css</string> | |
| 198 | 						</dict> | |
| 199 | 					</dict> | |
| 200 | 					<key>end</key> | |
| 201 | 					<string>\s*(?=\{)</string> | |
| 202 | 					<key>name</key> | |
| 203 | 					<string>meta.at-rule.media.css</string> | |
| 204 | 					<key>patterns</key> | |
| 205 | 					<array> | |
| 206 | 						<dict> | |
| 207 | 							<key>include</key> | |
| 208 | 							<string>#media-query-list</string> | |
| 209 | 						</dict> | |
| 210 | 					</array> | |
| 211 | 				</dict> | |
| 212 | 				<dict> | |
| 213 | 					<key>begin</key> | |
| 214 | 					<string>\s*(\{)</string> | |
| 215 | 					<key>beginCaptures</key> | |
| 216 | 					<dict> | |
| 217 | 						<key>1</key> | |
| 218 | 						<dict> | |
| 219 | 							<key>name</key> | |
| 220 | 							<string>punctuation.section.property-list.begin.css</string> | |
| 221 | 						</dict> | |
| 222 | 					</dict> | |
| 223 | 					<key>end</key> | |
| 224 | 					<string>(?=\})</string> | |
| 225 | 					<key>patterns</key> | |
| 226 | 					<array> | |
| 227 | 						<dict> | |
| 228 | 							<key>include</key> | |
| 229 | 							<string>$self</string> | |
| 230 | 						</dict> | |
| 231 | 					</array> | |
| 232 | 				</dict> | |
| 233 | 			</array> | |
| 234 | 		</dict> | |
| 235 | 		<dict> | |
| 236 | 			<key>begin</key> | |
| 237 | 			<string>(?=\{)</string> | |
| 238 | 			<key>end</key> | |
| 239 | 			<string>(?!\G)</string> | |
| 240 | 			<key>patterns</key> | |
| 241 | 			<array> | |
| 242 | 				<dict> | |
| 243 | 					<key>include</key> | |
| 244 | 					<string>#rule-list</string> | |
| 245 | 				</dict> | |
| 246 | 			</array> | |
| 247 | 		</dict> | |
| 248 | 	</array> | |
| 249 | 	<key>repository</key> | |
| 250 | 	<dict> | |
| 251 | 		<key>color-values</key> | |
| 252 | 		<dict> | |
| 253 | 			<key>patterns</key> | |
| 254 | 			<array> | |
| 255 | 				<dict> | |
| 256 | 					<key>comment</key> | |
| 257 | 					<string>http://www.w3.org/TR/CSS21/syndata.html#value-def-color</string> | |
| 258 | 					<key>match</key> | |
| 259 | 					<string>\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\b</string> | |
| 260 | 					<key>name</key> | |
| 261 | 					<string>support.constant.color.w3c-standard-color-name.css</string> | |
| 262 | 				</dict> | |
| 263 | 				<dict> | |
| 264 | 					<key>comment</key> | |
| 265 | 					<string>These colours are mostly recognised but will not validate. ref: http://www.w3schools.com/css/css_colornames.asp</string> | |
| 266 | 					<key>match</key> | |
| 267 | 					<string>\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\b</string> | |
| 268 | 					<key>name</key> | |
| 269 | 					<string>invalid.deprecated.color.w3c-non-standard-color-name.css</string> | |
| 270 | 				</dict> | |
| 271 | 				<dict> | |
| 272 | 					<key>begin</key> | |
| 273 | 					<string>(hsla?|rgba?)\s*(\()</string> | |
| 274 | 					<key>beginCaptures</key> | |
| 275 | 					<dict> | |
| 276 | 						<key>1</key> | |
| 277 | 						<dict> | |
| 278 | 							<key>name</key> | |
| 279 | 							<string>support.function.misc.css</string> | |
| 280 | 						</dict> | |
| 281 | 						<key>2</key> | |
| 282 | 						<dict> | |
| 283 | 							<key>name</key> | |
| 284 | 							<string>punctuation.section.function.css</string> | |
| 285 | 						</dict> | |
| 286 | 					</dict> | |
| 287 | 					<key>end</key> | |
| 288 | 					<string>(\))</string> | |
| 289 | 					<key>endCaptures</key> | |
| 290 | 					<dict> | |
| 291 | 						<key>1</key> | |
| 292 | 						<dict> | |
| 293 | 							<key>name</key> | |
| 294 | 							<string>punctuation.section.function.css</string> | |
| 295 | 						</dict> | |
| 296 | 					</dict> | |
| 297 | 					<key>patterns</key> | |
| 298 | 					<array> | |
| 299 | 						<dict> | |
| 300 | 							<key>match</key> | |
| 301 | 							<string>(?x)\b | |
| 302 | 							 (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*){2} | |
| 303 | 							 (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b) | |
| 304 | 							 (\s*,\s*((0?\.[0-9]+)|[0-1]))? | |
| 305 | 							</string> | |
| 306 | 							<key>name</key> | |
| 307 | 							<string>constant.other.color.rgb-value.css</string> | |
| 308 | 						</dict> | |
| 309 | 						<dict> | |
| 310 | 							<key>match</key> | |
| 311 | 							<string>\b([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%</string> | |
| 312 | 							<key>name</key> | |
| 313 | 							<string>constant.other.color.rgb-percentage.css</string> | |
| 314 | 						</dict> | |
| 315 | 						<dict> | |
| 316 | 							<key>include</key> | |
| 317 | 							<string>#numeric-values</string> | |
| 318 | 						</dict> | |
| 319 | 					</array> | |
| 320 | 				</dict> | |
| 321 | 			</array> | |
| 322 | 		</dict> | |
| 323 | 		<key>comment-block</key> | |
| 324 | 		<dict> | |
| 325 | 			<key>begin</key> | |
| 326 | 			<string>/\*</string> | |
| 327 | 			<key>captures</key> | |
| 328 | 			<dict> | |
| 329 | 				<key>0</key> | |
| 330 | 				<dict> | |
| 331 | 					<key>name</key> | |
| 332 | 					<string>punctuation.definition.comment.css</string> | |
| 333 | 				</dict> | |
| 334 | 			</dict> | |
| 335 | 			<key>end</key> | |
| 336 | 			<string>\*/</string> | |
| 337 | 			<key>name</key> | |
| 338 | 			<string>comment.block.css</string> | |
| 339 | 		</dict> | |
| 340 | 		<key>media-query</key> | |
| 341 | 		<dict> | |
| 342 | 			<key>begin</key> | |
| 343 | 			<string>(?i)\s*(only|not)?\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?</string> | |
| 344 | 			<key>beginCaptures</key> | |
| 345 | 			<dict> | |
| 346 | 				<key>1</key> | |
| 347 | 				<dict> | |
| 348 | 					<key>name</key> | |
| 349 | 					<string>keyword.operator.logic.media.css</string> | |
| 350 | 				</dict> | |
| 351 | 				<key>2</key> | |
| 352 | 				<dict> | |
| 353 | 					<key>name</key> | |
| 354 | 					<string>support.constant.media.css</string> | |
| 355 | 				</dict> | |
| 356 | 			</dict> | |
| 357 | 			<key>end</key> | |
| 358 | 			<string>\s*(?:(,)|(?=[{;]))</string> | |
| 359 | 			<key>endCaptures</key> | |
| 360 | 			<dict> | |
| 361 | 				<key>1</key> | |
| 362 | 				<dict> | |
| 363 | 					<key>name</key> | |
| 364 | 					<string>punctuation.definition.arbitrary-repitition.css</string> | |
| 365 | 				</dict> | |
| 366 | 			</dict> | |
| 367 | 			<key>patterns</key> | |
| 368 | 			<array> | |
| 369 | 				<dict> | |
| 370 | 					<key>begin</key> | |
| 371 | 					<string>\s*(and)?\s*(\()\s*</string> | |
| 372 | 					<key>beginCaptures</key> | |
| 373 | 					<dict> | |
| 374 | 						<key>1</key> | |
| 375 | 						<dict> | |
| 376 | 							<key>name</key> | |
| 377 | 							<string>keyword.operator.logic.media.css</string> | |
| 378 | 						</dict> | |
| 379 | 					</dict> | |
| 380 | 					<key>end</key> | |
| 381 | 					<string>\)</string> | |
| 382 | 					<key>patterns</key> | |
| 383 | 					<array> | |
| 384 | 						<dict> | |
| 385 | 							<key>begin</key> | |
| 386 | 							<string>(?x) | |
| 387 | 	 ( | |
| 388 | 	 ((min|max)-)? | |
| 389 | 	 ( | |
| 390 | 	 ((device-)?(height|width|aspect-ratio))| | |
| 391 | 	 (color(-index)?)|monochrome|resolution | |
| 392 | 	 ) | |
| 393 | 	 )|grid|scan|orientation | |
| 394 | 	 \s*(?=[:)])</string> | |
| 395 | 							<key>beginCaptures</key> | |
| 396 | 							<dict> | |
| 397 | 								<key>0</key> | |
| 398 | 								<dict> | |
| 399 | 									<key>name</key> | |
| 400 | 									<string>support.type.property-name.media.css</string> | |
| 401 | 								</dict> | |
| 402 | 							</dict> | |
| 403 | 							<key>end</key> | |
| 404 | 							<string>(:)|(?=\))</string> | |
| 405 | 							<key>endCaptures</key> | |
| 406 | 							<dict> | |
| 407 | 								<key>1</key> | |
| 408 | 								<dict> | |
| 409 | 									<key>name</key> | |
| 410 | 									<string>punctuation.separator.key-value.css</string> | |
| 411 | 								</dict> | |
| 412 | 							</dict> | |
| 413 | 						</dict> | |
| 414 | 						<dict> | |
| 415 | 							<key>match</key> | |
| 416 | 							<string>\b(portrait|landscape|progressive|interlace)</string> | |
| 417 | 							<key>name</key> | |
| 418 | 							<string>support.constant.property-value.css</string> | |
| 419 | 						</dict> | |
| 420 | 						<dict> | |
| 421 | 							<key>captures</key> | |
| 422 | 							<dict> | |
| 423 | 								<key>1</key> | |
| 424 | 								<dict> | |
| 425 | 									<key>name</key> | |
| 426 | 									<string>constant.numeric.css</string> | |
| 427 | 								</dict> | |
| 428 | 								<key>2</key> | |
| 429 | 								<dict> | |
| 430 | 									<key>name</key> | |
| 431 | 									<string>keyword.operator.arithmetic.css</string> | |
| 432 | 								</dict> | |
| 433 | 								<key>3</key> | |
| 434 | 								<dict> | |
| 435 | 									<key>name</key> | |
| 436 | 									<string>constant.numeric.css</string> | |
| 437 | 								</dict> | |
| 438 | 							</dict> | |
| 439 | 							<key>match</key> | |
| 440 | 							<string>\s*(\d+)(/)(\d+)</string> | |
| 441 | 						</dict> | |
| 442 | 						<dict> | |
| 443 | 							<key>include</key> | |
| 444 | 							<string>#numeric-values</string> | |
| 445 | 						</dict> | |
| 446 | 					</array> | |
| 447 | 				</dict> | |
| 448 | 			</array> | |
| 449 | 		</dict> | |
| 450 | 		<key>media-query-list</key> | |
| 451 | 		<dict> | |
| 452 | 			<key>begin</key> | |
| 453 | 			<string>\s*(?=[^{;])</string> | |
| 454 | 			<key>end</key> | |
| 455 | 			<string>\s*(?=[{;])</string> | |
| 456 | 			<key>patterns</key> | |
| 457 | 			<array> | |
| 458 | 				<dict> | |
| 459 | 					<key>include</key> | |
| 460 | 					<string>#media-query</string> | |
| 461 | 				</dict> | |
| 462 | 			</array> | |
| 463 | 		</dict> | |
| 464 | 		<key>numeric-values</key> | |
| 465 | 		<dict> | |
| 466 | 			<key>patterns</key> | |
| 467 | 			<array> | |
| 468 | 				<dict> | |
| 469 | 					<key>captures</key> | |
| 470 | 					<dict> | |
| 471 | 						<key>1</key> | |
| 472 | 						<dict> | |
| 473 | 							<key>name</key> | |
| 474 | 							<string>punctuation.definition.constant.css</string> | |
| 475 | 						</dict> | |
| 476 | 					</dict> | |
| 477 | 					<key>match</key> | |
| 478 | 					<string>(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b</string> | |
| 479 | 					<key>name</key> | |
| 480 | 					<string>constant.other.color.rgb-value.css</string> | |
| 481 | 				</dict> | |
| 482 | 				<dict> | |
| 483 | 					<key>captures</key> | |
| 484 | 					<dict> | |
| 485 | 						<key>1</key> | |
| 486 | 						<dict> | |
| 487 | 							<key>name</key> | |
| 488 | 							<string>keyword.other.unit.css</string> | |
| 489 | 						</dict> | |
| 490 | 					</dict> | |
| 491 | 					<key>match</key> | |
| 492 | 					<string>(?x) | |
| 493 | 					 (?:-|\+)?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)) | |
| 494 | 					 ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|s)\b|%)? | |
| 495 | 					</string> | |
| 496 | 					<key>name</key> | |
| 497 | 					<string>constant.numeric.css</string> | |
| 498 | 				</dict> | |
| 499 | 			</array> | |
| 500 | 		</dict> | |
| 501 | 		<key>property-values</key> | |
| 502 | 		<dict> | |
| 503 | 			<key>patterns</key> | |
| 504 | 			<array> | |
| 505 | 				<dict> | |
| 506 | 					<key>match</key> | |
| 507 | 					<string>\b(absolute|all(-scroll)?|always|armenian|auto|avoid|baseline|below|bidi-override|block|bold|bolder|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|flat|geometricPrecision|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|initial|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|optimize(Legibility|Quality|Speed)|outset|outside|overline|pointer|pre(-(wrap|line))?|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|sub|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical(-(ideographic|text))|visible(Painted|Fill|Stroke)?|w-resize|wait|whitespace|zero|smaller|larger|((xx?-)?(small|large))|painted|fill|stroke|column|column-reverse|contain|cover|fill|flex-end|flex-start|row|row-reverse|scale-down|space-around|space-between|stretch|wrap|wrap-reverse|reverse|alternate-reverse|alternate|forwards|backwards|infinite|ease|ease-in|ease-out|ease-in-out|linear|step-start|step-end|steps|cubic-bezier|running|paused|sticky|page|soft-light|screen|saturation|overlay|multiply|luminosity|lighten|hue|hard-light|exclusion|difference|darken|color-dodge|color-burn|color|view-box|stroke-box|fill-box|border-box|padding-box|content-box|round|space|currentColor|subgrid|auto-fill|min-content|max-content|row|column|dense|minmax|calc|translate|translateX|translateY|translateZ|scale|scaleX|scaleY|scaleZ|rotate|rotateX|rotateY|rotateZ|skew|skewX|skewY|skewZ|linear-gradient|repeating-linear-gradient|radial-gradient|repeating-radial-gradient|farthest-side|closest-side|farthest-corner|closest-corner|ellipse|circle)\b</string> | |
| 508 | 					<key>name</key> | |
| 509 | 					<string>support.constant.property-value.css</string> | |
| 510 | 				</dict> | |
| 511 | 				<dict> | |
| 512 | 					<key>match</key> | |
| 513 | 					<string>(\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)\b)</string> | |
| 514 | 					<key>name</key> | |
| 515 | 					<string>support.constant.font-name.css</string> | |
| 516 | 				</dict> | |
| 517 | 				<dict> | |
| 518 | 					<key>include</key> | |
| 519 | 					<string>#numeric-values</string> | |
| 520 | 				</dict> | |
| 521 | 				<dict> | |
| 522 | 					<key>include</key> | |
| 523 | 					<string>#color-values</string> | |
| 524 | 				</dict> | |
| 525 | 				<dict> | |
| 526 | 					<key>include</key> | |
| 527 | 					<string>#string-double</string> | |
| 528 | 				</dict> | |
| 529 | 				<dict> | |
| 530 | 					<key>include</key> | |
| 531 | 					<string>#string-single</string> | |
| 532 | 				</dict> | |
| 533 | 				<dict> | |
| 534 | 					<key>begin</key> | |
| 535 | 					<string>(rect)\s*(\()</string> | |
| 536 | 					<key>beginCaptures</key> | |
| 537 | 					<dict> | |
| 538 | 						<key>1</key> | |
| 539 | 						<dict> | |
| 540 | 							<key>name</key> | |
| 541 | 							<string>support.function.misc.css</string> | |
| 542 | 						</dict> | |
| 543 | 						<key>2</key> | |
| 544 | 						<dict> | |
| 545 | 							<key>name</key> | |
| 546 | 							<string>punctuation.section.function.css</string> | |
| 547 | 						</dict> | |
| 548 | 					</dict> | |
| 549 | 					<key>end</key> | |
| 550 | 					<string>(\))</string> | |
| 551 | 					<key>endCaptures</key> | |
| 552 | 					<dict> | |
| 553 | 						<key>1</key> | |
| 554 | 						<dict> | |
| 555 | 							<key>name</key> | |
| 556 | 							<string>punctuation.section.function.css</string> | |
| 557 | 						</dict> | |
| 558 | 					</dict> | |
| 559 | 					<key>patterns</key> | |
| 560 | 					<array> | |
| 561 | 						<dict> | |
| 562 | 							<key>include</key> | |
| 563 | 							<string>#numeric-values</string> | |
| 564 | 						</dict> | |
| 565 | 					</array> | |
| 566 | 				</dict> | |
| 567 | 				<dict> | |
| 568 | 					<key>begin</key> | |
| 569 | 					<string>(format|local|url|attr|counter|counters)\s*(\()</string> | |
| 570 | 					<key>beginCaptures</key> | |
| 571 | 					<dict> | |
| 572 | 						<key>1</key> | |
| 573 | 						<dict> | |
| 574 | 							<key>name</key> | |
| 575 | 							<string>support.function.misc.css</string> | |
| 576 | 						</dict> | |
| 577 | 						<key>2</key> | |
| 578 | 						<dict> | |
| 579 | 							<key>name</key> | |
| 580 | 							<string>punctuation.section.function.css</string> | |
| 581 | 						</dict> | |
| 582 | 					</dict> | |
| 583 | 					<key>end</key> | |
| 584 | 					<string>(\))</string> | |
| 585 | 					<key>endCaptures</key> | |
| 586 | 					<dict> | |
| 587 | 						<key>1</key> | |
| 588 | 						<dict> | |
| 589 | 							<key>name</key> | |
| 590 | 							<string>punctuation.section.function.css</string> | |
| 591 | 						</dict> | |
| 592 | 					</dict> | |
| 593 | 					<key>patterns</key> | |
| 594 | 					<array> | |
| 595 | 						<dict> | |
| 596 | 							<key>include</key> | |
| 597 | 							<string>#string-single</string> | |
| 598 | 						</dict> | |
| 599 | 						<dict> | |
| 600 | 							<key>include</key> | |
| 601 | 							<string>#string-double</string> | |
| 602 | 						</dict> | |
| 603 | 						<dict> | |
| 604 | 							<key>match</key> | |
| 605 | 							<string>[^'") \t]+</string> | |
| 606 | 							<key>name</key> | |
| 607 | 							<string>variable.parameter.misc.css</string> | |
| 608 | 						</dict> | |
| 609 | 					</array> | |
| 610 | 				</dict> | |
| 611 | 				<dict> | |
| 612 | 					<key>begin</key> | |
| 613 | 					<string>(matrix(3d)?|perspective|(rotate|scale|translate)([XYZ]|3d)?|skew[XY]?)\s*(\()</string> | |
| 614 | 					<key>beginCaptures</key> | |
| 615 | 					<dict> | |
| 616 | 						<key>1</key> | |
| 617 | 						<dict> | |
| 618 | 							<key>name</key> | |
| 619 | 							<string>support.function.transform.css</string> | |
| 620 | 						</dict> | |
| 621 | 						<key>2</key> | |
| 622 | 						<dict> | |
| 623 | 							<key>name</key> | |
| 624 | 							<string>punctuation.section.function.css</string> | |
| 625 | 						</dict> | |
| 626 | 					</dict> | |
| 627 | 					<key>end</key> | |
| 628 | 					<string>(\))</string> | |
| 629 | 					<key>endCaptures</key> | |
| 630 | 					<dict> | |
| 631 | 						<key>1</key> | |
| 632 | 						<dict> | |
| 633 | 							<key>name</key> | |
| 634 | 							<string>punctuation.section.function.css</string> | |
| 635 | 						</dict> | |
| 636 | 					</dict> | |
| 637 | 					<key>patterns</key> | |
| 638 | 					<array> | |
| 639 | 						<dict> | |
| 640 | 							<key>include</key> | |
| 641 | 							<string>#numeric-values</string> | |
| 642 | 						</dict> | |
| 643 | 					</array> | |
| 644 | 				</dict> | |
| 645 | 				<dict> | |
| 646 | 					<key>match</key> | |
| 647 | 					<string>\!\s*important</string> | |
| 648 | 					<key>name</key> | |
| 649 | 					<string>keyword.other.important.css</string> | |
| 650 | 				</dict> | |
| 651 | 			</array> | |
| 652 | 		</dict> | |
| 653 | 		<key>rule-list</key> | |
| 654 | 		<dict> | |
| 655 | 			<key>begin</key> | |
| 656 | 			<string>\{</string> | |
| 657 | 			<key>beginCaptures</key> | |
| 658 | 			<dict> | |
| 659 | 				<key>0</key> | |
| 660 | 				<dict> | |
| 661 | 					<key>name</key> | |
| 662 | 					<string>punctuation.section.property-list.begin.css</string> | |
| 663 | 				</dict> | |
| 664 | 			</dict> | |
| 665 | 			<key>end</key> | |
| 666 | 			<string>\}</string> | |
| 667 | 			<key>endCaptures</key> | |
| 668 | 			<dict> | |
| 669 | 				<key>0</key> | |
| 670 | 				<dict> | |
| 671 | 					<key>name</key> | |
| 672 | 					<string>punctuation.section.property-list.end.css</string> | |
| 673 | 				</dict> | |
| 674 | 			</dict> | |
| 675 | 			<key>name</key> | |
| 676 | 			<string>meta.property-list.css</string> | |
| 677 | 			<key>patterns</key> | |
| 678 | 			<array> | |
| 679 | 				<dict> | |
| 680 | 					<key>include</key> | |
| 681 | 					<string>#comment-block</string> | |
| 682 | 				</dict> | |
| 683 | 				<dict> | |
| 684 | 					<key>begin</key> | |
| 685 | 					<string>(?&lt;![-a-z])(?=[-a-z])</string> | |
| 686 | 					<key>end</key> | |
| 687 | 					<string>$|(?![-a-z])</string> | |
| 688 | 					<key>name</key> | |
| 689 | 					<string>meta.property-name.css</string> | |
| 690 | 					<key>patterns</key> | |
| 691 | 					<array> | |
| 692 | 						<dict> | |
| 693 | 							<key>match</key> | |
| 694 | 							<string>-(webkit|moz|o|ms|khtml)(-[A-Za-z]+)+\b</string> | |
| 695 | 							<key>name</key> | |
| 696 | 							<string>support.type.property-name.css</string> | |
| 697 | 						</dict> | |
| 698 | 						<dict> | |
| 699 | 							<key>match</key> | |
| 700 | 							<string>\b(zoom|z-index|y|x|writing-mode|wrap-through|wrap-flow|wrap|word-wrap|word-spacing|word-break|word|will-change|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-range|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode|trim|transition-timing-function|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|timing-function|text-wrap|text-underline-position|text-transform|text-space-collapse|text-shadow|text-replace|text-overflow|text-outline|text-orientation|text-justify|text-indent|text-height|text-emphasis-style|text-emphasis-position|text-emphasis-color|text-emphasis|text-decoration-style|text-decoration-skip|text-decoration-line|text-decoration-color|text-decoration|text-combine-upright|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|stroke|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak-as|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shape-outside|shape-margin|shape-inside|shape-image-threshold|shadow|setting-named-strings-string-set-pro|scroll-snap-type|scroll-snap-stop|scroll-snap-margin-top|scroll-snap-margin-right|scroll-snap-margin-left|scroll-snap-margin-inline-start|scroll-snap-margin-inline-end|scroll-snap-margin-inline|scroll-snap-margin-bottom|scroll-snap-margin-block-start|scroll-snap-margin-block-end|scroll-snap-margin-block|scroll-snap-margin|scroll-snap-align|scroll-padding-top|scroll-padding-right|scroll-padding-left|scroll-padding-inline-start|scroll-padding-inline-end|scroll-padding-inline|scroll-padding-bottom|scroll-padding-block-start|scroll-padding-block-end|scroll-padding-block|scroll-padding|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-merge|ruby-align|ruby|rows|row-gap|rotation-point|rotation|rotating|role|right|richness|rest-before|rest-after|rest|respond-to|resource|resolution|resize|reset|replace|repeat|rendering-intent|region-fragment|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|polar-origin|polar-distance|polar-angle|polar-anchor|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|perspective-origin|perspective|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-wrap|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|object-position|object-fit|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav-dir|nav|name|moving|move-to|model|min-width|min-height|min|max-width|max-lines|max-height|max|mask-type|mask-source-type|mask-size|mask-repeat|mask-position|mask-origin|mask-image|mask-clip|mask-box-width|mask-box-source|mask-box-slice|mask-box-repeat|mask-box-outset|mask-box|mask|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|marker-side|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-snap|line-height|line-grid|line-break|line|lighting-color|level|letter-spacing|length|left|label|justify-self|justify-items|justify-content|justify|iteration-count|input-method-editor|inline-box-align|initial-value|initial-size|initial-letter|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-rendering|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|grid-template-rows|grid-template-columns|grid-template-areas|grid-template|grid-rows|grid-row-start|grid-row-end|grid-row|grid-columns|grid-column-start|grid-column-end|grid-column|grid-auto-rows|grid-auto-flow|grid-auto-columns|grid-area|grid|gap|font-weight|font-variant-position|font-variant-numeric|font-variant-ligatures|font-variant-east-asian|font-variant-caps|font-variant-alternates|font-variant|font-synthesis|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|flow-into|flow-from|flood-opacity|flood-color|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|filter|fill|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-outside|display-model|display-list|display-inside|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-set|counter-reset|counter-increment|counter|count|content|contain|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color-interpolation-filters|color|collapse|clip-rule|clip-path|clip|clear|character|chains|caption-side|break-inside|break-before|break-after|break|box-suppress|box-snap|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-boundary|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-state|bookmark-level|bookmark-label|bookmark|bleed|binding|bidi|before|baseline-shift|baseline|balance|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|backface-visibility|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|all|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust)\b</string> | |
| 701 | 							<key>name</key> | |
| 702 | 							<string>support.type.property-name.css</string> | |
| 703 | 						</dict> | |
| 704 | 					</array> | |
| 705 | 				</dict> | |
| 706 | 				<dict> | |
| 707 | 					<key>begin</key> | |
| 708 | 					<string>(:)\s*</string> | |
| 709 | 					<key>beginCaptures</key> | |
| 710 | 					<dict> | |
| 711 | 						<key>1</key> | |
| 712 | 						<dict> | |
| 713 | 							<key>name</key> | |
| 714 | 							<string>punctuation.separator.key-value.css</string> | |
| 715 | 						</dict> | |
| 716 | 					</dict> | |
| 717 | 					<key>end</key> | |
| 718 | 					<string>\s*(;|(?=\}))</string> | |
| 719 | 					<key>endCaptures</key> | |
| 720 | 					<dict> | |
| 721 | 						<key>1</key> | |
| 722 | 						<dict> | |
| 723 | 							<key>name</key> | |
| 724 | 							<string>punctuation.terminator.rule.css</string> | |
| 725 | 						</dict> | |
| 726 | 					</dict> | |
| 727 | 					<key>name</key> | |
| 728 | 					<string>meta.property-value.css</string> | |
| 729 | 					<key>patterns</key> | |
| 730 | 					<array> | |
| 731 | 						<dict> | |
| 732 | 							<key>include</key> | |
| 733 | 							<string>#property-values</string> | |
| 734 | 						</dict> | |
| 735 | 					</array> | |
| 736 | 				</dict> | |
| 737 | 			</array> | |
| 738 | 		</dict> | |
| 739 | 		<key>selector</key> | |
| 740 | 		<dict> | |
| 741 | 			<key>begin</key> | |
| 742 | 			<string>\s*(?=[:.*#a-zA-Z])</string> | |
| 743 | 			<key>end</key> | |
| 744 | 			<string>(?=[/@{)])</string> | |
| 745 | 			<key>name</key> | |
| 746 | 			<string>meta.selector.css</string> | |
| 747 | 			<key>patterns</key> | |
| 748 | 			<array> | |
| 749 | 				<dict> | |
| 750 | 					<key>match</key> | |
| 751 | 					<string>\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|main|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\b</string> | |
| 752 | 					<key>name</key> | |
| 753 | 					<string>entity.name.tag.css</string> | |
| 754 | 				</dict> | |
| 755 | 				<dict> | |
| 756 | 					<key>captures</key> | |
| 757 | 					<dict> | |
| 758 | 						<key>1</key> | |
| 759 | 						<dict> | |
| 760 | 							<key>name</key> | |
| 761 | 							<string>punctuation.definition.entity.css</string> | |
| 762 | 						</dict> | |
| 763 | 					</dict> | |
| 764 | 					<key>match</key> | |
| 765 | 					<string>(\.)[a-zA-Z0-9_-]+</string> | |
| 766 | 					<key>name</key> | |
| 767 | 					<string>entity.other.attribute-name.class.css</string> | |
| 768 | 				</dict> | |
| 769 | 				<dict> | |
| 770 | 					<key>captures</key> | |
| 771 | 					<dict> | |
| 772 | 						<key>1</key> | |
| 773 | 						<dict> | |
| 774 | 							<key>name</key> | |
| 775 | 							<string>punctuation.definition.entity.css</string> | |
| 776 | 						</dict> | |
| 777 | 					</dict> | |
| 778 | 					<key>match</key> | |
| 779 | 					<string>(#)[a-zA-Z][a-zA-Z0-9_-]*</string> | |
| 780 | 					<key>name</key> | |
| 781 | 					<string>entity.other.attribute-name.id.css</string> | |
| 782 | 				</dict> | |
| 783 | 				<dict> | |
| 784 | 					<key>match</key> | |
| 785 | 					<string>\*</string> | |
| 786 | 					<key>name</key> | |
| 787 | 					<string>entity.name.tag.wildcard.css</string> | |
| 788 | 				</dict> | |
| 789 | 				<dict> | |
| 790 | 					<key>captures</key> | |
| 791 | 					<dict> | |
| 792 | 						<key>1</key> | |
| 793 | 						<dict> | |
| 794 | 							<key>name</key> | |
| 795 | 							<string>punctuation.definition.entity.css</string> | |
| 796 | 						</dict> | |
| 797 | 					</dict> | |
| 798 | 					<key>match</key> | |
| 799 | 					<string>(:+)(after|before|first-letter|first-line|selection)\b</string> | |
| 800 | 					<key>name</key> | |
| 801 | 					<string>entity.other.attribute-name.pseudo-element.css</string> | |
| 802 | 				</dict> | |
| 803 | 				<dict> | |
| 804 | 					<key>captures</key> | |
| 805 | 					<dict> | |
| 806 | 						<key>1</key> | |
| 807 | 						<dict> | |
| 808 | 							<key>name</key> | |
| 809 | 							<string>punctuation.definition.entity.css</string> | |
| 810 | 						</dict> | |
| 811 | 					</dict> | |
| 812 | 					<key>match</key> | |
| 813 | 					<string>(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\b</string> | |
| 814 | 					<key>name</key> | |
| 815 | 					<string>entity.other.attribute-name.pseudo-class.css</string> | |
| 816 | 				</dict> | |
| 817 | 				<dict> | |
| 818 | 					<key>captures</key> | |
| 819 | 					<dict> | |
| 820 | 						<key>1</key> | |
| 821 | 						<dict> | |
| 822 | 							<key>name</key> | |
| 823 | 							<string>punctuation.definition.entity.css</string> | |
| 824 | 						</dict> | |
| 825 | 					</dict> | |
| 826 | 					<key>match</key> | |
| 827 | 					<string>(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\b</string> | |
| 828 | 					<key>name</key> | |
| 829 | 					<string>entity.other.attribute-name.pseudo-class.ui-state.css</string> | |
| 830 | 				</dict> | |
| 831 | 				<dict> | |
| 832 | 					<key>begin</key> | |
| 833 | 					<string>((:)not)(\()</string> | |
| 834 | 					<key>beginCaptures</key> | |
| 835 | 					<dict> | |
| 836 | 						<key>1</key> | |
| 837 | 						<dict> | |
| 838 | 							<key>name</key> | |
| 839 | 							<string>entity.other.attribute-name.pseudo-class.css</string> | |
| 840 | 						</dict> | |
| 841 | 						<key>2</key> | |
| 842 | 						<dict> | |
| 843 | 							<key>name</key> | |
| 844 | 							<string>punctuation.definition.entity.css</string> | |
| 845 | 						</dict> | |
| 846 | 						<key>3</key> | |
| 847 | 						<dict> | |
| 848 | 							<key>name</key> | |
| 849 | 							<string>punctuation.section.function.css</string> | |
| 850 | 						</dict> | |
| 851 | 					</dict> | |
| 852 | 					<key>end</key> | |
| 853 | 					<string>\)</string> | |
| 854 | 					<key>endCaptures</key> | |
| 855 | 					<dict> | |
| 856 | 						<key>0</key> | |
| 857 | 						<dict> | |
| 858 | 							<key>name</key> | |
| 859 | 							<string>punctuation.section.function.css</string> | |
| 860 | 						</dict> | |
| 861 | 					</dict> | |
| 862 | 					<key>patterns</key> | |
| 863 | 					<array> | |
| 864 | 						<dict> | |
| 865 | 							<key>include</key> | |
| 866 | 							<string>#selector</string> | |
| 867 | 						</dict> | |
| 868 | 					</array> | |
| 869 | 				</dict> | |
| 870 | 				<dict> | |
| 871 | 					<key>captures</key> | |
| 872 | 					<dict> | |
| 873 | 						<key>1</key> | |
| 874 | 						<dict> | |
| 875 | 							<key>name</key> | |
| 876 | 							<string>entity.other.attribute-name.pseudo-class.css</string> | |
| 877 | 						</dict> | |
| 878 | 						<key>2</key> | |
| 879 | 						<dict> | |
| 880 | 							<key>name</key> | |
| 881 | 							<string>punctuation.definition.entity.css</string> | |
| 882 | 						</dict> | |
| 883 | 						<key>3</key> | |
| 884 | 						<dict> | |
| 885 | 							<key>name</key> | |
| 886 | 							<string>punctuation.section.function.css</string> | |
| 887 | 						</dict> | |
| 888 | 						<key>4</key> | |
| 889 | 						<dict> | |
| 890 | 							<key>name</key> | |
| 891 | 							<string>constant.numeric.css</string> | |
| 892 | 						</dict> | |
| 893 | 						<key>5</key> | |
| 894 | 						<dict> | |
| 895 | 							<key>name</key> | |
| 896 | 							<string>punctuation.section.function.css</string> | |
| 897 | 						</dict> | |
| 898 | 					</dict> | |
| 899 | 					<key>match</key> | |
| 900 | 					<string>((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\()(\-?(?:\d+n?|n)(?:\+\d+)?|even|odd)(\))</string> | |
| 901 | 				</dict> | |
| 902 | 				<dict> | |
| 903 | 					<key>captures</key> | |
| 904 | 					<dict> | |
| 905 | 						<key>1</key> | |
| 906 | 						<dict> | |
| 907 | 							<key>name</key> | |
| 908 | 							<string>punctuation.definition.entity.css</string> | |
| 909 | 						</dict> | |
| 910 | 					</dict> | |
| 911 | 					<key>match</key> | |
| 912 | 					<string>(:)(active|hover|link|visited|focus)\b</string> | |
| 913 | 					<key>name</key> | |
| 914 | 					<string>entity.other.attribute-name.pseudo-class.css</string> | |
| 915 | 				</dict> | |
| 916 | 				<dict> | |
| 917 | 					<key>captures</key> | |
| 918 | 					<dict> | |
| 919 | 						<key>1</key> | |
| 920 | 						<dict> | |
| 921 | 							<key>name</key> | |
| 922 | 							<string>punctuation.definition.entity.css</string> | |
| 923 | 						</dict> | |
| 924 | 						<key>2</key> | |
| 925 | 						<dict> | |
| 926 | 							<key>name</key> | |
| 927 | 							<string>entity.other.attribute-name.attribute.css</string> | |
| 928 | 						</dict> | |
| 929 | 						<key>3</key> | |
| 930 | 						<dict> | |
| 931 | 							<key>name</key> | |
| 932 | 							<string>punctuation.separator.operator.css</string> | |
| 933 | 						</dict> | |
| 934 | 						<key>4</key> | |
| 935 | 						<dict> | |
| 936 | 							<key>name</key> | |
| 937 | 							<string>string.unquoted.attribute-value.css</string> | |
| 938 | 						</dict> | |
| 939 | 						<key>5</key> | |
| 940 | 						<dict> | |
| 941 | 							<key>name</key> | |
| 942 | 							<string>string.quoted.double.attribute-value.css</string> | |
| 943 | 						</dict> | |
| 944 | 						<key>6</key> | |
| 945 | 						<dict> | |
| 946 | 							<key>name</key> | |
| 947 | 							<string>punctuation.definition.string.begin.css</string> | |
| 948 | 						</dict> | |
| 949 | 						<key>7</key> | |
| 950 | 						<dict> | |
| 951 | 							<key>name</key> | |
| 952 | 							<string>punctuation.definition.string.end.css</string> | |
| 953 | 						</dict> | |
| 954 | 					</dict> | |
| 955 | 					<key>match</key> | |
| 956 | 					<string>(?i)(\[)\s*(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)(?:\s*([~|^$*]?=)\s*(?:(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)|((?&gt;(['"])(?:[^\\]|\\.)*?(\6)))))?\s*(\])</string> | |
| 957 | 					<key>name</key> | |
| 958 | 					<string>meta.attribute-selector.css</string> | |
| 959 | 				</dict> | |
| 960 | 			</array> | |
| 961 | 		</dict> | |
| 962 | 		<key>string-double</key> | |
| 963 | 		<dict> | |
| 964 | 			<key>begin</key> | |
| 965 | 			<string>"</string> | |
| 966 | 			<key>beginCaptures</key> | |
| 967 | 			<dict> | |
| 968 | 				<key>0</key> | |
| 969 | 				<dict> | |
| 970 | 					<key>name</key> | |
| 971 | 					<string>punctuation.definition.string.begin.css</string> | |
| 972 | 				</dict> | |
| 973 | 			</dict> | |
| 974 | 			<key>end</key> | |
| 975 | 			<string>"</string> | |
| 976 | 			<key>endCaptures</key> | |
| 977 | 			<dict> | |
| 978 | 				<key>0</key> | |
| 979 | 				<dict> | |
| 980 | 					<key>name</key> | |
| 981 | 					<string>punctuation.definition.string.end.css</string> | |
| 982 | 				</dict> | |
| 983 | 			</dict> | |
| 984 | 			<key>name</key> | |
| 985 | 			<string>string.quoted.double.css</string> | |
| 986 | 			<key>patterns</key> | |
| 987 | 			<array> | |
| 988 | 				<dict> | |
| 989 | 					<key>match</key> | |
| 990 | 					<string>\\.</string> | |
| 991 | 					<key>name</key> | |
| 992 | 					<string>constant.character.escape.css</string> | |
| 993 | 				</dict> | |
| 994 | 			</array> | |
| 995 | 		</dict> | |
| 996 | 		<key>string-single</key> | |
| 997 | 		<dict> | |
| 998 | 			<key>begin</key> | |
| 999 | 			<string>'</string> | |
| 1000 | 			<key>beginCaptures</key> | |
| 1001 | 			<dict> | |
| 1002 | 				<key>0</key> | |
| 1003 | 				<dict> | |
| 1004 | 					<key>name</key> | |
| 1005 | 					<string>punctuation.definition.string.begin.css</string> | |
| 1006 | 				</dict> | |
| 1007 | 			</dict> | |
| 1008 | 			<key>end</key> | |
| 1009 | 			<string>'</string> | |
| 1010 | 			<key>endCaptures</key> | |
| 1011 | 			<dict> | |
| 1012 | 				<key>0</key> | |
| 1013 | 				<dict> | |
| 1014 | 					<key>name</key> | |
| 1015 | 					<string>punctuation.definition.string.end.css</string> | |
| 1016 | 				</dict> | |
| 1017 | 			</dict> | |
| 1018 | 			<key>name</key> | |
| 1019 | 			<string>string.quoted.single.css</string> | |
| 1020 | 			<key>patterns</key> | |
| 1021 | 			<array> | |
| 1022 | 				<dict> | |
| 1023 | 					<key>match</key> | |
| 1024 | 					<string>\\.</string> | |
| 1025 | 					<key>name</key> | |
| 1026 | 					<string>constant.character.escape.css</string> | |
| 1027 | 				</dict> | |
| 1028 | 			</array> | |
| 1029 | 		</dict> | |
| 1030 | 	</dict> | |
| 1031 | 	<key>scopeName</key> | |
| 1032 | 	<string>source.css</string> | |
| 1033 | 	<key>uuid</key> | |
| 1034 | 	<string>69AA0917-B7BB-11D9-A7E2-000D93C8BE28</string> | |
| 1035 | </dict> | |
| 1036 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/diff.plist created+268| ... | ... | @@ -0,0 +1,268 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>patch</string> | |
| 8 | 		<string>diff</string> | |
| 9 | 		<string>rej</string> | |
| 10 | 	</array> | |
| 11 | 	<key>firstLineMatch</key> | |
| 12 | 	<string>(?x)^ | |
| 13 | 		(===\ modified\ file | |
| 14 | 		|==== \s* // .+ \s - \s .+ \s+ ==== | |
| 15 | 		|Index:\ | |
| 16 | 		|---\ [^%\n] | |
| 17 | 		|\*\*\*.*\d{4}\s*$ | |
| 18 | 		|\d+(,\d+)* (a|d|c) \d+(,\d+)* $ | |
| 19 | 		|diff\ --git\ | |
| 20 | 		|commit\ [0-9a-f]{40}$ | |
| 21 | 		)</string> | |
| 22 | 	<key>keyEquivalent</key> | |
| 23 | 	<string>^~D</string> | |
| 24 | 	<key>name</key> | |
| 25 | 	<string>Diff</string> | |
| 26 | 	<key>patterns</key> | |
| 27 | 	<array> | |
| 28 | 		<dict> | |
| 29 | 			<key>captures</key> | |
| 30 | 			<dict> | |
| 31 | 				<key>1</key> | |
| 32 | 				<dict> | |
| 33 | 					<key>name</key> | |
| 34 | 					<string>punctuation.definition.separator.diff</string> | |
| 35 | 				</dict> | |
| 36 | 			</dict> | |
| 37 | 			<key>match</key> | |
| 38 | 			<string>^((\*{15})|(={67})|(-{3}))$\n?</string> | |
| 39 | 			<key>name</key> | |
| 40 | 			<string>meta.separator.diff</string> | |
| 41 | 		</dict> | |
| 42 | 		<dict> | |
| 43 | 			<key>match</key> | |
| 44 | 			<string>^\d+(,\d+)*(a|d|c)\d+(,\d+)*$\n?</string> | |
| 45 | 			<key>name</key> | |
| 46 | 			<string>meta.diff.range.normal</string> | |
| 47 | 		</dict> | |
| 48 | 		<dict> | |
| 49 | 			<key>captures</key> | |
| 50 | 			<dict> | |
| 51 | 				<key>1</key> | |
| 52 | 				<dict> | |
| 53 | 					<key>name</key> | |
| 54 | 					<string>punctuation.definition.range.diff</string> | |
| 55 | 				</dict> | |
| 56 | 				<key>2</key> | |
| 57 | 				<dict> | |
| 58 | 					<key>name</key> | |
| 59 | 					<string>meta.toc-list.line-number.diff</string> | |
| 60 | 				</dict> | |
| 61 | 				<key>3</key> | |
| 62 | 				<dict> | |
| 63 | 					<key>name</key> | |
| 64 | 					<string>punctuation.definition.range.diff</string> | |
| 65 | 				</dict> | |
| 66 | 			</dict> | |
| 67 | 			<key>match</key> | |
| 68 | 			<string>^(@@)\s*(.+?)\s*(@@.*)($\n?)?</string> | |
| 69 | 			<key>name</key> | |
| 70 | 			<string>meta.diff.range.unified</string> | |
| 71 | 		</dict> | |
| 72 | 		<dict> | |
| 73 | 			<key>captures</key> | |
| 74 | 			<dict> | |
| 75 | 				<key>3</key> | |
| 76 | 				<dict> | |
| 77 | 					<key>name</key> | |
| 78 | 					<string>punctuation.definition.range.diff</string> | |
| 79 | 				</dict> | |
| 80 | 				<key>4</key> | |
| 81 | 				<dict> | |
| 82 | 					<key>name</key> | |
| 83 | 					<string>punctuation.definition.range.diff</string> | |
| 84 | 				</dict> | |
| 85 | 				<key>6</key> | |
| 86 | 				<dict> | |
| 87 | 					<key>name</key> | |
| 88 | 					<string>punctuation.definition.range.diff</string> | |
| 89 | 				</dict> | |
| 90 | 				<key>7</key> | |
| 91 | 				<dict> | |
| 92 | 					<key>name</key> | |
| 93 | 					<string>punctuation.definition.range.diff</string> | |
| 94 | 				</dict> | |
| 95 | 			</dict> | |
| 96 | 			<key>match</key> | |
| 97 | 			<string>^(((\-{3}) .+ (\-{4}))|((\*{3}) .+ (\*{4})))$\n?</string> | |
| 98 | 			<key>name</key> | |
| 99 | 			<string>meta.diff.range.context</string> | |
| 100 | 		</dict> | |
| 101 | 		<dict> | |
| 102 | 			<key>match</key> | |
| 103 | 			<string>^diff --git a/.*$\n?</string> | |
| 104 | 			<key>name</key> | |
| 105 | 			<string>meta.diff.header.git</string> | |
| 106 | 		</dict> | |
| 107 | 		<dict> | |
| 108 | 			<key>match</key> | |
| 109 | 			<string>^diff (-|\S+\s+\S+).*$\n?</string> | |
| 110 | 			<key>name</key> | |
| 111 | 			<string>meta.diff.header.command</string> | |
| 112 | 		</dict> | |
| 113 | 		<dict> | |
| 114 | 			<key>captures</key> | |
| 115 | 			<dict> | |
| 116 | 				<key>4</key> | |
| 117 | 				<dict> | |
| 118 | 					<key>name</key> | |
| 119 | 					<string>punctuation.definition.from-file.diff</string> | |
| 120 | 				</dict> | |
| 121 | 				<key>6</key> | |
| 122 | 				<dict> | |
| 123 | 					<key>name</key> | |
| 124 | 					<string>punctuation.definition.from-file.diff</string> | |
| 125 | 				</dict> | |
| 126 | 				<key>7</key> | |
| 127 | 				<dict> | |
| 128 | 					<key>name</key> | |
| 129 | 					<string>punctuation.definition.from-file.diff</string> | |
| 130 | 				</dict> | |
| 131 | 			</dict> | |
| 132 | 			<key>match</key> | |
| 133 | 			<string>(^(((-{3}) .+)|((\*{3}) .+))$\n?|^(={4}) .+(?= - ))</string> | |
| 134 | 			<key>name</key> | |
| 135 | 			<string>meta.diff.header.from-file</string> | |
| 136 | 		</dict> | |
| 137 | 		<dict> | |
| 138 | 			<key>captures</key> | |
| 139 | 			<dict> | |
| 140 | 				<key>2</key> | |
| 141 | 				<dict> | |
| 142 | 					<key>name</key> | |
| 143 | 					<string>punctuation.definition.to-file.diff</string> | |
| 144 | 				</dict> | |
| 145 | 				<key>3</key> | |
| 146 | 				<dict> | |
| 147 | 					<key>name</key> | |
| 148 | 					<string>punctuation.definition.to-file.diff</string> | |
| 149 | 				</dict> | |
| 150 | 				<key>4</key> | |
| 151 | 				<dict> | |
| 152 | 					<key>name</key> | |
| 153 | 					<string>punctuation.definition.to-file.diff</string> | |
| 154 | 				</dict> | |
| 155 | 			</dict> | |
| 156 | 			<key>match</key> | |
| 157 | 			<string>(^(\+{3}) .+$\n?| (-) .* (={4})$\n?)</string> | |
| 158 | 			<key>name</key> | |
| 159 | 			<string>meta.diff.header.to-file</string> | |
| 160 | 		</dict> | |
| 161 | 		<dict> | |
| 162 | 			<key>captures</key> | |
| 163 | 			<dict> | |
| 164 | 				<key>3</key> | |
| 165 | 				<dict> | |
| 166 | 					<key>name</key> | |
| 167 | 					<string>punctuation.definition.inserted.diff</string> | |
| 168 | 				</dict> | |
| 169 | 				<key>6</key> | |
| 170 | 				<dict> | |
| 171 | 					<key>name</key> | |
| 172 | 					<string>punctuation.definition.inserted.diff</string> | |
| 173 | 				</dict> | |
| 174 | 			</dict> | |
| 175 | 			<key>match</key> | |
| 176 | 			<string>^(((&gt;)( .*)?)|((\+).*))$\n?</string> | |
| 177 | 			<key>name</key> | |
| 178 | 			<string>markup.inserted.diff</string> | |
| 179 | 		</dict> | |
| 180 | 		<dict> | |
| 181 | 			<key>captures</key> | |
| 182 | 			<dict> | |
| 183 | 				<key>1</key> | |
| 184 | 				<dict> | |
| 185 | 					<key>name</key> | |
| 186 | 					<string>punctuation.definition.changed.diff</string> | |
| 187 | 				</dict> | |
| 188 | 			</dict> | |
| 189 | 			<key>match</key> | |
| 190 | 			<string>^(!).*$\n?</string> | |
| 191 | 			<key>name</key> | |
| 192 | 			<string>markup.changed.diff</string> | |
| 193 | 		</dict> | |
| 194 | 		<dict> | |
| 195 | 			<key>captures</key> | |
| 196 | 			<dict> | |
| 197 | 				<key>3</key> | |
| 198 | 				<dict> | |
| 199 | 					<key>name</key> | |
| 200 | 					<string>punctuation.definition.deleted.diff</string> | |
| 201 | 				</dict> | |
| 202 | 				<key>6</key> | |
| 203 | 				<dict> | |
| 204 | 					<key>name</key> | |
| 205 | 					<string>punctuation.definition.deleted.diff</string> | |
| 206 | 				</dict> | |
| 207 | 			</dict> | |
| 208 | 			<key>match</key> | |
| 209 | 			<string>^(((&lt;)( .*)?)|((-).*))$\n?</string> | |
| 210 | 			<key>name</key> | |
| 211 | 			<string>markup.deleted.diff</string> | |
| 212 | 		</dict> | |
| 213 | 		<dict> | |
| 214 | 			<key>begin</key> | |
| 215 | 			<string>^(#)</string> | |
| 216 | 			<key>captures</key> | |
| 217 | 			<dict> | |
| 218 | 				<key>1</key> | |
| 219 | 				<dict> | |
| 220 | 					<key>name</key> | |
| 221 | 					<string>punctuation.definition.comment.diff</string> | |
| 222 | 				</dict> | |
| 223 | 			</dict> | |
| 224 | 			<key>comment</key> | |
| 225 | 			<string>Git produces unified diffs with embedded comments"</string> | |
| 226 | 			<key>end</key> | |
| 227 | 			<string>\n</string> | |
| 228 | 			<key>name</key> | |
| 229 | 			<string>comment.line.number-sign.diff</string> | |
| 230 | 		</dict> | |
| 231 | 		<dict> | |
| 232 | 			<key>match</key> | |
| 233 | 			<string>^index [0-9a-f]{7,40}\.\.[0-9a-f]{7,40}.*$\n?</string> | |
| 234 | 			<key>name</key> | |
| 235 | 			<string>meta.diff.index.git</string> | |
| 236 | 		</dict> | |
| 237 | 		<dict> | |
| 238 | 			<key>captures</key> | |
| 239 | 			<dict> | |
| 240 | 				<key>1</key> | |
| 241 | 				<dict> | |
| 242 | 					<key>name</key> | |
| 243 | 					<string>punctuation.separator.key-value.diff</string> | |
| 244 | 				</dict> | |
| 245 | 				<key>2</key> | |
| 246 | 				<dict> | |
| 247 | 					<key>name</key> | |
| 248 | 					<string>meta.toc-list.file-name.diff</string> | |
| 249 | 				</dict> | |
| 250 | 			</dict> | |
| 251 | 			<key>match</key> | |
| 252 | 			<string>^Index(:) (.+)$\n?</string> | |
| 253 | 			<key>name</key> | |
| 254 | 			<string>meta.diff.index</string> | |
| 255 | 		</dict> | |
| 256 | 		<dict> | |
| 257 | 			<key>match</key> | |
| 258 | 			<string>^Only in .*: .*$\n?</string> | |
| 259 | 			<key>name</key> | |
| 260 | 			<string>meta.diff.only-in</string> | |
| 261 | 		</dict> | |
| 262 | 	</array> | |
| 263 | 	<key>scopeName</key> | |
| 264 | 	<string>source.diff</string> | |
| 265 | 	<key>uuid</key> | |
| 266 | 	<string>7E848FF4-708E-11D9-97B4-0011242E4184</string> | |
| 267 | </dict> | |
| 268 | </plist> |
src/file-viewer/highlight-grammar/dosbatch.plist created+169| ... | ... | @@ -0,0 +1,169 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8" ?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | <key>uuid</key> | |
| 6 | <string>E07EC438-7B75-4437-8AA1-DA94C1E6EACC</string> | |
| 7 | <key>patterns</key> | |
| 8 | <array> | |
| 9 | <dict> | |
| 10 | <key>name</key> | |
| 11 | <string>keyword.command.dosbatch</string> | |
| 12 | <key>match</key> | |
| 13 | <string>\b(?i)(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\b</string> | |
| 14 | </dict> | |
| 15 | <dict> | |
| 16 | <key>name</key> | |
| 17 | <string>keyword.control.statement.dosbatch</string> | |
| 18 | <key>match</key> | |
| 19 | <string>\b(?i)(?:goto|call|exit)\b</string> | |
| 20 | </dict> | |
| 21 | <dict> | |
| 22 | <key>name</key> | |
| 23 | <string>keyword.control.conditional.if.dosbatch</string> | |
| 24 | <key>match</key> | |
| 25 | <string>\b(?i)if\s+((not)\s+)(exist|defined|errorlevel|cmdextversion)\b</string> | |
| 26 | </dict> | |
| 27 | <dict> | |
| 28 | <key>name</key> | |
| 29 | <string>keyword.control.conditional.dosbatch</string> | |
| 30 | <key>match</key> | |
| 31 | <string>\b(?i)(?:if|else)\b</string> | |
| 32 | </dict> | |
| 33 | <dict> | |
| 34 | <key>name</key> | |
| 35 | <string>keyword.control.repeat.dosbatch</string> | |
| 36 | <key>match</key> | |
| 37 | <string>\b(?i)for\b</string> | |
| 38 | </dict> | |
| 39 | <dict> | |
| 40 | <key>name</key> | |
| 41 | <string>keyword.operator.dosbatch</string> | |
| 42 | <key>match</key> | |
| 43 | <string>\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\b</string> | |
| 44 | </dict> | |
| 45 | <dict> | |
| 46 | <key>name</key> | |
| 47 | <string>comment.line.rem.dosbatch</string> | |
| 48 | <key>match</key> | |
| 49 | <string>\b(?i)rem(?:$|\s.*$)</string> | |
| 50 | </dict> | |
| 51 | <dict> | |
| 52 | <key>name</key> | |
| 53 | <string>comment.line.colons.dosbatch</string> | |
| 54 | <key>match</key> | |
| 55 | <string>\s*:\s*:.*$</string> | |
| 56 | </dict> | |
| 57 | <dict> | |
| 58 | <key>captures</key> | |
| 59 | <dict> | |
| 60 | <key>1</key> | |
| 61 | <dict> | |
| 62 | <key>name</key> | |
| 63 | <string>variable.parameter.function.begin.shell</string> | |
| 64 | </dict> | |
| 65 | </dict> | |
| 66 | <key>name</key> | |
| 67 | <string>variable.parameter.function.dosbatch</string> | |
| 68 | <key>match</key> | |
| 69 | <string>(?i)(%)(~(?:f|d|p|n|x|s|a|t|z|\$[^:]*:)*)?\d</string> | |
| 70 | </dict> | |
| 71 | <dict> | |
| 72 | <key>captures</key> | |
| 73 | <dict> | |
| 74 | <key>1</key> | |
| 75 | <dict> | |
| 76 | <key>name</key> | |
| 77 | <string>variable.parameter.loop.begin.shell</string> | |
| 78 | </dict> | |
| 79 | </dict> | |
| 80 | <key>name</key> | |
| 81 | <string>variable.parameter.loop.dosbatch</string> | |
| 82 | <key>match</key> | |
| 83 | <string>(?i)(%%)(~(?:f|d|p|n|x|s|a|t|z|\$[^:]*:)*)?[a-z]</string> | |
| 84 | </dict> | |
| 85 | <dict> | |
| 86 | <key>captures</key> | |
| 87 | <dict> | |
| 88 | <key>1</key> | |
| 89 | <dict> | |
| 90 | <key>name</key> | |
| 91 | <string>variable.other.parsetime.begin.shell</string> | |
| 92 | </dict> | |
| 93 | <key>2</key> | |
| 94 | <dict> | |
| 95 | <key>name</key> | |
| 96 | <string>variable.other.parsetime.end.shell</string> | |
| 97 | </dict> | |
| 98 | </dict> | |
| 99 | <key>name</key> | |
| 100 | <string>variable.other.parsetime.dosbatch</string> | |
| 101 | <key>match</key> | |
| 102 | <string>(%)[^%]+(%)</string> | |
| 103 | </dict> | |
| 104 | <dict> | |
| 105 | <key>captures</key> | |
| 106 | <dict> | |
| 107 | <key>1</key> | |
| 108 | <dict> | |
| 109 | <key>name</key> | |
| 110 | <string>variable.other.delayed.begin.shell</string> | |
| 111 | </dict> | |
| 112 | <key>2</key> | |
| 113 | <dict> | |
| 114 | <key>name</key> | |
| 115 | <string>variable.other.delayed.end.shell</string> | |
| 116 | </dict> | |
| 117 | </dict> | |
| 118 | <key>name</key> | |
| 119 | <string>variable.other.delayed.dosbatch</string> | |
| 120 | <key>match</key> | |
| 121 | <string>(!)[^!]+(!)</string> | |
| 122 | </dict> | |
| 123 | <dict> | |
| 124 | <key>begin</key> | |
| 125 | <string>"</string> | |
| 126 | <key>endCaptures</key> | |
| 127 | <dict> | |
| 128 | <key>0</key> | |
| 129 | <dict> | |
| 130 | <key>name</key> | |
| 131 | <string>punctuation.definition.string.end.shell</string> | |
| 132 | </dict> | |
| 133 | </dict> | |
| 134 | <key>beginCaptures</key> | |
| 135 | <dict> | |
| 136 | <key>0</key> | |
| 137 | <dict> | |
| 138 | <key>name</key> | |
| 139 | <string>punctuation.definition.string.begin.shell</string> | |
| 140 | </dict> | |
| 141 | </dict> | |
| 142 | <key>name</key> | |
| 143 | <string>string.quoted.double.dosbatch</string> | |
| 144 | <key>end</key> | |
| 145 | <string>"|$</string> | |
| 146 | </dict> | |
| 147 | <dict> | |
| 148 | <key>name</key> | |
| 149 | <string>keyword.operator.pipe.dosbatch</string> | |
| 150 | <key>match</key> | |
| 151 | <string>[|]</string> | |
| 152 | </dict> | |
| 153 | <dict> | |
| 154 | <key>name</key> | |
| 155 | <string>keyword.operator.redirect.shell</string> | |
| 156 | <key>match</key> | |
| 157 | <string>&amp;&gt;|\d*&gt;&amp;\d*|\d*(&gt;&gt;|&gt;|&lt;)|\d*&lt;&amp;|\d*&lt;&gt;</string> | |
| 158 | </dict> | |
| 159 | </array> | |
| 160 | <key>name</key> | |
| 161 | <string>Batch File</string> | |
| 162 | <key>scopeName</key> | |
| 163 | <string>source.dosbatch</string> | |
| 164 | <key>fileTypes</key> | |
| 165 | <array> | |
| 166 | <string>bat</string> | |
| 167 | </array> | |
| 168 | </dict> | |
| 169 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/json.plist created+386| ... | ... | @@ -0,0 +1,386 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>json</string> | |
| 8 | 		<string>sublime-settings</string> | |
| 9 | 		<string>sublime-menu</string> | |
| 10 | 		<string>sublime-keymap</string> | |
| 11 | 		<string>sublime-mousemap</string> | |
| 12 | 		<string>sublime-theme</string> | |
| 13 | 		<string>sublime-build</string> | |
| 14 | 		<string>sublime-project</string> | |
| 15 | 		<string>sublime-completions</string> | |
| 16 | 	</array> | |
| 17 | 	<key>foldingStartMarker</key> | |
| 18 | 	<string>(?x) # turn on extended mode | |
| 19 | ^ # a line beginning with | |
| 20 | \s* # some optional space | |
| 21 | [{\[] # the start of an object or array | |
| 22 | (?! # but not followed by | |
| 23 | .* # whatever | |
| 24 | [}\]] # and the close of an object or array | |
| 25 | ,? # an optional comma | |
| 26 | \s* # some optional space | |
| 27 | $ # at the end of the line | |
| 28 | ) | |
| 29 | | # ...or... | |
| 30 | [{\[] # the start of an object or array | |
| 31 | \s* # some optional space | |
| 32 | $ # at the end of the line</string> | |
| 33 | 	<key>foldingStopMarker</key> | |
| 34 | 	<string>(?x) # turn on extended mode | |
| 35 | ^ # a line beginning with | |
| 36 | \s* # some optional space | |
| 37 | [}\]] # and the close of an object or array</string> | |
| 38 | 	<key>keyEquivalent</key> | |
| 39 | 	<string>^~J</string> | |
| 40 | 	<key>name</key> | |
| 41 | 	<string>JSON (Javascript Next)</string> | |
| 42 | 	<key>patterns</key> | |
| 43 | 	<array> | |
| 44 | 		<dict> | |
| 45 | 			<key>include</key> | |
| 46 | 			<string>#value</string> | |
| 47 | 		</dict> | |
| 48 | 	</array> | |
| 49 | 	<key>repository</key> | |
| 50 | 	<dict> | |
| 51 | 		<key>array</key> | |
| 52 | 		<dict> | |
| 53 | 			<key>begin</key> | |
| 54 | 			<string>\[</string> | |
| 55 | 			<key>beginCaptures</key> | |
| 56 | 			<dict> | |
| 57 | 				<key>0</key> | |
| 58 | 				<dict> | |
| 59 | 					<key>name</key> | |
| 60 | 					<string>punctuation.definition.array.begin.json</string> | |
| 61 | 				</dict> | |
| 62 | 			</dict> | |
| 63 | 			<key>end</key> | |
| 64 | 			<string>\]</string> | |
| 65 | 			<key>endCaptures</key> | |
| 66 | 			<dict> | |
| 67 | 				<key>0</key> | |
| 68 | 				<dict> | |
| 69 | 					<key>name</key> | |
| 70 | 					<string>punctuation.definition.array.end.json</string> | |
| 71 | 				</dict> | |
| 72 | 			</dict> | |
| 73 | 			<key>name</key> | |
| 74 | 			<string>meta.structure.array.json</string> | |
| 75 | 			<key>patterns</key> | |
| 76 | 			<array> | |
| 77 | 				<dict> | |
| 78 | 					<key>include</key> | |
| 79 | 					<string>#value</string> | |
| 80 | 				</dict> | |
| 81 | 				<dict> | |
| 82 | 					<key>match</key> | |
| 83 | 					<string>,</string> | |
| 84 | 					<key>name</key> | |
| 85 | 					<string>punctuation.separator.array.json</string> | |
| 86 | 				</dict> | |
| 87 | 				<dict> | |
| 88 | 					<key>match</key> | |
| 89 | 					<string>[^\s\]]</string> | |
| 90 | 					<key>name</key> | |
| 91 | 					<string>invalid.illegal.expected-array-separator.json</string> | |
| 92 | 				</dict> | |
| 93 | 			</array> | |
| 94 | 		</dict> | |
| 95 | 		<key>comments</key> | |
| 96 | 		<dict> | |
| 97 | 			<key>patterns</key> | |
| 98 | 			<array> | |
| 99 | 				<dict> | |
| 100 | 					<key>begin</key> | |
| 101 | 					<string>/\*\*(?!/)</string> | |
| 102 | 					<key>captures</key> | |
| 103 | 					<dict> | |
| 104 | 						<key>0</key> | |
| 105 | 						<dict> | |
| 106 | 							<key>name</key> | |
| 107 | 							<string>punctuation.definition.comment.json</string> | |
| 108 | 						</dict> | |
| 109 | 					</dict> | |
| 110 | 					<key>end</key> | |
| 111 | 					<string>\*/</string> | |
| 112 | 					<key>name</key> | |
| 113 | 					<string>comment.block.documentation.json</string> | |
| 114 | 				</dict> | |
| 115 | 				<dict> | |
| 116 | 					<key>begin</key> | |
| 117 | 					<string>/\*</string> | |
| 118 | 					<key>captures</key> | |
| 119 | 					<dict> | |
| 120 | 						<key>0</key> | |
| 121 | 						<dict> | |
| 122 | 							<key>name</key> | |
| 123 | 							<string>punctuation.definition.comment.json</string> | |
| 124 | 						</dict> | |
| 125 | 					</dict> | |
| 126 | 					<key>end</key> | |
| 127 | 					<string>\*/</string> | |
| 128 | 					<key>name</key> | |
| 129 | 					<string>comment.block.json</string> | |
| 130 | 				</dict> | |
| 131 | 				<dict> | |
| 132 | 					<key>captures</key> | |
| 133 | 					<dict> | |
| 134 | 						<key>1</key> | |
| 135 | 						<dict> | |
| 136 | 							<key>name</key> | |
| 137 | 							<string>punctuation.definition.comment.json</string> | |
| 138 | 						</dict> | |
| 139 | 					</dict> | |
| 140 | 					<key>match</key> | |
| 141 | 					<string>(//).*$\n?</string> | |
| 142 | 					<key>name</key> | |
| 143 | 					<string>comment.line.double-slash.js</string> | |
| 144 | 				</dict> | |
| 145 | 			</array> | |
| 146 | 		</dict> | |
| 147 | 		<key>constant</key> | |
| 148 | 		<dict> | |
| 149 | 			<key>match</key> | |
| 150 | 			<string>\b(?:true|false|null)\b</string> | |
| 151 | 			<key>name</key> | |
| 152 | 			<string>constant.language.json</string> | |
| 153 | 		</dict> | |
| 154 | 		<key>number</key> | |
| 155 | 		<dict> | |
| 156 | 			<key>match</key> | |
| 157 | 			<string>(?x) # turn on extended mode | |
| 158 | -? # an optional minus | |
| 159 | (?: | |
| 160 | 0 # a zero | |
| 161 | | # ...or... | |
| 162 | [1-9] # a 1-9 character | |
| 163 | \d* # followed by zero or more digits | |
| 164 | ) | |
| 165 | (?: | |
| 166 | (?: | |
| 167 | \. # a period | |
| 168 | \d+ # followed by one or more digits | |
| 169 | )? | |
| 170 | (?: | |
| 171 | [eE] # an e character | |
| 172 | [+-]? # followed by an option +/- | |
| 173 | \d+ # followed by one or more digits | |
| 174 | )? # make exponent optional | |
| 175 | )? # make decimal portion optional</string> | |
| 176 | 			<key>name</key> | |
| 177 | 			<string>constant.numeric.json</string> | |
| 178 | 		</dict> | |
| 179 | 		<key>object</key> | |
| 180 | 		<dict> | |
| 181 | 			<key>begin</key> | |
| 182 | 			<string>\{</string> | |
| 183 | 			<key>beginCaptures</key> | |
| 184 | 			<dict> | |
| 185 | 				<key>0</key> | |
| 186 | 				<dict> | |
| 187 | 					<key>name</key> | |
| 188 | 					<string>punctuation.definition.dictionary.begin.json</string> | |
| 189 | 				</dict> | |
| 190 | 			</dict> | |
| 191 | 			<key>end</key> | |
| 192 | 			<string>\}</string> | |
| 193 | 			<key>endCaptures</key> | |
| 194 | 			<dict> | |
| 195 | 				<key>0</key> | |
| 196 | 				<dict> | |
| 197 | 					<key>name</key> | |
| 198 | 					<string>punctuation.definition.dictionary.end.json</string> | |
| 199 | 				</dict> | |
| 200 | 			</dict> | |
| 201 | 			<key>name</key> | |
| 202 | 			<string>meta.structure.dictionary.json</string> | |
| 203 | 			<key>patterns</key> | |
| 204 | 			<array> | |
| 205 | 				<dict> | |
| 206 | 					<key>comment</key> | |
| 207 | 					<string>the JSON object key</string> | |
| 208 | 					<key>include</key> | |
| 209 | 					<string>#objectkey</string> | |
| 210 | 				</dict> | |
| 211 | 				<dict> | |
| 212 | 					<key>include</key> | |
| 213 | 					<string>#comments</string> | |
| 214 | 				</dict> | |
| 215 | 				<dict> | |
| 216 | 					<key>begin</key> | |
| 217 | 					<string>:</string> | |
| 218 | 					<key>beginCaptures</key> | |
| 219 | 					<dict> | |
| 220 | 						<key>0</key> | |
| 221 | 						<dict> | |
| 222 | 							<key>name</key> | |
| 223 | 							<string>punctuation.separator.dictionary.key-value.json</string> | |
| 224 | 						</dict> | |
| 225 | 					</dict> | |
| 226 | 					<key>end</key> | |
| 227 | 					<string>(,)|(?=\})</string> | |
| 228 | 					<key>endCaptures</key> | |
| 229 | 					<dict> | |
| 230 | 						<key>1</key> | |
| 231 | 						<dict> | |
| 232 | 							<key>name</key> | |
| 233 | 							<string>punctuation.separator.dictionary.pair.json</string> | |
| 234 | 						</dict> | |
| 235 | 					</dict> | |
| 236 | 					<key>name</key> | |
| 237 | 					<string>meta.structure.dictionary.value.json</string> | |
| 238 | 					<key>patterns</key> | |
| 239 | 					<array> | |
| 240 | 						<dict> | |
| 241 | 							<key>comment</key> | |
| 242 | 							<string>the JSON object value</string> | |
| 243 | 							<key>include</key> | |
| 244 | 							<string>#value</string> | |
| 245 | 						</dict> | |
| 246 | 						<dict> | |
| 247 | 							<key>match</key> | |
| 248 | 							<string>[^\s,]</string> | |
| 249 | 							<key>name</key> | |
| 250 | 							<string>invalid.illegal.expected-dictionary-separator.json</string> | |
| 251 | 						</dict> | |
| 252 | 					</array> | |
| 253 | 				</dict> | |
| 254 | 				<dict> | |
| 255 | 					<key>match</key> | |
| 256 | 					<string>[^\s\}]</string> | |
| 257 | 					<key>name</key> | |
| 258 | 					<string>invalid.illegal.expected-dictionary-separator.json</string> | |
| 259 | 				</dict> | |
| 260 | 			</array> | |
| 261 | 		</dict> | |
| 262 | 		<key>string</key> | |
| 263 | 		<dict> | |
| 264 | 			<key>begin</key> | |
| 265 | 			<string>"</string> | |
| 266 | 			<key>beginCaptures</key> | |
| 267 | 			<dict> | |
| 268 | 				<key>0</key> | |
| 269 | 				<dict> | |
| 270 | 					<key>name</key> | |
| 271 | 					<string>punctuation.definition.string.begin.json</string> | |
| 272 | 				</dict> | |
| 273 | 			</dict> | |
| 274 | 			<key>end</key> | |
| 275 | 			<string>"</string> | |
| 276 | 			<key>endCaptures</key> | |
| 277 | 			<dict> | |
| 278 | 				<key>0</key> | |
| 279 | 				<dict> | |
| 280 | 					<key>name</key> | |
| 281 | 					<string>punctuation.definition.string.end.json</string> | |
| 282 | 				</dict> | |
| 283 | 			</dict> | |
| 284 | 			<key>name</key> | |
| 285 | 			<string>string.quoted.double.json</string> | |
| 286 | 			<key>patterns</key> | |
| 287 | 			<array> | |
| 288 | 				<dict> | |
| 289 | 					<key>include</key> | |
| 290 | 					<string>#stringcontent</string> | |
| 291 | 				</dict> | |
| 292 | 			</array> | |
| 293 | 		</dict> | |
| 294 | 		<key>objectkey</key> | |
| 295 | 		<dict> | |
| 296 | 			<key>begin</key> | |
| 297 | 			<string>"</string> | |
| 298 | 			<key>beginCaptures</key> | |
| 299 | 			<dict> | |
| 300 | 				<key>0</key> | |
| 301 | 				<dict> | |
| 302 | 					<key>name</key> | |
| 303 | 					<string>punctuation.support.type.property-name.begin.json</string> | |
| 304 | 				</dict> | |
| 305 | 			</dict> | |
| 306 | 			<key>end</key> | |
| 307 | 			<string>"</string> | |
| 308 | 			<key>endCaptures</key> | |
| 309 | 			<dict> | |
| 310 | 				<key>0</key> | |
| 311 | 				<dict> | |
| 312 | 					<key>name</key> | |
| 313 | 					<string>punctuation.support.type.property-name.end.json</string> | |
| 314 | 				</dict> | |
| 315 | 			</dict> | |
| 316 | 			<key>name</key> | |
| 317 | 			<string>string.json support.type.property-name.json</string> | |
| 318 | 			<key>patterns</key> | |
| 319 | 			<array> | |
| 320 | 				<dict> | |
| 321 | 					<key>include</key> | |
| 322 | 					<string>#stringcontent</string> | |
| 323 | 				</dict> | |
| 324 | 			</array> | |
| 325 | 		</dict> | |
| 326 | 		<key>stringcontent</key> | |
| 327 | 		<dict> | |
| 328 | 			<key>patterns</key> | |
| 329 | 			<array> | |
| 330 | 				<dict> | |
| 331 | 					<key>match</key> | |
| 332 | 					<string>(?x) # turn on extended mode | |
| 333 | \\ # a literal backslash | |
| 334 | (?: # ...followed by... | |
| 335 | ["\\/bfnrt] # one of these characters | |
| 336 | | # ...or... | |
| 337 | u # a u | |
| 338 | [0-9a-fA-F]{4}) # and four hex digits</string> | |
| 339 | 					<key>name</key> | |
| 340 | 					<string>constant.character.escape.json</string> | |
| 341 | 				</dict> | |
| 342 | 				<dict> | |
| 343 | 					<key>match</key> | |
| 344 | 					<string>\\.</string> | |
| 345 | 					<key>name</key> | |
| 346 | 					<string>invalid.illegal.unrecognized-string-escape.json</string> | |
| 347 | 				</dict> | |
| 348 | 			</array> | |
| 349 | 		</dict> | |
| 350 | 		<key>value</key> | |
| 351 | 		<dict> | |
| 352 | 			<key>patterns</key> | |
| 353 | 			<array> | |
| 354 | 				<dict> | |
| 355 | 					<key>include</key> | |
| 356 | 					<string>#constant</string> | |
| 357 | 				</dict> | |
| 358 | 				<dict> | |
| 359 | 					<key>include</key> | |
| 360 | 					<string>#number</string> | |
| 361 | 				</dict> | |
| 362 | 				<dict> | |
| 363 | 					<key>include</key> | |
| 364 | 					<string>#string</string> | |
| 365 | 				</dict> | |
| 366 | 				<dict> | |
| 367 | 					<key>include</key> | |
| 368 | 					<string>#array</string> | |
| 369 | 				</dict> | |
| 370 | 				<dict> | |
| 371 | 					<key>include</key> | |
| 372 | 					<string>#object</string> | |
| 373 | 				</dict> | |
| 374 | 				<dict> | |
| 375 | 					<key>include</key> | |
| 376 | 					<string>#comments</string> | |
| 377 | 				</dict> | |
| 378 | 			</array> | |
| 379 | 		</dict> | |
| 380 | 	</dict> | |
| 381 | 	<key>scopeName</key> | |
| 382 | 	<string>source.json</string> | |
| 383 | 	<key>uuid</key> | |
| 384 | 	<string>8f97457b-516e-48ce-83c7-08ae12fb327a</string> | |
| 385 | </dict> | |
| 386 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/lua.plist created+1462| ... | ... | @@ -0,0 +1,1462 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | <key>name</key> | |
| 6 | <string>Lua</string> | |
| 7 | <key>scopeName</key> | |
| 8 | <string>source.lua</string> | |
| 9 | <key>patterns</key> | |
| 10 | <array> | |
| 11 | <dict> | |
| 12 | <key>begin</key> | |
| 13 | <string>\b(?:(local)\s+)?(function)\b(?![,:])</string> | |
| 14 | <key>beginCaptures</key> | |
| 15 | <dict> | |
| 16 | <key>1</key> | |
| 17 | <dict> | |
| 18 | <key>name</key> | |
| 19 | <string>keyword.local.lua</string> | |
| 20 | </dict> | |
| 21 | <key>2</key> | |
| 22 | <dict> | |
| 23 | <key>name</key> | |
| 24 | <string>keyword.control.lua</string> | |
| 25 | </dict> | |
| 26 | </dict> | |
| 27 | <key>end</key> | |
| 28 | <string>(?&lt;=[\)\-{}\[\]"'])</string> | |
| 29 | <key>name</key> | |
| 30 | <string>meta.function.lua</string> | |
| 31 | <key>patterns</key> | |
| 32 | <array> | |
| 33 | <dict> | |
| 34 | <key>include</key> | |
| 35 | <string>#comment</string> | |
| 36 | </dict> | |
| 37 | <dict> | |
| 38 | <key>begin</key> | |
| 39 | <string>(\()</string> | |
| 40 | <key>beginCaptures</key> | |
| 41 | <dict> | |
| 42 | <key>1</key> | |
| 43 | <dict> | |
| 44 | <key>name</key> | |
| 45 | <string>punctuation.definition.parameters.begin.lua</string> | |
| 46 | </dict> | |
| 47 | </dict> | |
| 48 | <key>end</key> | |
| 49 | <string>(\))|(?=[\-\.{}\[\]"'])</string> | |
| 50 | <key>endCaptures</key> | |
| 51 | <dict> | |
| 52 | <key>1</key> | |
| 53 | <dict> | |
| 54 | <key>name</key> | |
| 55 | <string>punctuation.definition.parameters.finish.lua</string> | |
| 56 | </dict> | |
| 57 | </dict> | |
| 58 | <key>name</key> | |
| 59 | <string>meta.parameter.lua</string> | |
| 60 | <key>patterns</key> | |
| 61 | <array> | |
| 62 | <dict> | |
| 63 | <key>include</key> | |
| 64 | <string>#comment</string> | |
| 65 | </dict> | |
| 66 | <dict> | |
| 67 | <key>match</key> | |
| 68 | <string>[a-zA-Z_][a-zA-Z0-9_]*</string> | |
| 69 | <key>name</key> | |
| 70 | <string>variable.parameter.function.lua</string> | |
| 71 | </dict> | |
| 72 | <dict> | |
| 73 | <key>match</key> | |
| 74 | <string>,</string> | |
| 75 | <key>name</key> | |
| 76 | <string>punctuation.separator.arguments.lua</string> | |
| 77 | </dict> | |
| 78 | <dict> | |
| 79 | <key>begin</key> | |
| 80 | <string>:</string> | |
| 81 | <key>beginCaptures</key> | |
| 82 | <dict> | |
| 83 | <key>0</key> | |
| 84 | <dict> | |
| 85 | <key>name</key> | |
| 86 | <string>punctuation.separator.arguments.lua</string> | |
| 87 | </dict> | |
| 88 | </dict> | |
| 89 | <key>end</key> | |
| 90 | <string>(?=[\),])</string> | |
| 91 | <key>patterns</key> | |
| 92 | <array> | |
| 93 | <dict> | |
| 94 | <key>include</key> | |
| 95 | <string>#emmydoc.type</string> | |
| 96 | </dict> | |
| 97 | </array> | |
| 98 | </dict> | |
| 99 | </array> | |
| 100 | </dict> | |
| 101 | <dict> | |
| 102 | <key>match</key> | |
| 103 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b\s*(?=:)</string> | |
| 104 | <key>name</key> | |
| 105 | <string>entity.name.class.lua</string> | |
| 106 | </dict> | |
| 107 | <dict> | |
| 108 | <key>match</key> | |
| 109 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b</string> | |
| 110 | <key>name</key> | |
| 111 | <string>entity.name.function.lua</string> | |
| 112 | </dict> | |
| 113 | </array> | |
| 114 | </dict> | |
| 115 | <dict> | |
| 116 | <key>match</key> | |
| 117 | <string>(?&lt;![\w\d.])0[xX][0-9A-Fa-f]+(\.[0-9A-Fa-f]*)?([eE]-?\d*)?([pP][-+]\d+)?</string> | |
| 118 | <key>name</key> | |
| 119 | <string>constant.numeric.float.hexadecimal.lua</string> | |
| 120 | </dict> | |
| 121 | <dict> | |
| 122 | <key>match</key> | |
| 123 | <string>(?&lt;![\w\d.])0[xX]\.[0-9A-Fa-f]+([eE]-?\d*)?([pP][-+]\d+)?</string> | |
| 124 | <key>name</key> | |
| 125 | <string>constant.numeric.float.hexadecimal.lua</string> | |
| 126 | </dict> | |
| 127 | <dict> | |
| 128 | <key>match</key> | |
| 129 | <string>(?&lt;![\w\d.])0[xX][0-9A-Fa-f]+(?![pPeE.0-9])</string> | |
| 130 | <key>name</key> | |
| 131 | <string>constant.numeric.integer.hexadecimal.lua</string> | |
| 132 | </dict> | |
| 133 | <dict> | |
| 134 | <key>match</key> | |
| 135 | <string>(?&lt;![\w\d.])\d+(\.\d*)?([eE]-?\d*)?</string> | |
| 136 | <key>name</key> | |
| 137 | <string>constant.numeric.float.lua</string> | |
| 138 | </dict> | |
| 139 | <dict> | |
| 140 | <key>match</key> | |
| 141 | <string>(?&lt;![\w\d.])\.\d+([eE]-?\d*)?</string> | |
| 142 | <key>name</key> | |
| 143 | <string>constant.numeric.float.lua</string> | |
| 144 | </dict> | |
| 145 | <dict> | |
| 146 | <key>match</key> | |
| 147 | <string>(?&lt;![\w\d.])\d+(?![pPeE.0-9])</string> | |
| 148 | <key>name</key> | |
| 149 | <string>constant.numeric.integer.lua</string> | |
| 150 | </dict> | |
| 151 | <dict> | |
| 152 | <key>include</key> | |
| 153 | <string>#string</string> | |
| 154 | </dict> | |
| 155 | <dict> | |
| 156 | <key>captures</key> | |
| 157 | <dict> | |
| 158 | <key>1</key> | |
| 159 | <dict> | |
| 160 | <key>name</key> | |
| 161 | <string>punctuation.definition.comment.lua</string> | |
| 162 | </dict> | |
| 163 | </dict> | |
| 164 | <key>match</key> | |
| 165 | <string>\A(#!).*$\n?</string> | |
| 166 | <key>name</key> | |
| 167 | <string>comment.line.shebang.lua</string> | |
| 168 | </dict> | |
| 169 | <dict> | |
| 170 | <key>include</key> | |
| 171 | <string>#comment</string> | |
| 172 | </dict> | |
| 173 | <dict> | |
| 174 | <key>captures</key> | |
| 175 | <dict> | |
| 176 | <key>1</key> | |
| 177 | <dict> | |
| 178 | <key>name</key> | |
| 179 | <string>keyword.control.goto.lua</string> | |
| 180 | </dict> | |
| 181 | <key>2</key> | |
| 182 | <dict> | |
| 183 | <key>name</key> | |
| 184 | <string>string.tag.lua</string> | |
| 185 | </dict> | |
| 186 | </dict> | |
| 187 | <key>match</key> | |
| 188 | <string>\b(goto)\s+([a-zA-Z_][a-zA-Z0-9_]*)</string> | |
| 189 | </dict> | |
| 190 | <dict> | |
| 191 | <key>captures</key> | |
| 192 | <dict> | |
| 193 | <key>1</key> | |
| 194 | <dict> | |
| 195 | <key>name</key> | |
| 196 | <string>punctuation.section.embedded.begin.lua</string> | |
| 197 | </dict> | |
| 198 | <key>2</key> | |
| 199 | <dict> | |
| 200 | <key>name</key> | |
| 201 | <string>punctuation.section.embedded.end.lua</string> | |
| 202 | </dict> | |
| 203 | </dict> | |
| 204 | <key>match</key> | |
| 205 | <string>(::)\s*[a-zA-Z_][a-zA-Z0-9_]*\s*(::)</string> | |
| 206 | <key>name</key> | |
| 207 | <string>string.tag.lua</string> | |
| 208 | </dict> | |
| 209 | <dict> | |
| 210 | <key>match</key> | |
| 211 | <string>&lt;\s*(const|close)\s*&gt;</string> | |
| 212 | <key>captures</key> | |
| 213 | <dict> | |
| 214 | <key>0</key> | |
| 215 | <dict> | |
| 216 | <key>name</key> | |
| 217 | <string>storage.type.attribute.lua</string> | |
| 218 | </dict> | |
| 219 | </dict> | |
| 220 | </dict> | |
| 221 | <dict> | |
| 222 | <key>match</key> | |
| 223 | <string>\&lt;[a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*\&gt;</string> | |
| 224 | <key>name</key> | |
| 225 | <string>storage.type.generic.lua</string> | |
| 226 | </dict> | |
| 227 | <dict> | |
| 228 | <key>match</key> | |
| 229 | <string>\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\b</string> | |
| 230 | <key>name</key> | |
| 231 | <string>keyword.control.lua</string> | |
| 232 | </dict> | |
| 233 | <dict> | |
| 234 | <key>match</key> | |
| 235 | <string>\b(local)\b</string> | |
| 236 | <key>name</key> | |
| 237 | <string>keyword.local.lua</string> | |
| 238 | </dict> | |
| 239 | <dict> | |
| 240 | <key>match</key> | |
| 241 | <string>\b(function)\b(?![,:])</string> | |
| 242 | <key>name</key> | |
| 243 | <string>keyword.control.lua</string> | |
| 244 | </dict> | |
| 245 | <dict> | |
| 246 | <key>match</key> | |
| 247 | <string>(?&lt;![^.]\.|:)\b(false|nil(?!:)|true|_ENV|_G|_VERSION|math\.(pi|huge|maxinteger|mininteger)|utf8\.charpattern|io\.(stdin|stdout|stderr)|package\.(config|cpath|loaded|loaders|path|preload|searchers))\b|(?&lt;![.])\.{3}(?!\.)</string> | |
| 248 | <key>name</key> | |
| 249 | <string>constant.language.lua</string> | |
| 250 | </dict> | |
| 251 | <dict> | |
| 252 | <key>match</key> | |
| 253 | <string>(?&lt;![^.]\.|:)\b(self)\b</string> | |
| 254 | <key>name</key> | |
| 255 | <string>variable.language.self.lua</string> | |
| 256 | </dict> | |
| 257 | <dict> | |
| 258 | <key>match</key> | |
| 259 | <string>(?&lt;![^.]\.|:)\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\b(?!\s*=(?!=))</string> | |
| 260 | <key>name</key> | |
| 261 | <string>support.function.lua</string> | |
| 262 | </dict> | |
| 263 | <dict> | |
| 264 | <key>match</key> | |
| 265 | <string>(?&lt;![^.]\.|:)\b(async)\b(?!\s*=(?!=))</string> | |
| 266 | <key>name</key> | |
| 267 | <string>entity.name.tag.lua</string> | |
| 268 | </dict> | |
| 269 | <dict> | |
| 270 | <key>match</key> | |
| 271 | <string>(?&lt;![^.]\.|:)\b(coroutine\.(create|isyieldable|close|resume|running|status|wrap|yield)|string\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)|table\.(concat|insert|maxn|move|pack|remove|sort|unpack)|math\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?|tointeger|type)|io\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\.(loadlib|seeall|searchpath)|debug\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|[gs]etuservalue|set[Cc]stacklimit|traceback|upvalueid|upvaluejoin)|bit32\.(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)|utf8\.(char|codes|codepoint|len|offset))\b(?!\s*=(?!=))</string> | |
| 272 | <key>name</key> | |
| 273 | <string>support.function.library.lua</string> | |
| 274 | </dict> | |
| 275 | <dict> | |
| 276 | <key>match</key> | |
| 277 | <string>\b(and|or|not|\|\||\&amp;\&amp;|\!)\b</string> | |
| 278 | <key>name</key> | |
| 279 | <string>keyword.operator.lua</string> | |
| 280 | </dict> | |
| 281 | <dict> | |
| 282 | <key>match</key> | |
| 283 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?=\s*(?:[({"']|\[\[))</string> | |
| 284 | <key>name</key> | |
| 285 | <string>support.function.any-method.lua</string> | |
| 286 | </dict> | |
| 287 | <dict> | |
| 288 | <key>match</key> | |
| 289 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?=\s*\??:)</string> | |
| 290 | <key>name</key> | |
| 291 | <string>entity.name.class.lua</string> | |
| 292 | </dict> | |
| 293 | <dict> | |
| 294 | <key>match</key> | |
| 295 | <string>(?&lt;=[^.]\.|:)\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?!\s*=\s*\b(function)\b)</string> | |
| 296 | <key>name</key> | |
| 297 | <string>entity.other.attribute.lua</string> | |
| 298 | </dict> | |
| 299 | <dict> | |
| 300 | <key>match</key> | |
| 301 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?!\s*=\s*\b(function)\b)</string> | |
| 302 | <key>name</key> | |
| 303 | <string>variable.other.lua</string> | |
| 304 | </dict> | |
| 305 | <dict> | |
| 306 | <key>match</key> | |
| 307 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?=\s*=\s*\b(function)\b)</string> | |
| 308 | <key>name</key> | |
| 309 | <string>entity.name.function.lua</string> | |
| 310 | </dict> | |
| 311 | <dict> | |
| 312 | <key>match</key> | |
| 313 | <string>\+|-|%|#|\*|\/|\^|==?|~=|!=|&lt;=?|&gt;=?|(?&lt;!\.)\.{2}(?!\.)</string> | |
| 314 | <key>name</key> | |
| 315 | <string>keyword.operator.lua</string> | |
| 316 | </dict> | |
| 317 | </array> | |
| 318 | <key>repository</key> | |
| 319 | <dict> | |
| 320 | <key>escaped_char</key> | |
| 321 | <dict> | |
| 322 | <key>patterns</key> | |
| 323 | <array> | |
| 324 | <dict> | |
| 325 | <key>match</key> | |
| 326 | <string>\\[abfnrtv\\"'\n]</string> | |
| 327 | <key>name</key> | |
| 328 | <string>constant.character.escape.lua</string> | |
| 329 | </dict> | |
| 330 | <dict> | |
| 331 | <key>match</key> | |
| 332 | <string>\\z[\n\t ]*</string> | |
| 333 | <key>name</key> | |
| 334 | <string>constant.character.escape.lua</string> | |
| 335 | </dict> | |
| 336 | <dict> | |
| 337 | <key>match</key> | |
| 338 | <string>\\\d{1,3}</string> | |
| 339 | <key>name</key> | |
| 340 | <string>constant.character.escape.byte.lua</string> | |
| 341 | </dict> | |
| 342 | <dict> | |
| 343 | <key>match</key> | |
| 344 | <string>\\x[0-9A-Fa-f][0-9A-Fa-f]</string> | |
| 345 | <key>name</key> | |
| 346 | <string>constant.character.escape.byte.lua</string> | |
| 347 | </dict> | |
| 348 | <dict> | |
| 349 | <key>match</key> | |
| 350 | <string>\\u\{[0-9A-Fa-f]+\}</string> | |
| 351 | <key>name</key> | |
| 352 | <string>constant.character.escape.unicode.lua</string> | |
| 353 | </dict> | |
| 354 | <dict> | |
| 355 | <key>match</key> | |
| 356 | <string>\\.</string> | |
| 357 | <key>name</key> | |
| 358 | <string>invalid.illegal.character.escape.lua</string> | |
| 359 | </dict> | |
| 360 | </array> | |
| 361 | </dict> | |
| 362 | <key>string</key> | |
| 363 | <dict> | |
| 364 | <key>patterns</key> | |
| 365 | <array> | |
| 366 | <dict> | |
| 367 | <key>begin</key> | |
| 368 | <string>'</string> | |
| 369 | <key>beginCaptures</key> | |
| 370 | <dict> | |
| 371 | <key>0</key> | |
| 372 | <dict> | |
| 373 | <key>name</key> | |
| 374 | <string>punctuation.definition.string.begin.lua</string> | |
| 375 | </dict> | |
| 376 | </dict> | |
| 377 | <key>end</key> | |
| 378 | <string>'[ \t]*|(?=\n)</string> | |
| 379 | <key>endCaptures</key> | |
| 380 | <dict> | |
| 381 | <key>0</key> | |
| 382 | <dict> | |
| 383 | <key>name</key> | |
| 384 | <string>punctuation.definition.string.end.lua</string> | |
| 385 | </dict> | |
| 386 | </dict> | |
| 387 | <key>name</key> | |
| 388 | <string>string.quoted.single.lua</string> | |
| 389 | <key>patterns</key> | |
| 390 | <array> | |
| 391 | <dict> | |
| 392 | <key>include</key> | |
| 393 | <string>#escaped_char</string> | |
| 394 | </dict> | |
| 395 | </array> | |
| 396 | </dict> | |
| 397 | <dict> | |
| 398 | <key>begin</key> | |
| 399 | <string>"</string> | |
| 400 | <key>beginCaptures</key> | |
| 401 | <dict> | |
| 402 | <key>0</key> | |
| 403 | <dict> | |
| 404 | <key>name</key> | |
| 405 | <string>punctuation.definition.string.begin.lua</string> | |
| 406 | </dict> | |
| 407 | </dict> | |
| 408 | <key>end</key> | |
| 409 | <string>"[ \t]*|(?=\n)</string> | |
| 410 | <key>endCaptures</key> | |
| 411 | <dict> | |
| 412 | <key>0</key> | |
| 413 | <dict> | |
| 414 | <key>name</key> | |
| 415 | <string>punctuation.definition.string.end.lua</string> | |
| 416 | </dict> | |
| 417 | </dict> | |
| 418 | <key>name</key> | |
| 419 | <string>string.quoted.double.lua</string> | |
| 420 | <key>patterns</key> | |
| 421 | <array> | |
| 422 | <dict> | |
| 423 | <key>include</key> | |
| 424 | <string>#escaped_char</string> | |
| 425 | </dict> | |
| 426 | </array> | |
| 427 | </dict> | |
| 428 | <dict> | |
| 429 | <key>begin</key> | |
| 430 | <string>`</string> | |
| 431 | <key>beginCaptures</key> | |
| 432 | <dict> | |
| 433 | <key>0</key> | |
| 434 | <dict> | |
| 435 | <key>name</key> | |
| 436 | <string>punctuation.definition.string.begin.lua</string> | |
| 437 | </dict> | |
| 438 | </dict> | |
| 439 | <key>end</key> | |
| 440 | <string>`[ \t]*|(?=\n)</string> | |
| 441 | <key>endCaptures</key> | |
| 442 | <dict> | |
| 443 | <key>0</key> | |
| 444 | <dict> | |
| 445 | <key>name</key> | |
| 446 | <string>punctuation.definition.string.end.lua</string> | |
| 447 | </dict> | |
| 448 | </dict> | |
| 449 | <key>name</key> | |
| 450 | <string>string.quoted.double.lua</string> | |
| 451 | </dict> | |
| 452 | <dict> | |
| 453 | <key>begin</key> | |
| 454 | <string>(?&lt;=\.cdef)\s*(\[(=*)\[)</string> | |
| 455 | <key>beginCaptures</key> | |
| 456 | <dict> | |
| 457 | <key>0</key> | |
| 458 | <dict> | |
| 459 | <key>name</key> | |
| 460 | <string>string.quoted.other.multiline.lua</string> | |
| 461 | </dict> | |
| 462 | <key>1</key> | |
| 463 | <dict> | |
| 464 | <key>name</key> | |
| 465 | <string>punctuation.definition.string.begin.lua</string> | |
| 466 | </dict> | |
| 467 | </dict> | |
| 468 | <key>contentName</key> | |
| 469 | <string>meta.embedded.lua</string> | |
| 470 | <key>end</key> | |
| 471 | <string>(\]\2\])[ \t]*</string> | |
| 472 | <key>endCaptures</key> | |
| 473 | <dict> | |
| 474 | <key>0</key> | |
| 475 | <dict> | |
| 476 | <key>name</key> | |
| 477 | <string>string.quoted.other.multiline.lua</string> | |
| 478 | </dict> | |
| 479 | <key>1</key> | |
| 480 | <dict> | |
| 481 | <key>name</key> | |
| 482 | <string>punctuation.definition.string.end.lua</string> | |
| 483 | </dict> | |
| 484 | </dict> | |
| 485 | <key>patterns</key> | |
| 486 | <array> | |
| 487 | <dict> | |
| 488 | <key>include</key> | |
| 489 | <string>source.c</string> | |
| 490 | </dict> | |
| 491 | </array> | |
| 492 | </dict> | |
| 493 | <dict> | |
| 494 | <key>begin</key> | |
| 495 | <string>(?&lt;!--)\[(=*)\[</string> | |
| 496 | <key>beginCaptures</key> | |
| 497 | <dict> | |
| 498 | <key>0</key> | |
| 499 | <dict> | |
| 500 | <key>name</key> | |
| 501 | <string>punctuation.definition.string.begin.lua</string> | |
| 502 | </dict> | |
| 503 | </dict> | |
| 504 | <key>end</key> | |
| 505 | <string>\]\1\][ \t]*</string> | |
| 506 | <key>endCaptures</key> | |
| 507 | <dict> | |
| 508 | <key>0</key> | |
| 509 | <dict> | |
| 510 | <key>name</key> | |
| 511 | <string>punctuation.definition.string.end.lua</string> | |
| 512 | </dict> | |
| 513 | </dict> | |
| 514 | <key>name</key> | |
| 515 | <string>string.quoted.other.multiline.lua</string> | |
| 516 | </dict> | |
| 517 | </array> | |
| 518 | </dict> | |
| 519 | <key>comment</key> | |
| 520 | <dict> | |
| 521 | <key>patterns</key> | |
| 522 | <array> | |
| 523 | <dict> | |
| 524 | <key>begin</key> | |
| 525 | <string>(^[ \t]+)?(?=--)</string> | |
| 526 | <key>beginCaptures</key> | |
| 527 | <dict> | |
| 528 | <key>1</key> | |
| 529 | <dict> | |
| 530 | <key>name</key> | |
| 531 | <string>punctuation.whitespace.comment.leading.lua</string> | |
| 532 | </dict> | |
| 533 | </dict> | |
| 534 | <key>end</key> | |
| 535 | <string>(?!\G)((?!^)[ \t]+\n)?</string> | |
| 536 | <key>endCaptures</key> | |
| 537 | <dict> | |
| 538 | <key>1</key> | |
| 539 | <dict> | |
| 540 | <key>name</key> | |
| 541 | <string>punctuation.whitespace.comment.trailing.lua</string> | |
| 542 | </dict> | |
| 543 | </dict> | |
| 544 | <key>patterns</key> | |
| 545 | <array> | |
| 546 | <dict> | |
| 547 | <key>begin</key> | |
| 548 | <string>--\[(=*)\[@@@</string> | |
| 549 | <key>beginCaptures</key> | |
| 550 | <dict> | |
| 551 | <key>0</key> | |
| 552 | <dict> | |
| 553 | <key>name</key> | |
| 554 | <string>punctuation.definition.comment.begin.lua</string> | |
| 555 | </dict> | |
| 556 | </dict> | |
| 557 | <key>end</key> | |
| 558 | <string>(--)?\]\1\]</string> | |
| 559 | <key>endCaptures</key> | |
| 560 | <dict> | |
| 561 | <key>0</key> | |
| 562 | <dict> | |
| 563 | <key>name</key> | |
| 564 | <string>punctuation.definition.comment.end.lua</string> | |
| 565 | </dict> | |
| 566 | </dict> | |
| 567 | <key>name</key> | |
| 568 | <string/> | |
| 569 | <key>patterns</key> | |
| 570 | <array> | |
| 571 | <dict> | |
| 572 | <key>include</key> | |
| 573 | <string>source.lua</string> | |
| 574 | </dict> | |
| 575 | </array> | |
| 576 | </dict> | |
| 577 | <dict> | |
| 578 | <key>begin</key> | |
| 579 | <string>--\[(=*)\[</string> | |
| 580 | <key>beginCaptures</key> | |
| 581 | <dict> | |
| 582 | <key>0</key> | |
| 583 | <dict> | |
| 584 | <key>name</key> | |
| 585 | <string>punctuation.definition.comment.begin.lua</string> | |
| 586 | </dict> | |
| 587 | </dict> | |
| 588 | <key>end</key> | |
| 589 | <string>(--)?\]\1\]</string> | |
| 590 | <key>endCaptures</key> | |
| 591 | <dict> | |
| 592 | <key>0</key> | |
| 593 | <dict> | |
| 594 | <key>name</key> | |
| 595 | <string>punctuation.definition.comment.end.lua</string> | |
| 596 | </dict> | |
| 597 | </dict> | |
| 598 | <key>name</key> | |
| 599 | <string>comment.block.lua</string> | |
| 600 | <key>patterns</key> | |
| 601 | <array> | |
| 602 | <dict> | |
| 603 | <key>include</key> | |
| 604 | <string>#emmydoc</string> | |
| 605 | </dict> | |
| 606 | <dict> | |
| 607 | <key>include</key> | |
| 608 | <string>#ldoc_tag</string> | |
| 609 | </dict> | |
| 610 | </array> | |
| 611 | </dict> | |
| 612 | <dict> | |
| 613 | <key>begin</key> | |
| 614 | <string>----</string> | |
| 615 | <key>beginCaptures</key> | |
| 616 | <dict> | |
| 617 | <key>0</key> | |
| 618 | <dict> | |
| 619 | <key>name</key> | |
| 620 | <string>punctuation.definition.comment.lua</string> | |
| 621 | </dict> | |
| 622 | </dict> | |
| 623 | <key>end</key> | |
| 624 | <string>\n</string> | |
| 625 | <key>name</key> | |
| 626 | <string>comment.line.double-dash.lua</string> | |
| 627 | </dict> | |
| 628 | <dict> | |
| 629 | <key>begin</key> | |
| 630 | <string>---</string> | |
| 631 | <key>beginCaptures</key> | |
| 632 | <dict> | |
| 633 | <key>0</key> | |
| 634 | <dict> | |
| 635 | <key>name</key> | |
| 636 | <string>punctuation.definition.comment.lua</string> | |
| 637 | </dict> | |
| 638 | </dict> | |
| 639 | <key>end</key> | |
| 640 | <string>\n</string> | |
| 641 | <key>name</key> | |
| 642 | <string>comment.line.double-dash.documentation.lua</string> | |
| 643 | <key>patterns</key> | |
| 644 | <array> | |
| 645 | <dict> | |
| 646 | <key>include</key> | |
| 647 | <string>#emmydoc</string> | |
| 648 | </dict> | |
| 649 | <dict> | |
| 650 | <key>include</key> | |
| 651 | <string>#ldoc_tag</string> | |
| 652 | </dict> | |
| 653 | </array> | |
| 654 | </dict> | |
| 655 | <dict> | |
| 656 | <key>begin</key> | |
| 657 | <string>--</string> | |
| 658 | <key>beginCaptures</key> | |
| 659 | <dict> | |
| 660 | <key>0</key> | |
| 661 | <dict> | |
| 662 | <key>name</key> | |
| 663 | <string>punctuation.definition.comment.lua</string> | |
| 664 | </dict> | |
| 665 | </dict> | |
| 666 | <key>end</key> | |
| 667 | <string>\n</string> | |
| 668 | <key>name</key> | |
| 669 | <string>comment.line.double-dash.lua</string> | |
| 670 | <key>patterns</key> | |
| 671 | <array> | |
| 672 | <dict> | |
| 673 | <key>include</key> | |
| 674 | <string>#ldoc_tag</string> | |
| 675 | </dict> | |
| 676 | </array> | |
| 677 | </dict> | |
| 678 | </array> | |
| 679 | </dict> | |
| 680 | <dict> | |
| 681 | <key>begin</key> | |
| 682 | <string>\/\*</string> | |
| 683 | <key>beginCaptures</key> | |
| 684 | <dict> | |
| 685 | <key>0</key> | |
| 686 | <dict> | |
| 687 | <key>name</key> | |
| 688 | <string>punctuation.definition.comment.begin.lua</string> | |
| 689 | </dict> | |
| 690 | </dict> | |
| 691 | <key>end</key> | |
| 692 | <string>\*\/</string> | |
| 693 | <key>endCaptures</key> | |
| 694 | <dict> | |
| 695 | <key>0</key> | |
| 696 | <dict> | |
| 697 | <key>name</key> | |
| 698 | <string>punctuation.definition.comment.end.lua</string> | |
| 699 | </dict> | |
| 700 | </dict> | |
| 701 | <key>name</key> | |
| 702 | <string>comment.block.lua</string> | |
| 703 | <key>patterns</key> | |
| 704 | <array> | |
| 705 | <dict> | |
| 706 | <key>include</key> | |
| 707 | <string>#emmydoc</string> | |
| 708 | </dict> | |
| 709 | <dict> | |
| 710 | <key>include</key> | |
| 711 | <string>#ldoc_tag</string> | |
| 712 | </dict> | |
| 713 | </array> | |
| 714 | </dict> | |
| 715 | </array> | |
| 716 | </dict> | |
| 717 | <key>emmydoc</key> | |
| 718 | <dict> | |
| 719 | <key>patterns</key> | |
| 720 | <array> | |
| 721 | <dict> | |
| 722 | <key>begin</key> | |
| 723 | <string>(?&lt;=---)[ \t]*@class</string> | |
| 724 | <key>beginCaptures</key> | |
| 725 | <dict> | |
| 726 | <key>0</key> | |
| 727 | <dict> | |
| 728 | <key>name</key> | |
| 729 | <string>storage.type.annotation.lua</string> | |
| 730 | </dict> | |
| 731 | </dict> | |
| 732 | <key>end</key> | |
| 733 | <string>(?=[\n@#])</string> | |
| 734 | <key>patterns</key> | |
| 735 | <array> | |
| 736 | <dict> | |
| 737 | <key>match</key> | |
| 738 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*)</string> | |
| 739 | <key>name</key> | |
| 740 | <string>support.class.lua</string> | |
| 741 | </dict> | |
| 742 | <dict> | |
| 743 | <key>match</key> | |
| 744 | <string>:|,</string> | |
| 745 | <key>name</key> | |
| 746 | <string>keyword.operator.lua</string> | |
| 747 | </dict> | |
| 748 | </array> | |
| 749 | </dict> | |
| 750 | <dict> | |
| 751 | <key>begin</key> | |
| 752 | <string>(?&lt;=---)[ \t]*@enum</string> | |
| 753 | <key>beginCaptures</key> | |
| 754 | <dict> | |
| 755 | <key>0</key> | |
| 756 | <dict> | |
| 757 | <key>name</key> | |
| 758 | <string>storage.type.annotation.lua</string> | |
| 759 | </dict> | |
| 760 | </dict> | |
| 761 | <key>end</key> | |
| 762 | <string>(?=[\n@#])</string> | |
| 763 | <key>patterns</key> | |
| 764 | <array> | |
| 765 | <dict> | |
| 766 | <key>begin</key> | |
| 767 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*)</string> | |
| 768 | <key>beginCaptures</key> | |
| 769 | <dict> | |
| 770 | <key>0</key> | |
| 771 | <dict> | |
| 772 | <key>name</key> | |
| 773 | <string>variable.lua</string> | |
| 774 | </dict> | |
| 775 | </dict> | |
| 776 | <key>end</key> | |
| 777 | <string>(?=\n)</string> | |
| 778 | </dict> | |
| 779 | </array> | |
| 780 | </dict> | |
| 781 | <dict> | |
| 782 | <key>begin</key> | |
| 783 | <string>(?&lt;=---)[ \t]*@type</string> | |
| 784 | <key>beginCaptures</key> | |
| 785 | <dict> | |
| 786 | <key>0</key> | |
| 787 | <dict> | |
| 788 | <key>name</key> | |
| 789 | <string>storage.type.annotation.lua</string> | |
| 790 | </dict> | |
| 791 | </dict> | |
| 792 | <key>end</key> | |
| 793 | <string>(?=[\n@#])</string> | |
| 794 | <key>patterns</key> | |
| 795 | <array> | |
| 796 | <dict> | |
| 797 | <key>include</key> | |
| 798 | <string>#emmydoc.type</string> | |
| 799 | </dict> | |
| 800 | </array> | |
| 801 | </dict> | |
| 802 | <dict> | |
| 803 | <key>begin</key> | |
| 804 | <string>(?&lt;=---)[ \t]*@alias</string> | |
| 805 | <key>beginCaptures</key> | |
| 806 | <dict> | |
| 807 | <key>0</key> | |
| 808 | <dict> | |
| 809 | <key>name</key> | |
| 810 | <string>storage.type.annotation.lua</string> | |
| 811 | </dict> | |
| 812 | </dict> | |
| 813 | <key>end</key> | |
| 814 | <string>(?=[\n@#])</string> | |
| 815 | <key>patterns</key> | |
| 816 | <array> | |
| 817 | <dict> | |
| 818 | <key>begin</key> | |
| 819 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*)</string> | |
| 820 | <key>beginCaptures</key> | |
| 821 | <dict> | |
| 822 | <key>0</key> | |
| 823 | <dict> | |
| 824 | <key>name</key> | |
| 825 | <string>variable.lua</string> | |
| 826 | </dict> | |
| 827 | </dict> | |
| 828 | <key>end</key> | |
| 829 | <string>(?=[\n#])</string> | |
| 830 | <key>patterns</key> | |
| 831 | <array> | |
| 832 | <dict> | |
| 833 | <key>include</key> | |
| 834 | <string>#emmydoc.type</string> | |
| 835 | </dict> | |
| 836 | </array> | |
| 837 | </dict> | |
| 838 | </array> | |
| 839 | </dict> | |
| 840 | <dict> | |
| 841 | <key>begin</key> | |
| 842 | <string>(?&lt;=---)[ \t]*(@operator)\s*(\b[a-z]+)?</string> | |
| 843 | <key>beginCaptures</key> | |
| 844 | <dict> | |
| 845 | <key>1</key> | |
| 846 | <dict> | |
| 847 | <key>name</key> | |
| 848 | <string>storage.type.annotation.lua</string> | |
| 849 | </dict> | |
| 850 | <key>2</key> | |
| 851 | <dict> | |
| 852 | <key>name</key> | |
| 853 | <string>support.function.library.lua</string> | |
| 854 | </dict> | |
| 855 | </dict> | |
| 856 | <key>end</key> | |
| 857 | <string>(?=[\n@#])</string> | |
| 858 | <key>patterns</key> | |
| 859 | <array> | |
| 860 | <dict> | |
| 861 | <key>include</key> | |
| 862 | <string>#emmydoc.type</string> | |
| 863 | </dict> | |
| 864 | </array> | |
| 865 | </dict> | |
| 866 | <dict> | |
| 867 | <key>begin</key> | |
| 868 | <string>(?&lt;=---)[ \t]*@cast</string> | |
| 869 | <key>beginCaptures</key> | |
| 870 | <dict> | |
| 871 | <key>0</key> | |
| 872 | <dict> | |
| 873 | <key>name</key> | |
| 874 | <string>storage.type.annotation.lua</string> | |
| 875 | </dict> | |
| 876 | </dict> | |
| 877 | <key>end</key> | |
| 878 | <string>(?=[\n@#])</string> | |
| 879 | <key>patterns</key> | |
| 880 | <array> | |
| 881 | <dict> | |
| 882 | <key>begin</key> | |
| 883 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*)</string> | |
| 884 | <key>beginCaptures</key> | |
| 885 | <dict> | |
| 886 | <key>0</key> | |
| 887 | <dict> | |
| 888 | <key>name</key> | |
| 889 | <string>variable.other.lua</string> | |
| 890 | </dict> | |
| 891 | </dict> | |
| 892 | <key>end</key> | |
| 893 | <string>(?=\n)</string> | |
| 894 | <key>patterns</key> | |
| 895 | <array> | |
| 896 | <dict> | |
| 897 | <key>include</key> | |
| 898 | <string>#emmydoc.type</string> | |
| 899 | </dict> | |
| 900 | <dict> | |
| 901 | <key>match</key> | |
| 902 | <string>([+-|])</string> | |
| 903 | <key>name</key> | |
| 904 | <string>keyword.operator.lua</string> | |
| 905 | </dict> | |
| 906 | </array> | |
| 907 | </dict> | |
| 908 | </array> | |
| 909 | </dict> | |
| 910 | <dict> | |
| 911 | <key>begin</key> | |
| 912 | <string>(?&lt;=---)[ \t]*@param</string> | |
| 913 | <key>beginCaptures</key> | |
| 914 | <dict> | |
| 915 | <key>0</key> | |
| 916 | <dict> | |
| 917 | <key>name</key> | |
| 918 | <string>storage.type.annotation.lua</string> | |
| 919 | </dict> | |
| 920 | </dict> | |
| 921 | <key>end</key> | |
| 922 | <string>(?=[\n@#])</string> | |
| 923 | <key>patterns</key> | |
| 924 | <array> | |
| 925 | <dict> | |
| 926 | <key>begin</key> | |
| 927 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b(\??)</string> | |
| 928 | <key>beginCaptures</key> | |
| 929 | <dict> | |
| 930 | <key>1</key> | |
| 931 | <dict> | |
| 932 | <key>name</key> | |
| 933 | <string>entity.name.variable.lua</string> | |
| 934 | </dict> | |
| 935 | <key>2</key> | |
| 936 | <dict> | |
| 937 | <key>name</key> | |
| 938 | <string>keyword.operator.lua</string> | |
| 939 | </dict> | |
| 940 | </dict> | |
| 941 | <key>end</key> | |
| 942 | <string>(?=[\n#])</string> | |
| 943 | <key>patterns</key> | |
| 944 | <array> | |
| 945 | <dict> | |
| 946 | <key>include</key> | |
| 947 | <string>#emmydoc.type</string> | |
| 948 | </dict> | |
| 949 | </array> | |
| 950 | </dict> | |
| 951 | </array> | |
| 952 | </dict> | |
| 953 | <dict> | |
| 954 | <key>begin</key> | |
| 955 | <string>(?&lt;=---)[ \t]*@return</string> | |
| 956 | <key>beginCaptures</key> | |
| 957 | <dict> | |
| 958 | <key>0</key> | |
| 959 | <dict> | |
| 960 | <key>name</key> | |
| 961 | <string>storage.type.annotation.lua</string> | |
| 962 | </dict> | |
| 963 | </dict> | |
| 964 | <key>end</key> | |
| 965 | <string>(?=[\n@#])</string> | |
| 966 | <key>patterns</key> | |
| 967 | <array> | |
| 968 | <dict> | |
| 969 | <key>match</key> | |
| 970 | <string>\?</string> | |
| 971 | <key>name</key> | |
| 972 | <string>keyword.operator.lua</string> | |
| 973 | </dict> | |
| 974 | <dict> | |
| 975 | <key>include</key> | |
| 976 | <string>#emmydoc.type</string> | |
| 977 | </dict> | |
| 978 | </array> | |
| 979 | </dict> | |
| 980 | <dict> | |
| 981 | <key>begin</key> | |
| 982 | <string>(?&lt;=---)[ \t]*@field</string> | |
| 983 | <key>beginCaptures</key> | |
| 984 | <dict> | |
| 985 | <key>0</key> | |
| 986 | <dict> | |
| 987 | <key>name</key> | |
| 988 | <string>storage.type.annotation.lua</string> | |
| 989 | </dict> | |
| 990 | </dict> | |
| 991 | <key>end</key> | |
| 992 | <string>(?=[\n@#])</string> | |
| 993 | <key>patterns</key> | |
| 994 | <array> | |
| 995 | <dict> | |
| 996 | <key>begin</key> | |
| 997 | <string>(\b([a-zA-Z_][a-zA-Z0-9_]*)\b|(\[))(\??)</string> | |
| 998 | <key>beginCaptures</key> | |
| 999 | <dict> | |
| 1000 | <key>2</key> | |
| 1001 | <dict> | |
| 1002 | <key>name</key> | |
| 1003 | <string>entity.name.variable.lua</string> | |
| 1004 | </dict> | |
| 1005 | <key>3</key> | |
| 1006 | <dict> | |
| 1007 | <key>name</key> | |
| 1008 | <string>keyword.operator.lua</string> | |
| 1009 | </dict> | |
| 1010 | </dict> | |
| 1011 | <key>end</key> | |
| 1012 | <string>(?=[\n#])</string> | |
| 1013 | <key>patterns</key> | |
| 1014 | <array> | |
| 1015 | <dict> | |
| 1016 | <key>include</key> | |
| 1017 | <string>#string</string> | |
| 1018 | </dict> | |
| 1019 | <dict> | |
| 1020 | <key>include</key> | |
| 1021 | <string>#emmydoc.type</string> | |
| 1022 | </dict> | |
| 1023 | <dict> | |
| 1024 | <key>match</key> | |
| 1025 | <string>\]</string> | |
| 1026 | <key>name</key> | |
| 1027 | <string>keyword.operator.lua</string> | |
| 1028 | </dict> | |
| 1029 | </array> | |
| 1030 | </dict> | |
| 1031 | </array> | |
| 1032 | </dict> | |
| 1033 | <dict> | |
| 1034 | <key>begin</key> | |
| 1035 | <string>(?&lt;=---)[ \t]*@generic</string> | |
| 1036 | <key>beginCaptures</key> | |
| 1037 | <dict> | |
| 1038 | <key>0</key> | |
| 1039 | <dict> | |
| 1040 | <key>name</key> | |
| 1041 | <string>storage.type.annotation.lua</string> | |
| 1042 | </dict> | |
| 1043 | </dict> | |
| 1044 | <key>end</key> | |
| 1045 | <string>(?=[\n@#])</string> | |
| 1046 | <key>patterns</key> | |
| 1047 | <array> | |
| 1048 | <dict> | |
| 1049 | <key>begin</key> | |
| 1050 | <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b</string> | |
| 1051 | <key>beginCaptures</key> | |
| 1052 | <dict> | |
| 1053 | <key>0</key> | |
| 1054 | <dict> | |
| 1055 | <key>name</key> | |
| 1056 | <string>storage.type.generic.lua</string> | |
| 1057 | </dict> | |
| 1058 | </dict> | |
| 1059 | <key>end</key> | |
| 1060 | <string>(?=\n)|(,)</string> | |
| 1061 | <key>endCaptures</key> | |
| 1062 | <dict> | |
| 1063 | <key>0</key> | |
| 1064 | <dict> | |
| 1065 | <key>name</key> | |
| 1066 | <string>keyword.operator.lua</string> | |
| 1067 | </dict> | |
| 1068 | </dict> | |
| 1069 | <key>patterns</key> | |
| 1070 | <array> | |
| 1071 | <dict> | |
| 1072 | <key>match</key> | |
| 1073 | <string>:</string> | |
| 1074 | <key>name</key> | |
| 1075 | <string>keyword.operator.lua</string> | |
| 1076 | </dict> | |
| 1077 | <dict> | |
| 1078 | <key>include</key> | |
| 1079 | <string>#emmydoc.type</string> | |
| 1080 | </dict> | |
| 1081 | </array> | |
| 1082 | </dict> | |
| 1083 | </array> | |
| 1084 | </dict> | |
| 1085 | <dict> | |
| 1086 | <key>begin</key> | |
| 1087 | <string>(?&lt;=---)[ \t]*@vararg</string> | |
| 1088 | <key>beginCaptures</key> | |
| 1089 | <dict> | |
| 1090 | <key>0</key> | |
| 1091 | <dict> | |
| 1092 | <key>name</key> | |
| 1093 | <string>storage.type.annotation.lua</string> | |
| 1094 | </dict> | |
| 1095 | </dict> | |
| 1096 | <key>end</key> | |
| 1097 | <string>(?=[\n@#])</string> | |
| 1098 | <key>patterns</key> | |
| 1099 | <array> | |
| 1100 | <dict> | |
| 1101 | <key>include</key> | |
| 1102 | <string>#emmydoc.type</string> | |
| 1103 | </dict> | |
| 1104 | </array> | |
| 1105 | </dict> | |
| 1106 | <dict> | |
| 1107 | <key>begin</key> | |
| 1108 | <string>(?&lt;=---)[ \t]*@overload</string> | |
| 1109 | <key>beginCaptures</key> | |
| 1110 | <dict> | |
| 1111 | <key>0</key> | |
| 1112 | <dict> | |
| 1113 | <key>name</key> | |
| 1114 | <string>storage.type.annotation.lua</string> | |
| 1115 | </dict> | |
| 1116 | </dict> | |
| 1117 | <key>end</key> | |
| 1118 | <string>(?=[\n@#])</string> | |
| 1119 | <key>patterns</key> | |
| 1120 | <array> | |
| 1121 | <dict> | |
| 1122 | <key>include</key> | |
| 1123 | <string>#emmydoc.type</string> | |
| 1124 | </dict> | |
| 1125 | </array> | |
| 1126 | </dict> | |
| 1127 | <dict> | |
| 1128 | <key>begin</key> | |
| 1129 | <string>(?&lt;=---)[ \t]*@deprecated</string> | |
| 1130 | <key>beginCaptures</key> | |
| 1131 | <dict> | |
| 1132 | <key>0</key> | |
| 1133 | <dict> | |
| 1134 | <key>name</key> | |
| 1135 | <string>storage.type.annotation.lua</string> | |
| 1136 | </dict> | |
| 1137 | </dict> | |
| 1138 | <key>end</key> | |
| 1139 | <string>(?=[\n@#])</string> | |
| 1140 | </dict> | |
| 1141 | <dict> | |
| 1142 | <key>begin</key> | |
| 1143 | <string>(?&lt;=---)[ \t]*@meta</string> | |
| 1144 | <key>beginCaptures</key> | |
| 1145 | <dict> | |
| 1146 | <key>0</key> | |
| 1147 | <dict> | |
| 1148 | <key>name</key> | |
| 1149 | <string>storage.type.annotation.lua</string> | |
| 1150 | </dict> | |
| 1151 | </dict> | |
| 1152 | <key>end</key> | |
| 1153 | <string>(?=[\n@#])</string> | |
| 1154 | </dict> | |
| 1155 | <dict> | |
| 1156 | <key>begin</key> | |
| 1157 | <string>(?&lt;=---)[ \t]*@private</string> | |
| 1158 | <key>beginCaptures</key> | |
| 1159 | <dict> | |
| 1160 | <key>0</key> | |
| 1161 | <dict> | |
| 1162 | <key>name</key> | |
| 1163 | <string>storage.type.annotation.lua</string> | |
| 1164 | </dict> | |
| 1165 | </dict> | |
| 1166 | <key>end</key> | |
| 1167 | <string>(?=[\n@#])</string> | |
| 1168 | </dict> | |
| 1169 | <dict> | |
| 1170 | <key>begin</key> | |
| 1171 | <string>(?&lt;=---)[ \t]*@protected</string> | |
| 1172 | <key>beginCaptures</key> | |
| 1173 | <dict> | |
| 1174 | <key>0</key> | |
| 1175 | <dict> | |
| 1176 | <key>name</key> | |
| 1177 | <string>storage.type.annotation.lua</string> | |
| 1178 | </dict> | |
| 1179 | </dict> | |
| 1180 | <key>end</key> | |
| 1181 | <string>(?=[\n@#])</string> | |
| 1182 | </dict> | |
| 1183 | <dict> | |
| 1184 | <key>begin</key> | |
| 1185 | <string>(?&lt;=---)[ \t]*@package</string> | |
| 1186 | <key>beginCaptures</key> | |
| 1187 | <dict> | |
| 1188 | <key>0</key> | |
| 1189 | <dict> | |
| 1190 | <key>name</key> | |
| 1191 | <string>storage.type.annotation.lua</string> | |
| 1192 | </dict> | |
| 1193 | </dict> | |
| 1194 | <key>end</key> | |
| 1195 | <string>(?=[\n@#])</string> | |
| 1196 | </dict> | |
| 1197 | <dict> | |
| 1198 | <key>begin</key> | |
| 1199 | <string>(?&lt;=---)[ \t]*@version</string> | |
| 1200 | <key>beginCaptures</key> | |
| 1201 | <dict> | |
| 1202 | <key>0</key> | |
| 1203 | <dict> | |
| 1204 | <key>name</key> | |
| 1205 | <string>storage.type.annotation.lua</string> | |
| 1206 | </dict> | |
| 1207 | </dict> | |
| 1208 | <key>end</key> | |
| 1209 | <string>(?=[\n@#])</string> | |
| 1210 | <key>patterns</key> | |
| 1211 | <array> | |
| 1212 | <dict> | |
| 1213 | <key>match</key> | |
| 1214 | <string>\b(5\.1|5\.2|5\.3|5\.4|JIT)\b</string> | |
| 1215 | <key>name</key> | |
| 1216 | <string>support.class.lua</string> | |
| 1217 | </dict> | |
| 1218 | <dict> | |
| 1219 | <key>match</key> | |
| 1220 | <string>,|\&gt;|\&lt;</string> | |
| 1221 | <key>name</key> | |
| 1222 | <string>keyword.operator.lua</string> | |
| 1223 | </dict> | |
| 1224 | </array> | |
| 1225 | </dict> | |
| 1226 | <dict> | |
| 1227 | <key>begin</key> | |
| 1228 | <string>(?&lt;=---)[ \t]*@see</string> | |
| 1229 | <key>beginCaptures</key> | |
| 1230 | <dict> | |
| 1231 | <key>0</key> | |
| 1232 | <dict> | |
| 1233 | <key>name</key> | |
| 1234 | <string>storage.type.annotation.lua</string> | |
| 1235 | </dict> | |
| 1236 | </dict> | |
| 1237 | <key>end</key> | |
| 1238 | <string>(?=[\n@#])</string> | |
| 1239 | <key>patterns</key> | |
| 1240 | <array> | |
| 1241 | <dict> | |
| 1242 | <key>match</key> | |
| 1243 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*)</string> | |
| 1244 | <key>name</key> | |
| 1245 | <string>support.class.lua</string> | |
| 1246 | </dict> | |
| 1247 | <dict> | |
| 1248 | <key>match</key> | |
| 1249 | <string>#</string> | |
| 1250 | <key>name</key> | |
| 1251 | <string>keyword.operator.lua</string> | |
| 1252 | </dict> | |
| 1253 | </array> | |
| 1254 | </dict> | |
| 1255 | <dict> | |
| 1256 | <key>begin</key> | |
| 1257 | <string>(?&lt;=---)[ \t]*@diagnostic</string> | |
| 1258 | <key>beginCaptures</key> | |
| 1259 | <dict> | |
| 1260 | <key>0</key> | |
| 1261 | <dict> | |
| 1262 | <key>name</key> | |
| 1263 | <string>storage.type.annotation.lua</string> | |
| 1264 | </dict> | |
| 1265 | </dict> | |
| 1266 | <key>end</key> | |
| 1267 | <string>(?=[\n@#])</string> | |
| 1268 | <key>patterns</key> | |
| 1269 | <array> | |
| 1270 | <dict> | |
| 1271 | <key>begin</key> | |
| 1272 | <string>([a-zA-Z_\-0-9]+)[ \t]*(:)?</string> | |
| 1273 | <key>beginCaptures</key> | |
| 1274 | <dict> | |
| 1275 | <key>1</key> | |
| 1276 | <dict> | |
| 1277 | <key>name</key> | |
| 1278 | <string>keyword.other.unit</string> | |
| 1279 | </dict> | |
| 1280 | <key>2</key> | |
| 1281 | <dict> | |
| 1282 | <key>name</key> | |
| 1283 | <string>keyword.operator.unit</string> | |
| 1284 | </dict> | |
| 1285 | </dict> | |
| 1286 | <key>end</key> | |
| 1287 | <string>(?=\n)</string> | |
| 1288 | <key>patterns</key> | |
| 1289 | <array> | |
| 1290 | <dict> | |
| 1291 | <key>match</key> | |
| 1292 | <string>\b([a-zA-Z_\*][a-zA-Z0-9_\-]*)</string> | |
| 1293 | <key>name</key> | |
| 1294 | <string>support.class.lua</string> | |
| 1295 | </dict> | |
| 1296 | <dict> | |
| 1297 | <key>match</key> | |
| 1298 | <string>,</string> | |
| 1299 | <key>name</key> | |
| 1300 | <string>keyword.operator.lua</string> | |
| 1301 | </dict> | |
| 1302 | </array> | |
| 1303 | </dict> | |
| 1304 | </array> | |
| 1305 | </dict> | |
| 1306 | <dict> | |
| 1307 | <key>begin</key> | |
| 1308 | <string>(?&lt;=---)[ \t]*@module</string> | |
| 1309 | <key>beginCaptures</key> | |
| 1310 | <dict> | |
| 1311 | <key>0</key> | |
| 1312 | <dict> | |
| 1313 | <key>name</key> | |
| 1314 | <string>storage.type.annotation.lua</string> | |
| 1315 | </dict> | |
| 1316 | </dict> | |
| 1317 | <key>end</key> | |
| 1318 | <string>(?=[\n@#])</string> | |
| 1319 | <key>patterns</key> | |
| 1320 | <array> | |
| 1321 | <dict> | |
| 1322 | <key>include</key> | |
| 1323 | <string>#string</string> | |
| 1324 | </dict> | |
| 1325 | </array> | |
| 1326 | </dict> | |
| 1327 | <dict> | |
| 1328 | <key>match</key> | |
| 1329 | <string>(?&lt;=---)[ \t]*@(async|nodiscard)</string> | |
| 1330 | <key>name</key> | |
| 1331 | <string>storage.type.annotation.lua</string> | |
| 1332 | </dict> | |
| 1333 | <dict> | |
| 1334 | <key>begin</key> | |
| 1335 | <string>(?&lt;=---)\|\s*[\&gt;\+]?</string> | |
| 1336 | <key>beginCaptures</key> | |
| 1337 | <dict> | |
| 1338 | <key>0</key> | |
| 1339 | <dict> | |
| 1340 | <key>name</key> | |
| 1341 | <string>storage.type.annotation.lua</string> | |
| 1342 | </dict> | |
| 1343 | </dict> | |
| 1344 | <key>end</key> | |
| 1345 | <string>(?=[\n@#])</string> | |
| 1346 | <key>patterns</key> | |
| 1347 | <array> | |
| 1348 | <dict> | |
| 1349 | <key>include</key> | |
| 1350 | <string>#string</string> | |
| 1351 | </dict> | |
| 1352 | </array> | |
| 1353 | </dict> | |
| 1354 | </array> | |
| 1355 | </dict> | |
| 1356 | <key>emmydoc.type</key> | |
| 1357 | <dict> | |
| 1358 | <key>patterns</key> | |
| 1359 | <array> | |
| 1360 | <dict> | |
| 1361 | <key>begin</key> | |
| 1362 | <string>\bfun\b</string> | |
| 1363 | <key>beginCaptures</key> | |
| 1364 | <dict> | |
| 1365 | <key>0</key> | |
| 1366 | <dict> | |
| 1367 | <key>name</key> | |
| 1368 | <string>keyword.control.lua</string> | |
| 1369 | </dict> | |
| 1370 | </dict> | |
| 1371 | <key>end</key> | |
| 1372 | <string>(?=[\s#])</string> | |
| 1373 | <key>patterns</key> | |
| 1374 | <array> | |
| 1375 | <dict> | |
| 1376 | <key>match</key> | |
| 1377 | <string>[\(\),:\?][ \t]*</string> | |
| 1378 | <key>name</key> | |
| 1379 | <string>keyword.operator.lua</string> | |
| 1380 | </dict> | |
| 1381 | <dict> | |
| 1382 | <key>match</key> | |
| 1383 | <string>([a-zA-Z_][a-zA-Z0-9_\.\*\[\]\&lt;\&gt;\,\-]*)(?&lt;!,)[ \t]*(?=\??:)</string> | |
| 1384 | <key>name</key> | |
| 1385 | <string>entity.name.variable.lua</string> | |
| 1386 | </dict> | |
| 1387 | <dict> | |
| 1388 | <key>include</key> | |
| 1389 | <string>#emmydoc.type</string> | |
| 1390 | </dict> | |
| 1391 | <dict> | |
| 1392 | <key>include</key> | |
| 1393 | <string>#string</string> | |
| 1394 | </dict> | |
| 1395 | </array> | |
| 1396 | </dict> | |
| 1397 | <dict> | |
| 1398 | <key>match</key> | |
| 1399 | <string>\&lt;[a-zA-Z_\*][a-zA-Z0-9_\.\*\-]*\&gt;</string> | |
| 1400 | <key>name</key> | |
| 1401 | <string>storage.type.generic.lua</string> | |
| 1402 | </dict> | |
| 1403 | <dict> | |
| 1404 | <key>match</key> | |
| 1405 | <string>\basync\b</string> | |
| 1406 | <key>name</key> | |
| 1407 | <string>entity.name.tag.lua</string> | |
| 1408 | </dict> | |
| 1409 | <dict> | |
| 1410 | <key>match</key> | |
| 1411 | <string>[\{\}\:\,\?\|\`][ \t]*</string> | |
| 1412 | <key>name</key> | |
| 1413 | <string>keyword.operator.lua</string> | |
| 1414 | </dict> | |
| 1415 | <dict> | |
| 1416 | <key>begin</key> | |
| 1417 | <string>(?=[a-zA-Z_\.\*"'\[])</string> | |
| 1418 | <key>end</key> | |
| 1419 | <string>(?=[\s\)\,\?\:\}\|#])</string> | |
| 1420 | <key>patterns</key> | |
| 1421 | <array> | |
| 1422 | <dict> | |
| 1423 | <key>match</key> | |
| 1424 | <string>([a-zA-Z0-9_\.\*\[\]\&lt;\&gt;\,\-]+)(?&lt;!,)[ \t]*</string> | |
| 1425 | <key>name</key> | |
| 1426 | <string>support.type.lua</string> | |
| 1427 | </dict> | |
| 1428 | <dict> | |
| 1429 | <key>match</key> | |
| 1430 | <string>(\.\.\.)[ \t]*</string> | |
| 1431 | <key>name</key> | |
| 1432 | <string>constant.language.lua</string> | |
| 1433 | </dict> | |
| 1434 | <dict> | |
| 1435 | <key>include</key> | |
| 1436 | <string>#string</string> | |
| 1437 | </dict> | |
| 1438 | </array> | |
| 1439 | </dict> | |
| 1440 | </array> | |
| 1441 | </dict> | |
| 1442 | <key>ldoc_tag</key> | |
| 1443 | <dict> | |
| 1444 | <key>match</key> | |
| 1445 | <string>\G[ \t]*(@)(alias|annotation|author|charset|class|classmod|comment|constructor|copyright|description|example|export|factory|field|file|fixme|function|include|lfunction|license|local|module|name|param|pragma|private|raise|release|return|script|section|see|set|static|submodule|summary|tfield|thread|tparam|treturn|todo|topic|type|usage|warning|within)\b</string> | |
| 1446 | <key>captures</key> | |
| 1447 | <dict> | |
| 1448 | <key>1</key> | |
| 1449 | <dict> | |
| 1450 | <key>name</key> | |
| 1451 | <string>punctuation.definition.block.tag.ldoc</string> | |
| 1452 | </dict> | |
| 1453 | <key>2</key> | |
| 1454 | <dict> | |
| 1455 | <key>name</key> | |
| 1456 | <string>storage.type.class.ldoc</string> | |
| 1457 | </dict> | |
| 1458 | </dict> | |
| 1459 | </dict> | |
| 1460 | </dict> | |
| 1461 | </dict> | |
| 1462 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/mdx.plist created+9527| ... | ... | @@ -0,0 +1,9527 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | <key>fileTypes</key> | |
| 6 | <array> | |
| 7 | <string>mdx</string> | |
| 8 | </array> | |
| 9 | <key>name</key> | |
| 10 | <string>MDX</string> | |
| 11 | <key>patterns</key> | |
| 12 | <array> | |
| 13 | <dict> | |
| 14 | <key>include</key> | |
| 15 | <string>#markdown-frontmatter</string> | |
| 16 | </dict> | |
| 17 | <dict> | |
| 18 | <key>include</key> | |
| 19 | <string>#markdown-sections</string> | |
| 20 | </dict> | |
| 21 | </array> | |
| 22 | <key>repository</key> | |
| 23 | <dict> | |
| 24 | <key>markdown-frontmatter</key> | |
| 25 | <dict> | |
| 26 | <key>patterns</key> | |
| 27 | <array> | |
| 28 | <dict> | |
| 29 | <key>include</key> | |
| 30 | <string>#extension-toml</string> | |
| 31 | </dict> | |
| 32 | <dict> | |
| 33 | <key>include</key> | |
| 34 | <string>#extension-yaml</string> | |
| 35 | </dict> | |
| 36 | </array> | |
| 37 | </dict> | |
| 38 | <key>markdown-sections</key> | |
| 39 | <dict> | |
| 40 | <key>patterns</key> | |
| 41 | <array> | |
| 42 | <dict> | |
| 43 | <key>include</key> | |
| 44 | <string>#commonmark-block-quote</string> | |
| 45 | </dict> | |
| 46 | <dict> | |
| 47 | <key>include</key> | |
| 48 | <string>#commonmark-code-fenced</string> | |
| 49 | </dict> | |
| 50 | <dict> | |
| 51 | <key>include</key> | |
| 52 | <string>#extension-gfm-footnote-definition</string> | |
| 53 | </dict> | |
| 54 | <dict> | |
| 55 | <key>include</key> | |
| 56 | <string>#commonmark-definition</string> | |
| 57 | </dict> | |
| 58 | <dict> | |
| 59 | <key>include</key> | |
| 60 | <string>#commonmark-heading-atx</string> | |
| 61 | </dict> | |
| 62 | <dict> | |
| 63 | <key>include</key> | |
| 64 | <string>#commonmark-thematic-break</string> | |
| 65 | </dict> | |
| 66 | <dict> | |
| 67 | <key>include</key> | |
| 68 | <string>#commonmark-heading-setext</string> | |
| 69 | </dict> | |
| 70 | <dict> | |
| 71 | <key>include</key> | |
| 72 | <string>#commonmark-list-item</string> | |
| 73 | </dict> | |
| 74 | <dict> | |
| 75 | <key>include</key> | |
| 76 | <string>#extension-gfm-table</string> | |
| 77 | </dict> | |
| 78 | <dict> | |
| 79 | <key>include</key> | |
| 80 | <string>#extension-math-flow</string> | |
| 81 | </dict> | |
| 82 | <dict> | |
| 83 | <key>include</key> | |
| 84 | <string>#extension-mdx-esm</string> | |
| 85 | </dict> | |
| 86 | <dict> | |
| 87 | <key>include</key> | |
| 88 | <string>#extension-mdx-expression-flow</string> | |
| 89 | </dict> | |
| 90 | <dict> | |
| 91 | <key>include</key> | |
| 92 | <string>#extension-mdx-jsx-flow</string> | |
| 93 | </dict> | |
| 94 | <dict> | |
| 95 | <key>include</key> | |
| 96 | <string>#commonmark-paragraph</string> | |
| 97 | </dict> | |
| 98 | </array> | |
| 99 | </dict> | |
| 100 | <key>markdown-string</key> | |
| 101 | <dict> | |
| 102 | <key>patterns</key> | |
| 103 | <array> | |
| 104 | <dict> | |
| 105 | <key>include</key> | |
| 106 | <string>#commonmark-character-escape</string> | |
| 107 | </dict> | |
| 108 | <dict> | |
| 109 | <key>include</key> | |
| 110 | <string>#commonmark-character-reference</string> | |
| 111 | </dict> | |
| 112 | </array> | |
| 113 | </dict> | |
| 114 | <key>markdown-text</key> | |
| 115 | <dict> | |
| 116 | <key>patterns</key> | |
| 117 | <array> | |
| 118 | <dict> | |
| 119 | <key>include</key> | |
| 120 | <string>#commonmark-attention</string> | |
| 121 | </dict> | |
| 122 | <dict> | |
| 123 | <key>include</key> | |
| 124 | <string>#commonmark-character-escape</string> | |
| 125 | </dict> | |
| 126 | <dict> | |
| 127 | <key>include</key> | |
| 128 | <string>#commonmark-character-reference</string> | |
| 129 | </dict> | |
| 130 | <dict> | |
| 131 | <key>include</key> | |
| 132 | <string>#commonmark-code-text</string> | |
| 133 | </dict> | |
| 134 | <dict> | |
| 135 | <key>include</key> | |
| 136 | <string>#commonmark-hard-break-trailing</string> | |
| 137 | </dict> | |
| 138 | <dict> | |
| 139 | <key>include</key> | |
| 140 | <string>#commonmark-hard-break-escape</string> | |
| 141 | </dict> | |
| 142 | <dict> | |
| 143 | <key>include</key> | |
| 144 | <string>#commonmark-label-end</string> | |
| 145 | </dict> | |
| 146 | <dict> | |
| 147 | <key>include</key> | |
| 148 | <string>#extension-gfm-footnote-call</string> | |
| 149 | </dict> | |
| 150 | <dict> | |
| 151 | <key>include</key> | |
| 152 | <string>#commonmark-label-start</string> | |
| 153 | </dict> | |
| 154 | <dict> | |
| 155 | <key>include</key> | |
| 156 | <string>#extension-gfm-autolink-literal</string> | |
| 157 | </dict> | |
| 158 | <dict> | |
| 159 | <key>include</key> | |
| 160 | <string>#extension-gfm-strikethrough</string> | |
| 161 | </dict> | |
| 162 | <dict> | |
| 163 | <key>include</key> | |
| 164 | <string>#extension-github-gemoji</string> | |
| 165 | </dict> | |
| 166 | <dict> | |
| 167 | <key>include</key> | |
| 168 | <string>#extension-github-mention</string> | |
| 169 | </dict> | |
| 170 | <dict> | |
| 171 | <key>include</key> | |
| 172 | <string>#extension-github-reference</string> | |
| 173 | </dict> | |
| 174 | <dict> | |
| 175 | <key>include</key> | |
| 176 | <string>#extension-math-text</string> | |
| 177 | </dict> | |
| 178 | <dict> | |
| 179 | <key>include</key> | |
| 180 | <string>#extension-mdx-expression-text</string> | |
| 181 | </dict> | |
| 182 | <dict> | |
| 183 | <key>include</key> | |
| 184 | <string>#extension-mdx-jsx-text</string> | |
| 185 | </dict> | |
| 186 | </array> | |
| 187 | </dict> | |
| 188 | <key>commonmark-attention</key> | |
| 189 | <dict> | |
| 190 | <key>patterns</key> | |
| 191 | <array> | |
| 192 | <dict> | |
| 193 | <key>match</key> | |
| 194 | <string>(?&lt;=\S)\*{3,}|\*{3,}(?=\S)</string> | |
| 195 | <key>name</key> | |
| 196 | <string>string.other.strong.emphasis.asterisk.mdx</string> | |
| 197 | </dict> | |
| 198 | <dict> | |
| 199 | <key>match</key> | |
| 200 | <string>(?&lt;=[\p{L}\p{N}])_{3,}(?![\p{L}\p{N}])|(?&lt;=\p{P})_{3,}|(?&lt;![\p{L}\p{N}]|\p{P})_{3,}(?!\s)</string> | |
| 201 | <key>name</key> | |
| 202 | <string>string.other.strong.emphasis.underscore.mdx</string> | |
| 203 | </dict> | |
| 204 | <dict> | |
| 205 | <key>match</key> | |
| 206 | <string>(?&lt;=\S)\*{2}|\*{2}(?=\S)</string> | |
| 207 | <key>name</key> | |
| 208 | <string>string.other.strong.asterisk.mdx</string> | |
| 209 | </dict> | |
| 210 | <dict> | |
| 211 | <key>match</key> | |
| 212 | <string>(?&lt;=[\p{L}\p{N}])_{2}(?![\p{L}\p{N}])|(?&lt;=\p{P})_{2}|(?&lt;![\p{L}\p{N}]|\p{P})_{2}(?!\s)</string> | |
| 213 | <key>name</key> | |
| 214 | <string>string.other.strong.underscore.mdx</string> | |
| 215 | </dict> | |
| 216 | <dict> | |
| 217 | <key>match</key> | |
| 218 | <string>(?&lt;=\S)\*|\*(?=\S)</string> | |
| 219 | <key>name</key> | |
| 220 | <string>string.other.emphasis.asterisk.mdx</string> | |
| 221 | </dict> | |
| 222 | <dict> | |
| 223 | <key>match</key> | |
| 224 | <string>(?&lt;=[\p{L}\p{N}])_(?![\p{L}\p{N}])|(?&lt;=\p{P})_|(?&lt;![\p{L}\p{N}]|\p{P})_(?!\s)</string> | |
| 225 | <key>name</key> | |
| 226 | <string>string.other.emphasis.underscore.mdx</string> | |
| 227 | </dict> | |
| 228 | </array> | |
| 229 | </dict> | |
| 230 | <key>commonmark-block-quote</key> | |
| 231 | <dict> | |
| 232 | <key>begin</key> | |
| 233 | <string>(?:^|\G)[\t ]*(&gt;)[ ]?</string> | |
| 234 | <key>beginCaptures</key> | |
| 235 | <dict> | |
| 236 | <key>0</key> | |
| 237 | <dict> | |
| 238 | <key>name</key> | |
| 239 | <string>markup.quote.mdx</string> | |
| 240 | </dict> | |
| 241 | <key>1</key> | |
| 242 | <dict> | |
| 243 | <key>name</key> | |
| 244 | <string>punctuation.definition.quote.begin.mdx</string> | |
| 245 | </dict> | |
| 246 | </dict> | |
| 247 | <key>patterns</key> | |
| 248 | <array> | |
| 249 | <dict> | |
| 250 | <key>include</key> | |
| 251 | <string>#markdown-sections</string> | |
| 252 | </dict> | |
| 253 | </array> | |
| 254 | <key>name</key> | |
| 255 | <string>markup.quote.mdx</string> | |
| 256 | <key>while</key> | |
| 257 | <string>(&gt;)[ ]?</string> | |
| 258 | <key>whileCaptures</key> | |
| 259 | <dict> | |
| 260 | <key>0</key> | |
| 261 | <dict> | |
| 262 | <key>name</key> | |
| 263 | <string>markup.quote.mdx</string> | |
| 264 | </dict> | |
| 265 | <key>1</key> | |
| 266 | <dict> | |
| 267 | <key>name</key> | |
| 268 | <string>punctuation.definition.quote.begin.mdx</string> | |
| 269 | </dict> | |
| 270 | </dict> | |
| 271 | </dict> | |
| 272 | <key>commonmark-character-escape</key> | |
| 273 | <dict> | |
| 274 | <key>match</key> | |
| 275 | <string>\\(?:[!"#$%&amp;'()*+,\-.\/:;&lt;=&gt;?@\[\\\]^_`{|}~])</string> | |
| 276 | <key>name</key> | |
| 277 | <string>constant.language.character-escape.mdx</string> | |
| 278 | </dict> | |
| 279 | <key>commonmark-character-reference</key> | |
| 280 | <dict> | |
| 281 | <key>patterns</key> | |
| 282 | <array> | |
| 283 | <dict> | |
| 284 | <key>include</key> | |
| 285 | <string>#whatwg-html-data-character-reference-named-terminated</string> | |
| 286 | </dict> | |
| 287 | <dict> | |
| 288 | <key>match</key> | |
| 289 | <string>(&amp;)(#)([Xx])([0-9A-Fa-f]{1,6})(;)</string> | |
| 290 | <key>name</key> | |
| 291 | <string>constant.language.character-reference.numeric.hexadecimal.html</string> | |
| 292 | <key>captures</key> | |
| 293 | <dict> | |
| 294 | <key>1</key> | |
| 295 | <dict> | |
| 296 | <key>name</key> | |
| 297 | <string>punctuation.definition.character-reference.begin.html</string> | |
| 298 | </dict> | |
| 299 | <key>2</key> | |
| 300 | <dict> | |
| 301 | <key>name</key> | |
| 302 | <string>punctuation.definition.character-reference.numeric.html</string> | |
| 303 | </dict> | |
| 304 | <key>3</key> | |
| 305 | <dict> | |
| 306 | <key>name</key> | |
| 307 | <string>punctuation.definition.character-reference.numeric.hexadecimal.html</string> | |
| 308 | </dict> | |
| 309 | <key>4</key> | |
| 310 | <dict> | |
| 311 | <key>name</key> | |
| 312 | <string>constant.numeric.integer.hexadecimal.html</string> | |
| 313 | </dict> | |
| 314 | <key>5</key> | |
| 315 | <dict> | |
| 316 | <key>name</key> | |
| 317 | <string>punctuation.definition.character-reference.end.html</string> | |
| 318 | </dict> | |
| 319 | </dict> | |
| 320 | </dict> | |
| 321 | <dict> | |
| 322 | <key>match</key> | |
| 323 | <string>(&amp;)(#)([0-9]{1,7})(;)</string> | |
| 324 | <key>name</key> | |
| 325 | <string>constant.language.character-reference.numeric.decimal.html</string> | |
| 326 | <key>captures</key> | |
| 327 | <dict> | |
| 328 | <key>1</key> | |
| 329 | <dict> | |
| 330 | <key>name</key> | |
| 331 | <string>punctuation.definition.character-reference.begin.html</string> | |
| 332 | </dict> | |
| 333 | <key>2</key> | |
| 334 | <dict> | |
| 335 | <key>name</key> | |
| 336 | <string>punctuation.definition.character-reference.numeric.html</string> | |
| 337 | </dict> | |
| 338 | <key>3</key> | |
| 339 | <dict> | |
| 340 | <key>name</key> | |
| 341 | <string>constant.numeric.integer.decimal.html</string> | |
| 342 | </dict> | |
| 343 | <key>4</key> | |
| 344 | <dict> | |
| 345 | <key>name</key> | |
| 346 | <string>punctuation.definition.character-reference.end.html</string> | |
| 347 | </dict> | |
| 348 | </dict> | |
| 349 | </dict> | |
| 350 | </array> | |
| 351 | </dict> | |
| 352 | <key>commonmark-code-fenced</key> | |
| 353 | <dict> | |
| 354 | <key>patterns</key> | |
| 355 | <array> | |
| 356 | <dict> | |
| 357 | <key>include</key> | |
| 358 | <string>#commonmark-code-fenced-apib</string> | |
| 359 | </dict> | |
| 360 | <dict> | |
| 361 | <key>include</key> | |
| 362 | <string>#commonmark-code-fenced-asciidoc</string> | |
| 363 | </dict> | |
| 364 | <dict> | |
| 365 | <key>include</key> | |
| 366 | <string>#commonmark-code-fenced-c</string> | |
| 367 | </dict> | |
| 368 | <dict> | |
| 369 | <key>include</key> | |
| 370 | <string>#commonmark-code-fenced-clojure</string> | |
| 371 | </dict> | |
| 372 | <dict> | |
| 373 | <key>include</key> | |
| 374 | <string>#commonmark-code-fenced-coffee</string> | |
| 375 | </dict> | |
| 376 | <dict> | |
| 377 | <key>include</key> | |
| 378 | <string>#commonmark-code-fenced-console</string> | |
| 379 | </dict> | |
| 380 | <dict> | |
| 381 | <key>include</key> | |
| 382 | <string>#commonmark-code-fenced-cpp</string> | |
| 383 | </dict> | |
| 384 | <dict> | |
| 385 | <key>include</key> | |
| 386 | <string>#commonmark-code-fenced-cs</string> | |
| 387 | </dict> | |
| 388 | <dict> | |
| 389 | <key>include</key> | |
| 390 | <string>#commonmark-code-fenced-css</string> | |
| 391 | </dict> | |
| 392 | <dict> | |
| 393 | <key>include</key> | |
| 394 | <string>#commonmark-code-fenced-diff</string> | |
| 395 | </dict> | |
| 396 | <dict> | |
| 397 | <key>include</key> | |
| 398 | <string>#commonmark-code-fenced-dockerfile</string> | |
| 399 | </dict> | |
| 400 | <dict> | |
| 401 | <key>include</key> | |
| 402 | <string>#commonmark-code-fenced-elixir</string> | |
| 403 | </dict> | |
| 404 | <dict> | |
| 405 | <key>include</key> | |
| 406 | <string>#commonmark-code-fenced-elm</string> | |
| 407 | </dict> | |
| 408 | <dict> | |
| 409 | <key>include</key> | |
| 410 | <string>#commonmark-code-fenced-erlang</string> | |
| 411 | </dict> | |
| 412 | <dict> | |
| 413 | <key>include</key> | |
| 414 | <string>#commonmark-code-fenced-gitconfig</string> | |
| 415 | </dict> | |
| 416 | <dict> | |
| 417 | <key>include</key> | |
| 418 | <string>#commonmark-code-fenced-go</string> | |
| 419 | </dict> | |
| 420 | <dict> | |
| 421 | <key>include</key> | |
| 422 | <string>#commonmark-code-fenced-graphql</string> | |
| 423 | </dict> | |
| 424 | <dict> | |
| 425 | <key>include</key> | |
| 426 | <string>#commonmark-code-fenced-haskell</string> | |
| 427 | </dict> | |
| 428 | <dict> | |
| 429 | <key>include</key> | |
| 430 | <string>#commonmark-code-fenced-html</string> | |
| 431 | </dict> | |
| 432 | <dict> | |
| 433 | <key>include</key> | |
| 434 | <string>#commonmark-code-fenced-ini</string> | |
| 435 | </dict> | |
| 436 | <dict> | |
| 437 | <key>include</key> | |
| 438 | <string>#commonmark-code-fenced-java</string> | |
| 439 | </dict> | |
| 440 | <dict> | |
| 441 | <key>include</key> | |
| 442 | <string>#commonmark-code-fenced-js</string> | |
| 443 | </dict> | |
| 444 | <dict> | |
| 445 | <key>include</key> | |
| 446 | <string>#commonmark-code-fenced-json</string> | |
| 447 | </dict> | |
| 448 | <dict> | |
| 449 | <key>include</key> | |
| 450 | <string>#commonmark-code-fenced-julia</string> | |
| 451 | </dict> | |
| 452 | <dict> | |
| 453 | <key>include</key> | |
| 454 | <string>#commonmark-code-fenced-kotlin</string> | |
| 455 | </dict> | |
| 456 | <dict> | |
| 457 | <key>include</key> | |
| 458 | <string>#commonmark-code-fenced-less</string> | |
| 459 | </dict> | |
| 460 | <dict> | |
| 461 | <key>include</key> | |
| 462 | <string>#commonmark-code-fenced-less</string> | |
| 463 | </dict> | |
| 464 | <dict> | |
| 465 | <key>include</key> | |
| 466 | <string>#commonmark-code-fenced-lua</string> | |
| 467 | </dict> | |
| 468 | <dict> | |
| 469 | <key>include</key> | |
| 470 | <string>#commonmark-code-fenced-makefile</string> | |
| 471 | </dict> | |
| 472 | <dict> | |
| 473 | <key>include</key> | |
| 474 | <string>#commonmark-code-fenced-md</string> | |
| 475 | </dict> | |
| 476 | <dict> | |
| 477 | <key>include</key> | |
| 478 | <string>#commonmark-code-fenced-mdx</string> | |
| 479 | </dict> | |
| 480 | <dict> | |
| 481 | <key>include</key> | |
| 482 | <string>#commonmark-code-fenced-objc</string> | |
| 483 | </dict> | |
| 484 | <dict> | |
| 485 | <key>include</key> | |
| 486 | <string>#commonmark-code-fenced-perl</string> | |
| 487 | </dict> | |
| 488 | <dict> | |
| 489 | <key>include</key> | |
| 490 | <string>#commonmark-code-fenced-php</string> | |
| 491 | </dict> | |
| 492 | <dict> | |
| 493 | <key>include</key> | |
| 494 | <string>#commonmark-code-fenced-php</string> | |
| 495 | </dict> | |
| 496 | <dict> | |
| 497 | <key>include</key> | |
| 498 | <string>#commonmark-code-fenced-python</string> | |
| 499 | </dict> | |
| 500 | <dict> | |
| 501 | <key>include</key> | |
| 502 | <string>#commonmark-code-fenced-r</string> | |
| 503 | </dict> | |
| 504 | <dict> | |
| 505 | <key>include</key> | |
| 506 | <string>#commonmark-code-fenced-raku</string> | |
| 507 | </dict> | |
| 508 | <dict> | |
| 509 | <key>include</key> | |
| 510 | <string>#commonmark-code-fenced-ruby</string> | |
| 511 | </dict> | |
| 512 | <dict> | |
| 513 | <key>include</key> | |
| 514 | <string>#commonmark-code-fenced-rust</string> | |
| 515 | </dict> | |
| 516 | <dict> | |
| 517 | <key>include</key> | |
| 518 | <string>#commonmark-code-fenced-scala</string> | |
| 519 | </dict> | |
| 520 | <dict> | |
| 521 | <key>include</key> | |
| 522 | <string>#commonmark-code-fenced-scss</string> | |
| 523 | </dict> | |
| 524 | <dict> | |
| 525 | <key>include</key> | |
| 526 | <string>#commonmark-code-fenced-shell</string> | |
| 527 | </dict> | |
| 528 | <dict> | |
| 529 | <key>include</key> | |
| 530 | <string>#commonmark-code-fenced-shell-session</string> | |
| 531 | </dict> | |
| 532 | <dict> | |
| 533 | <key>include</key> | |
| 534 | <string>#commonmark-code-fenced-sql</string> | |
| 535 | </dict> | |
| 536 | <dict> | |
| 537 | <key>include</key> | |
| 538 | <string>#commonmark-code-fenced-svg</string> | |
| 539 | </dict> | |
| 540 | <dict> | |
| 541 | <key>include</key> | |
| 542 | <string>#commonmark-code-fenced-swift</string> | |
| 543 | </dict> | |
| 544 | <dict> | |
| 545 | <key>include</key> | |
| 546 | <string>#commonmark-code-fenced-toml</string> | |
| 547 | </dict> | |
| 548 | <dict> | |
| 549 | <key>include</key> | |
| 550 | <string>#commonmark-code-fenced-ts</string> | |
| 551 | </dict> | |
| 552 | <dict> | |
| 553 | <key>include</key> | |
| 554 | <string>#commonmark-code-fenced-tsx</string> | |
| 555 | </dict> | |
| 556 | <dict> | |
| 557 | <key>include</key> | |
| 558 | <string>#commonmark-code-fenced-vbnet</string> | |
| 559 | </dict> | |
| 560 | <dict> | |
| 561 | <key>include</key> | |
| 562 | <string>#commonmark-code-fenced-xml</string> | |
| 563 | </dict> | |
| 564 | <dict> | |
| 565 | <key>include</key> | |
| 566 | <string>#commonmark-code-fenced-yaml</string> | |
| 567 | </dict> | |
| 568 | <dict> | |
| 569 | <key>include</key> | |
| 570 | <string>#commonmark-code-fenced-unknown</string> | |
| 571 | </dict> | |
| 572 | </array> | |
| 573 | </dict> | |
| 574 | <key>commonmark-code-fenced-unknown</key> | |
| 575 | <dict> | |
| 576 | <key>patterns</key> | |
| 577 | <array> | |
| 578 | <dict> | |
| 579 | <key>begin</key> | |
| 580 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?:[^\t\n\r` ])+)(?:[\t ]+((?:[^\n\r`])+))?)?(?:[\t ]*$)</string> | |
| 581 | <key>beginCaptures</key> | |
| 582 | <dict> | |
| 583 | <key>1</key> | |
| 584 | <dict> | |
| 585 | <key>name</key> | |
| 586 | <string>string.other.begin.code.fenced.mdx</string> | |
| 587 | </dict> | |
| 588 | <key>2</key> | |
| 589 | <dict> | |
| 590 | <key>name</key> | |
| 591 | <string>entity.name.function.mdx</string> | |
| 592 | <key>patterns</key> | |
| 593 | <array> | |
| 594 | <dict> | |
| 595 | <key>include</key> | |
| 596 | <string>#markdown-string</string> | |
| 597 | </dict> | |
| 598 | </array> | |
| 599 | </dict> | |
| 600 | <key>3</key> | |
| 601 | <dict> | |
| 602 | <key>patterns</key> | |
| 603 | <array> | |
| 604 | <dict> | |
| 605 | <key>include</key> | |
| 606 | <string>#markdown-string</string> | |
| 607 | </dict> | |
| 608 | </array> | |
| 609 | </dict> | |
| 610 | </dict> | |
| 611 | <key>contentName</key> | |
| 612 | <string>markup.raw.code.fenced.mdx</string> | |
| 613 | <key>end</key> | |
| 614 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 615 | <key>endCaptures</key> | |
| 616 | <dict> | |
| 617 | <key>1</key> | |
| 618 | <dict> | |
| 619 | <key>name</key> | |
| 620 | <string>string.other.end.code.fenced.mdx</string> | |
| 621 | </dict> | |
| 622 | </dict> | |
| 623 | <key>name</key> | |
| 624 | <string>markup.code.other.mdx</string> | |
| 625 | </dict> | |
| 626 | <dict> | |
| 627 | <key>begin</key> | |
| 628 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?:[^\t\n\r ])+)(?:[\t ]+((?:[^\n\r])+))?)?(?:[\t ]*$)</string> | |
| 629 | <key>beginCaptures</key> | |
| 630 | <dict> | |
| 631 | <key>1</key> | |
| 632 | <dict> | |
| 633 | <key>name</key> | |
| 634 | <string>string.other.begin.code.fenced.mdx</string> | |
| 635 | </dict> | |
| 636 | <key>2</key> | |
| 637 | <dict> | |
| 638 | <key>name</key> | |
| 639 | <string>entity.name.function.mdx</string> | |
| 640 | <key>patterns</key> | |
| 641 | <array> | |
| 642 | <dict> | |
| 643 | <key>include</key> | |
| 644 | <string>#markdown-string</string> | |
| 645 | </dict> | |
| 646 | </array> | |
| 647 | </dict> | |
| 648 | <key>3</key> | |
| 649 | <dict> | |
| 650 | <key>patterns</key> | |
| 651 | <array> | |
| 652 | <dict> | |
| 653 | <key>include</key> | |
| 654 | <string>#markdown-string</string> | |
| 655 | </dict> | |
| 656 | </array> | |
| 657 | </dict> | |
| 658 | </dict> | |
| 659 | <key>contentName</key> | |
| 660 | <string>markup.raw.code.fenced.mdx</string> | |
| 661 | <key>end</key> | |
| 662 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 663 | <key>endCaptures</key> | |
| 664 | <dict> | |
| 665 | <key>1</key> | |
| 666 | <dict> | |
| 667 | <key>name</key> | |
| 668 | <string>string.other.end.code.fenced.mdx</string> | |
| 669 | </dict> | |
| 670 | </dict> | |
| 671 | <key>name</key> | |
| 672 | <string>markup.code.other.mdx</string> | |
| 673 | </dict> | |
| 674 | </array> | |
| 675 | </dict> | |
| 676 | <key>commonmark-code-text</key> | |
| 677 | <dict> | |
| 678 | <key>match</key> | |
| 679 | <string>(?&lt;!`)(`+)(?!`)(.+?)(?&lt;!`)(\1)(?!`)</string> | |
| 680 | <key>name</key> | |
| 681 | <string>markup.code.other.mdx</string> | |
| 682 | <key>captures</key> | |
| 683 | <dict> | |
| 684 | <key>1</key> | |
| 685 | <dict> | |
| 686 | <key>name</key> | |
| 687 | <string>string.other.begin.code.mdx</string> | |
| 688 | </dict> | |
| 689 | <key>2</key> | |
| 690 | <dict> | |
| 691 | <key>name</key> | |
| 692 | <string>markup.raw.code.mdx markup.inline.raw.code.mdx</string> | |
| 693 | </dict> | |
| 694 | <key>3</key> | |
| 695 | <dict> | |
| 696 | <key>name</key> | |
| 697 | <string>string.other.end.code.mdx</string> | |
| 698 | </dict> | |
| 699 | </dict> | |
| 700 | </dict> | |
| 701 | <key>commonmark-definition</key> | |
| 702 | <dict> | |
| 703 | <key>match</key> | |
| 704 | <string>(?:^|\G)[\t ]*(\[)((?:[^\[\\\]]|\\[\[\\\]]?)+?)(\])(:)[ \t]*(?:(&lt;)((?:[^\n&lt;\\&gt;]|\\[&lt;\\&gt;]?)*)(&gt;)|(\g&lt;destination_raw&gt;))(?:[\t ]+(?:(")((?:[^"\\]|\\["\\]?)*)(")|(')((?:[^'\\]|\\['\\]?)*)(')|(\()((?:[^\)\\]|\\[\)\\]?)*)(\))))?$(?&lt;destination_raw&gt;(?!\&lt;)(?:(?:[^\p{Cc}\ \\\(\)]|\\[\(\)\\]?)|\(\g&lt;destination_raw&gt;*\))+){0}</string> | |
| 705 | <key>name</key> | |
| 706 | <string>meta.link.reference.def.mdx</string> | |
| 707 | <key>captures</key> | |
| 708 | <dict> | |
| 709 | <key>1</key> | |
| 710 | <dict> | |
| 711 | <key>name</key> | |
| 712 | <string>string.other.begin.mdx</string> | |
| 713 | </dict> | |
| 714 | <key>2</key> | |
| 715 | <dict> | |
| 716 | <key>name</key> | |
| 717 | <string>entity.name.identifier.mdx</string> | |
| 718 | <key>patterns</key> | |
| 719 | <array> | |
| 720 | <dict> | |
| 721 | <key>include</key> | |
| 722 | <string>#markdown-string</string> | |
| 723 | </dict> | |
| 724 | </array> | |
| 725 | </dict> | |
| 726 | <key>3</key> | |
| 727 | <dict> | |
| 728 | <key>name</key> | |
| 729 | <string>string.other.end.mdx</string> | |
| 730 | </dict> | |
| 731 | <key>4</key> | |
| 732 | <dict> | |
| 733 | <key>name</key> | |
| 734 | <string>punctuation.separator.key-value.mdx</string> | |
| 735 | </dict> | |
| 736 | <key>5</key> | |
| 737 | <dict> | |
| 738 | <key>name</key> | |
| 739 | <string>string.other.begin.destination.mdx</string> | |
| 740 | </dict> | |
| 741 | <key>6</key> | |
| 742 | <dict> | |
| 743 | <key>name</key> | |
| 744 | <string>string.other.link.destination.mdx</string> | |
| 745 | <key>patterns</key> | |
| 746 | <array> | |
| 747 | <dict> | |
| 748 | <key>include</key> | |
| 749 | <string>#markdown-string</string> | |
| 750 | </dict> | |
| 751 | </array> | |
| 752 | </dict> | |
| 753 | <key>7</key> | |
| 754 | <dict> | |
| 755 | <key>name</key> | |
| 756 | <string>string.other.end.destination.mdx</string> | |
| 757 | </dict> | |
| 758 | <key>8</key> | |
| 759 | <dict> | |
| 760 | <key>name</key> | |
| 761 | <string>string.other.link.destination.mdx</string> | |
| 762 | <key>patterns</key> | |
| 763 | <array> | |
| 764 | <dict> | |
| 765 | <key>include</key> | |
| 766 | <string>#markdown-string</string> | |
| 767 | </dict> | |
| 768 | </array> | |
| 769 | </dict> | |
| 770 | <key>9</key> | |
| 771 | <dict> | |
| 772 | <key>name</key> | |
| 773 | <string>string.other.begin.mdx</string> | |
| 774 | </dict> | |
| 775 | <key>10</key> | |
| 776 | <dict> | |
| 777 | <key>name</key> | |
| 778 | <string>string.quoted.double.mdx</string> | |
| 779 | <key>patterns</key> | |
| 780 | <array> | |
| 781 | <dict> | |
| 782 | <key>include</key> | |
| 783 | <string>#markdown-string</string> | |
| 784 | </dict> | |
| 785 | </array> | |
| 786 | </dict> | |
| 787 | <key>11</key> | |
| 788 | <dict> | |
| 789 | <key>name</key> | |
| 790 | <string>string.other.end.mdx</string> | |
| 791 | </dict> | |
| 792 | <key>12</key> | |
| 793 | <dict> | |
| 794 | <key>name</key> | |
| 795 | <string>string.other.begin.mdx</string> | |
| 796 | </dict> | |
| 797 | <key>13</key> | |
| 798 | <dict> | |
| 799 | <key>name</key> | |
| 800 | <string>string.quoted.single.mdx</string> | |
| 801 | <key>patterns</key> | |
| 802 | <array> | |
| 803 | <dict> | |
| 804 | <key>include</key> | |
| 805 | <string>#markdown-string</string> | |
| 806 | </dict> | |
| 807 | </array> | |
| 808 | </dict> | |
| 809 | <key>14</key> | |
| 810 | <dict> | |
| 811 | <key>name</key> | |
| 812 | <string>string.other.end.mdx</string> | |
| 813 | </dict> | |
| 814 | <key>15</key> | |
| 815 | <dict> | |
| 816 | <key>name</key> | |
| 817 | <string>string.other.begin.mdx</string> | |
| 818 | </dict> | |
| 819 | <key>16</key> | |
| 820 | <dict> | |
| 821 | <key>name</key> | |
| 822 | <string>string.quoted.paren.mdx</string> | |
| 823 | <key>patterns</key> | |
| 824 | <array> | |
| 825 | <dict> | |
| 826 | <key>include</key> | |
| 827 | <string>#markdown-string</string> | |
| 828 | </dict> | |
| 829 | </array> | |
| 830 | </dict> | |
| 831 | <key>17</key> | |
| 832 | <dict> | |
| 833 | <key>name</key> | |
| 834 | <string>string.other.end.mdx</string> | |
| 835 | </dict> | |
| 836 | </dict> | |
| 837 | </dict> | |
| 838 | <key>commonmark-hard-break-escape</key> | |
| 839 | <dict> | |
| 840 | <key>match</key> | |
| 841 | <string>\\$</string> | |
| 842 | <key>name</key> | |
| 843 | <string>constant.language.character-escape.line-ending.mdx</string> | |
| 844 | </dict> | |
| 845 | <key>commonmark-hard-break-trailing</key> | |
| 846 | <dict> | |
| 847 | <key>match</key> | |
| 848 | <string>( ){2,}$</string> | |
| 849 | <key>name</key> | |
| 850 | <string>carriage-return constant.language.character-escape.line-ending.mdx</string> | |
| 851 | </dict> | |
| 852 | <key>commonmark-heading-atx</key> | |
| 853 | <dict> | |
| 854 | <key>patterns</key> | |
| 855 | <array> | |
| 856 | <dict> | |
| 857 | <key>match</key> | |
| 858 | <string>(?:^|\G)[\t ]*(#{1}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 859 | <key>name</key> | |
| 860 | <string>markup.heading.atx.1.mdx</string> | |
| 861 | <key>captures</key> | |
| 862 | <dict> | |
| 863 | <key>1</key> | |
| 864 | <dict> | |
| 865 | <key>name</key> | |
| 866 | <string>punctuation.definition.heading.mdx</string> | |
| 867 | </dict> | |
| 868 | <key>2</key> | |
| 869 | <dict> | |
| 870 | <key>name</key> | |
| 871 | <string>entity.name.section.mdx</string> | |
| 872 | <key>patterns</key> | |
| 873 | <array> | |
| 874 | <dict> | |
| 875 | <key>include</key> | |
| 876 | <string>#markdown-text</string> | |
| 877 | </dict> | |
| 878 | </array> | |
| 879 | </dict> | |
| 880 | <key>3</key> | |
| 881 | <dict> | |
| 882 | <key>name</key> | |
| 883 | <string>punctuation.definition.heading.mdx</string> | |
| 884 | </dict> | |
| 885 | </dict> | |
| 886 | </dict> | |
| 887 | <dict> | |
| 888 | <key>match</key> | |
| 889 | <string>(?:^|\G)[\t ]*(#{2}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 890 | <key>name</key> | |
| 891 | <string>markup.heading.atx.2.mdx</string> | |
| 892 | <key>captures</key> | |
| 893 | <dict> | |
| 894 | <key>1</key> | |
| 895 | <dict> | |
| 896 | <key>name</key> | |
| 897 | <string>punctuation.definition.heading.mdx</string> | |
| 898 | </dict> | |
| 899 | <key>2</key> | |
| 900 | <dict> | |
| 901 | <key>name</key> | |
| 902 | <string>entity.name.section.mdx</string> | |
| 903 | <key>patterns</key> | |
| 904 | <array> | |
| 905 | <dict> | |
| 906 | <key>include</key> | |
| 907 | <string>#markdown-text</string> | |
| 908 | </dict> | |
| 909 | </array> | |
| 910 | </dict> | |
| 911 | <key>3</key> | |
| 912 | <dict> | |
| 913 | <key>name</key> | |
| 914 | <string>punctuation.definition.heading.mdx</string> | |
| 915 | </dict> | |
| 916 | </dict> | |
| 917 | </dict> | |
| 918 | <dict> | |
| 919 | <key>match</key> | |
| 920 | <string>(?:^|\G)[\t ]*(#{3}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 921 | <key>name</key> | |
| 922 | <string>markup.heading.atx.3.mdx</string> | |
| 923 | <key>captures</key> | |
| 924 | <dict> | |
| 925 | <key>1</key> | |
| 926 | <dict> | |
| 927 | <key>name</key> | |
| 928 | <string>punctuation.definition.heading.mdx</string> | |
| 929 | </dict> | |
| 930 | <key>2</key> | |
| 931 | <dict> | |
| 932 | <key>name</key> | |
| 933 | <string>entity.name.section.mdx</string> | |
| 934 | <key>patterns</key> | |
| 935 | <array> | |
| 936 | <dict> | |
| 937 | <key>include</key> | |
| 938 | <string>#markdown-text</string> | |
| 939 | </dict> | |
| 940 | </array> | |
| 941 | </dict> | |
| 942 | <key>3</key> | |
| 943 | <dict> | |
| 944 | <key>name</key> | |
| 945 | <string>punctuation.definition.heading.mdx</string> | |
| 946 | </dict> | |
| 947 | </dict> | |
| 948 | </dict> | |
| 949 | <dict> | |
| 950 | <key>match</key> | |
| 951 | <string>(?:^|\G)[\t ]*(#{4}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 952 | <key>name</key> | |
| 953 | <string>markup.heading.atx.4.mdx</string> | |
| 954 | <key>captures</key> | |
| 955 | <dict> | |
| 956 | <key>1</key> | |
| 957 | <dict> | |
| 958 | <key>name</key> | |
| 959 | <string>punctuation.definition.heading.mdx</string> | |
| 960 | </dict> | |
| 961 | <key>2</key> | |
| 962 | <dict> | |
| 963 | <key>name</key> | |
| 964 | <string>entity.name.section.mdx</string> | |
| 965 | <key>patterns</key> | |
| 966 | <array> | |
| 967 | <dict> | |
| 968 | <key>include</key> | |
| 969 | <string>#markdown-text</string> | |
| 970 | </dict> | |
| 971 | </array> | |
| 972 | </dict> | |
| 973 | <key>3</key> | |
| 974 | <dict> | |
| 975 | <key>name</key> | |
| 976 | <string>punctuation.definition.heading.mdx</string> | |
| 977 | </dict> | |
| 978 | </dict> | |
| 979 | </dict> | |
| 980 | <dict> | |
| 981 | <key>match</key> | |
| 982 | <string>(?:^|\G)[\t ]*(#{5}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 983 | <key>name</key> | |
| 984 | <string>markup.heading.atx.5.mdx</string> | |
| 985 | <key>captures</key> | |
| 986 | <dict> | |
| 987 | <key>1</key> | |
| 988 | <dict> | |
| 989 | <key>name</key> | |
| 990 | <string>punctuation.definition.heading.mdx</string> | |
| 991 | </dict> | |
| 992 | <key>2</key> | |
| 993 | <dict> | |
| 994 | <key>name</key> | |
| 995 | <string>entity.name.section.mdx</string> | |
| 996 | <key>patterns</key> | |
| 997 | <array> | |
| 998 | <dict> | |
| 999 | <key>include</key> | |
| 1000 | <string>#markdown-text</string> | |
| 1001 | </dict> | |
| 1002 | </array> | |
| 1003 | </dict> | |
| 1004 | <key>3</key> | |
| 1005 | <dict> | |
| 1006 | <key>name</key> | |
| 1007 | <string>punctuation.definition.heading.mdx</string> | |
| 1008 | </dict> | |
| 1009 | </dict> | |
| 1010 | </dict> | |
| 1011 | <dict> | |
| 1012 | <key>match</key> | |
| 1013 | <string>(?:^|\G)[\t ]*(#{6}(?!#))(?:[ \t]+([^\r\n]+?)(?:[ \t]+(#+?))?)?[ \t]*$</string> | |
| 1014 | <key>name</key> | |
| 1015 | <string>markup.heading.atx.6.mdx</string> | |
| 1016 | <key>captures</key> | |
| 1017 | <dict> | |
| 1018 | <key>1</key> | |
| 1019 | <dict> | |
| 1020 | <key>name</key> | |
| 1021 | <string>punctuation.definition.heading.mdx</string> | |
| 1022 | </dict> | |
| 1023 | <key>2</key> | |
| 1024 | <dict> | |
| 1025 | <key>name</key> | |
| 1026 | <string>entity.name.section.mdx</string> | |
| 1027 | <key>patterns</key> | |
| 1028 | <array> | |
| 1029 | <dict> | |
| 1030 | <key>include</key> | |
| 1031 | <string>#markdown-text</string> | |
| 1032 | </dict> | |
| 1033 | </array> | |
| 1034 | </dict> | |
| 1035 | <key>3</key> | |
| 1036 | <dict> | |
| 1037 | <key>name</key> | |
| 1038 | <string>punctuation.definition.heading.mdx</string> | |
| 1039 | </dict> | |
| 1040 | </dict> | |
| 1041 | </dict> | |
| 1042 | </array> | |
| 1043 | </dict> | |
| 1044 | <key>commonmark-heading-setext</key> | |
| 1045 | <dict> | |
| 1046 | <key>patterns</key> | |
| 1047 | <array> | |
| 1048 | <dict> | |
| 1049 | <key>match</key> | |
| 1050 | <string>(?:^|\G)[\t ]*(={1,})[ \t]*$</string> | |
| 1051 | <key>name</key> | |
| 1052 | <string>markup.heading.setext.1.mdx</string> | |
| 1053 | </dict> | |
| 1054 | <dict> | |
| 1055 | <key>match</key> | |
| 1056 | <string>(?:^|\G)[\t ]*(-{1,})[ \t]*$</string> | |
| 1057 | <key>name</key> | |
| 1058 | <string>markup.heading.setext.2.mdx</string> | |
| 1059 | </dict> | |
| 1060 | </array> | |
| 1061 | </dict> | |
| 1062 | <key>commonmark-label-end</key> | |
| 1063 | <dict> | |
| 1064 | <key>patterns</key> | |
| 1065 | <array> | |
| 1066 | <dict> | |
| 1067 | <key>match</key> | |
| 1068 | <string>(\])(\()[\t ]*(?:(?:(&lt;)((?:[^\n&lt;\\&gt;]|\\[&lt;\\&gt;]?)*)(&gt;)|(\g&lt;destination_raw&gt;))(?:[\t ]+(?:(")((?:[^"\\]|\\["\\]?)*)(")|(')((?:[^'\\]|\\['\\]?)*)(')|(\()((?:[^\)\\]|\\[\)\\]?)*)(\))))?)?[\t ]*(\))(?&lt;destination_raw&gt;(?!\&lt;)(?:(?:[^\p{Cc}\ \\\(\)]|\\[\(\)\\]?)|\(\g&lt;destination_raw&gt;*\))+){0}</string> | |
| 1069 | <key>captures</key> | |
| 1070 | <dict> | |
| 1071 | <key>1</key> | |
| 1072 | <dict> | |
| 1073 | <key>name</key> | |
| 1074 | <string>string.other.end.mdx</string> | |
| 1075 | </dict> | |
| 1076 | <key>2</key> | |
| 1077 | <dict> | |
| 1078 | <key>name</key> | |
| 1079 | <string>string.other.begin.mdx</string> | |
| 1080 | </dict> | |
| 1081 | <key>3</key> | |
| 1082 | <dict> | |
| 1083 | <key>name</key> | |
| 1084 | <string>string.other.begin.destination.mdx</string> | |
| 1085 | </dict> | |
| 1086 | <key>4</key> | |
| 1087 | <dict> | |
| 1088 | <key>name</key> | |
| 1089 | <string>string.other.link.destination.mdx</string> | |
| 1090 | <key>patterns</key> | |
| 1091 | <array> | |
| 1092 | <dict> | |
| 1093 | <key>include</key> | |
| 1094 | <string>#markdown-string</string> | |
| 1095 | </dict> | |
| 1096 | </array> | |
| 1097 | </dict> | |
| 1098 | <key>5</key> | |
| 1099 | <dict> | |
| 1100 | <key>name</key> | |
| 1101 | <string>string.other.end.destination.mdx</string> | |
| 1102 | </dict> | |
| 1103 | <key>6</key> | |
| 1104 | <dict> | |
| 1105 | <key>name</key> | |
| 1106 | <string>string.other.link.destination.mdx</string> | |
| 1107 | <key>patterns</key> | |
| 1108 | <array> | |
| 1109 | <dict> | |
| 1110 | <key>include</key> | |
| 1111 | <string>#markdown-string</string> | |
| 1112 | </dict> | |
| 1113 | </array> | |
| 1114 | </dict> | |
| 1115 | <key>7</key> | |
| 1116 | <dict> | |
| 1117 | <key>name</key> | |
| 1118 | <string>string.other.begin.mdx</string> | |
| 1119 | </dict> | |
| 1120 | <key>8</key> | |
| 1121 | <dict> | |
| 1122 | <key>name</key> | |
| 1123 | <string>string.quoted.double.mdx</string> | |
| 1124 | <key>patterns</key> | |
| 1125 | <array> | |
| 1126 | <dict> | |
| 1127 | <key>include</key> | |
| 1128 | <string>#markdown-string</string> | |
| 1129 | </dict> | |
| 1130 | </array> | |
| 1131 | </dict> | |
| 1132 | <key>9</key> | |
| 1133 | <dict> | |
| 1134 | <key>name</key> | |
| 1135 | <string>string.other.end.mdx</string> | |
| 1136 | </dict> | |
| 1137 | <key>10</key> | |
| 1138 | <dict> | |
| 1139 | <key>name</key> | |
| 1140 | <string>string.other.begin.mdx</string> | |
| 1141 | </dict> | |
| 1142 | <key>11</key> | |
| 1143 | <dict> | |
| 1144 | <key>name</key> | |
| 1145 | <string>string.quoted.single.mdx</string> | |
| 1146 | <key>patterns</key> | |
| 1147 | <array> | |
| 1148 | <dict> | |
| 1149 | <key>include</key> | |
| 1150 | <string>#markdown-string</string> | |
| 1151 | </dict> | |
| 1152 | </array> | |
| 1153 | </dict> | |
| 1154 | <key>12</key> | |
| 1155 | <dict> | |
| 1156 | <key>name</key> | |
| 1157 | <string>string.other.end.mdx</string> | |
| 1158 | </dict> | |
| 1159 | <key>13</key> | |
| 1160 | <dict> | |
| 1161 | <key>name</key> | |
| 1162 | <string>string.other.begin.mdx</string> | |
| 1163 | </dict> | |
| 1164 | <key>14</key> | |
| 1165 | <dict> | |
| 1166 | <key>name</key> | |
| 1167 | <string>string.quoted.paren.mdx</string> | |
| 1168 | <key>patterns</key> | |
| 1169 | <array> | |
| 1170 | <dict> | |
| 1171 | <key>include</key> | |
| 1172 | <string>#markdown-string</string> | |
| 1173 | </dict> | |
| 1174 | </array> | |
| 1175 | </dict> | |
| 1176 | <key>15</key> | |
| 1177 | <dict> | |
| 1178 | <key>name</key> | |
| 1179 | <string>string.other.end.mdx</string> | |
| 1180 | </dict> | |
| 1181 | <key>16</key> | |
| 1182 | <dict> | |
| 1183 | <key>name</key> | |
| 1184 | <string>string.other.end.mdx</string> | |
| 1185 | </dict> | |
| 1186 | </dict> | |
| 1187 | </dict> | |
| 1188 | <dict> | |
| 1189 | <key>match</key> | |
| 1190 | <string>(\])(\[)((?:[^\[\\\]]|\\[\[\\\]]?)+?)(\])</string> | |
| 1191 | <key>captures</key> | |
| 1192 | <dict> | |
| 1193 | <key>1</key> | |
| 1194 | <dict> | |
| 1195 | <key>name</key> | |
| 1196 | <string>string.other.end.mdx</string> | |
| 1197 | </dict> | |
| 1198 | <key>2</key> | |
| 1199 | <dict> | |
| 1200 | <key>name</key> | |
| 1201 | <string>string.other.begin.mdx</string> | |
| 1202 | </dict> | |
| 1203 | <key>3</key> | |
| 1204 | <dict> | |
| 1205 | <key>name</key> | |
| 1206 | <string>entity.name.identifier.mdx</string> | |
| 1207 | <key>patterns</key> | |
| 1208 | <array> | |
| 1209 | <dict> | |
| 1210 | <key>include</key> | |
| 1211 | <string>#markdown-string</string> | |
| 1212 | </dict> | |
| 1213 | </array> | |
| 1214 | </dict> | |
| 1215 | <key>4</key> | |
| 1216 | <dict> | |
| 1217 | <key>name</key> | |
| 1218 | <string>string.other.end.mdx</string> | |
| 1219 | </dict> | |
| 1220 | </dict> | |
| 1221 | </dict> | |
| 1222 | <dict> | |
| 1223 | <key>match</key> | |
| 1224 | <string>(\])</string> | |
| 1225 | <key>captures</key> | |
| 1226 | <dict> | |
| 1227 | <key>1</key> | |
| 1228 | <dict> | |
| 1229 | <key>name</key> | |
| 1230 | <string>string.other.end.mdx</string> | |
| 1231 | </dict> | |
| 1232 | </dict> | |
| 1233 | </dict> | |
| 1234 | </array> | |
| 1235 | </dict> | |
| 1236 | <key>commonmark-label-start</key> | |
| 1237 | <dict> | |
| 1238 | <key>patterns</key> | |
| 1239 | <array> | |
| 1240 | <dict> | |
| 1241 | <key>match</key> | |
| 1242 | <string>\!\[(?!\^)</string> | |
| 1243 | <key>name</key> | |
| 1244 | <string>string.other.begin.image.mdx</string> | |
| 1245 | </dict> | |
| 1246 | <dict> | |
| 1247 | <key>match</key> | |
| 1248 | <string>\[</string> | |
| 1249 | <key>name</key> | |
| 1250 | <string>string.other.begin.link.mdx</string> | |
| 1251 | </dict> | |
| 1252 | </array> | |
| 1253 | </dict> | |
| 1254 | <key>commonmark-list-item</key> | |
| 1255 | <dict> | |
| 1256 | <key>patterns</key> | |
| 1257 | <array> | |
| 1258 | <dict> | |
| 1259 | <key>begin</key> | |
| 1260 | <string>(?:^|\G)[\t ]*((?:[*+-]))(?:[ ]{4}(?![ ])|\t)(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1261 | <key>beginCaptures</key> | |
| 1262 | <dict> | |
| 1263 | <key>1</key> | |
| 1264 | <dict> | |
| 1265 | <key>name</key> | |
| 1266 | <string>variable.unordered.list.mdx</string> | |
| 1267 | </dict> | |
| 1268 | <key>2</key> | |
| 1269 | <dict> | |
| 1270 | <key>name</key> | |
| 1271 | <string>keyword.other.tasklist.mdx</string> | |
| 1272 | </dict> | |
| 1273 | </dict> | |
| 1274 | <key>patterns</key> | |
| 1275 | <array> | |
| 1276 | <dict> | |
| 1277 | <key>include</key> | |
| 1278 | <string>#markdown-sections</string> | |
| 1279 | </dict> | |
| 1280 | </array> | |
| 1281 | <key>while</key> | |
| 1282 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)[ ]{1}</string> | |
| 1283 | </dict> | |
| 1284 | <dict> | |
| 1285 | <key>begin</key> | |
| 1286 | <string>(?:^|\G)[\t ]*((?:[*+-]))(?:[ ]{3}(?![ ]))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1287 | <key>beginCaptures</key> | |
| 1288 | <dict> | |
| 1289 | <key>1</key> | |
| 1290 | <dict> | |
| 1291 | <key>name</key> | |
| 1292 | <string>variable.unordered.list.mdx</string> | |
| 1293 | </dict> | |
| 1294 | <key>2</key> | |
| 1295 | <dict> | |
| 1296 | <key>name</key> | |
| 1297 | <string>keyword.other.tasklist.mdx</string> | |
| 1298 | </dict> | |
| 1299 | </dict> | |
| 1300 | <key>patterns</key> | |
| 1301 | <array> | |
| 1302 | <dict> | |
| 1303 | <key>include</key> | |
| 1304 | <string>#markdown-sections</string> | |
| 1305 | </dict> | |
| 1306 | </array> | |
| 1307 | <key>while</key> | |
| 1308 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)</string> | |
| 1309 | </dict> | |
| 1310 | <dict> | |
| 1311 | <key>begin</key> | |
| 1312 | <string>(?:^|\G)[\t ]*((?:[*+-]))(?:[ ]{2}(?![ ]))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1313 | <key>beginCaptures</key> | |
| 1314 | <dict> | |
| 1315 | <key>1</key> | |
| 1316 | <dict> | |
| 1317 | <key>name</key> | |
| 1318 | <string>variable.unordered.list.mdx</string> | |
| 1319 | </dict> | |
| 1320 | <key>2</key> | |
| 1321 | <dict> | |
| 1322 | <key>name</key> | |
| 1323 | <string>keyword.other.tasklist.mdx</string> | |
| 1324 | </dict> | |
| 1325 | </dict> | |
| 1326 | <key>patterns</key> | |
| 1327 | <array> | |
| 1328 | <dict> | |
| 1329 | <key>include</key> | |
| 1330 | <string>#markdown-sections</string> | |
| 1331 | </dict> | |
| 1332 | </array> | |
| 1333 | <key>while</key> | |
| 1334 | <string>^(?=[\t ]*$)|(?:^|\G)[ ]{3}</string> | |
| 1335 | </dict> | |
| 1336 | <dict> | |
| 1337 | <key>begin</key> | |
| 1338 | <string>(?:^|\G)[\t ]*((?:[*+-]))(?:[ ]{1}|(?=\n))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1339 | <key>beginCaptures</key> | |
| 1340 | <dict> | |
| 1341 | <key>1</key> | |
| 1342 | <dict> | |
| 1343 | <key>name</key> | |
| 1344 | <string>variable.unordered.list.mdx</string> | |
| 1345 | </dict> | |
| 1346 | <key>2</key> | |
| 1347 | <dict> | |
| 1348 | <key>name</key> | |
| 1349 | <string>keyword.other.tasklist.mdx</string> | |
| 1350 | </dict> | |
| 1351 | </dict> | |
| 1352 | <key>patterns</key> | |
| 1353 | <array> | |
| 1354 | <dict> | |
| 1355 | <key>include</key> | |
| 1356 | <string>#markdown-sections</string> | |
| 1357 | </dict> | |
| 1358 | </array> | |
| 1359 | <key>while</key> | |
| 1360 | <string>^(?=[\t ]*$)|(?:^|\G)[ ]{2}</string> | |
| 1361 | </dict> | |
| 1362 | <dict> | |
| 1363 | <key>begin</key> | |
| 1364 | <string>(?:^|\G)[\t ]*([0-9]{9})((?:\.|\)))(?:[ ]{4}(?![ ])|\t(?![\t ]))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1365 | <key>beginCaptures</key> | |
| 1366 | <dict> | |
| 1367 | <key>1</key> | |
| 1368 | <dict> | |
| 1369 | <key>name</key> | |
| 1370 | <string>string.other.number.mdx</string> | |
| 1371 | </dict> | |
| 1372 | <key>2</key> | |
| 1373 | <dict> | |
| 1374 | <key>name</key> | |
| 1375 | <string>variable.ordered.list.mdx</string> | |
| 1376 | </dict> | |
| 1377 | <key>3</key> | |
| 1378 | <dict> | |
| 1379 | <key>name</key> | |
| 1380 | <string>keyword.other.tasklist.mdx</string> | |
| 1381 | </dict> | |
| 1382 | </dict> | |
| 1383 | <key>patterns</key> | |
| 1384 | <array> | |
| 1385 | <dict> | |
| 1386 | <key>include</key> | |
| 1387 | <string>#markdown-sections</string> | |
| 1388 | </dict> | |
| 1389 | </array> | |
| 1390 | <key>while</key> | |
| 1391 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){3}[ ]{2}</string> | |
| 1392 | </dict> | |
| 1393 | <dict> | |
| 1394 | <key>begin</key> | |
| 1395 | <string>(?:^|\G)[\t ]*(?:([0-9]{9})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{8})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1396 | <key>beginCaptures</key> | |
| 1397 | <dict> | |
| 1398 | <key>1</key> | |
| 1399 | <dict> | |
| 1400 | <key>name</key> | |
| 1401 | <string>string.other.number.mdx</string> | |
| 1402 | </dict> | |
| 1403 | <key>2</key> | |
| 1404 | <dict> | |
| 1405 | <key>name</key> | |
| 1406 | <string>variable.ordered.list.mdx</string> | |
| 1407 | </dict> | |
| 1408 | <key>3</key> | |
| 1409 | <dict> | |
| 1410 | <key>name</key> | |
| 1411 | <string>string.other.number.mdx</string> | |
| 1412 | </dict> | |
| 1413 | <key>4</key> | |
| 1414 | <dict> | |
| 1415 | <key>name</key> | |
| 1416 | <string>variable.ordered.list.mdx</string> | |
| 1417 | </dict> | |
| 1418 | <key>5</key> | |
| 1419 | <dict> | |
| 1420 | <key>name</key> | |
| 1421 | <string>keyword.other.tasklist.mdx</string> | |
| 1422 | </dict> | |
| 1423 | </dict> | |
| 1424 | <key>patterns</key> | |
| 1425 | <array> | |
| 1426 | <dict> | |
| 1427 | <key>include</key> | |
| 1428 | <string>#markdown-sections</string> | |
| 1429 | </dict> | |
| 1430 | </array> | |
| 1431 | <key>while</key> | |
| 1432 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){3}[ ]{1}</string> | |
| 1433 | </dict> | |
| 1434 | <dict> | |
| 1435 | <key>begin</key> | |
| 1436 | <string>(?:^|\G)[\t ]*(?:([0-9]{9})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{8})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{7})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1437 | <key>beginCaptures</key> | |
| 1438 | <dict> | |
| 1439 | <key>1</key> | |
| 1440 | <dict> | |
| 1441 | <key>name</key> | |
| 1442 | <string>string.other.number.mdx</string> | |
| 1443 | </dict> | |
| 1444 | <key>2</key> | |
| 1445 | <dict> | |
| 1446 | <key>name</key> | |
| 1447 | <string>variable.ordered.list.mdx</string> | |
| 1448 | </dict> | |
| 1449 | <key>3</key> | |
| 1450 | <dict> | |
| 1451 | <key>name</key> | |
| 1452 | <string>string.other.number.mdx</string> | |
| 1453 | </dict> | |
| 1454 | <key>4</key> | |
| 1455 | <dict> | |
| 1456 | <key>name</key> | |
| 1457 | <string>variable.ordered.list.mdx</string> | |
| 1458 | </dict> | |
| 1459 | <key>5</key> | |
| 1460 | <dict> | |
| 1461 | <key>name</key> | |
| 1462 | <string>string.other.number.mdx</string> | |
| 1463 | </dict> | |
| 1464 | <key>6</key> | |
| 1465 | <dict> | |
| 1466 | <key>name</key> | |
| 1467 | <string>variable.ordered.list.mdx</string> | |
| 1468 | </dict> | |
| 1469 | <key>7</key> | |
| 1470 | <dict> | |
| 1471 | <key>name</key> | |
| 1472 | <string>keyword.other.tasklist.mdx</string> | |
| 1473 | </dict> | |
| 1474 | </dict> | |
| 1475 | <key>patterns</key> | |
| 1476 | <array> | |
| 1477 | <dict> | |
| 1478 | <key>include</key> | |
| 1479 | <string>#markdown-sections</string> | |
| 1480 | </dict> | |
| 1481 | </array> | |
| 1482 | <key>while</key> | |
| 1483 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){3}</string> | |
| 1484 | </dict> | |
| 1485 | <dict> | |
| 1486 | <key>begin</key> | |
| 1487 | <string>(?:^|\G)[\t ]*(?:([0-9]{9})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{8})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{7})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{6})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1488 | <key>beginCaptures</key> | |
| 1489 | <dict> | |
| 1490 | <key>1</key> | |
| 1491 | <dict> | |
| 1492 | <key>name</key> | |
| 1493 | <string>string.other.number.mdx</string> | |
| 1494 | </dict> | |
| 1495 | <key>2</key> | |
| 1496 | <dict> | |
| 1497 | <key>name</key> | |
| 1498 | <string>variable.ordered.list.mdx</string> | |
| 1499 | </dict> | |
| 1500 | <key>3</key> | |
| 1501 | <dict> | |
| 1502 | <key>name</key> | |
| 1503 | <string>string.other.number.mdx</string> | |
| 1504 | </dict> | |
| 1505 | <key>4</key> | |
| 1506 | <dict> | |
| 1507 | <key>name</key> | |
| 1508 | <string>variable.ordered.list.mdx</string> | |
| 1509 | </dict> | |
| 1510 | <key>5</key> | |
| 1511 | <dict> | |
| 1512 | <key>name</key> | |
| 1513 | <string>string.other.number.mdx</string> | |
| 1514 | </dict> | |
| 1515 | <key>6</key> | |
| 1516 | <dict> | |
| 1517 | <key>name</key> | |
| 1518 | <string>variable.ordered.list.mdx</string> | |
| 1519 | </dict> | |
| 1520 | <key>7</key> | |
| 1521 | <dict> | |
| 1522 | <key>name</key> | |
| 1523 | <string>string.other.number.mdx</string> | |
| 1524 | </dict> | |
| 1525 | <key>8</key> | |
| 1526 | <dict> | |
| 1527 | <key>name</key> | |
| 1528 | <string>variable.ordered.list.mdx</string> | |
| 1529 | </dict> | |
| 1530 | <key>9</key> | |
| 1531 | <dict> | |
| 1532 | <key>name</key> | |
| 1533 | <string>keyword.other.tasklist.mdx</string> | |
| 1534 | </dict> | |
| 1535 | </dict> | |
| 1536 | <key>patterns</key> | |
| 1537 | <array> | |
| 1538 | <dict> | |
| 1539 | <key>include</key> | |
| 1540 | <string>#markdown-sections</string> | |
| 1541 | </dict> | |
| 1542 | </array> | |
| 1543 | <key>while</key> | |
| 1544 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){2}[ ]{3}</string> | |
| 1545 | </dict> | |
| 1546 | <dict> | |
| 1547 | <key>begin</key> | |
| 1548 | <string>(?:^|\G)[\t ]*(?:([0-9]{8})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{7})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{6})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{5})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1549 | <key>beginCaptures</key> | |
| 1550 | <dict> | |
| 1551 | <key>1</key> | |
| 1552 | <dict> | |
| 1553 | <key>name</key> | |
| 1554 | <string>string.other.number.mdx</string> | |
| 1555 | </dict> | |
| 1556 | <key>2</key> | |
| 1557 | <dict> | |
| 1558 | <key>name</key> | |
| 1559 | <string>variable.ordered.list.mdx</string> | |
| 1560 | </dict> | |
| 1561 | <key>3</key> | |
| 1562 | <dict> | |
| 1563 | <key>name</key> | |
| 1564 | <string>string.other.number.mdx</string> | |
| 1565 | </dict> | |
| 1566 | <key>4</key> | |
| 1567 | <dict> | |
| 1568 | <key>name</key> | |
| 1569 | <string>variable.ordered.list.mdx</string> | |
| 1570 | </dict> | |
| 1571 | <key>5</key> | |
| 1572 | <dict> | |
| 1573 | <key>name</key> | |
| 1574 | <string>string.other.number.mdx</string> | |
| 1575 | </dict> | |
| 1576 | <key>6</key> | |
| 1577 | <dict> | |
| 1578 | <key>name</key> | |
| 1579 | <string>variable.ordered.list.mdx</string> | |
| 1580 | </dict> | |
| 1581 | <key>7</key> | |
| 1582 | <dict> | |
| 1583 | <key>name</key> | |
| 1584 | <string>string.other.number.mdx</string> | |
| 1585 | </dict> | |
| 1586 | <key>8</key> | |
| 1587 | <dict> | |
| 1588 | <key>name</key> | |
| 1589 | <string>variable.ordered.list.mdx</string> | |
| 1590 | </dict> | |
| 1591 | <key>9</key> | |
| 1592 | <dict> | |
| 1593 | <key>name</key> | |
| 1594 | <string>keyword.other.tasklist.mdx</string> | |
| 1595 | </dict> | |
| 1596 | </dict> | |
| 1597 | <key>patterns</key> | |
| 1598 | <array> | |
| 1599 | <dict> | |
| 1600 | <key>include</key> | |
| 1601 | <string>#markdown-sections</string> | |
| 1602 | </dict> | |
| 1603 | </array> | |
| 1604 | <key>while</key> | |
| 1605 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){2}[ ]{2}</string> | |
| 1606 | </dict> | |
| 1607 | <dict> | |
| 1608 | <key>begin</key> | |
| 1609 | <string>(?:^|\G)[\t ]*(?:([0-9]{7})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{6})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{5})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{4})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1610 | <key>beginCaptures</key> | |
| 1611 | <dict> | |
| 1612 | <key>1</key> | |
| 1613 | <dict> | |
| 1614 | <key>name</key> | |
| 1615 | <string>string.other.number.mdx</string> | |
| 1616 | </dict> | |
| 1617 | <key>2</key> | |
| 1618 | <dict> | |
| 1619 | <key>name</key> | |
| 1620 | <string>variable.ordered.list.mdx</string> | |
| 1621 | </dict> | |
| 1622 | <key>3</key> | |
| 1623 | <dict> | |
| 1624 | <key>name</key> | |
| 1625 | <string>string.other.number.mdx</string> | |
| 1626 | </dict> | |
| 1627 | <key>4</key> | |
| 1628 | <dict> | |
| 1629 | <key>name</key> | |
| 1630 | <string>variable.ordered.list.mdx</string> | |
| 1631 | </dict> | |
| 1632 | <key>5</key> | |
| 1633 | <dict> | |
| 1634 | <key>name</key> | |
| 1635 | <string>string.other.number.mdx</string> | |
| 1636 | </dict> | |
| 1637 | <key>6</key> | |
| 1638 | <dict> | |
| 1639 | <key>name</key> | |
| 1640 | <string>variable.ordered.list.mdx</string> | |
| 1641 | </dict> | |
| 1642 | <key>7</key> | |
| 1643 | <dict> | |
| 1644 | <key>name</key> | |
| 1645 | <string>string.other.number.mdx</string> | |
| 1646 | </dict> | |
| 1647 | <key>8</key> | |
| 1648 | <dict> | |
| 1649 | <key>name</key> | |
| 1650 | <string>variable.ordered.list.mdx</string> | |
| 1651 | </dict> | |
| 1652 | <key>9</key> | |
| 1653 | <dict> | |
| 1654 | <key>name</key> | |
| 1655 | <string>keyword.other.tasklist.mdx</string> | |
| 1656 | </dict> | |
| 1657 | </dict> | |
| 1658 | <key>patterns</key> | |
| 1659 | <array> | |
| 1660 | <dict> | |
| 1661 | <key>include</key> | |
| 1662 | <string>#markdown-sections</string> | |
| 1663 | </dict> | |
| 1664 | </array> | |
| 1665 | <key>while</key> | |
| 1666 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){2}[ ]{1}</string> | |
| 1667 | </dict> | |
| 1668 | <dict> | |
| 1669 | <key>begin</key> | |
| 1670 | <string>(?:^|\G)[\t ]*(?:([0-9]{6})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{5})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{4})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{3})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1671 | <key>beginCaptures</key> | |
| 1672 | <dict> | |
| 1673 | <key>1</key> | |
| 1674 | <dict> | |
| 1675 | <key>name</key> | |
| 1676 | <string>string.other.number.mdx</string> | |
| 1677 | </dict> | |
| 1678 | <key>2</key> | |
| 1679 | <dict> | |
| 1680 | <key>name</key> | |
| 1681 | <string>variable.ordered.list.mdx</string> | |
| 1682 | </dict> | |
| 1683 | <key>3</key> | |
| 1684 | <dict> | |
| 1685 | <key>name</key> | |
| 1686 | <string>string.other.number.mdx</string> | |
| 1687 | </dict> | |
| 1688 | <key>4</key> | |
| 1689 | <dict> | |
| 1690 | <key>name</key> | |
| 1691 | <string>variable.ordered.list.mdx</string> | |
| 1692 | </dict> | |
| 1693 | <key>5</key> | |
| 1694 | <dict> | |
| 1695 | <key>name</key> | |
| 1696 | <string>string.other.number.mdx</string> | |
| 1697 | </dict> | |
| 1698 | <key>6</key> | |
| 1699 | <dict> | |
| 1700 | <key>name</key> | |
| 1701 | <string>variable.ordered.list.mdx</string> | |
| 1702 | </dict> | |
| 1703 | <key>7</key> | |
| 1704 | <dict> | |
| 1705 | <key>name</key> | |
| 1706 | <string>string.other.number.mdx</string> | |
| 1707 | </dict> | |
| 1708 | <key>8</key> | |
| 1709 | <dict> | |
| 1710 | <key>name</key> | |
| 1711 | <string>variable.ordered.list.mdx</string> | |
| 1712 | </dict> | |
| 1713 | <key>9</key> | |
| 1714 | <dict> | |
| 1715 | <key>name</key> | |
| 1716 | <string>keyword.other.tasklist.mdx</string> | |
| 1717 | </dict> | |
| 1718 | </dict> | |
| 1719 | <key>patterns</key> | |
| 1720 | <array> | |
| 1721 | <dict> | |
| 1722 | <key>include</key> | |
| 1723 | <string>#markdown-sections</string> | |
| 1724 | </dict> | |
| 1725 | </array> | |
| 1726 | <key>while</key> | |
| 1727 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t){2}</string> | |
| 1728 | </dict> | |
| 1729 | <dict> | |
| 1730 | <key>begin</key> | |
| 1731 | <string>(?:^|\G)[\t ]*(?:([0-9]{5})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{4})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{3})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{2})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1732 | <key>beginCaptures</key> | |
| 1733 | <dict> | |
| 1734 | <key>1</key> | |
| 1735 | <dict> | |
| 1736 | <key>name</key> | |
| 1737 | <string>string.other.number.mdx</string> | |
| 1738 | </dict> | |
| 1739 | <key>2</key> | |
| 1740 | <dict> | |
| 1741 | <key>name</key> | |
| 1742 | <string>variable.ordered.list.mdx</string> | |
| 1743 | </dict> | |
| 1744 | <key>3</key> | |
| 1745 | <dict> | |
| 1746 | <key>name</key> | |
| 1747 | <string>string.other.number.mdx</string> | |
| 1748 | </dict> | |
| 1749 | <key>4</key> | |
| 1750 | <dict> | |
| 1751 | <key>name</key> | |
| 1752 | <string>variable.ordered.list.mdx</string> | |
| 1753 | </dict> | |
| 1754 | <key>5</key> | |
| 1755 | <dict> | |
| 1756 | <key>name</key> | |
| 1757 | <string>string.other.number.mdx</string> | |
| 1758 | </dict> | |
| 1759 | <key>6</key> | |
| 1760 | <dict> | |
| 1761 | <key>name</key> | |
| 1762 | <string>variable.ordered.list.mdx</string> | |
| 1763 | </dict> | |
| 1764 | <key>7</key> | |
| 1765 | <dict> | |
| 1766 | <key>name</key> | |
| 1767 | <string>string.other.number.mdx</string> | |
| 1768 | </dict> | |
| 1769 | <key>8</key> | |
| 1770 | <dict> | |
| 1771 | <key>name</key> | |
| 1772 | <string>variable.ordered.list.mdx</string> | |
| 1773 | </dict> | |
| 1774 | <key>9</key> | |
| 1775 | <dict> | |
| 1776 | <key>name</key> | |
| 1777 | <string>keyword.other.tasklist.mdx</string> | |
| 1778 | </dict> | |
| 1779 | </dict> | |
| 1780 | <key>patterns</key> | |
| 1781 | <array> | |
| 1782 | <dict> | |
| 1783 | <key>include</key> | |
| 1784 | <string>#markdown-sections</string> | |
| 1785 | </dict> | |
| 1786 | </array> | |
| 1787 | <key>while</key> | |
| 1788 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)[ ]{3}</string> | |
| 1789 | </dict> | |
| 1790 | <dict> | |
| 1791 | <key>begin</key> | |
| 1792 | <string>(?:^|\G)[\t ]*(?:([0-9]{4})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{3})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{2})((?:\.|\)))(?:[ ]{3}(?![ ]))|([0-9]{1})((?:\.|\)))(?:[ ]{4}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1793 | <key>beginCaptures</key> | |
| 1794 | <dict> | |
| 1795 | <key>1</key> | |
| 1796 | <dict> | |
| 1797 | <key>name</key> | |
| 1798 | <string>string.other.number.mdx</string> | |
| 1799 | </dict> | |
| 1800 | <key>2</key> | |
| 1801 | <dict> | |
| 1802 | <key>name</key> | |
| 1803 | <string>variable.ordered.list.mdx</string> | |
| 1804 | </dict> | |
| 1805 | <key>3</key> | |
| 1806 | <dict> | |
| 1807 | <key>name</key> | |
| 1808 | <string>string.other.number.mdx</string> | |
| 1809 | </dict> | |
| 1810 | <key>4</key> | |
| 1811 | <dict> | |
| 1812 | <key>name</key> | |
| 1813 | <string>variable.ordered.list.mdx</string> | |
| 1814 | </dict> | |
| 1815 | <key>5</key> | |
| 1816 | <dict> | |
| 1817 | <key>name</key> | |
| 1818 | <string>string.other.number.mdx</string> | |
| 1819 | </dict> | |
| 1820 | <key>6</key> | |
| 1821 | <dict> | |
| 1822 | <key>name</key> | |
| 1823 | <string>variable.ordered.list.mdx</string> | |
| 1824 | </dict> | |
| 1825 | <key>7</key> | |
| 1826 | <dict> | |
| 1827 | <key>name</key> | |
| 1828 | <string>string.other.number.mdx</string> | |
| 1829 | </dict> | |
| 1830 | <key>8</key> | |
| 1831 | <dict> | |
| 1832 | <key>name</key> | |
| 1833 | <string>variable.ordered.list.mdx</string> | |
| 1834 | </dict> | |
| 1835 | <key>9</key> | |
| 1836 | <dict> | |
| 1837 | <key>name</key> | |
| 1838 | <string>keyword.other.tasklist.mdx</string> | |
| 1839 | </dict> | |
| 1840 | </dict> | |
| 1841 | <key>patterns</key> | |
| 1842 | <array> | |
| 1843 | <dict> | |
| 1844 | <key>include</key> | |
| 1845 | <string>#markdown-sections</string> | |
| 1846 | </dict> | |
| 1847 | </array> | |
| 1848 | <key>while</key> | |
| 1849 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)[ ]{2}</string> | |
| 1850 | </dict> | |
| 1851 | <dict> | |
| 1852 | <key>begin</key> | |
| 1853 | <string>(?:^|\G)[\t ]*(?:([0-9]{3})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9]{2})((?:\.|\)))(?:[ ]{2}(?![ ]))|([0-9]{1})((?:\.|\)))(?:[ ]{3}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1854 | <key>beginCaptures</key> | |
| 1855 | <dict> | |
| 1856 | <key>1</key> | |
| 1857 | <dict> | |
| 1858 | <key>name</key> | |
| 1859 | <string>string.other.number.mdx</string> | |
| 1860 | </dict> | |
| 1861 | <key>2</key> | |
| 1862 | <dict> | |
| 1863 | <key>name</key> | |
| 1864 | <string>variable.ordered.list.mdx</string> | |
| 1865 | </dict> | |
| 1866 | <key>3</key> | |
| 1867 | <dict> | |
| 1868 | <key>name</key> | |
| 1869 | <string>string.other.number.mdx</string> | |
| 1870 | </dict> | |
| 1871 | <key>4</key> | |
| 1872 | <dict> | |
| 1873 | <key>name</key> | |
| 1874 | <string>variable.ordered.list.mdx</string> | |
| 1875 | </dict> | |
| 1876 | <key>5</key> | |
| 1877 | <dict> | |
| 1878 | <key>name</key> | |
| 1879 | <string>string.other.number.mdx</string> | |
| 1880 | </dict> | |
| 1881 | <key>6</key> | |
| 1882 | <dict> | |
| 1883 | <key>name</key> | |
| 1884 | <string>variable.ordered.list.mdx</string> | |
| 1885 | </dict> | |
| 1886 | <key>7</key> | |
| 1887 | <dict> | |
| 1888 | <key>name</key> | |
| 1889 | <string>keyword.other.tasklist.mdx</string> | |
| 1890 | </dict> | |
| 1891 | </dict> | |
| 1892 | <key>patterns</key> | |
| 1893 | <array> | |
| 1894 | <dict> | |
| 1895 | <key>include</key> | |
| 1896 | <string>#markdown-sections</string> | |
| 1897 | </dict> | |
| 1898 | </array> | |
| 1899 | <key>while</key> | |
| 1900 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)[ ]{1}</string> | |
| 1901 | </dict> | |
| 1902 | <dict> | |
| 1903 | <key>begin</key> | |
| 1904 | <string>(?:^|\G)[\t ]*(?:([0-9]{2})((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))|([0-9])((?:\.|\)))(?:[ ]{2}(?![ ])))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1905 | <key>beginCaptures</key> | |
| 1906 | <dict> | |
| 1907 | <key>1</key> | |
| 1908 | <dict> | |
| 1909 | <key>name</key> | |
| 1910 | <string>string.other.number.mdx</string> | |
| 1911 | </dict> | |
| 1912 | <key>2</key> | |
| 1913 | <dict> | |
| 1914 | <key>name</key> | |
| 1915 | <string>variable.ordered.list.mdx</string> | |
| 1916 | </dict> | |
| 1917 | <key>3</key> | |
| 1918 | <dict> | |
| 1919 | <key>name</key> | |
| 1920 | <string>string.other.number.mdx</string> | |
| 1921 | </dict> | |
| 1922 | <key>4</key> | |
| 1923 | <dict> | |
| 1924 | <key>name</key> | |
| 1925 | <string>variable.ordered.list.mdx</string> | |
| 1926 | </dict> | |
| 1927 | <key>5</key> | |
| 1928 | <dict> | |
| 1929 | <key>name</key> | |
| 1930 | <string>keyword.other.tasklist.mdx</string> | |
| 1931 | </dict> | |
| 1932 | </dict> | |
| 1933 | <key>patterns</key> | |
| 1934 | <array> | |
| 1935 | <dict> | |
| 1936 | <key>include</key> | |
| 1937 | <string>#markdown-sections</string> | |
| 1938 | </dict> | |
| 1939 | </array> | |
| 1940 | <key>while</key> | |
| 1941 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)</string> | |
| 1942 | </dict> | |
| 1943 | <dict> | |
| 1944 | <key>begin</key> | |
| 1945 | <string>(?:^|\G)[\t ]*([0-9])((?:\.|\)))(?:[ ]{1}|(?=[ \t]*\n))(\[[\t Xx]\](?=[\t\n\r ]+(?:$|[^\t\n\r ])))?</string> | |
| 1946 | <key>beginCaptures</key> | |
| 1947 | <dict> | |
| 1948 | <key>1</key> | |
| 1949 | <dict> | |
| 1950 | <key>name</key> | |
| 1951 | <string>string.other.number.mdx</string> | |
| 1952 | </dict> | |
| 1953 | <key>2</key> | |
| 1954 | <dict> | |
| 1955 | <key>name</key> | |
| 1956 | <string>variable.ordered.list.mdx</string> | |
| 1957 | </dict> | |
| 1958 | <key>3</key> | |
| 1959 | <dict> | |
| 1960 | <key>name</key> | |
| 1961 | <string>keyword.other.tasklist.mdx</string> | |
| 1962 | </dict> | |
| 1963 | </dict> | |
| 1964 | <key>patterns</key> | |
| 1965 | <array> | |
| 1966 | <dict> | |
| 1967 | <key>include</key> | |
| 1968 | <string>#markdown-sections</string> | |
| 1969 | </dict> | |
| 1970 | </array> | |
| 1971 | <key>while</key> | |
| 1972 | <string>^(?=[\t ]*$)|(?:^|\G)[ ]{3}</string> | |
| 1973 | </dict> | |
| 1974 | </array> | |
| 1975 | </dict> | |
| 1976 | <key>commonmark-paragraph</key> | |
| 1977 | <dict> | |
| 1978 | <key>begin</key> | |
| 1979 | <string>(?![\t ]*$)</string> | |
| 1980 | <key>name</key> | |
| 1981 | <string>meta.paragraph.mdx</string> | |
| 1982 | <key>patterns</key> | |
| 1983 | <array> | |
| 1984 | <dict> | |
| 1985 | <key>include</key> | |
| 1986 | <string>#markdown-text</string> | |
| 1987 | </dict> | |
| 1988 | </array> | |
| 1989 | <key>while</key> | |
| 1990 | <string>(?:^|\G)(?:[ ]{4}|\t)</string> | |
| 1991 | </dict> | |
| 1992 | <key>commonmark-thematic-break</key> | |
| 1993 | <dict> | |
| 1994 | <key>match</key> | |
| 1995 | <string>(?:^|\G)[\t ]*([-*_])[ \t]*(?:\1[ \t]*){2,}$</string> | |
| 1996 | <key>name</key> | |
| 1997 | <string>meta.separator.mdx</string> | |
| 1998 | </dict> | |
| 1999 | <key>extension-gfm-autolink-literal</key> | |
| 2000 | <dict> | |
| 2001 | <key>patterns</key> | |
| 2002 | <array> | |
| 2003 | <dict> | |
| 2004 | <key>match</key> | |
| 2005 | <string>(?&lt;=^|[\t\n\r \(\*\_\[\]~])(?=(?i:www)\.[^\n\r])(?:(?:[\p{L}\p{N}]|-|[\._](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))+\g&lt;path&gt;?)?(?&lt;path&gt;(?:(?:[^\t\n\r !"&amp;'\(\)\*,\.:;&lt;\?\]_~]|&amp;(?![A-Za-z]*;(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[])))|[!"'\)\*,\.:;\?_~](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))|\(\g&lt;path&gt;*\))+){0}</string> | |
| 2006 | <key>name</key> | |
| 2007 | <string>string.other.link.autolink.literal.www.mdx</string> | |
| 2008 | </dict> | |
| 2009 | <dict> | |
| 2010 | <key>match</key> | |
| 2011 | <string>(?&lt;=^|[^A-Za-z])(?i:https?://)(?=[\p{L}\p{N}])(?:(?:[\p{L}\p{N}]|-|[\._](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))+\g&lt;path&gt;?)?(?&lt;path&gt;(?:(?:[^\t\n\r !"&amp;'\(\)\*,\.:;&lt;\?\]_~]|&amp;(?![A-Za-z]*;(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[])))|[!"'\)\*,\.:;\?_~](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))|\(\g&lt;path&gt;*\))+){0}</string> | |
| 2012 | <key>name</key> | |
| 2013 | <string>string.other.link.autolink.literal.http.mdx</string> | |
| 2014 | </dict> | |
| 2015 | <dict> | |
| 2016 | <key>match</key> | |
| 2017 | <string>(?&lt;=^|[^A-Za-z/])(?i:mailto:|xmpp:)?(?:[0-9A-Za-z+\-\._])+@(?:(?:[0-9A-Za-z]|[-_](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))+(?:\.(?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[])))))+(?:[A-Za-z]|[-_](?!(?:[!"'\)\*,\.:;&lt;\?_~]*(?:[\s&lt;]|\][\t\n \(\[]))))+</string> | |
| 2018 | <key>name</key> | |
| 2019 | <string>string.other.link.autolink.literal.email.mdx</string> | |
| 2020 | </dict> | |
| 2021 | </array> | |
| 2022 | </dict> | |
| 2023 | <key>extension-gfm-footnote-call</key> | |
| 2024 | <dict> | |
| 2025 | <key>match</key> | |
| 2026 | <string>(\[)(\^)((?:[^\t\n\r \[\\\]]|\\[\[\\\]]?)+)(\])</string> | |
| 2027 | <key>captures</key> | |
| 2028 | <dict> | |
| 2029 | <key>1</key> | |
| 2030 | <dict> | |
| 2031 | <key>name</key> | |
| 2032 | <string>string.other.begin.link.mdx</string> | |
| 2033 | </dict> | |
| 2034 | <key>2</key> | |
| 2035 | <dict> | |
| 2036 | <key>name</key> | |
| 2037 | <string>string.other.begin.footnote.mdx</string> | |
| 2038 | </dict> | |
| 2039 | <key>3</key> | |
| 2040 | <dict> | |
| 2041 | <key>name</key> | |
| 2042 | <string>entity.name.identifier.mdx</string> | |
| 2043 | <key>patterns</key> | |
| 2044 | <array> | |
| 2045 | <dict> | |
| 2046 | <key>include</key> | |
| 2047 | <string>#markdown-string</string> | |
| 2048 | </dict> | |
| 2049 | </array> | |
| 2050 | </dict> | |
| 2051 | <key>4</key> | |
| 2052 | <dict> | |
| 2053 | <key>name</key> | |
| 2054 | <string>string.other.end.footnote.mdx</string> | |
| 2055 | </dict> | |
| 2056 | </dict> | |
| 2057 | </dict> | |
| 2058 | <key>extension-gfm-footnote-definition</key> | |
| 2059 | <dict> | |
| 2060 | <key>begin</key> | |
| 2061 | <string>(?:^|\G)[\t ]*(\[)(\^)((?:[^\t\n\r \[\\\]]|\\[\[\\\]]?)+)(\])(:)[\t ]*</string> | |
| 2062 | <key>beginCaptures</key> | |
| 2063 | <dict> | |
| 2064 | <key>1</key> | |
| 2065 | <dict> | |
| 2066 | <key>name</key> | |
| 2067 | <string>string.other.begin.link.mdx</string> | |
| 2068 | </dict> | |
| 2069 | <key>2</key> | |
| 2070 | <dict> | |
| 2071 | <key>name</key> | |
| 2072 | <string>string.other.begin.footnote.mdx</string> | |
| 2073 | </dict> | |
| 2074 | <key>3</key> | |
| 2075 | <dict> | |
| 2076 | <key>name</key> | |
| 2077 | <string>entity.name.identifier.mdx</string> | |
| 2078 | <key>patterns</key> | |
| 2079 | <array> | |
| 2080 | <dict> | |
| 2081 | <key>include</key> | |
| 2082 | <string>#markdown-string</string> | |
| 2083 | </dict> | |
| 2084 | </array> | |
| 2085 | </dict> | |
| 2086 | <key>4</key> | |
| 2087 | <dict> | |
| 2088 | <key>name</key> | |
| 2089 | <string>string.other.end.footnote.mdx</string> | |
| 2090 | </dict> | |
| 2091 | </dict> | |
| 2092 | <key>patterns</key> | |
| 2093 | <array> | |
| 2094 | <dict> | |
| 2095 | <key>include</key> | |
| 2096 | <string>#markdown-sections</string> | |
| 2097 | </dict> | |
| 2098 | </array> | |
| 2099 | <key>while</key> | |
| 2100 | <string>^(?=[\t ]*$)|(?:^|\G)(?:[ ]{4}|\t)</string> | |
| 2101 | </dict> | |
| 2102 | <key>extension-gfm-strikethrough</key> | |
| 2103 | <dict> | |
| 2104 | <key>match</key> | |
| 2105 | <string>(?&lt;=\S)(?&lt;!~)~{1,2}(?!~)|(?&lt;!~)~{1,2}(?=\S)(?!~)</string> | |
| 2106 | <key>name</key> | |
| 2107 | <string>string.other.strikethrough.mdx</string> | |
| 2108 | </dict> | |
| 2109 | <key>extension-gfm-table</key> | |
| 2110 | <dict> | |
| 2111 | <key>begin</key> | |
| 2112 | <string>(?:^|\G)[\t ]*(?=\|[^\n\r]+\|[ \t]*$)</string> | |
| 2113 | <key>patterns</key> | |
| 2114 | <array> | |
| 2115 | <dict> | |
| 2116 | <key>match</key> | |
| 2117 | <string>(?&lt;=\||(?:^|\G))[\t ]*((?:[^\n\r\\\|]|\\[\\\|]?)+?)[\t ]*(?=\||$)</string> | |
| 2118 | <key>captures</key> | |
| 2119 | <dict> | |
| 2120 | <key>1</key> | |
| 2121 | <dict> | |
| 2122 | <key>patterns</key> | |
| 2123 | <array> | |
| 2124 | <dict> | |
| 2125 | <key>include</key> | |
| 2126 | <string>#markdown-text</string> | |
| 2127 | </dict> | |
| 2128 | </array> | |
| 2129 | </dict> | |
| 2130 | </dict> | |
| 2131 | </dict> | |
| 2132 | <dict> | |
| 2133 | <key>match</key> | |
| 2134 | <string>(?:\|)</string> | |
| 2135 | <key>name</key> | |
| 2136 | <string>markup.list.table-delimiter.mdx</string> | |
| 2137 | </dict> | |
| 2138 | </array> | |
| 2139 | <key>end</key> | |
| 2140 | <string>^(?=[\t ]*$)|$</string> | |
| 2141 | </dict> | |
| 2142 | <key>extension-github-gemoji</key> | |
| 2143 | <dict> | |
| 2144 | <key>match</key> | |
| 2145 | <string>(:)((?:(?:(?:hand_with_index_finger_and_thumb_cros|mailbox_clo|fist_rai|confu)s|r(?:aised_hand_with_fingers_splay|e(?:gister|l(?:iev|ax)))|disappointed_reliev|confound|(?:a(?:ston|ngu)i|flu)sh|unamus|hush)e|(?:chart_with_(?:down|up)wards_tre|large_orange_diamo|small_(?:orang|blu)e_diamo|large_blue_diamo|parasol_on_grou|loud_sou|rewi)n|(?:rightwards_pushing_h|hourglass_flowing_s|leftwards_(?:pushing_)?h|(?:raised_back_of|palm_(?:down|up)|call_me)_h|(?:(?:(?:clippert|ascensi)on|norfolk)_is|christmas_is|desert_is|bouvet_is|new_zea|thai|eng|fin|ire)l|rightwards_h|pinching_h|writing_h|s(?:w(?:itzer|azi)|cot)l|magic_w|ok_h|icel)an|s(?:un_behind_(?:large|small|rain)_clou|hallow_pan_of_foo|tar_of_davi|leeping_be|kateboar|a(?:tisfie|uropo)|hiel|oun|qui)|(?:ear_with_hearing_a|pouring_liqu)i|(?:identification_c|(?:arrow_(?:back|for)|fast_for)w|credit_c|woman_be|biohaz|man_be|l(?:eop|iz))ar|m(?:usical_key|ortar_)boar|(?:drop_of_bl|canned_f)oo|c(?:apital_abc|upi)|person_bal|(?:black_bi|(?:cust|plac)a)r|(?:clip|key)boar|mermai|pea_po|worrie|po(?:la|u)n|threa|dv)d|(?:(?:(?:face_with_open_eyes_and_hand_over|face_with_diagonal|open|no)_mou|h(?:and_over_mou|yacin)|mammo)t|running_shirt_with_sas|(?:(?:fishing_pole_and_|blow)fi|(?:tropical_f|petri_d)i|(?:paint|tooth)bru|banglade|jellyfi)s|(?:camera_fl|wavy_d)as|triump|menora|pouc|blus|watc|das|has)h|(?:s(?:o(?:(?:uth_georgia_south_sandwich|lomon)_island|ck)|miling_face_with_three_heart|t_kitts_nevi|weat_drop|agittariu|c(?:orpiu|issor)|ymbol|hort)|twisted_rightwards_arrow|(?:northern_mariana|heard_mcdonald|(?:british_virgi|us_virgi|pitcair|cayma)n|turks_caicos|us_outlying|(?:falk|a)land|marshall|c(?:anary|ocos)|faroe)_island|(?:face_holding_back_tea|(?:c(?:ard_index_divid|rossed_fing)|pinched_fing)e|night_with_sta)r|(?:two_(?:wo)?men_holding|people_holding|heart|open)_hand|(?:sunrise_over_mountai|(?:congratul|united_n)atio|jea)n|(?:caribbean_)?netherland|(?:f(?:lower_playing_car|ace_in_clou)|crossed_swor|prayer_bea)d|(?:money_with_win|nest_with_eg|crossed_fla|hotsprin)g|revolving_heart|(?:high_brightne|(?:expression|wire)le|(?:tumbler|wine)_gla|milk_gla|compa|dre)s|performing_art|earth_america|orthodox_cros|l(?:ow_brightnes|a(?:tin_cros|o)|ung)|no_pedestrian|c(?:ontrol_kno|lu)b|b(?:ookmark_tab|rick|ean)|nesting_doll|cook_island|(?:fleur_de_l|tenn)i|(?:o(?:ncoming_b|phiuch|ctop)|hi(?:ppopotam|bisc)|trolleyb|m(?:(?:rs|x)_cla|auriti|inib)|belar|cact|abac|(?:cyp|tau)r)u|medal_sport|(?:chopstic|firewor)k|rhinocero|(?:p(?:aw_prin|eanu)|footprin)t|two_heart|princes|(?:hondur|baham)a|barbado|aquariu|c(?:ustom|hain)|maraca|comoro|flag|wale|hug|vh)s|(?:(?:diamond_shape_with_a_dot_ins|playground_sl)id|(?:(?:first_quarter|last_quarter|full|new)_moon_with|(?:zipper|money)_mouth|dotted_line|upside_down|c(?:rying_c|owboy_h)at|(?:disguis|nauseat)ed|neutral|monocle|panda|tired|woozy|clown|nerd|zany|fox)_fac|s(?:t(?:uck_out_tongue_winking_ey|eam_locomotiv)|(?:lightly_(?:frown|smil)|neez|h(?:ush|ak))ing_fac|(?:tudio_micropho|(?:hinto_shr|lot_mach)i|ierra_leo|axopho)n|mall_airplan|un_with_fac|a(?:luting_fac|tellit|k)|haved_ic|y(?:nagogu|ring)|n(?:owfl)?ak|urinam|pong)|(?:black_(?:medium_)?small|white_(?:(?:medium_)?small|large)|(?:black|white)_medium|black_large|orange|purple|yellow|b(?:rown|lue)|red)_squar|(?:(?:perso|woma)n_with_|man_with_)?probing_can|(?:p(?:ut_litter_in_its_pl|outing_f)|frowning_f|cold_f|wind_f|hot_f)ac|(?:arrows_c(?:ounterc)?lockwi|computer_mou|derelict_hou|carousel_hor|c(?:ity_sunri|hee)|heartpul|briefca|racehor|pig_no|lacros)s|(?:(?:face_with_head_band|ideograph_advant|adhesive_band|under|pack)a|currency_exchan|l(?:eft_l)?ugga|woman_jud|name_bad|man_jud|jud)g|face_with_peeking_ey|(?:(?:e(?:uropean_post_off|ar_of_r)|post_off)i|information_sour|ambulan)c|artificial_satellit|(?:busts?_in_silhouet|(?:vulcan_sal|parach)u|m(?:usical_no|ayot)|ro(?:ller_ska|set)|timor_les|ice_ska)t|(?:(?:incoming|red)_envelo|s(?:ao_tome_princi|tethosco)|(?:micro|tele)sco|citysca)p|(?:(?:(?:convenience|department)_st|musical_sc)o|f(?:light_depar|ramed_pic)tu|love_you_gestu|heart_on_fi|japanese_og|cote_divoi|perseve|singapo)r|b(?:ullettrain_sid|eliz|on)|(?:(?:female_|male_)?dete|radioa)ctiv|(?:christmas|deciduous|evergreen|tanabata|palm)_tre|(?:vibration_mo|cape_ver)d|(?:fortune_cook|neckt|self)i|(?:fork_and_)?knif|athletic_sho|(?:p(?:lead|arty)|drool|curs|melt|yawn|ly)ing_fac|vomiting_fac|(?:(?:c(?:urling_st|ycl)|meat_on_b|repeat_|headst)o|(?:fire_eng|tanger|ukra)i|rice_sce|(?:micro|i)pho|champag|pho)n|(?:cricket|video)_gam|(?:boxing_glo|oli)v|(?:d(?:ragon|izzy)|monkey)_fac|(?:m(?:artin|ozamb)iq|fond)u|wind_chim|test_tub|flat_sho|m(?:a(?:ns_sho|t)|icrob|oos|ut)|(?:handsh|fish_c|moon_c|cupc)ak|nail_car|zimbabw|ho(?:neybe|l)|ice_cub|airplan|pensiv|c(?:a(?:n(?:dl|o)|k)|o(?:ffe|oki))|tongu|purs|f(?:lut|iv)|d(?:at|ov)|n(?:iu|os)|kit|rag|ax)e|(?:(?:british_indian_ocean_territo|(?:plate_with_cutl|batt)e|medal_milita|low_batte|hunga|wea)r|family_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy))_bo|person_feeding_bab|woman_feeding_bab|s(?:u(?:spension_railwa|nn)|t(?:atue_of_libert|_barthelem|rawberr))|(?:m(?:ountain_cable|ilky_)|aerial_tram)wa|articulated_lorr|man_feeding_bab|mountain_railwa|partly_sunn|(?:vatican_c|infin)it|(?:outbox_tr|inbox_tr|birthd|motorw|paragu|urugu|norw|x_r)a|butterfl|ring_buo|t(?:urke|roph)|angr|fogg)y|(?:(?:perso|woma)n_in_motorized_wheelchai|(?:(?:notebook_with_decorative_c|four_leaf_cl)ov|(?:index_pointing_at_the_vie|white_flo)w|(?:face_with_thermome|non\-potable_wa|woman_firefigh|desktop_compu|m(?:an_firefigh|otor_scoo)|(?:ro(?:ller_coa|o)|oy)s|potable_wa|kick_scoo|thermome|firefigh|helicop|ot)t|(?:woman_factory_wor|(?:woman_office|woman_health|health)_wor|man_(?:factory|office|health)_wor|(?:factory|office)_wor|rice_crac|black_jo|firecrac)k|telephone_receiv|(?:palms_up_toget|f(?:ire_extinguis|eat)|teac)h|(?:(?:open_)?file_fol|level_sli)d|police_offic|f(?:lying_sauc|arm)|woman_teach|roll_of_pap|(?:m(?:iddle_f|an_s)in|woman_sin|hambur|plun|dag)g|do_not_litt|wilted_flow|woman_farm|man_(?:teach|farm)|(?:bell_pe|hot_pe|fli)pp|l(?:o(?:udspeak|ve_lett|bst)|edg|add)|tokyo_tow|c(?:ucumb|lapp|anc)|b(?:e(?:ginn|av)|adg)|print|hamst)e|(?:perso|woma)n_in_manual_wheelchai|m(?:an(?:_in_motorized|(?:_in_man)?ual)|otorized)_wheelchai|(?:person_(?:white|curly|red)_|wheelc)hai|triangular_rule|(?:film_project|e(?:l_salv|cu)ad|elevat|tract|anch)o|s(?:traight_rul|pace_invad|crewdriv|nowboard|unflow|peak|wimm|ing|occ|how|urf|ki)e|r(?:ed_ca|unne|azo)|d(?:o(?:lla|o)|ee)|barbe)r|(?:(?:cloud_with_(?:lightning_and_)?ra|japanese_gobl|round_pushp|liechtenste|mandar|pengu|dolph|bahra|pushp|viol)i|(?:couple(?:_with_heart_wo|kiss_)man|construction_worker|(?:mountain_bik|bow|row)ing|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|white_haired|curly_haired|raising_hand|super(?:villain|hero)|red_haired|basketball|s(?:(?:wimm|urf)ing|assy)|haircut|no_good|(?:vampir|massag)e|b(?:iking|ald)|zombie|fairy|mage|elf|ng)_(?:wo)?ma|(?:(?:couple_with_heart_man|isle_of)_m|(?:couplekiss_woman_|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_|frowning_|s(?:tanding|auna)_|po(?:uting_|lice)|running_|blonde_|o(?:lder|k)_)wom|(?:perso|woma)n_with_turb|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_m|f(?:olding_hand_f|rowning_m)|man_with_turb|(?:turkmen|afghan|pak)ist|s(?:tanding_m|(?:outh_s)?ud|auna_m)|po(?:uting_|lice)m|running_m|azerbaij|k(?:yrgyz|azakh)st|tajikist|uzbekist|o(?:lder_m|k_m|ce)|(?:orang|bh)ut|taiw|jord)a|s(?:mall_red_triangle_dow|(?:valbard_jan_may|int_maart|ev)e|afety_pi|top_sig|t_marti|(?:corpi|po|o)o|wede)|(?:heavy_(?:d(?:ivision|ollar)|equals|minus|plus)|no_entry|female|male)_sig|(?:arrow_(?:heading|double)_d|p(?:erson_with_cr|oint_d)|arrow_up_d|thumbsd)ow|(?:house_with_gard|l(?:ock_with_ink_p|eafy_gre)|dancing_(?:wo)?m|fountain_p|keycap_t|chick|ali|yem|od)e|(?:izakaya|jack_o)_lanter|(?:funeral_u|(?:po(?:stal_h|pc)|capric)o|unico)r|chess_paw|b(?:a(?:llo|c)o|eni|rai)|l(?:anter|io)|c(?:o(?:ff)?i|row)|melo|rame|oma|yar)n|(?:s(?:t(?:uck_out_tongue_closed_ey|_vincent_grenadin)|kull_and_crossbon|unglass|pad)|(?:french_souther|palestinia)n_territori|(?:face_with_spiral|kissing_smiling)_ey|united_arab_emirat|kissing_closed_ey|(?:clinking_|dark_sun|eye)glass|(?:no_mobile_|head)phon|womans_cloth|b(?:allet_sho|lueberri)|philippin|(?:no_bicyc|seychel)l|roll_ey|(?:cher|a)ri|p(?:ancak|isc)|maldiv|leav)es|(?:f(?:amily_(?:woman_(?:woman_)?|man_(?:woman_|man_)?)girl_gir|earfu)|(?:woman_playing_hand|m(?:an_playing_hand|irror_)|c(?:onfetti|rystal)_|volley|track|base|8)bal|(?:(?:m(?:ailbox_with_(?:no_)?m|onor)|cockt|e\-m)a|(?:person|bride|woman)_with_ve|man_with_ve|light_ra|braz|ema)i|(?:transgender|baby)_symbo|passport_contro|(?:arrow_(?:down|up)_sm|rice_b|footb)al|(?:dromedary_cam|ferris_whe|love_hot|high_he|pretz|falaf|isra)e|page_with_cur|me(?:dical_symbo|ta)|(?:n(?:ewspaper_ro|o_be)|bellhop_be)l|rugby_footbal|s(?:chool_satche|(?:peak|ee)_no_evi|oftbal|crol|anda|nai|hel)|(?:peace|atom)_symbo|hear_no_evi|cora|hote|bage|labe|rof|ow)l|(?:(?:negative_squared_cross|heavy_exclamation|part_alternation)_mar|(?:eight_spoked_)?asteris|(?:ballot_box_with_che|(?:(?:mantelpiece|alarm|timer)_c|un)lo|(?:ha(?:(?:mmer_and|ir)_p|tch(?:ing|ed)_ch)|baby_ch|joyst)i|railway_tra|lipsti|peaco)c|heavy_check_mar|white_check_mar|tr(?:opical_drin|uc)|national_par|pickup_truc|diving_mas|floppy_dis|s(?:tar_struc|hamroc|kun|har)|chipmun|denmar|duc|hoo|lin)k|(?:leftwards_arrow_with_h|arrow_right_h|(?:o(?:range|pen)|closed|blue)_b)ook|(?:woman_playing_water_pol|m(?:an(?:_(?:playing_water_pol|with_gua_pi_ma|in_tuxed)|g)|ontenegr|o(?:roc|na)c|e(?:xic|tr|m))|(?:perso|woma)n_in_tuxed|(?:trinidad_toba|vir)g|water_buffal|b(?:urkina_fas|a(?:mbo|nj)|ent)|puerto_ric|water_pol|flaming|kangaro|(?:mosqu|burr)it|(?:avoc|torn)ad|curaca|lesoth|potat|ko(?:sov|k)|tomat|d(?:ang|od)|yo_y|hoch|t(?:ac|og)|zer)o|(?:c(?:entral_african|zech)|dominican)_republic|(?:eight_pointed_black_s|six_pointed_s|qa)tar|(?:business_suit_levitat|(?:classical_buil|breast_fee)d|(?:woman_cartwhee|m(?:an_(?:cartwhee|jugg)|en_wrest)|women_wrest|woman_jugg|face_exha|cartwhee|wrest|dump)l|c(?:hildren_cross|amp)|woman_facepalm|woman_shrugg|man_(?:facepalm|shrugg)|people_hugg|(?:person_fe|woman_da|man_da)nc|fist_oncom|horse_rac|(?:no_smo|thin)k|laugh|s(?:eedl|mok)|park|w(?:arn|edd))ing|f(?:a(?:mily(?:_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy)))?|ctory)|o(?:u(?:ntain|r)|ot|g)|r(?:owning)?|i(?:re|s[ht])|ly|u)|(?:(?:(?:information_desk|handball|bearded)_|(?:frowning|ok)_|juggling_|mer)pers|(?:previous_track|p(?:lay_or_p)?ause|black_square|white_square|next_track|r(?:ecord|adio)|eject)_butt|(?:wa[nx]ing_(?:crescent|gibbous)_m|bowl_with_sp|crescent_m|racc)o|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_pers|s(?:t(?:_pierre_miquel|op_butt|ati)|tanding_pers|peech_ballo|auna_pers)|r(?:eminder_r)?ibb|thought_ballo|watermel|badmint|c(?:amero|ray)|le(?:ban|m)|oni|bis)on|(?:heavy_heart_exclama|building_construc|heart_decora|exclama)tion|(?:(?:triangular_flag_on_po|(?:(?:woman_)?technolog|m(?:ountain_bicycl|an_technolog)|bicycl)i|(?:wo)?man_scienti|(?:wo)?man_arti|s(?:afety_ve|cienti)|empty_ne)s|(?:vertical_)?traffic_ligh|(?:rescue_worker_helm|military_helm|nazar_amul|city_suns|wastebask|dropl|t(?:rump|oil)|bouqu|buck|magn|secr)e|one_piece_swimsui|(?:(?:arrow_(?:low|upp)er|point)_r|bridge_at_n|copyr|mag_r)igh|(?:bullettrain_fro|(?:potted_pl|croiss|e(?:ggpl|leph))a)n|s(?:t(?:ar_and_cresc|ud)en|cream_ca|mi(?:ley?|rk)_ca|(?:peed|ail)boa|hir)|(?:arrow_(?:low|upp)er|point)_lef|woman_astronau|r(?:o(?:tating_ligh|cke)|eceip)|heart_eyes_ca|man_astronau|(?:woman_stud|circus_t|man_stud|trid)en|(?:ringed_pla|file_cabi)ne|nut_and_bol|(?:older_)?adul|k(?:i(?:ssing_ca|wi_frui)|uwai|no)|(?:pouting_c|c(?:ut_of_m|old_sw)e|womans_h|montserr|(?:(?:motor_|row)b|lab_c)o|heartbe|toph)a|(?:woman_pil|honey_p|man_pil|[cp]arr|teap|rob)o|hiking_boo|arrow_lef|fist_righ|flashligh|f(?:ist_lef|ee)|black_ca|astronau|(?:c(?:hest|oco)|dough)nu|innocen|joy_ca|artis|(?:acce|egy)p|co(?:me|a)|pilo)t|(?:heavy_multiplication_|t\-re)x|(?:s(?:miling_face_with_te|piral_calend)|oncoming_police_c|chocolate_b|ra(?:ilway|cing)_c|police_c|polar_be|teddy_be|madagasc|blue_c|calend|myanm)ar|c(?:l(?:o(?:ud(?:_with_lightning)?|ck(?:1[0-2]?|[2-9]))|ap)?|o(?:uple(?:_with_heart|kiss)?|nstruction|mputer|ok|p|w)|a(?:r(?:d_index)?|mera)|r(?:icket|y)|h(?:art|ild))|(?:m(?:artial_arts_unifo|echanical_a)r|(?:cherry_)?blosso|b(?:aggage_clai|roo)|ice_?crea|facepal|mushroo|restroo|vietna|dru|yu)m|(?:woman_with_headscar|m(?:obile_phone_of|aple_lea)|fallen_lea|wol)f|(?:(?:closed_lock_with|old)_|field_hoc|ice_hoc|han|don)key|g(?:lobe_with_meridians|r(?:e(?:y_(?:exclama|ques)tion|e(?:n(?:_(?:square|circle|salad|apple|heart|book)|land)|ce)|y_heart|nada)|i(?:mac|nn)ing|apes)|u(?:inea_bissau|ernsey|am|n)|(?:(?:olfing|enie)_(?:wo)?|uards(?:wo)?)man|(?:inger_roo|oal_ne|hos)t|(?:uadeloup|ame_di|iraff|oos)e|ift_heart|i(?:braltar|rl)|(?:uatemal|(?:eorg|amb)i|orill|uyan|han)a|uide_dog|(?:oggl|lov)es|arlic|emini|uitar|abon|oat|ear|b)|construction_worker|(?:(?:envelope_with|bow_and)_ar|left_right_ar|raised_eyeb)row|(?:(?:oncoming_automob|crocod)i|right_anger_bubb|l(?:eft_speech_bubb|otion_bott|ady_beet)|congo_brazzavil|eye_speech_bubb|(?:large_blue|orange|purple|yellow|brown)_circ|(?:(?:european|japanese)_cas|baby_bot)t|b(?:alance_sca|eet)|s(?:ewing_need|weat_smi)|(?:black|white|red)_circ|(?:motor|re)cyc|pood|turt|tama|waff|musc|eag)le|first_quarter_moon|s(?:m(?:all_red_triangle|i(?:ley?|rk))|t(?:uck_out_tongue|ar)|hopping|leeping|p(?:arkle|ider)|unrise|nowman|chool|cream|k(?:ull|i)|weat|ix|a)|(?:(?:b(?:osnia_herzegovi|ana)|wallis_futu|(?:french_gui|botsw)a|argenti|st_hele)n|(?:(?:equatorial|papua_new)_guin|north_kor|eritr)e|t(?:ristan_da_cunh|ad)|(?:(?:(?:french_poly|indo)ne|tuni)s|(?:new_caledo|ma(?:urita|cedo)|lithua|(?:tanz|alb|rom)a|arme|esto)n|diego_garc|s(?:audi_arab|t_luc|lov(?:ak|en)|omal|erb)|e(?:arth_as|thiop)|m(?:icrone|alay)s|(?:austra|mongo)l|c(?:ambod|roat)|(?:bulga|alge)r|(?:colom|nami|zam)b|boliv|l(?:iber|atv))i|(?:wheel_of_dhar|cine|pana)m|(?:(?:(?:closed|beach|open)_)?umbrel|ceuta_melil|venezue|ang(?:uil|o)|koa)l|c(?:ongo_kinshas|anad|ub)|(?:western_saha|a(?:mpho|ndor)|zeb)r|american_samo|video_camer|m(?:o(?:vie_camer|ldov)|alt|eg)|(?:earth_af|costa_)ric|s(?:outh_afric|ri_lank|a(?:mo|nt))|bubble_te|(?:antarct|jama)ic|ni(?:caragu|geri|nj)|austri|pi(?:nat|zz)|arub|k(?:eny|aab)|indi|u7a7|l(?:lam|ib[ry])|dn)a|l(?:ast_quarter_moon|o(?:tus|ck)|ips|eo)|(?:hammer_and_wren|c(?:ockroa|hur)|facepun|wren|crut|pun)ch|s(?:nowman_with_snow|ignal_strength|weet_potato|miling_imp|p(?:ider_web|arkle[rs])|w(?:im_brief|an)|a(?:n(?:_marino|dwich)|lt)|topwatch|t(?:a(?:dium|r[2s])|ew)|l(?:e(?:epy|d)|oth)|hrimp|yria|carf|(?:hee|oa)p|ea[lt]|h(?:oe|i[pt])|o[bs])|(?:s(?:tuffed_flatbre|p(?:iral_notep|eaking_he))|(?:exploding_h|baguette_br|flatbr)e)ad|(?:arrow_(?:heading|double)_u|(?:p(?:lace_of_wor|assenger_)sh|film_str|tul)i|page_facing_u|biting_li|(?:billed_c|world_m)a|mouse_tra|(?:curly_lo|busst)o|thumbsu|lo(?:llip)?o|clam|im)p|(?:anatomical|light_blue|sparkling|kissing|mending|orange|purple|yellow|broken|b(?:rown|l(?:ack|ue))|pink)_heart|(?:(?:transgender|black)_fla|mechanical_le|(?:checkered|pirate)_fla|electric_plu|rainbow_fla|poultry_le|service_do|white_fla|luxembour|fried_eg|moneyba|h(?:edgeh|otd)o|shru)g|(?:cloud_with|mountain)_snow|(?:(?:antigua_barb|berm)u|(?:kh|ug)an|rwan)da|(?:3r|2n)d_place_medal|1(?:st_place_medal|234|00)|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|(?:(?:cup_with_str|auto_ricksh)a|carpentry_sa|windo|jigsa)w|(?:(?:couch_and|diya)_la|f(?:ried_shri|uelpu))mp|(?:woman_mechan|man_mechan|alemb)ic|(?:european_un|accord|collis|reun)ion|(?:flight_arriv|hospit|portug|seneg|nep)al|card_file_box|(?:(?:oncoming_)?tax|m(?:o(?:unt_fuj|ya)|alaw)|s(?:paghett|ush|ar)|b(?:r(?:occol|une)|urund)|(?:djibou|kiriba)t|hait|fij)i|(?:shopping_c|white_he|bar_ch)art|d(?:isappointed|ominica|e(?:sert)?)|raising_hand|super(?:villain|hero)|b(?:e(?:verage_box|ers|d)|u(?:bbles|lb|g)|i(?:k(?:ini|e)|rd)|o(?:o(?:ks|t)|a[rt]|y)|read|a[cn]k)|ra(?:ised_hands|bbit2|t)|(?:hindu_tem|ap)ple|thong_sandal|a(?:r(?:row_(?:right|down|up)|t)|bc?|nt)?|r(?:a(?:i(?:sed_hand|nbow)|bbit|dio|m)|u(?:nning)?|epeat|i(?:ng|ce)|o(?:ck|se))|takeout_box|(?:flying_|mini)disc|(?:(?:interrob|yin_y)a|b(?:o(?:omera|wli)|angba)|(?:ping_p|hong_k)o|calli|mahjo)ng|b(?:a(?:llot_box|sket|th?|by)|o(?:o(?:k(?:mark)?|m)|w)|u(?:tter|s)|e(?:ll|er?|ar))?|heart_eyes|basketball|(?:paperclip|dancer|ticket)s|point_up_2|(?:wo)?man_cook|n(?:ew(?:spaper)?|o(?:tebook|_entry)|iger)|t(?:e(?:lephone|a)|o(?:oth|p)|r(?:oll)?|wo)|h(?:o(?:u(?:rglass|se)|rse)|a(?:mmer|nd)|eart)|paperclip|full_moon|(?:b(?:lack_ni|athtu|om)|her)b|(?:long|oil)_drum|pineapple|(?:clock(?:1[0-2]?|[2-9])3|u6e8)0|p(?:o(?:int_up|ut)|r(?:ince|ay)|i(?:ck|g)|en)|e(?:nvelope|ight|u(?:ro)?|gg|ar|ye|s)|m(?:o(?:u(?:ntain|se)|nkey|on)|echanic|a(?:ilbox|g|n)|irror)?|new_moon|d(?:iamonds|olls|art)|question|k(?:iss(?:ing)?|ey)|haircut|no_good|(?:vampir|massag)e|g(?:olf(?:ing)?|u(?:inea|ard)|e(?:nie|m)|ift|rin)|h(?:a(?:ndbag|msa)|ouses|earts|ut)|postbox|toolbox|(?:pencil|t(?:rain|iger)|whale|cat|dog)2|belgium|(?:volca|kimo)no|(?:vanuat|tuval|pala|naur|maca)u|tokelau|o(?:range|ne?|m|k)?|office|dancer|ticket|dragon|pencil|zombie|w(?:o(?:mens|rm|od)|ave|in[gk]|c)|m(?:o(?:sque|use2)|e(?:rman|ns)|a(?:li|sk))|jersey|tshirt|w(?:heel|oman)|dizzy|j(?:apan|oy)|t(?:rain|iger)|whale|fairy|a(?:nge[lr]|bcd|tm)|c(?:h(?:a(?:ir|d)|ile)|a(?:ndy|mel)|urry|rab|o(?:rn|ol|w2)|[dn])|p(?:ager|e(?:a(?:ch|r)|ru)|i(?:g2|ll|e)|oop)|n(?:otes|ine)|t(?:onga|hree|ent|ram|[mv])|f(?:erry|r(?:ies|ee|og)|ax)|u(?:7(?:533|981|121)|5(?:5b6|408|272)|6(?:307|70[89]))|mage|e(?:yes|nd)|i(?:ra[nq]|t)|cat|dog|elf|z(?:zz|ap)|yen|j(?:ar|p)|leg|id|u[kps]|ng|o[2x]|vs|kr|[\+\x2D]1|x|v)(:)</string> | |
| 2146 | <key>name</key> | |
| 2147 | <string>string.emoji.mdx</string> | |
| 2148 | <key>captures</key> | |
| 2149 | <dict> | |
| 2150 | <key>1</key> | |
| 2151 | <dict> | |
| 2152 | <key>name</key> | |
| 2153 | <string>punctuation.definition.gemoji.begin.mdx</string> | |
| 2154 | </dict> | |
| 2155 | <key>2</key> | |
| 2156 | <dict> | |
| 2157 | <key>name</key> | |
| 2158 | <string>keyword.control.gemoji.mdx</string> | |
| 2159 | </dict> | |
| 2160 | <key>3</key> | |
| 2161 | <dict> | |
| 2162 | <key>name</key> | |
| 2163 | <string>punctuation.definition.gemoji.end.mdx</string> | |
| 2164 | </dict> | |
| 2165 | </dict> | |
| 2166 | </dict> | |
| 2167 | <key>extension-github-mention</key> | |
| 2168 | <dict> | |
| 2169 | <key>match</key> | |
| 2170 | <string>(?&lt;![0-9A-Za-z_`])(@)((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\/(?:[0-9A-Za-z][0-9A-Za-z-]{0,38}))?)(?![0-9A-Za-z_`])</string> | |
| 2171 | <key>name</key> | |
| 2172 | <string>string.mention.mdx</string> | |
| 2173 | <key>captures</key> | |
| 2174 | <dict> | |
| 2175 | <key>1</key> | |
| 2176 | <dict> | |
| 2177 | <key>name</key> | |
| 2178 | <string>punctuation.definition.mention.begin.mdx</string> | |
| 2179 | </dict> | |
| 2180 | <key>2</key> | |
| 2181 | <dict> | |
| 2182 | <key>name</key> | |
| 2183 | <string>string.other.link.mention.mdx</string> | |
| 2184 | </dict> | |
| 2185 | </dict> | |
| 2186 | </dict> | |
| 2187 | <key>extension-github-reference</key> | |
| 2188 | <dict> | |
| 2189 | <key>patterns</key> | |
| 2190 | <array> | |
| 2191 | <dict> | |
| 2192 | <key>match</key> | |
| 2193 | <string>(?&lt;![0-9A-Za-z_])(?:((?i:ghsa-|cve-))([A-Za-z0-9]+)|((?i:gh-|#))([0-9]+))(?![0-9A-Za-z_])</string> | |
| 2194 | <key>name</key> | |
| 2195 | <string>string.reference.mdx</string> | |
| 2196 | <key>captures</key> | |
| 2197 | <dict> | |
| 2198 | <key>1</key> | |
| 2199 | <dict> | |
| 2200 | <key>name</key> | |
| 2201 | <string>punctuation.definition.reference.begin.mdx</string> | |
| 2202 | </dict> | |
| 2203 | <key>2</key> | |
| 2204 | <dict> | |
| 2205 | <key>name</key> | |
| 2206 | <string>string.other.link.reference.security-advisory.mdx</string> | |
| 2207 | </dict> | |
| 2208 | <key>3</key> | |
| 2209 | <dict> | |
| 2210 | <key>name</key> | |
| 2211 | <string>punctuation.definition.reference.begin.mdx</string> | |
| 2212 | </dict> | |
| 2213 | <key>4</key> | |
| 2214 | <dict> | |
| 2215 | <key>name</key> | |
| 2216 | <string>string.other.link.reference.issue-or-pr.mdx</string> | |
| 2217 | </dict> | |
| 2218 | </dict> | |
| 2219 | </dict> | |
| 2220 | <dict> | |
| 2221 | <key>match</key> | |
| 2222 | <string>(?&lt;![^\t\n\r \(@\[\{])((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\/(?:(?:\.git[0-9A-Za-z_-]|\.(?!git)|[0-9A-Za-z_-])+))?)(#)([0-9]+)(?![0-9A-Za-z_])</string> | |
| 2223 | <key>name</key> | |
| 2224 | <string>string.reference.mdx</string> | |
| 2225 | <key>captures</key> | |
| 2226 | <dict> | |
| 2227 | <key>1</key> | |
| 2228 | <dict> | |
| 2229 | <key>name</key> | |
| 2230 | <string>string.other.link.reference.user.mdx</string> | |
| 2231 | </dict> | |
| 2232 | <key>2</key> | |
| 2233 | <dict> | |
| 2234 | <key>name</key> | |
| 2235 | <string>punctuation.definition.reference.begin.mdx</string> | |
| 2236 | </dict> | |
| 2237 | <key>3</key> | |
| 2238 | <dict> | |
| 2239 | <key>name</key> | |
| 2240 | <string>string.other.link.reference.issue-or-pr.mdx</string> | |
| 2241 | </dict> | |
| 2242 | </dict> | |
| 2243 | </dict> | |
| 2244 | </array> | |
| 2245 | </dict> | |
| 2246 | <key>extension-math-flow</key> | |
| 2247 | <dict> | |
| 2248 | <key>begin</key> | |
| 2249 | <string>(?:^|\G)[\t ]*(\${2,})([^\n\r\$]*)$</string> | |
| 2250 | <key>beginCaptures</key> | |
| 2251 | <dict> | |
| 2252 | <key>1</key> | |
| 2253 | <dict> | |
| 2254 | <key>name</key> | |
| 2255 | <string>string.other.begin.math.flow.mdx</string> | |
| 2256 | </dict> | |
| 2257 | <key>2</key> | |
| 2258 | <dict> | |
| 2259 | <key>patterns</key> | |
| 2260 | <array> | |
| 2261 | <dict> | |
| 2262 | <key>include</key> | |
| 2263 | <string>#markdown-string</string> | |
| 2264 | </dict> | |
| 2265 | </array> | |
| 2266 | </dict> | |
| 2267 | </dict> | |
| 2268 | <key>contentName</key> | |
| 2269 | <string>markup.raw.math.flow.mdx</string> | |
| 2270 | <key>end</key> | |
| 2271 | <string>(\1)(?:[\t ]*$)</string> | |
| 2272 | <key>endCaptures</key> | |
| 2273 | <dict> | |
| 2274 | <key>1</key> | |
| 2275 | <dict> | |
| 2276 | <key>name</key> | |
| 2277 | <string>string.other.end.math.flow.mdx</string> | |
| 2278 | </dict> | |
| 2279 | </dict> | |
| 2280 | <key>name</key> | |
| 2281 | <string>markup.code.other.mdx</string> | |
| 2282 | </dict> | |
| 2283 | <key>extension-math-text</key> | |
| 2284 | <dict> | |
| 2285 | <key>match</key> | |
| 2286 | <string>(?&lt;!\$)(\${2,})(?!\$)(.+?)(?&lt;!\$)(\1)(?!\$)</string> | |
| 2287 | <key>captures</key> | |
| 2288 | <dict> | |
| 2289 | <key>1</key> | |
| 2290 | <dict> | |
| 2291 | <key>name</key> | |
| 2292 | <string>string.other.begin.math.mdx</string> | |
| 2293 | </dict> | |
| 2294 | <key>2</key> | |
| 2295 | <dict> | |
| 2296 | <key>name</key> | |
| 2297 | <string>markup.raw.math.mdx markup.inline.raw.math.mdx</string> | |
| 2298 | </dict> | |
| 2299 | <key>3</key> | |
| 2300 | <dict> | |
| 2301 | <key>name</key> | |
| 2302 | <string>string.other.end.math.mdx</string> | |
| 2303 | </dict> | |
| 2304 | </dict> | |
| 2305 | </dict> | |
| 2306 | <key>extension-mdx-esm</key> | |
| 2307 | <dict> | |
| 2308 | <key>name</key> | |
| 2309 | <string>meta.embedded.tsx</string> | |
| 2310 | <key>begin</key> | |
| 2311 | <string>(?:^|\G)(?=(?i:export|import)[ ])</string> | |
| 2312 | <key>end</key> | |
| 2313 | <string>^(?=[\t ]*$)|$</string> | |
| 2314 | <key>patterns</key> | |
| 2315 | <array> | |
| 2316 | <dict> | |
| 2317 | <key>include</key> | |
| 2318 | <string>source.tsx#statements</string> | |
| 2319 | </dict> | |
| 2320 | </array> | |
| 2321 | </dict> | |
| 2322 | <key>extension-mdx-expression-flow</key> | |
| 2323 | <dict> | |
| 2324 | <key>begin</key> | |
| 2325 | <string>(?:^|\G)[\t ]*(\{)(?!.*\}[\t ]*.)</string> | |
| 2326 | <key>beginCaptures</key> | |
| 2327 | <dict> | |
| 2328 | <key>1</key> | |
| 2329 | <dict> | |
| 2330 | <key>name</key> | |
| 2331 | <string>string.other.begin.expression.mdx.js</string> | |
| 2332 | </dict> | |
| 2333 | </dict> | |
| 2334 | <key>contentName</key> | |
| 2335 | <string>meta.embedded.tsx</string> | |
| 2336 | <key>end</key> | |
| 2337 | <string>(\})(?:[\t ]*$)</string> | |
| 2338 | <key>endCaptures</key> | |
| 2339 | <dict> | |
| 2340 | <key>1</key> | |
| 2341 | <dict> | |
| 2342 | <key>name</key> | |
| 2343 | <string>string.other.begin.expression.mdx.js</string> | |
| 2344 | </dict> | |
| 2345 | </dict> | |
| 2346 | <key>patterns</key> | |
| 2347 | <array> | |
| 2348 | <dict> | |
| 2349 | <key>include</key> | |
| 2350 | <string>source.tsx#expression</string> | |
| 2351 | </dict> | |
| 2352 | </array> | |
| 2353 | </dict> | |
| 2354 | <key>extension-mdx-expression-text</key> | |
| 2355 | <dict> | |
| 2356 | <key>begin</key> | |
| 2357 | <string>\{</string> | |
| 2358 | <key>beginCaptures</key> | |
| 2359 | <dict> | |
| 2360 | <key>0</key> | |
| 2361 | <dict> | |
| 2362 | <key>name</key> | |
| 2363 | <string>string.other.begin.expression.mdx.js</string> | |
| 2364 | </dict> | |
| 2365 | </dict> | |
| 2366 | <key>contentName</key> | |
| 2367 | <string>meta.embedded.tsx</string> | |
| 2368 | <key>end</key> | |
| 2369 | <string>\}</string> | |
| 2370 | <key>endCaptures</key> | |
| 2371 | <dict> | |
| 2372 | <key>0</key> | |
| 2373 | <dict> | |
| 2374 | <key>name</key> | |
| 2375 | <string>string.other.begin.expression.mdx.js</string> | |
| 2376 | </dict> | |
| 2377 | </dict> | |
| 2378 | <key>patterns</key> | |
| 2379 | <array> | |
| 2380 | <dict> | |
| 2381 | <key>include</key> | |
| 2382 | <string>source.tsx#expression</string> | |
| 2383 | </dict> | |
| 2384 | </array> | |
| 2385 | </dict> | |
| 2386 | <key>extension-mdx-jsx-flow</key> | |
| 2387 | <dict> | |
| 2388 | <key>begin</key> | |
| 2389 | <string>(?&lt;=^|\G|\&gt;)[\t ]*(&lt;)(?=(?![\t\n\r ]))(?:\s*(/))?(?:\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\s*(:)\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\s*\.\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\s\/\&gt;\{]))?</string> | |
| 2390 | <key>beginCaptures</key> | |
| 2391 | <dict> | |
| 2392 | <key>1</key> | |
| 2393 | <dict> | |
| 2394 | <key>name</key> | |
| 2395 | <string>punctuation.definition.tag.end.jsx</string> | |
| 2396 | </dict> | |
| 2397 | <key>2</key> | |
| 2398 | <dict> | |
| 2399 | <key>name</key> | |
| 2400 | <string>punctuation.definition.tag.closing.jsx</string> | |
| 2401 | </dict> | |
| 2402 | <key>3</key> | |
| 2403 | <dict> | |
| 2404 | <key>name</key> | |
| 2405 | <string>entity.name.tag.namespace.jsx</string> | |
| 2406 | </dict> | |
| 2407 | <key>4</key> | |
| 2408 | <dict> | |
| 2409 | <key>name</key> | |
| 2410 | <string>punctuation.separator.namespace.jsx</string> | |
| 2411 | </dict> | |
| 2412 | <key>5</key> | |
| 2413 | <dict> | |
| 2414 | <key>name</key> | |
| 2415 | <string>entity.name.tag.local.jsx</string> | |
| 2416 | </dict> | |
| 2417 | <key>6</key> | |
| 2418 | <dict> | |
| 2419 | <key>name</key> | |
| 2420 | <string>support.class.component.jsx</string> | |
| 2421 | </dict> | |
| 2422 | <key>7</key> | |
| 2423 | <dict> | |
| 2424 | <key>name</key> | |
| 2425 | <string>support.class.component.jsx</string> | |
| 2426 | </dict> | |
| 2427 | <key>8</key> | |
| 2428 | <dict> | |
| 2429 | <key>name</key> | |
| 2430 | <string>entity.name.tag.jsx</string> | |
| 2431 | </dict> | |
| 2432 | </dict> | |
| 2433 | <key>patterns</key> | |
| 2434 | <array> | |
| 2435 | <dict> | |
| 2436 | <key>include</key> | |
| 2437 | <string>source.tsx#jsx-tag-attribute-name</string> | |
| 2438 | </dict> | |
| 2439 | <dict> | |
| 2440 | <key>include</key> | |
| 2441 | <string>source.tsx#jsx-tag-attribute-assignment</string> | |
| 2442 | </dict> | |
| 2443 | <dict> | |
| 2444 | <key>include</key> | |
| 2445 | <string>source.tsx#jsx-string-double-quoted</string> | |
| 2446 | </dict> | |
| 2447 | <dict> | |
| 2448 | <key>include</key> | |
| 2449 | <string>source.tsx#jsx-string-single-quoted</string> | |
| 2450 | </dict> | |
| 2451 | <dict> | |
| 2452 | <key>include</key> | |
| 2453 | <string>source.tsx#jsx-evaluated-code</string> | |
| 2454 | </dict> | |
| 2455 | <dict> | |
| 2456 | <key>include</key> | |
| 2457 | <string>source.tsx#jsx-tag-attributes-illegal</string> | |
| 2458 | </dict> | |
| 2459 | </array> | |
| 2460 | <key>end</key> | |
| 2461 | <string>(?:(\/)\s*)?(&gt;)</string> | |
| 2462 | <key>endCaptures</key> | |
| 2463 | <dict> | |
| 2464 | <key>1</key> | |
| 2465 | <dict> | |
| 2466 | <key>name</key> | |
| 2467 | <string>punctuation.definition.tag.self-closing.jsx</string> | |
| 2468 | </dict> | |
| 2469 | <key>2</key> | |
| 2470 | <dict> | |
| 2471 | <key>name</key> | |
| 2472 | <string>punctuation.definition.tag.end.jsx</string> | |
| 2473 | </dict> | |
| 2474 | </dict> | |
| 2475 | </dict> | |
| 2476 | <key>extension-mdx-jsx-text</key> | |
| 2477 | <dict> | |
| 2478 | <key>begin</key> | |
| 2479 | <string>(&lt;)(?=(?![\t\n\r ]))(?:\s*(/))?(?:\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\s*(:)\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\s*\.\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\s\/\&gt;\{]))?</string> | |
| 2480 | <key>beginCaptures</key> | |
| 2481 | <dict> | |
| 2482 | <key>1</key> | |
| 2483 | <dict> | |
| 2484 | <key>name</key> | |
| 2485 | <string>punctuation.definition.tag.end.jsx</string> | |
| 2486 | </dict> | |
| 2487 | <key>2</key> | |
| 2488 | <dict> | |
| 2489 | <key>name</key> | |
| 2490 | <string>punctuation.definition.tag.closing.jsx</string> | |
| 2491 | </dict> | |
| 2492 | <key>3</key> | |
| 2493 | <dict> | |
| 2494 | <key>name</key> | |
| 2495 | <string>entity.name.tag.namespace.jsx</string> | |
| 2496 | </dict> | |
| 2497 | <key>4</key> | |
| 2498 | <dict> | |
| 2499 | <key>name</key> | |
| 2500 | <string>punctuation.separator.namespace.jsx</string> | |
| 2501 | </dict> | |
| 2502 | <key>5</key> | |
| 2503 | <dict> | |
| 2504 | <key>name</key> | |
| 2505 | <string>entity.name.tag.local.jsx</string> | |
| 2506 | </dict> | |
| 2507 | <key>6</key> | |
| 2508 | <dict> | |
| 2509 | <key>name</key> | |
| 2510 | <string>support.class.component.jsx</string> | |
| 2511 | </dict> | |
| 2512 | <key>7</key> | |
| 2513 | <dict> | |
| 2514 | <key>name</key> | |
| 2515 | <string>support.class.component.jsx</string> | |
| 2516 | </dict> | |
| 2517 | <key>8</key> | |
| 2518 | <dict> | |
| 2519 | <key>name</key> | |
| 2520 | <string>entity.name.tag.jsx</string> | |
| 2521 | </dict> | |
| 2522 | </dict> | |
| 2523 | <key>patterns</key> | |
| 2524 | <array> | |
| 2525 | <dict> | |
| 2526 | <key>include</key> | |
| 2527 | <string>source.tsx#jsx-tag-attribute-name</string> | |
| 2528 | </dict> | |
| 2529 | <dict> | |
| 2530 | <key>include</key> | |
| 2531 | <string>source.tsx#jsx-tag-attribute-assignment</string> | |
| 2532 | </dict> | |
| 2533 | <dict> | |
| 2534 | <key>include</key> | |
| 2535 | <string>source.tsx#jsx-string-double-quoted</string> | |
| 2536 | </dict> | |
| 2537 | <dict> | |
| 2538 | <key>include</key> | |
| 2539 | <string>source.tsx#jsx-string-single-quoted</string> | |
| 2540 | </dict> | |
| 2541 | <dict> | |
| 2542 | <key>include</key> | |
| 2543 | <string>source.tsx#jsx-evaluated-code</string> | |
| 2544 | </dict> | |
| 2545 | <dict> | |
| 2546 | <key>include</key> | |
| 2547 | <string>source.tsx#jsx-tag-attributes-illegal</string> | |
| 2548 | </dict> | |
| 2549 | </array> | |
| 2550 | <key>end</key> | |
| 2551 | <string>(?:(\/)\s*)?(&gt;)</string> | |
| 2552 | <key>endCaptures</key> | |
| 2553 | <dict> | |
| 2554 | <key>1</key> | |
| 2555 | <dict> | |
| 2556 | <key>name</key> | |
| 2557 | <string>punctuation.definition.tag.self-closing.jsx</string> | |
| 2558 | </dict> | |
| 2559 | <key>2</key> | |
| 2560 | <dict> | |
| 2561 | <key>name</key> | |
| 2562 | <string>punctuation.definition.tag.end.jsx</string> | |
| 2563 | </dict> | |
| 2564 | </dict> | |
| 2565 | </dict> | |
| 2566 | <key>extension-toml</key> | |
| 2567 | <dict> | |
| 2568 | <key>begin</key> | |
| 2569 | <string>\A\+{3}$</string> | |
| 2570 | <key>end</key> | |
| 2571 | <string>^\+{3}$</string> | |
| 2572 | <key>beginCaptures</key> | |
| 2573 | <dict> | |
| 2574 | <key>0</key> | |
| 2575 | <dict> | |
| 2576 | <key>name</key> | |
| 2577 | <string>string.other.begin.toml</string> | |
| 2578 | </dict> | |
| 2579 | </dict> | |
| 2580 | <key>endCaptures</key> | |
| 2581 | <dict> | |
| 2582 | <key>0</key> | |
| 2583 | <dict> | |
| 2584 | <key>name</key> | |
| 2585 | <string>string.other.end.toml</string> | |
| 2586 | </dict> | |
| 2587 | </dict> | |
| 2588 | <key>contentName</key> | |
| 2589 | <string>meta.embedded.toml</string> | |
| 2590 | <key>patterns</key> | |
| 2591 | <array> | |
| 2592 | <dict> | |
| 2593 | <key>include</key> | |
| 2594 | <string>source.toml</string> | |
| 2595 | </dict> | |
| 2596 | </array> | |
| 2597 | </dict> | |
| 2598 | <key>extension-yaml</key> | |
| 2599 | <dict> | |
| 2600 | <key>begin</key> | |
| 2601 | <string>\A-{3}$</string> | |
| 2602 | <key>end</key> | |
| 2603 | <string>^-{3}$</string> | |
| 2604 | <key>beginCaptures</key> | |
| 2605 | <dict> | |
| 2606 | <key>0</key> | |
| 2607 | <dict> | |
| 2608 | <key>name</key> | |
| 2609 | <string>string.other.begin.yaml</string> | |
| 2610 | </dict> | |
| 2611 | </dict> | |
| 2612 | <key>endCaptures</key> | |
| 2613 | <dict> | |
| 2614 | <key>0</key> | |
| 2615 | <dict> | |
| 2616 | <key>name</key> | |
| 2617 | <string>string.other.end.yaml</string> | |
| 2618 | </dict> | |
| 2619 | </dict> | |
| 2620 | <key>contentName</key> | |
| 2621 | <string>meta.embedded.yaml</string> | |
| 2622 | <key>patterns</key> | |
| 2623 | <array> | |
| 2624 | <dict> | |
| 2625 | <key>include</key> | |
| 2626 | <string>source.yaml</string> | |
| 2627 | </dict> | |
| 2628 | </array> | |
| 2629 | </dict> | |
| 2630 | <key>whatwg-html-data-character-reference-named-terminated</key> | |
| 2631 | <dict> | |
| 2632 | <key>match</key> | |
| 2633 | <string>(&amp;)((?:C(?:(?:o(?:unterClockwiseCo)?|lockwiseCo)ntourIntegra|cedi)|(?:(?:Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)|Not(?:Righ|Lef)tTriangle|(?:Not(?:(?:Succeed|Precede|Les)s|Greater)|(?:Precede|Succeed)s|Less)Slant|SquareSu(?:per|b)set|(?:Not(?:Greater|Tilde)|Tilde|Less)Full|RightTriangle|LeftTriangle|Greater(?:Slant|Full)|Precedes|Succeeds|Superset|NotHump|Subset|Tilde|Hump)Equ|int(?:er)?c|DotEqu)a|DoubleContourIntegra|(?:n(?:short)?parall|shortparall|p(?:arall|rur))e|(?:rightarrowta|l(?:eftarrowta|ced|ata|Ata)|sced|rata|perm|rced|rAta|ced)i|Proportiona|smepars|e(?:qvpars|pars|xc|um)|Integra|suphso|rarr[pt]|n(?:pars|tg)|l(?:arr[pt]|cei)|Rarrt|(?:hybu|fora)l|ForAl|[GKLNR-Tcknt]cedi|rcei|iexc|gime|fras|[uy]um|oso|dso|ium|Ium)l|D(?:o(?:uble(?:(?:L(?:ong(?:Left)?R|eftR)ight|L(?:ongL)?eft|UpDown|Right|Up)Arrow|Do(?:wnArrow|t))|wn(?:ArrowUpA|TeeA|a)rrow)|iacriticalDot|strok|ashv|cy)|(?:(?:(?:N(?:(?:otN)?estedGreater|ot(?:Greater|Less))|Less(?:Equal)?)Great|GreaterGreat|l[lr]corn|mark|east)e|Not(?:Double)?VerticalBa|(?:Not(?:Righ|Lef)tTriangleB|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)VectorB|RightTriangleB|Left(?:Triangle|Arrow)B|RightArrowB|V(?:er(?:ticalB|b)|b)|UpArrowB|l(?:ur(?:ds|u)h|dr(?:us|d)h|trP|owb|H)|profal|r(?:ulu|dld)h|b(?:igst|rvb)|(?:wed|ve[er])b|s(?:wn|es)w|n(?:wne|ese|sp|hp)|gtlP|d(?:oll|uh|H)|(?:hor|ov)b|u(?:dh|H)|r(?:lh|H)|ohb|hb|St)a|D(?:o(?:wn(?:(?:Left(?:Right|Tee)|RightTee)Vecto|(?:(?:Righ|Lef)tVector|Arrow)Ba)|ubleVerticalBa)|a(?:gge|r)|sc|f)|(?:(?:(?:Righ|Lef)tDown|(?:Righ|Lef)tUp)Tee|(?:Righ|Lef)tUpDown)Vecto|VerticalSeparato|(?:Left(?:Right|Tee)|RightTee)Vecto|less(?:eqq?)?gt|e(?:qslantgt|sc)|(?:RightF|LeftF|[lr]f)loo|u(?:[lr]corne|ar)|timesba|(?:plusa|cirs|apa)ci|U(?:arroci|f)|(?:dzigr|s(?:u(?:pl|br)|imr|[lr])|zigr|angz|nvH|l(?:tl|B)|r[Br])ar|UnderBa|(?:plus|harr|top|mid|of)ci|O(?:verBa|sc|f)|dd?agge|s(?:olba|sc)|g(?:t(?:rar|ci)|sc|f)|c(?:opys|u(?:po|ep)|sc|f)|(?:n(?:(?:v[lr]|w|r)A|l[Aa]|h[Aa]|eA)|x[hlr][Aa]|u(?:ua|da|A)|s[ew]A|rla|o[lr]a|rba|rAa|l[Ablr]a|h(?:oa|A)|era|d(?:ua|A)|cra|vA)r|o(?:lci|sc|ro|pa)|ropa|roar|l(?:o(?:pa|ar)|sc|Ar)|i(?:ma|s)c|ltci|dd?ar|a(?:ma|s)c|R(?:Bar|sc|f)|I(?:mac|f)|(?:u(?:ma|s)|oma|ema|Oma|Ema|[wyz]s|qs|ks|fs|Zs|Ys|Xs|Ws|Vs|Us|Ss|Qs|Ns|Ms|Ks|Is|Gs|Fs|Cs|Bs)c|Umac|x(?:sc|f)|v(?:sc|f)|rsc|n(?:ld|f)|m(?:sc|ld|ac|f)|rAr|h(?:sc|f)|b(?:sc|f)|psc|P(?:sc|f)|L(?:sc|ar|f)|jsc|J(?:sc|f)|E(?:sc|f)|[HT]sc|[yz]f|wf|tf|qf|pf|kf|jf|Zf|Yf|Xf|Wf|Vf|Tf|Sf|Qf|Nf|Mf|Kf|Hf|Gf|Ff|Cf|Bf)r|(?:Diacritical(?:Double)?A|[EINOSYZaisz]a)cute|(?:(?:N(?:egative(?:VeryThin|Thi(?:ck|n))|onBreaking)|NegativeMedium|ZeroWidth|VeryThin|Medium|Thi(?:ck|n))Spac|Filled(?:Very)?SmallSquar|Empty(?:Very)?SmallSquar|(?:N(?:ot(?:Succeeds|Greater|Tilde|Less)T|t)|DiacriticalT|VerticalT|PrecedesT|SucceedsT|NotEqualT|GreaterT|TildeT|EqualT|LessT|at|Ut|It)ild|(?:(?:DiacriticalG|[EIOUaiu]g)ra|(?:u|U)?bre|(?:o|e)?gra)v|(?:doublebar|curly|big|x)wedg|H(?:orizontalLin|ilbertSpac)|Double(?:Righ|Lef)tTe|(?:(?:measured|uw)ang|exponentia|dwang|ssmi|fema)l|(?:Poincarepla|reali|pho|oli)n|(?:black)?lozeng|(?:VerticalL|(?:prof|imag)l)in|SmallCircl|(?:black|dot)squar|rmoustach|l(?:moustach|angl)|(?:b(?:ack)?pr|(?:tri|xo)t|[qt]pr)im|[Tt]herefor|(?:DownB|[Gag]b)rev|(?:infint|nv[lr]tr)i|b(?:arwedg|owti)|an(?:dslop|gl)|(?:cu(?:rly)?v|rthr|lthr|b(?:ig|ar)v|xv)e|n(?:s(?:qsu[bp]|ccu)|prcu)|orslop|NewLin|maltes|Becaus|rangl|incar|(?:otil|Otil|t(?:ra|il))d|[inu]tild|s(?:mil|imn)|(?:sc|pr)cu|Wedg|Prim|Brev)e|(?:CloseCurly(?:Double)?Quo|OpenCurly(?:Double)?Quo|[ry]?acu)te|(?:Reverse(?:Up)?|Up)Equilibrium|C(?:apitalDifferentialD|(?:oproduc|(?:ircleD|enterD|d)o)t|on(?:grue|i)nt|conint|upCap|o(?:lone|pf)|OPY|hi)|(?:(?:(?:left)?rightsquig|(?:longleftr|twoheadr|nleftr|nLeftr|longr|hookr|nR|Rr)ight|(?:twohead|hook)left|longleft|updown|Updown|nright|Right|nleft|nLeft|down|up|Up)a|L(?:(?:ong(?:left)?righ|(?:ong)?lef)ta|eft(?:(?:right)?a|RightA|TeeA))|RightTeeA|LongLeftA|UpTeeA)rrow|(?:(?:RightArrow|Short|Upper|Lower)Left|(?:L(?:eftArrow|o(?:wer|ng))|LongLeft|Short|Upper)Right|ShortUp)Arrow|(?:b(?:lacktriangle(?:righ|lef)|ulle|no)|RightDoubleBracke|RightAngleBracke|Left(?:Doub|Ang)leBracke|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow)righ|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow|mapsto)lef|(?:UnderBrack|OverBrack|emptys|targ|Sups)e|diamondsui|c(?:ircledas|lubsui|are)|(?:spade|heart)sui|(?:(?:c(?:enter|t)|lmi|ino)d|(?:Triple|mD)D|n(?:otin|e)d|(?:ncong|doteq|su[bp]e|e[gl]s)d|l(?:ess|t)d|isind|c(?:ong|up|ap)?d|b(?:igod|N)|t(?:(?:ri)?d|opb)|s(?:ub|im)d|midd|g(?:tr?)?d|Lmid|DotD|(?:xo|ut|z)d|e(?:s?d|rD|fD|DD)|dtd|Zd|Id|Gd|Ed)o|realpar|i(?:magpar|iin)|S(?:uchTha|qr)|su[bp]mul|(?:(?:lt|i)que|gtque|(?:mid|low)a|e(?:que|xi))s|Produc|s(?:updo|e[cx])|r(?:parg|ec)|lparl|vangr|hamil|(?:homt|[lr]fis|ufis|dfis)h|phmma|t(?:wix|in)|quo|o(?:do|as)|fla|eDo)t|(?:(?:Square)?Intersecti|(?:straight|back|var)epsil|SquareUni|expectati|upsil|epsil|Upsil|eq?col|Epsil|(?:omic|Omic|rca|lca|eca|Sca|[NRTt]ca|Lca|Eca|[Zdz]ca|Dca)r|scar|ncar|herc|ccar|Ccar|iog|Iog)on|Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)?|(?:(?:(?:Not(?:Reverse)?|Reverse)E|comp|E)leme|NotCongrue|(?:n[gl]|l)eqsla|geqsla|q(?:uat)?i|perc|iiii|coni|cwi|awi|oi)nt|(?:(?:rightleftharpo|leftrightharpo|quaterni)on|(?:(?:N(?:ot(?:NestedLess|Greater|Less)|estedLess)L|(?:eqslant|gtr(?:eqq?)?)l|LessL)e|Greater(?:Equal)?Le|cro)s|(?:rightright|leftleft|upup)arrow|rightleftarrow|(?:(?:(?:righ|lef)tthree|divideon|b(?:igo|ox)|[lr]o)t|InvisibleT)ime|downdownarrow|(?:(?:smallset|tri|dot|box)m|PlusM)inu|(?:RoundImpli|complex|Impli|Otim)e|C(?:ircle(?:Time|Minu|Plu)|ayley|ros)|(?:rationa|mode)l|NotExist|(?:(?:UnionP|MinusP|(?:b(?:ig[ou]|ox)|tri|s(?:u[bp]|im)|dot|xu|mn)p)l|(?:xo|u)pl|o(?:min|pl)|ropl|lopl|epl)u|otimesa|integer|e(?:linter|qual)|setminu|rarrbf|larrb?f|olcros|rarrf|mstpo|lesge|gesle|Exist|[lr]time|strn|napo|fltn|ccap|apo)s|(?:b(?:(?:lack|ig)triangledow|etwee)|(?:righ|lef)tharpoondow|(?:triangle|mapsto)dow|(?:nv|i)infi|ssetm|plusm|lagra|d(?:[lr]cor|isi)|c(?:ompf|aro)|s?frow|(?:hyph|curr)e|kgree|thor|ogo|ye)n|Not(?:Righ|Lef)tTriangle|(?:Up(?:Arrow)?|Short)DownArrow|(?:(?:n(?:triangle(?:righ|lef)t|succ|prec)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|backsim)e|lvertneq|gvertneq|(?:suc|pre)cneq|a(?:pprox|symp)e|(?:succ|prec|vee)e|circe)q|(?:UnderParenthes|OverParenthes|xn)is|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)Vector|D(?:o(?:wn(?:RightVector|LeftVector|Arrow|Tee)|t)|el|D)|l(?:eftrightarrows|br(?:k(?:sl[du]|e)|ac[ek])|tri[ef]|s(?:im[eg]|qb|h)|hard|a(?:tes|ngd|p)|o[pz]f|rm|gE|fr|eg|cy)|(?:NotHumpDownHum|(?:righ|lef)tharpoonu|big(?:(?:triangle|sqc)u|c[au])|HumpDownHum|m(?:apstou|lc)|(?:capbr|xsq)cu|smash|rarr[al]|(?:weie|sha)r|larrl|velli|(?:thin|punc)s|h(?:elli|airs)|(?:u[lr]c|vp)ro|d[lr]cro|c(?:upc[au]|apc[au])|thka|scna|prn?a|oper|n(?:ums|va|cu|bs)|ens|xc[au]|Ma)p|l(?:eftrightarrow|e(?:ftarrow|s(?:dot)?)?|moust|a(?:rrb?|te?|ng)|t(?:ri)?|sim|par|oz|l|g)|n(?:triangle(?:righ|lef)t|succ|prec)|SquareSu(?:per|b)set|(?:I(?:nvisibleComm|ot)|(?:varthe|iio)t|varkapp|(?:vars|S)igm|(?:diga|mco)mm|Cedill|lambd|Lambd|delt|Thet|omeg|Omeg|Kapp|Delt|nabl|zet|to[es]|rdc|ldc|iot|Zet|Bet|Et)a|b(?:lacktriangle|arwed|u(?:mpe?|ll)|sol|o(?:x[HVhv]|t)|brk|ne)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|RightT(?:riangl|e)e|(?:(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|nsu[bp]seteq|colone|(?:wedg|sim)e|nsime|lneq|gneq)q|DifferentialD|(?:(?:fall|ris)ingdots|(?:suc|pre)ccurly|ddots)eq|A(?:pplyFunction|ssign|(?:tild|grav|brev)e|acute|o(?:gon|pf)|lpha|(?:mac|sc|f)r|c(?:irc|y)|ring|Elig|uml|nd|MP)|(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|L(?:eft(?:T(?:riangl|e)e|Arrow)|l)|G(?:reaterEqual|amma)|E(?:xponentialE|quilibrium|sim|cy|TH|NG)|(?:(?:RightCeil|LeftCeil|varnoth|ar|Ur)in|(?:b(?:ack)?co|uri)n|vzigza|roan|loan|ffli|amal|sun|rin|n(?:tl|an)|Ran|Lan)g|(?:thick|succn?|precn?|less|g(?:tr|n)|ln|n)approx|(?:s(?:traightph|em)|(?:rtril|xu|u[lr]|xd|v[lr])tr|varph|l[lr]tr|b(?:sem|eps)|Ph)i|(?:circledd|osl|n(?:v[Dd]|V[Dd]|d)|hsl|V(?:vd|D)|Osl|v[Dd]|md)ash|(?:(?:RuleDelay|imp|cuw)e|(?:n(?:s(?:hort)?)?|short|rn)mi|D(?:Dotrah|iamon)|(?:i(?:nt)?pr|peri)o|odsol|llhar|c(?:opro|irmi)|(?:capa|anda|pou)n|Barwe|napi|api)d|(?:cu(?:rlyeq(?:suc|pre)|es)|telre|[ou]dbla|Udbla|Odbla|radi|lesc|gesc|dbla)c|(?:circled|big|eq|[is]|c|x|a|S|[hw]|W|H|G|E|C)circ|rightarrow|R(?:ightArrow|arr|e)|Pr(?:oportion)?|(?:longmapst|varpropt|p(?:lustw|ropt)|varrh|numer|(?:rsa|lsa|sb)qu|m(?:icr|h)|[lr]aqu|bdqu|eur)o|UnderBrace|ImaginaryI|B(?:ernoullis|a(?:ckslash|rv)|umpeq|cy)|(?:(?:Laplace|Mellin|zee)tr|Fo(?:uriertr|p)|(?:profsu|ssta)r|ordero|origo|[ps]op|nop|mop|i(?:op|mo)|h(?:op|al)|f(?:op|no)|dop|bop|Rop|Pop|Nop|Lop|Iop|Hop|Dop|[GJKMOQSTV-Zgjkoqvwyz]op|Bop)f|nsu[bp]seteq|t(?:ri(?:angleq|e)|imesd|he(?:tav|re4)|au)|O(?:verBrace|r)|(?:(?:pitchfo|checkma|t(?:opfo|b)|rob|rbb|l[bo]b)r|intlarh|b(?:brktbr|l(?:oc|an))|perten|NoBrea|rarrh|s[ew]arh|n[ew]arh|l(?:arrh|hbl)|uhbl|Hace)k|(?:NotCupC|(?:mu(?:lti)?|x)m|cupbrc)ap|t(?:riangle|imes|heta|opf?)|Precedes|Succeeds|Superset|NotEqual|(?:n(?:atural|exist|les)|s(?:qc[au]p|mte)|prime)s|c(?:ir(?:cled[RS]|[Ee])|u(?:rarrm|larrp|darr[lr]|ps)|o(?:mmat|pf)|aps|hi)|b(?:sol(?:hsu)?b|ump(?:eq|E)|ox(?:box|[Vv][HLRhlr]|[Hh][DUdu]|[DUdu][LRlr])|e(?:rnou|t[ah])|lk(?:34|1[24])|cy)|(?:l(?:esdot|squ|dqu)o|rsquo|rdquo|ngt)r|a(?:n(?:g(?:msda[a-h]|st|e)|d[dv])|st|p[Ee]|mp|fr|c[Edy])|(?:g(?:esdoto|E)|[lr]haru)l|(?:angrtvb|lrhar|nis)d|(?:(?:th(?:ic)?k|succn?|p(?:r(?:ecn?|n)?|lus)|rarr|l(?:ess|arr)|su[bp]|par|scn|g(?:tr|n)|ne|sc|n[glv]|ln|eq?)si|thetasy|ccupss|alefsy|botto)m|trpezium|(?:hks[ew]|dr?bk|bk)arow|(?:(?:[lr]a|d|c)empty|b(?:nequi|empty)|plank|nequi|odi)v|(?:(?:sc|rp|n)pol|point|fpart)int|(?:c(?:irf|wco)|awco)nint|PartialD|n(?:s(?:u[bp](?:set)?|c)|rarr|ot(?:ni|in)?|warr|e(?:arr)?|a(?:tur|p)|vlt|p(?:re?|ar)|um?|l[et]|ge|i)|n(?:atural|exist|les)|d(?:i(?:am(?:ond)?|v(?:ide)?)|tri|ash|ot|d)|backsim|l(?:esdot|squ|dqu)o|g(?:esdoto|E)|U(?:p(?:Arrow|si)|nion|arr)|angrtvb|p(?:l(?:anckh|us(?:d[ou]|[be]))|ar(?:sl|t)|r(?:od|nE|E)|erp|iv|m)|n(?:ot(?:niv[a-c]|in(?:v[a-c]|E))|rarr[cw]|s(?:u[bp][Ee]|c[er])|part|v(?:le|g[et])|g(?:es|E)|c(?:ap|y)|apE|lE|iv|Ll|Gg)|m(?:inus(?:du|b)|ale|cy|p)|rbr(?:k(?:sl[du]|e)|ac[ek])|(?:suphsu|tris|rcu|lcu)b|supdsub|(?:s[ew]a|n[ew]a)rrow|(?:b(?:ecaus|sim)|n(?:[lr]tri|bump)|csu[bp])e|equivDD|u(?:rcorn|lcorn|psi)|timesb|s(?:u(?:p(?:set)?|b(?:set)?)|q(?:su[bp]|u)|i(?:gma|m)|olb?|dot|mt|fr|ce?)|p(?:l(?:anck|us)|r(?:op|ec?)?|ara?|i)|o(?:times|r(?:d(?:er)?)?)|m(?:i(?:nusd?|d)|a(?:p(?:sto)?|lt)|u)|rmoust|g(?:e(?:s(?:dot|l)?|q)?|sim|n(?:ap|e)|t|l|g)|(?:spade|heart)s|c(?:u(?:rarr|larr|p)|o(?:m(?:ma|p)|lon|py|ng)|lubs|heck|cups|irc?|ent|ap)|colone|a(?:p(?:prox)?|n(?:g(?:msd|rt)?|d)|symp|f|c)|S(?:quare|u[bp]|c)|Subset|b(?:ecaus|sim)|vsu[bp]n[Ee]|s(?:u(?:psu[bp]|b(?:su[bp]|n[Ee]|E)|pn[Ee]|p[1-3E]|m)|q(?:u(?:ar[ef]|f)|su[bp]e)|igma[fv]|etmn|dot[be]|par|mid|hc?y|c[Ey])|f(?:rac(?:78|5[68]|45|3[458]|2[35]|1[2-68])|fr)|e(?:m(?:sp1[34]|ptyv)|psiv|c(?:irc|y)|t[ah]|ng|ll|fr|e)|(?:kappa|isins|vBar|fork|rho|phi|n[GL]t)v|divonx|V(?:dashl|ee)|gammad|G(?:ammad|cy|[Tgt])|[Ldhlt]strok|[HT]strok|(?:c(?:ylct|hc)|(?:s(?:oft|hch)|hard|S(?:OFT|HCH)|jser|J(?:ser|uk)|HARD|tsh|TSH|juk|iuk|I(?:uk|[EO])|zh|yi|nj|lj|k[hj]|gj|dj|ZH|Y[AIU]|NJ|LJ|K[HJ]|GJ|D[JSZ])c|ubrc|Ubrc|(?:yu|i[eo]|dz|v|p|f)c|TSc|SHc|CHc|Vc|Pc|Mc|Fc)y|(?:(?:wre|jm)at|dalet|a(?:ngs|le)p|imat|[lr]ds)h|[CLRUceglnou]acute|ff?llig|(?:f(?:fi|[ij])|sz|oe|ij|ae|OE|IJ)lig|r(?:a(?:tio|rr|ng)|tri|par|eal)|s[ew]arr|s(?:qc[au]p|mte)|prime|rarrb|i(?:n(?:fin|t)?|sin|t|i|c)|e(?:quiv|m(?:pty|sp)|p(?:si|ar)|cir|l|g)|kappa|isins|ncong|doteq|(?:wedg|sim)e|nsime|rsquo|rdquo|[lr]haru|V(?:dash|ert)|Tilde|lrhar|gamma|Equal|UpTee|n(?:[lr]tri|bump)|C(?:olon|up|ap)|v(?:arpi|ert)|u(?:psih|ml)|vnsu[bp]|r(?:tri[ef]|e(?:als|g)|a(?:rr[cw]|ng[de]|ce)|sh|lm|x)|rhard|sim[gl]E|i(?:sin[Ev]|mage|f[fr]|cy)|harrw|(?:n[gl]|l)eqq|g(?:sim[el]|tcc|e(?:qq|l)|nE|l[Eaj]|gg|ap)|ocirc|starf|utrif|d(?:trif|i(?:ams|e)|ashv|sc[ry]|fr|eg)|[du]har[lr]|T(?:HORN|a[bu])|(?:TRAD|[gl]vn)E|odash|[EUaeu]o(?:gon|pf)|alpha|[IJOUYgjuy]c(?:irc|y)|v(?:arr|ee)|succ|sim[gl]|harr|ln(?:ap|e)|lesg|(?:n[gl]|l)eq|ocir|star|utri|vBar|fork|su[bp]e|nsim|lneq|gneq|csu[bp]|zwn?j|yacy|x(?:opf|i)|scnE|o(?:r(?:d[fm]|v)|mid|lt|hm|gt|fr|cy|S)|scap|rsqb|ropf|ltcc|tsc[ry]|QUOT|[EOUYao]uml|rho|phi|n[GL]t|e[gl]s|ngt|I(?:nt|m)|nis|rfr|rcy|lnE|lEg|ufr|S(?:um|cy)|R(?:sh|ho)|psi|Ps?i|[NRTt]cy|L(?:sh|cy|[Tt])|kcy|Kcy|Hat|REG|[Zdz]cy|wr|lE|wp|Xi|Nu|Mu)(;)</string> | |
| 2634 | <key>name</key> | |
| 2635 | <string>constant.language.character-reference.named.html</string> | |
| 2636 | <key>captures</key> | |
| 2637 | <dict> | |
| 2638 | <key>1</key> | |
| 2639 | <dict> | |
| 2640 | <key>name</key> | |
| 2641 | <string>punctuation.definition.character-reference.begin.html</string> | |
| 2642 | </dict> | |
| 2643 | <key>2</key> | |
| 2644 | <dict> | |
| 2645 | <key>name</key> | |
| 2646 | <string>keyword.control.character-reference.html</string> | |
| 2647 | </dict> | |
| 2648 | <key>3</key> | |
| 2649 | <dict> | |
| 2650 | <key>name</key> | |
| 2651 | <string>punctuation.definition.character-reference.end.html</string> | |
| 2652 | </dict> | |
| 2653 | </dict> | |
| 2654 | </dict> | |
| 2655 | <key>commonmark-code-fenced-apib</key> | |
| 2656 | <dict> | |
| 2657 | <key>patterns</key> | |
| 2658 | <array> | |
| 2659 | <dict> | |
| 2660 | <key>begin</key> | |
| 2661 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:api\x2dblueprint|(?:.*\.)?apib))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 2662 | <key>beginCaptures</key> | |
| 2663 | <dict> | |
| 2664 | <key>1</key> | |
| 2665 | <dict> | |
| 2666 | <key>name</key> | |
| 2667 | <string>string.other.begin.code.fenced.mdx</string> | |
| 2668 | </dict> | |
| 2669 | <key>2</key> | |
| 2670 | <dict> | |
| 2671 | <key>name</key> | |
| 2672 | <string>entity.name.function.mdx</string> | |
| 2673 | <key>patterns</key> | |
| 2674 | <array> | |
| 2675 | <dict> | |
| 2676 | <key>include</key> | |
| 2677 | <string>#markdown-string</string> | |
| 2678 | </dict> | |
| 2679 | </array> | |
| 2680 | </dict> | |
| 2681 | <key>3</key> | |
| 2682 | <dict> | |
| 2683 | <key>patterns</key> | |
| 2684 | <array> | |
| 2685 | <dict> | |
| 2686 | <key>include</key> | |
| 2687 | <string>#markdown-string</string> | |
| 2688 | </dict> | |
| 2689 | </array> | |
| 2690 | </dict> | |
| 2691 | </dict> | |
| 2692 | <key>end</key> | |
| 2693 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 2694 | <key>endCaptures</key> | |
| 2695 | <dict> | |
| 2696 | <key>1</key> | |
| 2697 | <dict> | |
| 2698 | <key>name</key> | |
| 2699 | <string>string.other.end.code.fenced.mdx</string> | |
| 2700 | </dict> | |
| 2701 | </dict> | |
| 2702 | <key>name</key> | |
| 2703 | <string>markup.code.apib.mdx</string> | |
| 2704 | <key>patterns</key> | |
| 2705 | <array> | |
| 2706 | <dict> | |
| 2707 | <key>begin</key> | |
| 2708 | <string>(^|\G)(\s*)(.*)</string> | |
| 2709 | <key>while</key> | |
| 2710 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 2711 | <key>contentName</key> | |
| 2712 | <string>meta.embedded.apib</string> | |
| 2713 | <key>patterns</key> | |
| 2714 | <array> | |
| 2715 | <dict> | |
| 2716 | <key>include</key> | |
| 2717 | <string>text.html.markdown.source.gfm.apib</string> | |
| 2718 | </dict> | |
| 2719 | </array> | |
| 2720 | </dict> | |
| 2721 | </array> | |
| 2722 | </dict> | |
| 2723 | <dict> | |
| 2724 | <key>begin</key> | |
| 2725 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:api\x2dblueprint|(?:.*\.)?apib))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 2726 | <key>beginCaptures</key> | |
| 2727 | <dict> | |
| 2728 | <key>1</key> | |
| 2729 | <dict> | |
| 2730 | <key>name</key> | |
| 2731 | <string>string.other.begin.code.fenced.mdx</string> | |
| 2732 | </dict> | |
| 2733 | <key>2</key> | |
| 2734 | <dict> | |
| 2735 | <key>name</key> | |
| 2736 | <string>entity.name.function.mdx</string> | |
| 2737 | <key>patterns</key> | |
| 2738 | <array> | |
| 2739 | <dict> | |
| 2740 | <key>include</key> | |
| 2741 | <string>#markdown-string</string> | |
| 2742 | </dict> | |
| 2743 | </array> | |
| 2744 | </dict> | |
| 2745 | <key>3</key> | |
| 2746 | <dict> | |
| 2747 | <key>patterns</key> | |
| 2748 | <array> | |
| 2749 | <dict> | |
| 2750 | <key>include</key> | |
| 2751 | <string>#markdown-string</string> | |
| 2752 | </dict> | |
| 2753 | </array> | |
| 2754 | </dict> | |
| 2755 | </dict> | |
| 2756 | <key>end</key> | |
| 2757 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 2758 | <key>endCaptures</key> | |
| 2759 | <dict> | |
| 2760 | <key>1</key> | |
| 2761 | <dict> | |
| 2762 | <key>name</key> | |
| 2763 | <string>string.other.end.code.fenced.mdx</string> | |
| 2764 | </dict> | |
| 2765 | </dict> | |
| 2766 | <key>name</key> | |
| 2767 | <string>markup.code.apib.mdx</string> | |
| 2768 | <key>patterns</key> | |
| 2769 | <array> | |
| 2770 | <dict> | |
| 2771 | <key>begin</key> | |
| 2772 | <string>(^|\G)(\s*)(.*)</string> | |
| 2773 | <key>while</key> | |
| 2774 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 2775 | <key>contentName</key> | |
| 2776 | <string>meta.embedded.apib</string> | |
| 2777 | <key>patterns</key> | |
| 2778 | <array> | |
| 2779 | <dict> | |
| 2780 | <key>include</key> | |
| 2781 | <string>text.html.markdown.source.gfm.apib</string> | |
| 2782 | </dict> | |
| 2783 | </array> | |
| 2784 | </dict> | |
| 2785 | </array> | |
| 2786 | </dict> | |
| 2787 | </array> | |
| 2788 | </dict> | |
| 2789 | <key>commonmark-code-fenced-asciidoc</key> | |
| 2790 | <dict> | |
| 2791 | <key>patterns</key> | |
| 2792 | <array> | |
| 2793 | <dict> | |
| 2794 | <key>begin</key> | |
| 2795 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?(?:adoc|asciidoc)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 2796 | <key>beginCaptures</key> | |
| 2797 | <dict> | |
| 2798 | <key>1</key> | |
| 2799 | <dict> | |
| 2800 | <key>name</key> | |
| 2801 | <string>string.other.begin.code.fenced.mdx</string> | |
| 2802 | </dict> | |
| 2803 | <key>2</key> | |
| 2804 | <dict> | |
| 2805 | <key>name</key> | |
| 2806 | <string>entity.name.function.mdx</string> | |
| 2807 | <key>patterns</key> | |
| 2808 | <array> | |
| 2809 | <dict> | |
| 2810 | <key>include</key> | |
| 2811 | <string>#markdown-string</string> | |
| 2812 | </dict> | |
| 2813 | </array> | |
| 2814 | </dict> | |
| 2815 | <key>3</key> | |
| 2816 | <dict> | |
| 2817 | <key>patterns</key> | |
| 2818 | <array> | |
| 2819 | <dict> | |
| 2820 | <key>include</key> | |
| 2821 | <string>#markdown-string</string> | |
| 2822 | </dict> | |
| 2823 | </array> | |
| 2824 | </dict> | |
| 2825 | </dict> | |
| 2826 | <key>end</key> | |
| 2827 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 2828 | <key>endCaptures</key> | |
| 2829 | <dict> | |
| 2830 | <key>1</key> | |
| 2831 | <dict> | |
| 2832 | <key>name</key> | |
| 2833 | <string>string.other.end.code.fenced.mdx</string> | |
| 2834 | </dict> | |
| 2835 | </dict> | |
| 2836 | <key>name</key> | |
| 2837 | <string>markup.code.asciidoc.mdx</string> | |
| 2838 | <key>patterns</key> | |
| 2839 | <array> | |
| 2840 | <dict> | |
| 2841 | <key>begin</key> | |
| 2842 | <string>(^|\G)(\s*)(.*)</string> | |
| 2843 | <key>while</key> | |
| 2844 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 2845 | <key>contentName</key> | |
| 2846 | <string>meta.embedded.asciidoc</string> | |
| 2847 | <key>patterns</key> | |
| 2848 | <array> | |
| 2849 | <dict> | |
| 2850 | <key>include</key> | |
| 2851 | <string>text.html.asciidoc</string> | |
| 2852 | </dict> | |
| 2853 | </array> | |
| 2854 | </dict> | |
| 2855 | </array> | |
| 2856 | </dict> | |
| 2857 | <dict> | |
| 2858 | <key>begin</key> | |
| 2859 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?(?:adoc|asciidoc)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 2860 | <key>beginCaptures</key> | |
| 2861 | <dict> | |
| 2862 | <key>1</key> | |
| 2863 | <dict> | |
| 2864 | <key>name</key> | |
| 2865 | <string>string.other.begin.code.fenced.mdx</string> | |
| 2866 | </dict> | |
| 2867 | <key>2</key> | |
| 2868 | <dict> | |
| 2869 | <key>name</key> | |
| 2870 | <string>entity.name.function.mdx</string> | |
| 2871 | <key>patterns</key> | |
| 2872 | <array> | |
| 2873 | <dict> | |
| 2874 | <key>include</key> | |
| 2875 | <string>#markdown-string</string> | |
| 2876 | </dict> | |
| 2877 | </array> | |
| 2878 | </dict> | |
| 2879 | <key>3</key> | |
| 2880 | <dict> | |
| 2881 | <key>patterns</key> | |
| 2882 | <array> | |
| 2883 | <dict> | |
| 2884 | <key>include</key> | |
| 2885 | <string>#markdown-string</string> | |
| 2886 | </dict> | |
| 2887 | </array> | |
| 2888 | </dict> | |
| 2889 | </dict> | |
| 2890 | <key>end</key> | |
| 2891 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 2892 | <key>endCaptures</key> | |
| 2893 | <dict> | |
| 2894 | <key>1</key> | |
| 2895 | <dict> | |
| 2896 | <key>name</key> | |
| 2897 | <string>string.other.end.code.fenced.mdx</string> | |
| 2898 | </dict> | |
| 2899 | </dict> | |
| 2900 | <key>name</key> | |
| 2901 | <string>markup.code.asciidoc.mdx</string> | |
| 2902 | <key>patterns</key> | |
| 2903 | <array> | |
| 2904 | <dict> | |
| 2905 | <key>begin</key> | |
| 2906 | <string>(^|\G)(\s*)(.*)</string> | |
| 2907 | <key>while</key> | |
| 2908 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 2909 | <key>contentName</key> | |
| 2910 | <string>meta.embedded.asciidoc</string> | |
| 2911 | <key>patterns</key> | |
| 2912 | <array> | |
| 2913 | <dict> | |
| 2914 | <key>include</key> | |
| 2915 | <string>text.html.asciidoc</string> | |
| 2916 | </dict> | |
| 2917 | </array> | |
| 2918 | </dict> | |
| 2919 | </array> | |
| 2920 | </dict> | |
| 2921 | </array> | |
| 2922 | </dict> | |
| 2923 | <key>commonmark-code-fenced-c</key> | |
| 2924 | <dict> | |
| 2925 | <key>patterns</key> | |
| 2926 | <array> | |
| 2927 | <dict> | |
| 2928 | <key>begin</key> | |
| 2929 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:dtrace|dtrace\x2dscript|oncrpc|rpc|rpcgen|unified\x2dparallel\x2dc|x\x2dbitmap|x\x2dpixmap|xdr|(?:.*\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 2930 | <key>beginCaptures</key> | |
| 2931 | <dict> | |
| 2932 | <key>1</key> | |
| 2933 | <dict> | |
| 2934 | <key>name</key> | |
| 2935 | <string>string.other.begin.code.fenced.mdx</string> | |
| 2936 | </dict> | |
| 2937 | <key>2</key> | |
| 2938 | <dict> | |
| 2939 | <key>name</key> | |
| 2940 | <string>entity.name.function.mdx</string> | |
| 2941 | <key>patterns</key> | |
| 2942 | <array> | |
| 2943 | <dict> | |
| 2944 | <key>include</key> | |
| 2945 | <string>#markdown-string</string> | |
| 2946 | </dict> | |
| 2947 | </array> | |
| 2948 | </dict> | |
| 2949 | <key>3</key> | |
| 2950 | <dict> | |
| 2951 | <key>patterns</key> | |
| 2952 | <array> | |
| 2953 | <dict> | |
| 2954 | <key>include</key> | |
| 2955 | <string>#markdown-string</string> | |
| 2956 | </dict> | |
| 2957 | </array> | |
| 2958 | </dict> | |
| 2959 | </dict> | |
| 2960 | <key>end</key> | |
| 2961 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 2962 | <key>endCaptures</key> | |
| 2963 | <dict> | |
| 2964 | <key>1</key> | |
| 2965 | <dict> | |
| 2966 | <key>name</key> | |
| 2967 | <string>string.other.end.code.fenced.mdx</string> | |
| 2968 | </dict> | |
| 2969 | </dict> | |
| 2970 | <key>name</key> | |
| 2971 | <string>markup.code.c.mdx</string> | |
| 2972 | <key>patterns</key> | |
| 2973 | <array> | |
| 2974 | <dict> | |
| 2975 | <key>begin</key> | |
| 2976 | <string>(^|\G)(\s*)(.*)</string> | |
| 2977 | <key>while</key> | |
| 2978 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 2979 | <key>contentName</key> | |
| 2980 | <string>meta.embedded.c</string> | |
| 2981 | <key>patterns</key> | |
| 2982 | <array> | |
| 2983 | <dict> | |
| 2984 | <key>include</key> | |
| 2985 | <string>source.c</string> | |
| 2986 | </dict> | |
| 2987 | </array> | |
| 2988 | </dict> | |
| 2989 | </array> | |
| 2990 | </dict> | |
| 2991 | <dict> | |
| 2992 | <key>begin</key> | |
| 2993 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:dtrace|dtrace\x2dscript|oncrpc|rpc|rpcgen|unified\x2dparallel\x2dc|x\x2dbitmap|x\x2dpixmap|xdr|(?:.*\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 2994 | <key>beginCaptures</key> | |
| 2995 | <dict> | |
| 2996 | <key>1</key> | |
| 2997 | <dict> | |
| 2998 | <key>name</key> | |
| 2999 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3000 | </dict> | |
| 3001 | <key>2</key> | |
| 3002 | <dict> | |
| 3003 | <key>name</key> | |
| 3004 | <string>entity.name.function.mdx</string> | |
| 3005 | <key>patterns</key> | |
| 3006 | <array> | |
| 3007 | <dict> | |
| 3008 | <key>include</key> | |
| 3009 | <string>#markdown-string</string> | |
| 3010 | </dict> | |
| 3011 | </array> | |
| 3012 | </dict> | |
| 3013 | <key>3</key> | |
| 3014 | <dict> | |
| 3015 | <key>patterns</key> | |
| 3016 | <array> | |
| 3017 | <dict> | |
| 3018 | <key>include</key> | |
| 3019 | <string>#markdown-string</string> | |
| 3020 | </dict> | |
| 3021 | </array> | |
| 3022 | </dict> | |
| 3023 | </dict> | |
| 3024 | <key>end</key> | |
| 3025 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3026 | <key>endCaptures</key> | |
| 3027 | <dict> | |
| 3028 | <key>1</key> | |
| 3029 | <dict> | |
| 3030 | <key>name</key> | |
| 3031 | <string>string.other.end.code.fenced.mdx</string> | |
| 3032 | </dict> | |
| 3033 | </dict> | |
| 3034 | <key>name</key> | |
| 3035 | <string>markup.code.c.mdx</string> | |
| 3036 | <key>patterns</key> | |
| 3037 | <array> | |
| 3038 | <dict> | |
| 3039 | <key>begin</key> | |
| 3040 | <string>(^|\G)(\s*)(.*)</string> | |
| 3041 | <key>while</key> | |
| 3042 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3043 | <key>contentName</key> | |
| 3044 | <string>meta.embedded.c</string> | |
| 3045 | <key>patterns</key> | |
| 3046 | <array> | |
| 3047 | <dict> | |
| 3048 | <key>include</key> | |
| 3049 | <string>source.c</string> | |
| 3050 | </dict> | |
| 3051 | </array> | |
| 3052 | </dict> | |
| 3053 | </array> | |
| 3054 | </dict> | |
| 3055 | </array> | |
| 3056 | </dict> | |
| 3057 | <key>commonmark-code-fenced-clojure</key> | |
| 3058 | <dict> | |
| 3059 | <key>patterns</key> | |
| 3060 | <array> | |
| 3061 | <dict> | |
| 3062 | <key>begin</key> | |
| 3063 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:clojure|rouge|(?:.*\.)?(?:boot|cl2|clj|cljc|cljs|cljs\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3064 | <key>beginCaptures</key> | |
| 3065 | <dict> | |
| 3066 | <key>1</key> | |
| 3067 | <dict> | |
| 3068 | <key>name</key> | |
| 3069 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3070 | </dict> | |
| 3071 | <key>2</key> | |
| 3072 | <dict> | |
| 3073 | <key>name</key> | |
| 3074 | <string>entity.name.function.mdx</string> | |
| 3075 | <key>patterns</key> | |
| 3076 | <array> | |
| 3077 | <dict> | |
| 3078 | <key>include</key> | |
| 3079 | <string>#markdown-string</string> | |
| 3080 | </dict> | |
| 3081 | </array> | |
| 3082 | </dict> | |
| 3083 | <key>3</key> | |
| 3084 | <dict> | |
| 3085 | <key>patterns</key> | |
| 3086 | <array> | |
| 3087 | <dict> | |
| 3088 | <key>include</key> | |
| 3089 | <string>#markdown-string</string> | |
| 3090 | </dict> | |
| 3091 | </array> | |
| 3092 | </dict> | |
| 3093 | </dict> | |
| 3094 | <key>end</key> | |
| 3095 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3096 | <key>endCaptures</key> | |
| 3097 | <dict> | |
| 3098 | <key>1</key> | |
| 3099 | <dict> | |
| 3100 | <key>name</key> | |
| 3101 | <string>string.other.end.code.fenced.mdx</string> | |
| 3102 | </dict> | |
| 3103 | </dict> | |
| 3104 | <key>name</key> | |
| 3105 | <string>markup.code.clojure.mdx</string> | |
| 3106 | <key>patterns</key> | |
| 3107 | <array> | |
| 3108 | <dict> | |
| 3109 | <key>begin</key> | |
| 3110 | <string>(^|\G)(\s*)(.*)</string> | |
| 3111 | <key>while</key> | |
| 3112 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3113 | <key>contentName</key> | |
| 3114 | <string>meta.embedded.clojure</string> | |
| 3115 | <key>patterns</key> | |
| 3116 | <array> | |
| 3117 | <dict> | |
| 3118 | <key>include</key> | |
| 3119 | <string>source.clojure</string> | |
| 3120 | </dict> | |
| 3121 | </array> | |
| 3122 | </dict> | |
| 3123 | </array> | |
| 3124 | </dict> | |
| 3125 | <dict> | |
| 3126 | <key>begin</key> | |
| 3127 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:clojure|rouge|(?:.*\.)?(?:boot|cl2|clj|cljc|cljs|cljs\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3128 | <key>beginCaptures</key> | |
| 3129 | <dict> | |
| 3130 | <key>1</key> | |
| 3131 | <dict> | |
| 3132 | <key>name</key> | |
| 3133 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3134 | </dict> | |
| 3135 | <key>2</key> | |
| 3136 | <dict> | |
| 3137 | <key>name</key> | |
| 3138 | <string>entity.name.function.mdx</string> | |
| 3139 | <key>patterns</key> | |
| 3140 | <array> | |
| 3141 | <dict> | |
| 3142 | <key>include</key> | |
| 3143 | <string>#markdown-string</string> | |
| 3144 | </dict> | |
| 3145 | </array> | |
| 3146 | </dict> | |
| 3147 | <key>3</key> | |
| 3148 | <dict> | |
| 3149 | <key>patterns</key> | |
| 3150 | <array> | |
| 3151 | <dict> | |
| 3152 | <key>include</key> | |
| 3153 | <string>#markdown-string</string> | |
| 3154 | </dict> | |
| 3155 | </array> | |
| 3156 | </dict> | |
| 3157 | </dict> | |
| 3158 | <key>end</key> | |
| 3159 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3160 | <key>endCaptures</key> | |
| 3161 | <dict> | |
| 3162 | <key>1</key> | |
| 3163 | <dict> | |
| 3164 | <key>name</key> | |
| 3165 | <string>string.other.end.code.fenced.mdx</string> | |
| 3166 | </dict> | |
| 3167 | </dict> | |
| 3168 | <key>name</key> | |
| 3169 | <string>markup.code.clojure.mdx</string> | |
| 3170 | <key>patterns</key> | |
| 3171 | <array> | |
| 3172 | <dict> | |
| 3173 | <key>begin</key> | |
| 3174 | <string>(^|\G)(\s*)(.*)</string> | |
| 3175 | <key>while</key> | |
| 3176 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3177 | <key>contentName</key> | |
| 3178 | <string>meta.embedded.clojure</string> | |
| 3179 | <key>patterns</key> | |
| 3180 | <array> | |
| 3181 | <dict> | |
| 3182 | <key>include</key> | |
| 3183 | <string>source.clojure</string> | |
| 3184 | </dict> | |
| 3185 | </array> | |
| 3186 | </dict> | |
| 3187 | </array> | |
| 3188 | </dict> | |
| 3189 | </array> | |
| 3190 | </dict> | |
| 3191 | <key>commonmark-code-fenced-coffee</key> | |
| 3192 | <dict> | |
| 3193 | <key>patterns</key> | |
| 3194 | <array> | |
| 3195 | <dict> | |
| 3196 | <key>begin</key> | |
| 3197 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:coffee\x2dscript|coffeescript|(?:.*\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3198 | <key>beginCaptures</key> | |
| 3199 | <dict> | |
| 3200 | <key>1</key> | |
| 3201 | <dict> | |
| 3202 | <key>name</key> | |
| 3203 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3204 | </dict> | |
| 3205 | <key>2</key> | |
| 3206 | <dict> | |
| 3207 | <key>name</key> | |
| 3208 | <string>entity.name.function.mdx</string> | |
| 3209 | <key>patterns</key> | |
| 3210 | <array> | |
| 3211 | <dict> | |
| 3212 | <key>include</key> | |
| 3213 | <string>#markdown-string</string> | |
| 3214 | </dict> | |
| 3215 | </array> | |
| 3216 | </dict> | |
| 3217 | <key>3</key> | |
| 3218 | <dict> | |
| 3219 | <key>patterns</key> | |
| 3220 | <array> | |
| 3221 | <dict> | |
| 3222 | <key>include</key> | |
| 3223 | <string>#markdown-string</string> | |
| 3224 | </dict> | |
| 3225 | </array> | |
| 3226 | </dict> | |
| 3227 | </dict> | |
| 3228 | <key>end</key> | |
| 3229 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3230 | <key>endCaptures</key> | |
| 3231 | <dict> | |
| 3232 | <key>1</key> | |
| 3233 | <dict> | |
| 3234 | <key>name</key> | |
| 3235 | <string>string.other.end.code.fenced.mdx</string> | |
| 3236 | </dict> | |
| 3237 | </dict> | |
| 3238 | <key>name</key> | |
| 3239 | <string>markup.code.coffee.mdx</string> | |
| 3240 | <key>patterns</key> | |
| 3241 | <array> | |
| 3242 | <dict> | |
| 3243 | <key>begin</key> | |
| 3244 | <string>(^|\G)(\s*)(.*)</string> | |
| 3245 | <key>while</key> | |
| 3246 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3247 | <key>contentName</key> | |
| 3248 | <string>meta.embedded.coffee</string> | |
| 3249 | <key>patterns</key> | |
| 3250 | <array> | |
| 3251 | <dict> | |
| 3252 | <key>include</key> | |
| 3253 | <string>source.coffee</string> | |
| 3254 | </dict> | |
| 3255 | </array> | |
| 3256 | </dict> | |
| 3257 | </array> | |
| 3258 | </dict> | |
| 3259 | <dict> | |
| 3260 | <key>begin</key> | |
| 3261 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:coffee\x2dscript|coffeescript|(?:.*\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3262 | <key>beginCaptures</key> | |
| 3263 | <dict> | |
| 3264 | <key>1</key> | |
| 3265 | <dict> | |
| 3266 | <key>name</key> | |
| 3267 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3268 | </dict> | |
| 3269 | <key>2</key> | |
| 3270 | <dict> | |
| 3271 | <key>name</key> | |
| 3272 | <string>entity.name.function.mdx</string> | |
| 3273 | <key>patterns</key> | |
| 3274 | <array> | |
| 3275 | <dict> | |
| 3276 | <key>include</key> | |
| 3277 | <string>#markdown-string</string> | |
| 3278 | </dict> | |
| 3279 | </array> | |
| 3280 | </dict> | |
| 3281 | <key>3</key> | |
| 3282 | <dict> | |
| 3283 | <key>patterns</key> | |
| 3284 | <array> | |
| 3285 | <dict> | |
| 3286 | <key>include</key> | |
| 3287 | <string>#markdown-string</string> | |
| 3288 | </dict> | |
| 3289 | </array> | |
| 3290 | </dict> | |
| 3291 | </dict> | |
| 3292 | <key>end</key> | |
| 3293 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3294 | <key>endCaptures</key> | |
| 3295 | <dict> | |
| 3296 | <key>1</key> | |
| 3297 | <dict> | |
| 3298 | <key>name</key> | |
| 3299 | <string>string.other.end.code.fenced.mdx</string> | |
| 3300 | </dict> | |
| 3301 | </dict> | |
| 3302 | <key>name</key> | |
| 3303 | <string>markup.code.coffee.mdx</string> | |
| 3304 | <key>patterns</key> | |
| 3305 | <array> | |
| 3306 | <dict> | |
| 3307 | <key>begin</key> | |
| 3308 | <string>(^|\G)(\s*)(.*)</string> | |
| 3309 | <key>while</key> | |
| 3310 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3311 | <key>contentName</key> | |
| 3312 | <string>meta.embedded.coffee</string> | |
| 3313 | <key>patterns</key> | |
| 3314 | <array> | |
| 3315 | <dict> | |
| 3316 | <key>include</key> | |
| 3317 | <string>source.coffee</string> | |
| 3318 | </dict> | |
| 3319 | </array> | |
| 3320 | </dict> | |
| 3321 | </array> | |
| 3322 | </dict> | |
| 3323 | </array> | |
| 3324 | </dict> | |
| 3325 | <key>commonmark-code-fenced-console</key> | |
| 3326 | <dict> | |
| 3327 | <key>patterns</key> | |
| 3328 | <array> | |
| 3329 | <dict> | |
| 3330 | <key>begin</key> | |
| 3331 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:pycon|python\x2dconsole))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3332 | <key>beginCaptures</key> | |
| 3333 | <dict> | |
| 3334 | <key>1</key> | |
| 3335 | <dict> | |
| 3336 | <key>name</key> | |
| 3337 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3338 | </dict> | |
| 3339 | <key>2</key> | |
| 3340 | <dict> | |
| 3341 | <key>name</key> | |
| 3342 | <string>entity.name.function.mdx</string> | |
| 3343 | <key>patterns</key> | |
| 3344 | <array> | |
| 3345 | <dict> | |
| 3346 | <key>include</key> | |
| 3347 | <string>#markdown-string</string> | |
| 3348 | </dict> | |
| 3349 | </array> | |
| 3350 | </dict> | |
| 3351 | <key>3</key> | |
| 3352 | <dict> | |
| 3353 | <key>patterns</key> | |
| 3354 | <array> | |
| 3355 | <dict> | |
| 3356 | <key>include</key> | |
| 3357 | <string>#markdown-string</string> | |
| 3358 | </dict> | |
| 3359 | </array> | |
| 3360 | </dict> | |
| 3361 | </dict> | |
| 3362 | <key>end</key> | |
| 3363 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3364 | <key>endCaptures</key> | |
| 3365 | <dict> | |
| 3366 | <key>1</key> | |
| 3367 | <dict> | |
| 3368 | <key>name</key> | |
| 3369 | <string>string.other.end.code.fenced.mdx</string> | |
| 3370 | </dict> | |
| 3371 | </dict> | |
| 3372 | <key>name</key> | |
| 3373 | <string>markup.code.console.mdx</string> | |
| 3374 | <key>patterns</key> | |
| 3375 | <array> | |
| 3376 | <dict> | |
| 3377 | <key>begin</key> | |
| 3378 | <string>(^|\G)(\s*)(.*)</string> | |
| 3379 | <key>while</key> | |
| 3380 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3381 | <key>contentName</key> | |
| 3382 | <string>meta.embedded.console</string> | |
| 3383 | <key>patterns</key> | |
| 3384 | <array> | |
| 3385 | <dict> | |
| 3386 | <key>include</key> | |
| 3387 | <string>text.python.console</string> | |
| 3388 | </dict> | |
| 3389 | </array> | |
| 3390 | </dict> | |
| 3391 | </array> | |
| 3392 | </dict> | |
| 3393 | <dict> | |
| 3394 | <key>begin</key> | |
| 3395 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:pycon|python\x2dconsole))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3396 | <key>beginCaptures</key> | |
| 3397 | <dict> | |
| 3398 | <key>1</key> | |
| 3399 | <dict> | |
| 3400 | <key>name</key> | |
| 3401 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3402 | </dict> | |
| 3403 | <key>2</key> | |
| 3404 | <dict> | |
| 3405 | <key>name</key> | |
| 3406 | <string>entity.name.function.mdx</string> | |
| 3407 | <key>patterns</key> | |
| 3408 | <array> | |
| 3409 | <dict> | |
| 3410 | <key>include</key> | |
| 3411 | <string>#markdown-string</string> | |
| 3412 | </dict> | |
| 3413 | </array> | |
| 3414 | </dict> | |
| 3415 | <key>3</key> | |
| 3416 | <dict> | |
| 3417 | <key>patterns</key> | |
| 3418 | <array> | |
| 3419 | <dict> | |
| 3420 | <key>include</key> | |
| 3421 | <string>#markdown-string</string> | |
| 3422 | </dict> | |
| 3423 | </array> | |
| 3424 | </dict> | |
| 3425 | </dict> | |
| 3426 | <key>end</key> | |
| 3427 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3428 | <key>endCaptures</key> | |
| 3429 | <dict> | |
| 3430 | <key>1</key> | |
| 3431 | <dict> | |
| 3432 | <key>name</key> | |
| 3433 | <string>string.other.end.code.fenced.mdx</string> | |
| 3434 | </dict> | |
| 3435 | </dict> | |
| 3436 | <key>name</key> | |
| 3437 | <string>markup.code.console.mdx</string> | |
| 3438 | <key>patterns</key> | |
| 3439 | <array> | |
| 3440 | <dict> | |
| 3441 | <key>begin</key> | |
| 3442 | <string>(^|\G)(\s*)(.*)</string> | |
| 3443 | <key>while</key> | |
| 3444 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3445 | <key>contentName</key> | |
| 3446 | <string>meta.embedded.console</string> | |
| 3447 | <key>patterns</key> | |
| 3448 | <array> | |
| 3449 | <dict> | |
| 3450 | <key>include</key> | |
| 3451 | <string>text.python.console</string> | |
| 3452 | </dict> | |
| 3453 | </array> | |
| 3454 | </dict> | |
| 3455 | </array> | |
| 3456 | </dict> | |
| 3457 | </array> | |
| 3458 | </dict> | |
| 3459 | <key>commonmark-code-fenced-cpp</key> | |
| 3460 | <dict> | |
| 3461 | <key>patterns</key> | |
| 3462 | <array> | |
| 3463 | <dict> | |
| 3464 | <key>begin</key> | |
| 3465 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:ags|ags\x2dscript|asymptote|c\+\+|edje\x2ddata\x2dcollection|game\x2dmaker\x2dlanguage|swig|(?:.*\.)?(?:asc|ash|asy|c\+\+|cc|cp|cpp|cppm|cxx|edc|gml|h\+\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3466 | <key>beginCaptures</key> | |
| 3467 | <dict> | |
| 3468 | <key>1</key> | |
| 3469 | <dict> | |
| 3470 | <key>name</key> | |
| 3471 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3472 | </dict> | |
| 3473 | <key>2</key> | |
| 3474 | <dict> | |
| 3475 | <key>name</key> | |
| 3476 | <string>entity.name.function.mdx</string> | |
| 3477 | <key>patterns</key> | |
| 3478 | <array> | |
| 3479 | <dict> | |
| 3480 | <key>include</key> | |
| 3481 | <string>#markdown-string</string> | |
| 3482 | </dict> | |
| 3483 | </array> | |
| 3484 | </dict> | |
| 3485 | <key>3</key> | |
| 3486 | <dict> | |
| 3487 | <key>patterns</key> | |
| 3488 | <array> | |
| 3489 | <dict> | |
| 3490 | <key>include</key> | |
| 3491 | <string>#markdown-string</string> | |
| 3492 | </dict> | |
| 3493 | </array> | |
| 3494 | </dict> | |
| 3495 | </dict> | |
| 3496 | <key>end</key> | |
| 3497 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3498 | <key>endCaptures</key> | |
| 3499 | <dict> | |
| 3500 | <key>1</key> | |
| 3501 | <dict> | |
| 3502 | <key>name</key> | |
| 3503 | <string>string.other.end.code.fenced.mdx</string> | |
| 3504 | </dict> | |
| 3505 | </dict> | |
| 3506 | <key>name</key> | |
| 3507 | <string>markup.code.cpp.mdx</string> | |
| 3508 | <key>patterns</key> | |
| 3509 | <array> | |
| 3510 | <dict> | |
| 3511 | <key>begin</key> | |
| 3512 | <string>(^|\G)(\s*)(.*)</string> | |
| 3513 | <key>while</key> | |
| 3514 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3515 | <key>contentName</key> | |
| 3516 | <string>meta.embedded.cpp</string> | |
| 3517 | <key>patterns</key> | |
| 3518 | <array> | |
| 3519 | <dict> | |
| 3520 | <key>include</key> | |
| 3521 | <string>source.c++</string> | |
| 3522 | </dict> | |
| 3523 | <dict> | |
| 3524 | <key>include</key> | |
| 3525 | <string>source.cpp</string> | |
| 3526 | </dict> | |
| 3527 | </array> | |
| 3528 | </dict> | |
| 3529 | </array> | |
| 3530 | </dict> | |
| 3531 | <dict> | |
| 3532 | <key>begin</key> | |
| 3533 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:ags|ags\x2dscript|asymptote|c\+\+|edje\x2ddata\x2dcollection|game\x2dmaker\x2dlanguage|swig|(?:.*\.)?(?:asc|ash|asy|c\+\+|cc|cp|cpp|cppm|cxx|edc|gml|h\+\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3534 | <key>beginCaptures</key> | |
| 3535 | <dict> | |
| 3536 | <key>1</key> | |
| 3537 | <dict> | |
| 3538 | <key>name</key> | |
| 3539 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3540 | </dict> | |
| 3541 | <key>2</key> | |
| 3542 | <dict> | |
| 3543 | <key>name</key> | |
| 3544 | <string>entity.name.function.mdx</string> | |
| 3545 | <key>patterns</key> | |
| 3546 | <array> | |
| 3547 | <dict> | |
| 3548 | <key>include</key> | |
| 3549 | <string>#markdown-string</string> | |
| 3550 | </dict> | |
| 3551 | </array> | |
| 3552 | </dict> | |
| 3553 | <key>3</key> | |
| 3554 | <dict> | |
| 3555 | <key>patterns</key> | |
| 3556 | <array> | |
| 3557 | <dict> | |
| 3558 | <key>include</key> | |
| 3559 | <string>#markdown-string</string> | |
| 3560 | </dict> | |
| 3561 | </array> | |
| 3562 | </dict> | |
| 3563 | </dict> | |
| 3564 | <key>end</key> | |
| 3565 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3566 | <key>endCaptures</key> | |
| 3567 | <dict> | |
| 3568 | <key>1</key> | |
| 3569 | <dict> | |
| 3570 | <key>name</key> | |
| 3571 | <string>string.other.end.code.fenced.mdx</string> | |
| 3572 | </dict> | |
| 3573 | </dict> | |
| 3574 | <key>name</key> | |
| 3575 | <string>markup.code.cpp.mdx</string> | |
| 3576 | <key>patterns</key> | |
| 3577 | <array> | |
| 3578 | <dict> | |
| 3579 | <key>begin</key> | |
| 3580 | <string>(^|\G)(\s*)(.*)</string> | |
| 3581 | <key>while</key> | |
| 3582 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3583 | <key>contentName</key> | |
| 3584 | <string>meta.embedded.cpp</string> | |
| 3585 | <key>patterns</key> | |
| 3586 | <array> | |
| 3587 | <dict> | |
| 3588 | <key>include</key> | |
| 3589 | <string>source.c++</string> | |
| 3590 | </dict> | |
| 3591 | <dict> | |
| 3592 | <key>include</key> | |
| 3593 | <string>source.cpp</string> | |
| 3594 | </dict> | |
| 3595 | </array> | |
| 3596 | </dict> | |
| 3597 | </array> | |
| 3598 | </dict> | |
| 3599 | </array> | |
| 3600 | </dict> | |
| 3601 | <key>commonmark-code-fenced-cs</key> | |
| 3602 | <dict> | |
| 3603 | <key>patterns</key> | |
| 3604 | <array> | |
| 3605 | <dict> | |
| 3606 | <key>begin</key> | |
| 3607 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\.)?(?:bf|cake|cs|cs\.pp|csx|eq|linq|uno)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3608 | <key>beginCaptures</key> | |
| 3609 | <dict> | |
| 3610 | <key>1</key> | |
| 3611 | <dict> | |
| 3612 | <key>name</key> | |
| 3613 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3614 | </dict> | |
| 3615 | <key>2</key> | |
| 3616 | <dict> | |
| 3617 | <key>name</key> | |
| 3618 | <string>entity.name.function.mdx</string> | |
| 3619 | <key>patterns</key> | |
| 3620 | <array> | |
| 3621 | <dict> | |
| 3622 | <key>include</key> | |
| 3623 | <string>#markdown-string</string> | |
| 3624 | </dict> | |
| 3625 | </array> | |
| 3626 | </dict> | |
| 3627 | <key>3</key> | |
| 3628 | <dict> | |
| 3629 | <key>patterns</key> | |
| 3630 | <array> | |
| 3631 | <dict> | |
| 3632 | <key>include</key> | |
| 3633 | <string>#markdown-string</string> | |
| 3634 | </dict> | |
| 3635 | </array> | |
| 3636 | </dict> | |
| 3637 | </dict> | |
| 3638 | <key>end</key> | |
| 3639 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3640 | <key>endCaptures</key> | |
| 3641 | <dict> | |
| 3642 | <key>1</key> | |
| 3643 | <dict> | |
| 3644 | <key>name</key> | |
| 3645 | <string>string.other.end.code.fenced.mdx</string> | |
| 3646 | </dict> | |
| 3647 | </dict> | |
| 3648 | <key>name</key> | |
| 3649 | <string>markup.code.cs.mdx</string> | |
| 3650 | <key>patterns</key> | |
| 3651 | <array> | |
| 3652 | <dict> | |
| 3653 | <key>begin</key> | |
| 3654 | <string>(^|\G)(\s*)(.*)</string> | |
| 3655 | <key>while</key> | |
| 3656 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3657 | <key>contentName</key> | |
| 3658 | <string>meta.embedded.cs</string> | |
| 3659 | <key>patterns</key> | |
| 3660 | <array> | |
| 3661 | <dict> | |
| 3662 | <key>include</key> | |
| 3663 | <string>source.cs</string> | |
| 3664 | </dict> | |
| 3665 | </array> | |
| 3666 | </dict> | |
| 3667 | </array> | |
| 3668 | </dict> | |
| 3669 | <dict> | |
| 3670 | <key>begin</key> | |
| 3671 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\.)?(?:bf|cake|cs|cs\.pp|csx|eq|linq|uno)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3672 | <key>beginCaptures</key> | |
| 3673 | <dict> | |
| 3674 | <key>1</key> | |
| 3675 | <dict> | |
| 3676 | <key>name</key> | |
| 3677 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3678 | </dict> | |
| 3679 | <key>2</key> | |
| 3680 | <dict> | |
| 3681 | <key>name</key> | |
| 3682 | <string>entity.name.function.mdx</string> | |
| 3683 | <key>patterns</key> | |
| 3684 | <array> | |
| 3685 | <dict> | |
| 3686 | <key>include</key> | |
| 3687 | <string>#markdown-string</string> | |
| 3688 | </dict> | |
| 3689 | </array> | |
| 3690 | </dict> | |
| 3691 | <key>3</key> | |
| 3692 | <dict> | |
| 3693 | <key>patterns</key> | |
| 3694 | <array> | |
| 3695 | <dict> | |
| 3696 | <key>include</key> | |
| 3697 | <string>#markdown-string</string> | |
| 3698 | </dict> | |
| 3699 | </array> | |
| 3700 | </dict> | |
| 3701 | </dict> | |
| 3702 | <key>end</key> | |
| 3703 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3704 | <key>endCaptures</key> | |
| 3705 | <dict> | |
| 3706 | <key>1</key> | |
| 3707 | <dict> | |
| 3708 | <key>name</key> | |
| 3709 | <string>string.other.end.code.fenced.mdx</string> | |
| 3710 | </dict> | |
| 3711 | </dict> | |
| 3712 | <key>name</key> | |
| 3713 | <string>markup.code.cs.mdx</string> | |
| 3714 | <key>patterns</key> | |
| 3715 | <array> | |
| 3716 | <dict> | |
| 3717 | <key>begin</key> | |
| 3718 | <string>(^|\G)(\s*)(.*)</string> | |
| 3719 | <key>while</key> | |
| 3720 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3721 | <key>contentName</key> | |
| 3722 | <string>meta.embedded.cs</string> | |
| 3723 | <key>patterns</key> | |
| 3724 | <array> | |
| 3725 | <dict> | |
| 3726 | <key>include</key> | |
| 3727 | <string>source.cs</string> | |
| 3728 | </dict> | |
| 3729 | </array> | |
| 3730 | </dict> | |
| 3731 | </array> | |
| 3732 | </dict> | |
| 3733 | </array> | |
| 3734 | </dict> | |
| 3735 | <key>commonmark-code-fenced-css</key> | |
| 3736 | <dict> | |
| 3737 | <key>patterns</key> | |
| 3738 | <array> | |
| 3739 | <dict> | |
| 3740 | <key>begin</key> | |
| 3741 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?css))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3742 | <key>beginCaptures</key> | |
| 3743 | <dict> | |
| 3744 | <key>1</key> | |
| 3745 | <dict> | |
| 3746 | <key>name</key> | |
| 3747 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3748 | </dict> | |
| 3749 | <key>2</key> | |
| 3750 | <dict> | |
| 3751 | <key>name</key> | |
| 3752 | <string>entity.name.function.mdx</string> | |
| 3753 | <key>patterns</key> | |
| 3754 | <array> | |
| 3755 | <dict> | |
| 3756 | <key>include</key> | |
| 3757 | <string>#markdown-string</string> | |
| 3758 | </dict> | |
| 3759 | </array> | |
| 3760 | </dict> | |
| 3761 | <key>3</key> | |
| 3762 | <dict> | |
| 3763 | <key>patterns</key> | |
| 3764 | <array> | |
| 3765 | <dict> | |
| 3766 | <key>include</key> | |
| 3767 | <string>#markdown-string</string> | |
| 3768 | </dict> | |
| 3769 | </array> | |
| 3770 | </dict> | |
| 3771 | </dict> | |
| 3772 | <key>end</key> | |
| 3773 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3774 | <key>endCaptures</key> | |
| 3775 | <dict> | |
| 3776 | <key>1</key> | |
| 3777 | <dict> | |
| 3778 | <key>name</key> | |
| 3779 | <string>string.other.end.code.fenced.mdx</string> | |
| 3780 | </dict> | |
| 3781 | </dict> | |
| 3782 | <key>name</key> | |
| 3783 | <string>markup.code.css.mdx</string> | |
| 3784 | <key>patterns</key> | |
| 3785 | <array> | |
| 3786 | <dict> | |
| 3787 | <key>begin</key> | |
| 3788 | <string>(^|\G)(\s*)(.*)</string> | |
| 3789 | <key>while</key> | |
| 3790 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3791 | <key>contentName</key> | |
| 3792 | <string>meta.embedded.css</string> | |
| 3793 | <key>patterns</key> | |
| 3794 | <array> | |
| 3795 | <dict> | |
| 3796 | <key>include</key> | |
| 3797 | <string>source.css</string> | |
| 3798 | </dict> | |
| 3799 | </array> | |
| 3800 | </dict> | |
| 3801 | </array> | |
| 3802 | </dict> | |
| 3803 | <dict> | |
| 3804 | <key>begin</key> | |
| 3805 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?css))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3806 | <key>beginCaptures</key> | |
| 3807 | <dict> | |
| 3808 | <key>1</key> | |
| 3809 | <dict> | |
| 3810 | <key>name</key> | |
| 3811 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3812 | </dict> | |
| 3813 | <key>2</key> | |
| 3814 | <dict> | |
| 3815 | <key>name</key> | |
| 3816 | <string>entity.name.function.mdx</string> | |
| 3817 | <key>patterns</key> | |
| 3818 | <array> | |
| 3819 | <dict> | |
| 3820 | <key>include</key> | |
| 3821 | <string>#markdown-string</string> | |
| 3822 | </dict> | |
| 3823 | </array> | |
| 3824 | </dict> | |
| 3825 | <key>3</key> | |
| 3826 | <dict> | |
| 3827 | <key>patterns</key> | |
| 3828 | <array> | |
| 3829 | <dict> | |
| 3830 | <key>include</key> | |
| 3831 | <string>#markdown-string</string> | |
| 3832 | </dict> | |
| 3833 | </array> | |
| 3834 | </dict> | |
| 3835 | </dict> | |
| 3836 | <key>end</key> | |
| 3837 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3838 | <key>endCaptures</key> | |
| 3839 | <dict> | |
| 3840 | <key>1</key> | |
| 3841 | <dict> | |
| 3842 | <key>name</key> | |
| 3843 | <string>string.other.end.code.fenced.mdx</string> | |
| 3844 | </dict> | |
| 3845 | </dict> | |
| 3846 | <key>name</key> | |
| 3847 | <string>markup.code.css.mdx</string> | |
| 3848 | <key>patterns</key> | |
| 3849 | <array> | |
| 3850 | <dict> | |
| 3851 | <key>begin</key> | |
| 3852 | <string>(^|\G)(\s*)(.*)</string> | |
| 3853 | <key>while</key> | |
| 3854 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3855 | <key>contentName</key> | |
| 3856 | <string>meta.embedded.css</string> | |
| 3857 | <key>patterns</key> | |
| 3858 | <array> | |
| 3859 | <dict> | |
| 3860 | <key>include</key> | |
| 3861 | <string>source.css</string> | |
| 3862 | </dict> | |
| 3863 | </array> | |
| 3864 | </dict> | |
| 3865 | </array> | |
| 3866 | </dict> | |
| 3867 | </array> | |
| 3868 | </dict> | |
| 3869 | <key>commonmark-code-fenced-diff</key> | |
| 3870 | <dict> | |
| 3871 | <key>patterns</key> | |
| 3872 | <array> | |
| 3873 | <dict> | |
| 3874 | <key>begin</key> | |
| 3875 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:udiff|(?:.*\.)?(?:diff|patch)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 3876 | <key>beginCaptures</key> | |
| 3877 | <dict> | |
| 3878 | <key>1</key> | |
| 3879 | <dict> | |
| 3880 | <key>name</key> | |
| 3881 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3882 | </dict> | |
| 3883 | <key>2</key> | |
| 3884 | <dict> | |
| 3885 | <key>name</key> | |
| 3886 | <string>entity.name.function.mdx</string> | |
| 3887 | <key>patterns</key> | |
| 3888 | <array> | |
| 3889 | <dict> | |
| 3890 | <key>include</key> | |
| 3891 | <string>#markdown-string</string> | |
| 3892 | </dict> | |
| 3893 | </array> | |
| 3894 | </dict> | |
| 3895 | <key>3</key> | |
| 3896 | <dict> | |
| 3897 | <key>patterns</key> | |
| 3898 | <array> | |
| 3899 | <dict> | |
| 3900 | <key>include</key> | |
| 3901 | <string>#markdown-string</string> | |
| 3902 | </dict> | |
| 3903 | </array> | |
| 3904 | </dict> | |
| 3905 | </dict> | |
| 3906 | <key>end</key> | |
| 3907 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3908 | <key>endCaptures</key> | |
| 3909 | <dict> | |
| 3910 | <key>1</key> | |
| 3911 | <dict> | |
| 3912 | <key>name</key> | |
| 3913 | <string>string.other.end.code.fenced.mdx</string> | |
| 3914 | </dict> | |
| 3915 | </dict> | |
| 3916 | <key>name</key> | |
| 3917 | <string>markup.code.diff.mdx</string> | |
| 3918 | <key>patterns</key> | |
| 3919 | <array> | |
| 3920 | <dict> | |
| 3921 | <key>begin</key> | |
| 3922 | <string>(^|\G)(\s*)(.*)</string> | |
| 3923 | <key>while</key> | |
| 3924 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3925 | <key>contentName</key> | |
| 3926 | <string>meta.embedded.diff</string> | |
| 3927 | <key>patterns</key> | |
| 3928 | <array> | |
| 3929 | <dict> | |
| 3930 | <key>include</key> | |
| 3931 | <string>source.diff</string> | |
| 3932 | </dict> | |
| 3933 | </array> | |
| 3934 | </dict> | |
| 3935 | </array> | |
| 3936 | </dict> | |
| 3937 | <dict> | |
| 3938 | <key>begin</key> | |
| 3939 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:udiff|(?:.*\.)?(?:diff|patch)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 3940 | <key>beginCaptures</key> | |
| 3941 | <dict> | |
| 3942 | <key>1</key> | |
| 3943 | <dict> | |
| 3944 | <key>name</key> | |
| 3945 | <string>string.other.begin.code.fenced.mdx</string> | |
| 3946 | </dict> | |
| 3947 | <key>2</key> | |
| 3948 | <dict> | |
| 3949 | <key>name</key> | |
| 3950 | <string>entity.name.function.mdx</string> | |
| 3951 | <key>patterns</key> | |
| 3952 | <array> | |
| 3953 | <dict> | |
| 3954 | <key>include</key> | |
| 3955 | <string>#markdown-string</string> | |
| 3956 | </dict> | |
| 3957 | </array> | |
| 3958 | </dict> | |
| 3959 | <key>3</key> | |
| 3960 | <dict> | |
| 3961 | <key>patterns</key> | |
| 3962 | <array> | |
| 3963 | <dict> | |
| 3964 | <key>include</key> | |
| 3965 | <string>#markdown-string</string> | |
| 3966 | </dict> | |
| 3967 | </array> | |
| 3968 | </dict> | |
| 3969 | </dict> | |
| 3970 | <key>end</key> | |
| 3971 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 3972 | <key>endCaptures</key> | |
| 3973 | <dict> | |
| 3974 | <key>1</key> | |
| 3975 | <dict> | |
| 3976 | <key>name</key> | |
| 3977 | <string>string.other.end.code.fenced.mdx</string> | |
| 3978 | </dict> | |
| 3979 | </dict> | |
| 3980 | <key>name</key> | |
| 3981 | <string>markup.code.diff.mdx</string> | |
| 3982 | <key>patterns</key> | |
| 3983 | <array> | |
| 3984 | <dict> | |
| 3985 | <key>begin</key> | |
| 3986 | <string>(^|\G)(\s*)(.*)</string> | |
| 3987 | <key>while</key> | |
| 3988 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 3989 | <key>contentName</key> | |
| 3990 | <string>meta.embedded.diff</string> | |
| 3991 | <key>patterns</key> | |
| 3992 | <array> | |
| 3993 | <dict> | |
| 3994 | <key>include</key> | |
| 3995 | <string>source.diff</string> | |
| 3996 | </dict> | |
| 3997 | </array> | |
| 3998 | </dict> | |
| 3999 | </array> | |
| 4000 | </dict> | |
| 4001 | </array> | |
| 4002 | </dict> | |
| 4003 | <key>commonmark-code-fenced-dockerfile</key> | |
| 4004 | <dict> | |
| 4005 | <key>patterns</key> | |
| 4006 | <array> | |
| 4007 | <dict> | |
| 4008 | <key>begin</key> | |
| 4009 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:containerfile|(?:.*\.)?dockerfile))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4010 | <key>beginCaptures</key> | |
| 4011 | <dict> | |
| 4012 | <key>1</key> | |
| 4013 | <dict> | |
| 4014 | <key>name</key> | |
| 4015 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4016 | </dict> | |
| 4017 | <key>2</key> | |
| 4018 | <dict> | |
| 4019 | <key>name</key> | |
| 4020 | <string>entity.name.function.mdx</string> | |
| 4021 | <key>patterns</key> | |
| 4022 | <array> | |
| 4023 | <dict> | |
| 4024 | <key>include</key> | |
| 4025 | <string>#markdown-string</string> | |
| 4026 | </dict> | |
| 4027 | </array> | |
| 4028 | </dict> | |
| 4029 | <key>3</key> | |
| 4030 | <dict> | |
| 4031 | <key>patterns</key> | |
| 4032 | <array> | |
| 4033 | <dict> | |
| 4034 | <key>include</key> | |
| 4035 | <string>#markdown-string</string> | |
| 4036 | </dict> | |
| 4037 | </array> | |
| 4038 | </dict> | |
| 4039 | </dict> | |
| 4040 | <key>end</key> | |
| 4041 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4042 | <key>endCaptures</key> | |
| 4043 | <dict> | |
| 4044 | <key>1</key> | |
| 4045 | <dict> | |
| 4046 | <key>name</key> | |
| 4047 | <string>string.other.end.code.fenced.mdx</string> | |
| 4048 | </dict> | |
| 4049 | </dict> | |
| 4050 | <key>name</key> | |
| 4051 | <string>markup.code.dockerfile.mdx</string> | |
| 4052 | <key>patterns</key> | |
| 4053 | <array> | |
| 4054 | <dict> | |
| 4055 | <key>begin</key> | |
| 4056 | <string>(^|\G)(\s*)(.*)</string> | |
| 4057 | <key>while</key> | |
| 4058 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4059 | <key>contentName</key> | |
| 4060 | <string>meta.embedded.dockerfile</string> | |
| 4061 | <key>patterns</key> | |
| 4062 | <array> | |
| 4063 | <dict> | |
| 4064 | <key>include</key> | |
| 4065 | <string>source.dockerfile</string> | |
| 4066 | </dict> | |
| 4067 | </array> | |
| 4068 | </dict> | |
| 4069 | </array> | |
| 4070 | </dict> | |
| 4071 | <dict> | |
| 4072 | <key>begin</key> | |
| 4073 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:containerfile|(?:.*\.)?dockerfile))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4074 | <key>beginCaptures</key> | |
| 4075 | <dict> | |
| 4076 | <key>1</key> | |
| 4077 | <dict> | |
| 4078 | <key>name</key> | |
| 4079 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4080 | </dict> | |
| 4081 | <key>2</key> | |
| 4082 | <dict> | |
| 4083 | <key>name</key> | |
| 4084 | <string>entity.name.function.mdx</string> | |
| 4085 | <key>patterns</key> | |
| 4086 | <array> | |
| 4087 | <dict> | |
| 4088 | <key>include</key> | |
| 4089 | <string>#markdown-string</string> | |
| 4090 | </dict> | |
| 4091 | </array> | |
| 4092 | </dict> | |
| 4093 | <key>3</key> | |
| 4094 | <dict> | |
| 4095 | <key>patterns</key> | |
| 4096 | <array> | |
| 4097 | <dict> | |
| 4098 | <key>include</key> | |
| 4099 | <string>#markdown-string</string> | |
| 4100 | </dict> | |
| 4101 | </array> | |
| 4102 | </dict> | |
| 4103 | </dict> | |
| 4104 | <key>end</key> | |
| 4105 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4106 | <key>endCaptures</key> | |
| 4107 | <dict> | |
| 4108 | <key>1</key> | |
| 4109 | <dict> | |
| 4110 | <key>name</key> | |
| 4111 | <string>string.other.end.code.fenced.mdx</string> | |
| 4112 | </dict> | |
| 4113 | </dict> | |
| 4114 | <key>name</key> | |
| 4115 | <string>markup.code.dockerfile.mdx</string> | |
| 4116 | <key>patterns</key> | |
| 4117 | <array> | |
| 4118 | <dict> | |
| 4119 | <key>begin</key> | |
| 4120 | <string>(^|\G)(\s*)(.*)</string> | |
| 4121 | <key>while</key> | |
| 4122 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4123 | <key>contentName</key> | |
| 4124 | <string>meta.embedded.dockerfile</string> | |
| 4125 | <key>patterns</key> | |
| 4126 | <array> | |
| 4127 | <dict> | |
| 4128 | <key>include</key> | |
| 4129 | <string>source.dockerfile</string> | |
| 4130 | </dict> | |
| 4131 | </array> | |
| 4132 | </dict> | |
| 4133 | </array> | |
| 4134 | </dict> | |
| 4135 | </array> | |
| 4136 | </dict> | |
| 4137 | <key>commonmark-code-fenced-elixir</key> | |
| 4138 | <dict> | |
| 4139 | <key>patterns</key> | |
| 4140 | <array> | |
| 4141 | <dict> | |
| 4142 | <key>begin</key> | |
| 4143 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:elixir|(?:.*\.)?(?:ex|exs)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4144 | <key>beginCaptures</key> | |
| 4145 | <dict> | |
| 4146 | <key>1</key> | |
| 4147 | <dict> | |
| 4148 | <key>name</key> | |
| 4149 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4150 | </dict> | |
| 4151 | <key>2</key> | |
| 4152 | <dict> | |
| 4153 | <key>name</key> | |
| 4154 | <string>entity.name.function.mdx</string> | |
| 4155 | <key>patterns</key> | |
| 4156 | <array> | |
| 4157 | <dict> | |
| 4158 | <key>include</key> | |
| 4159 | <string>#markdown-string</string> | |
| 4160 | </dict> | |
| 4161 | </array> | |
| 4162 | </dict> | |
| 4163 | <key>3</key> | |
| 4164 | <dict> | |
| 4165 | <key>patterns</key> | |
| 4166 | <array> | |
| 4167 | <dict> | |
| 4168 | <key>include</key> | |
| 4169 | <string>#markdown-string</string> | |
| 4170 | </dict> | |
| 4171 | </array> | |
| 4172 | </dict> | |
| 4173 | </dict> | |
| 4174 | <key>end</key> | |
| 4175 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4176 | <key>endCaptures</key> | |
| 4177 | <dict> | |
| 4178 | <key>1</key> | |
| 4179 | <dict> | |
| 4180 | <key>name</key> | |
| 4181 | <string>string.other.end.code.fenced.mdx</string> | |
| 4182 | </dict> | |
| 4183 | </dict> | |
| 4184 | <key>name</key> | |
| 4185 | <string>markup.code.elixir.mdx</string> | |
| 4186 | <key>patterns</key> | |
| 4187 | <array> | |
| 4188 | <dict> | |
| 4189 | <key>begin</key> | |
| 4190 | <string>(^|\G)(\s*)(.*)</string> | |
| 4191 | <key>while</key> | |
| 4192 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4193 | <key>contentName</key> | |
| 4194 | <string>meta.embedded.elixir</string> | |
| 4195 | <key>patterns</key> | |
| 4196 | <array> | |
| 4197 | <dict> | |
| 4198 | <key>include</key> | |
| 4199 | <string>source.elixir</string> | |
| 4200 | </dict> | |
| 4201 | </array> | |
| 4202 | </dict> | |
| 4203 | </array> | |
| 4204 | </dict> | |
| 4205 | <dict> | |
| 4206 | <key>begin</key> | |
| 4207 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:elixir|(?:.*\.)?(?:ex|exs)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4208 | <key>beginCaptures</key> | |
| 4209 | <dict> | |
| 4210 | <key>1</key> | |
| 4211 | <dict> | |
| 4212 | <key>name</key> | |
| 4213 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4214 | </dict> | |
| 4215 | <key>2</key> | |
| 4216 | <dict> | |
| 4217 | <key>name</key> | |
| 4218 | <string>entity.name.function.mdx</string> | |
| 4219 | <key>patterns</key> | |
| 4220 | <array> | |
| 4221 | <dict> | |
| 4222 | <key>include</key> | |
| 4223 | <string>#markdown-string</string> | |
| 4224 | </dict> | |
| 4225 | </array> | |
| 4226 | </dict> | |
| 4227 | <key>3</key> | |
| 4228 | <dict> | |
| 4229 | <key>patterns</key> | |
| 4230 | <array> | |
| 4231 | <dict> | |
| 4232 | <key>include</key> | |
| 4233 | <string>#markdown-string</string> | |
| 4234 | </dict> | |
| 4235 | </array> | |
| 4236 | </dict> | |
| 4237 | </dict> | |
| 4238 | <key>end</key> | |
| 4239 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4240 | <key>endCaptures</key> | |
| 4241 | <dict> | |
| 4242 | <key>1</key> | |
| 4243 | <dict> | |
| 4244 | <key>name</key> | |
| 4245 | <string>string.other.end.code.fenced.mdx</string> | |
| 4246 | </dict> | |
| 4247 | </dict> | |
| 4248 | <key>name</key> | |
| 4249 | <string>markup.code.elixir.mdx</string> | |
| 4250 | <key>patterns</key> | |
| 4251 | <array> | |
| 4252 | <dict> | |
| 4253 | <key>begin</key> | |
| 4254 | <string>(^|\G)(\s*)(.*)</string> | |
| 4255 | <key>while</key> | |
| 4256 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4257 | <key>contentName</key> | |
| 4258 | <string>meta.embedded.elixir</string> | |
| 4259 | <key>patterns</key> | |
| 4260 | <array> | |
| 4261 | <dict> | |
| 4262 | <key>include</key> | |
| 4263 | <string>source.elixir</string> | |
| 4264 | </dict> | |
| 4265 | </array> | |
| 4266 | </dict> | |
| 4267 | </array> | |
| 4268 | </dict> | |
| 4269 | </array> | |
| 4270 | </dict> | |
| 4271 | <key>commonmark-code-fenced-elm</key> | |
| 4272 | <dict> | |
| 4273 | <key>patterns</key> | |
| 4274 | <array> | |
| 4275 | <dict> | |
| 4276 | <key>begin</key> | |
| 4277 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?elm))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4278 | <key>beginCaptures</key> | |
| 4279 | <dict> | |
| 4280 | <key>1</key> | |
| 4281 | <dict> | |
| 4282 | <key>name</key> | |
| 4283 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4284 | </dict> | |
| 4285 | <key>2</key> | |
| 4286 | <dict> | |
| 4287 | <key>name</key> | |
| 4288 | <string>entity.name.function.mdx</string> | |
| 4289 | <key>patterns</key> | |
| 4290 | <array> | |
| 4291 | <dict> | |
| 4292 | <key>include</key> | |
| 4293 | <string>#markdown-string</string> | |
| 4294 | </dict> | |
| 4295 | </array> | |
| 4296 | </dict> | |
| 4297 | <key>3</key> | |
| 4298 | <dict> | |
| 4299 | <key>patterns</key> | |
| 4300 | <array> | |
| 4301 | <dict> | |
| 4302 | <key>include</key> | |
| 4303 | <string>#markdown-string</string> | |
| 4304 | </dict> | |
| 4305 | </array> | |
| 4306 | </dict> | |
| 4307 | </dict> | |
| 4308 | <key>end</key> | |
| 4309 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4310 | <key>endCaptures</key> | |
| 4311 | <dict> | |
| 4312 | <key>1</key> | |
| 4313 | <dict> | |
| 4314 | <key>name</key> | |
| 4315 | <string>string.other.end.code.fenced.mdx</string> | |
| 4316 | </dict> | |
| 4317 | </dict> | |
| 4318 | <key>name</key> | |
| 4319 | <string>markup.code.elm.mdx</string> | |
| 4320 | <key>patterns</key> | |
| 4321 | <array> | |
| 4322 | <dict> | |
| 4323 | <key>begin</key> | |
| 4324 | <string>(^|\G)(\s*)(.*)</string> | |
| 4325 | <key>while</key> | |
| 4326 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4327 | <key>contentName</key> | |
| 4328 | <string>meta.embedded.elm</string> | |
| 4329 | <key>patterns</key> | |
| 4330 | <array> | |
| 4331 | <dict> | |
| 4332 | <key>include</key> | |
| 4333 | <string>source.elm</string> | |
| 4334 | </dict> | |
| 4335 | </array> | |
| 4336 | </dict> | |
| 4337 | </array> | |
| 4338 | </dict> | |
| 4339 | <dict> | |
| 4340 | <key>begin</key> | |
| 4341 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?elm))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4342 | <key>beginCaptures</key> | |
| 4343 | <dict> | |
| 4344 | <key>1</key> | |
| 4345 | <dict> | |
| 4346 | <key>name</key> | |
| 4347 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4348 | </dict> | |
| 4349 | <key>2</key> | |
| 4350 | <dict> | |
| 4351 | <key>name</key> | |
| 4352 | <string>entity.name.function.mdx</string> | |
| 4353 | <key>patterns</key> | |
| 4354 | <array> | |
| 4355 | <dict> | |
| 4356 | <key>include</key> | |
| 4357 | <string>#markdown-string</string> | |
| 4358 | </dict> | |
| 4359 | </array> | |
| 4360 | </dict> | |
| 4361 | <key>3</key> | |
| 4362 | <dict> | |
| 4363 | <key>patterns</key> | |
| 4364 | <array> | |
| 4365 | <dict> | |
| 4366 | <key>include</key> | |
| 4367 | <string>#markdown-string</string> | |
| 4368 | </dict> | |
| 4369 | </array> | |
| 4370 | </dict> | |
| 4371 | </dict> | |
| 4372 | <key>end</key> | |
| 4373 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4374 | <key>endCaptures</key> | |
| 4375 | <dict> | |
| 4376 | <key>1</key> | |
| 4377 | <dict> | |
| 4378 | <key>name</key> | |
| 4379 | <string>string.other.end.code.fenced.mdx</string> | |
| 4380 | </dict> | |
| 4381 | </dict> | |
| 4382 | <key>name</key> | |
| 4383 | <string>markup.code.elm.mdx</string> | |
| 4384 | <key>patterns</key> | |
| 4385 | <array> | |
| 4386 | <dict> | |
| 4387 | <key>begin</key> | |
| 4388 | <string>(^|\G)(\s*)(.*)</string> | |
| 4389 | <key>while</key> | |
| 4390 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4391 | <key>contentName</key> | |
| 4392 | <string>meta.embedded.elm</string> | |
| 4393 | <key>patterns</key> | |
| 4394 | <array> | |
| 4395 | <dict> | |
| 4396 | <key>include</key> | |
| 4397 | <string>source.elm</string> | |
| 4398 | </dict> | |
| 4399 | </array> | |
| 4400 | </dict> | |
| 4401 | </array> | |
| 4402 | </dict> | |
| 4403 | </array> | |
| 4404 | </dict> | |
| 4405 | <key>commonmark-code-fenced-erlang</key> | |
| 4406 | <dict> | |
| 4407 | <key>patterns</key> | |
| 4408 | <array> | |
| 4409 | <dict> | |
| 4410 | <key>begin</key> | |
| 4411 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:erlang|(?:.*\.)?(?:app|app\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4412 | <key>beginCaptures</key> | |
| 4413 | <dict> | |
| 4414 | <key>1</key> | |
| 4415 | <dict> | |
| 4416 | <key>name</key> | |
| 4417 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4418 | </dict> | |
| 4419 | <key>2</key> | |
| 4420 | <dict> | |
| 4421 | <key>name</key> | |
| 4422 | <string>entity.name.function.mdx</string> | |
| 4423 | <key>patterns</key> | |
| 4424 | <array> | |
| 4425 | <dict> | |
| 4426 | <key>include</key> | |
| 4427 | <string>#markdown-string</string> | |
| 4428 | </dict> | |
| 4429 | </array> | |
| 4430 | </dict> | |
| 4431 | <key>3</key> | |
| 4432 | <dict> | |
| 4433 | <key>patterns</key> | |
| 4434 | <array> | |
| 4435 | <dict> | |
| 4436 | <key>include</key> | |
| 4437 | <string>#markdown-string</string> | |
| 4438 | </dict> | |
| 4439 | </array> | |
| 4440 | </dict> | |
| 4441 | </dict> | |
| 4442 | <key>end</key> | |
| 4443 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4444 | <key>endCaptures</key> | |
| 4445 | <dict> | |
| 4446 | <key>1</key> | |
| 4447 | <dict> | |
| 4448 | <key>name</key> | |
| 4449 | <string>string.other.end.code.fenced.mdx</string> | |
| 4450 | </dict> | |
| 4451 | </dict> | |
| 4452 | <key>name</key> | |
| 4453 | <string>markup.code.erlang.mdx</string> | |
| 4454 | <key>patterns</key> | |
| 4455 | <array> | |
| 4456 | <dict> | |
| 4457 | <key>begin</key> | |
| 4458 | <string>(^|\G)(\s*)(.*)</string> | |
| 4459 | <key>while</key> | |
| 4460 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4461 | <key>contentName</key> | |
| 4462 | <string>meta.embedded.erlang</string> | |
| 4463 | <key>patterns</key> | |
| 4464 | <array> | |
| 4465 | <dict> | |
| 4466 | <key>include</key> | |
| 4467 | <string>source.erlang</string> | |
| 4468 | </dict> | |
| 4469 | </array> | |
| 4470 | </dict> | |
| 4471 | </array> | |
| 4472 | </dict> | |
| 4473 | <dict> | |
| 4474 | <key>begin</key> | |
| 4475 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:erlang|(?:.*\.)?(?:app|app\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4476 | <key>beginCaptures</key> | |
| 4477 | <dict> | |
| 4478 | <key>1</key> | |
| 4479 | <dict> | |
| 4480 | <key>name</key> | |
| 4481 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4482 | </dict> | |
| 4483 | <key>2</key> | |
| 4484 | <dict> | |
| 4485 | <key>name</key> | |
| 4486 | <string>entity.name.function.mdx</string> | |
| 4487 | <key>patterns</key> | |
| 4488 | <array> | |
| 4489 | <dict> | |
| 4490 | <key>include</key> | |
| 4491 | <string>#markdown-string</string> | |
| 4492 | </dict> | |
| 4493 | </array> | |
| 4494 | </dict> | |
| 4495 | <key>3</key> | |
| 4496 | <dict> | |
| 4497 | <key>patterns</key> | |
| 4498 | <array> | |
| 4499 | <dict> | |
| 4500 | <key>include</key> | |
| 4501 | <string>#markdown-string</string> | |
| 4502 | </dict> | |
| 4503 | </array> | |
| 4504 | </dict> | |
| 4505 | </dict> | |
| 4506 | <key>end</key> | |
| 4507 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4508 | <key>endCaptures</key> | |
| 4509 | <dict> | |
| 4510 | <key>1</key> | |
| 4511 | <dict> | |
| 4512 | <key>name</key> | |
| 4513 | <string>string.other.end.code.fenced.mdx</string> | |
| 4514 | </dict> | |
| 4515 | </dict> | |
| 4516 | <key>name</key> | |
| 4517 | <string>markup.code.erlang.mdx</string> | |
| 4518 | <key>patterns</key> | |
| 4519 | <array> | |
| 4520 | <dict> | |
| 4521 | <key>begin</key> | |
| 4522 | <string>(^|\G)(\s*)(.*)</string> | |
| 4523 | <key>while</key> | |
| 4524 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4525 | <key>contentName</key> | |
| 4526 | <string>meta.embedded.erlang</string> | |
| 4527 | <key>patterns</key> | |
| 4528 | <array> | |
| 4529 | <dict> | |
| 4530 | <key>include</key> | |
| 4531 | <string>source.erlang</string> | |
| 4532 | </dict> | |
| 4533 | </array> | |
| 4534 | </dict> | |
| 4535 | </array> | |
| 4536 | </dict> | |
| 4537 | </array> | |
| 4538 | </dict> | |
| 4539 | <key>commonmark-code-fenced-gitconfig</key> | |
| 4540 | <dict> | |
| 4541 | <key>patterns</key> | |
| 4542 | <array> | |
| 4543 | <dict> | |
| 4544 | <key>begin</key> | |
| 4545 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:git\x2dconfig|gitmodules|(?:.*\.)?gitconfig))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4546 | <key>beginCaptures</key> | |
| 4547 | <dict> | |
| 4548 | <key>1</key> | |
| 4549 | <dict> | |
| 4550 | <key>name</key> | |
| 4551 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4552 | </dict> | |
| 4553 | <key>2</key> | |
| 4554 | <dict> | |
| 4555 | <key>name</key> | |
| 4556 | <string>entity.name.function.mdx</string> | |
| 4557 | <key>patterns</key> | |
| 4558 | <array> | |
| 4559 | <dict> | |
| 4560 | <key>include</key> | |
| 4561 | <string>#markdown-string</string> | |
| 4562 | </dict> | |
| 4563 | </array> | |
| 4564 | </dict> | |
| 4565 | <key>3</key> | |
| 4566 | <dict> | |
| 4567 | <key>patterns</key> | |
| 4568 | <array> | |
| 4569 | <dict> | |
| 4570 | <key>include</key> | |
| 4571 | <string>#markdown-string</string> | |
| 4572 | </dict> | |
| 4573 | </array> | |
| 4574 | </dict> | |
| 4575 | </dict> | |
| 4576 | <key>end</key> | |
| 4577 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4578 | <key>endCaptures</key> | |
| 4579 | <dict> | |
| 4580 | <key>1</key> | |
| 4581 | <dict> | |
| 4582 | <key>name</key> | |
| 4583 | <string>string.other.end.code.fenced.mdx</string> | |
| 4584 | </dict> | |
| 4585 | </dict> | |
| 4586 | <key>name</key> | |
| 4587 | <string>markup.code.gitconfig.mdx</string> | |
| 4588 | <key>patterns</key> | |
| 4589 | <array> | |
| 4590 | <dict> | |
| 4591 | <key>begin</key> | |
| 4592 | <string>(^|\G)(\s*)(.*)</string> | |
| 4593 | <key>while</key> | |
| 4594 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4595 | <key>contentName</key> | |
| 4596 | <string>meta.embedded.gitconfig</string> | |
| 4597 | <key>patterns</key> | |
| 4598 | <array> | |
| 4599 | <dict> | |
| 4600 | <key>include</key> | |
| 4601 | <string>source.gitconfig</string> | |
| 4602 | </dict> | |
| 4603 | </array> | |
| 4604 | </dict> | |
| 4605 | </array> | |
| 4606 | </dict> | |
| 4607 | <dict> | |
| 4608 | <key>begin</key> | |
| 4609 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:git\x2dconfig|gitmodules|(?:.*\.)?gitconfig))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4610 | <key>beginCaptures</key> | |
| 4611 | <dict> | |
| 4612 | <key>1</key> | |
| 4613 | <dict> | |
| 4614 | <key>name</key> | |
| 4615 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4616 | </dict> | |
| 4617 | <key>2</key> | |
| 4618 | <dict> | |
| 4619 | <key>name</key> | |
| 4620 | <string>entity.name.function.mdx</string> | |
| 4621 | <key>patterns</key> | |
| 4622 | <array> | |
| 4623 | <dict> | |
| 4624 | <key>include</key> | |
| 4625 | <string>#markdown-string</string> | |
| 4626 | </dict> | |
| 4627 | </array> | |
| 4628 | </dict> | |
| 4629 | <key>3</key> | |
| 4630 | <dict> | |
| 4631 | <key>patterns</key> | |
| 4632 | <array> | |
| 4633 | <dict> | |
| 4634 | <key>include</key> | |
| 4635 | <string>#markdown-string</string> | |
| 4636 | </dict> | |
| 4637 | </array> | |
| 4638 | </dict> | |
| 4639 | </dict> | |
| 4640 | <key>end</key> | |
| 4641 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4642 | <key>endCaptures</key> | |
| 4643 | <dict> | |
| 4644 | <key>1</key> | |
| 4645 | <dict> | |
| 4646 | <key>name</key> | |
| 4647 | <string>string.other.end.code.fenced.mdx</string> | |
| 4648 | </dict> | |
| 4649 | </dict> | |
| 4650 | <key>name</key> | |
| 4651 | <string>markup.code.gitconfig.mdx</string> | |
| 4652 | <key>patterns</key> | |
| 4653 | <array> | |
| 4654 | <dict> | |
| 4655 | <key>begin</key> | |
| 4656 | <string>(^|\G)(\s*)(.*)</string> | |
| 4657 | <key>while</key> | |
| 4658 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4659 | <key>contentName</key> | |
| 4660 | <string>meta.embedded.gitconfig</string> | |
| 4661 | <key>patterns</key> | |
| 4662 | <array> | |
| 4663 | <dict> | |
| 4664 | <key>include</key> | |
| 4665 | <string>source.gitconfig</string> | |
| 4666 | </dict> | |
| 4667 | </array> | |
| 4668 | </dict> | |
| 4669 | </array> | |
| 4670 | </dict> | |
| 4671 | </array> | |
| 4672 | </dict> | |
| 4673 | <key>commonmark-code-fenced-go</key> | |
| 4674 | <dict> | |
| 4675 | <key>patterns</key> | |
| 4676 | <array> | |
| 4677 | <dict> | |
| 4678 | <key>begin</key> | |
| 4679 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:golang|(?:.*\.)?go))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4680 | <key>beginCaptures</key> | |
| 4681 | <dict> | |
| 4682 | <key>1</key> | |
| 4683 | <dict> | |
| 4684 | <key>name</key> | |
| 4685 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4686 | </dict> | |
| 4687 | <key>2</key> | |
| 4688 | <dict> | |
| 4689 | <key>name</key> | |
| 4690 | <string>entity.name.function.mdx</string> | |
| 4691 | <key>patterns</key> | |
| 4692 | <array> | |
| 4693 | <dict> | |
| 4694 | <key>include</key> | |
| 4695 | <string>#markdown-string</string> | |
| 4696 | </dict> | |
| 4697 | </array> | |
| 4698 | </dict> | |
| 4699 | <key>3</key> | |
| 4700 | <dict> | |
| 4701 | <key>patterns</key> | |
| 4702 | <array> | |
| 4703 | <dict> | |
| 4704 | <key>include</key> | |
| 4705 | <string>#markdown-string</string> | |
| 4706 | </dict> | |
| 4707 | </array> | |
| 4708 | </dict> | |
| 4709 | </dict> | |
| 4710 | <key>end</key> | |
| 4711 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4712 | <key>endCaptures</key> | |
| 4713 | <dict> | |
| 4714 | <key>1</key> | |
| 4715 | <dict> | |
| 4716 | <key>name</key> | |
| 4717 | <string>string.other.end.code.fenced.mdx</string> | |
| 4718 | </dict> | |
| 4719 | </dict> | |
| 4720 | <key>name</key> | |
| 4721 | <string>markup.code.go.mdx</string> | |
| 4722 | <key>patterns</key> | |
| 4723 | <array> | |
| 4724 | <dict> | |
| 4725 | <key>begin</key> | |
| 4726 | <string>(^|\G)(\s*)(.*)</string> | |
| 4727 | <key>while</key> | |
| 4728 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4729 | <key>contentName</key> | |
| 4730 | <string>meta.embedded.go</string> | |
| 4731 | <key>patterns</key> | |
| 4732 | <array> | |
| 4733 | <dict> | |
| 4734 | <key>include</key> | |
| 4735 | <string>source.go</string> | |
| 4736 | </dict> | |
| 4737 | </array> | |
| 4738 | </dict> | |
| 4739 | </array> | |
| 4740 | </dict> | |
| 4741 | <dict> | |
| 4742 | <key>begin</key> | |
| 4743 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:golang|(?:.*\.)?go))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4744 | <key>beginCaptures</key> | |
| 4745 | <dict> | |
| 4746 | <key>1</key> | |
| 4747 | <dict> | |
| 4748 | <key>name</key> | |
| 4749 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4750 | </dict> | |
| 4751 | <key>2</key> | |
| 4752 | <dict> | |
| 4753 | <key>name</key> | |
| 4754 | <string>entity.name.function.mdx</string> | |
| 4755 | <key>patterns</key> | |
| 4756 | <array> | |
| 4757 | <dict> | |
| 4758 | <key>include</key> | |
| 4759 | <string>#markdown-string</string> | |
| 4760 | </dict> | |
| 4761 | </array> | |
| 4762 | </dict> | |
| 4763 | <key>3</key> | |
| 4764 | <dict> | |
| 4765 | <key>patterns</key> | |
| 4766 | <array> | |
| 4767 | <dict> | |
| 4768 | <key>include</key> | |
| 4769 | <string>#markdown-string</string> | |
| 4770 | </dict> | |
| 4771 | </array> | |
| 4772 | </dict> | |
| 4773 | </dict> | |
| 4774 | <key>end</key> | |
| 4775 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4776 | <key>endCaptures</key> | |
| 4777 | <dict> | |
| 4778 | <key>1</key> | |
| 4779 | <dict> | |
| 4780 | <key>name</key> | |
| 4781 | <string>string.other.end.code.fenced.mdx</string> | |
| 4782 | </dict> | |
| 4783 | </dict> | |
| 4784 | <key>name</key> | |
| 4785 | <string>markup.code.go.mdx</string> | |
| 4786 | <key>patterns</key> | |
| 4787 | <array> | |
| 4788 | <dict> | |
| 4789 | <key>begin</key> | |
| 4790 | <string>(^|\G)(\s*)(.*)</string> | |
| 4791 | <key>while</key> | |
| 4792 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4793 | <key>contentName</key> | |
| 4794 | <string>meta.embedded.go</string> | |
| 4795 | <key>patterns</key> | |
| 4796 | <array> | |
| 4797 | <dict> | |
| 4798 | <key>include</key> | |
| 4799 | <string>source.go</string> | |
| 4800 | </dict> | |
| 4801 | </array> | |
| 4802 | </dict> | |
| 4803 | </array> | |
| 4804 | </dict> | |
| 4805 | </array> | |
| 4806 | </dict> | |
| 4807 | <key>commonmark-code-fenced-graphql</key> | |
| 4808 | <dict> | |
| 4809 | <key>patterns</key> | |
| 4810 | <array> | |
| 4811 | <dict> | |
| 4812 | <key>begin</key> | |
| 4813 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?(?:gql|graphql|graphqls)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4814 | <key>beginCaptures</key> | |
| 4815 | <dict> | |
| 4816 | <key>1</key> | |
| 4817 | <dict> | |
| 4818 | <key>name</key> | |
| 4819 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4820 | </dict> | |
| 4821 | <key>2</key> | |
| 4822 | <dict> | |
| 4823 | <key>name</key> | |
| 4824 | <string>entity.name.function.mdx</string> | |
| 4825 | <key>patterns</key> | |
| 4826 | <array> | |
| 4827 | <dict> | |
| 4828 | <key>include</key> | |
| 4829 | <string>#markdown-string</string> | |
| 4830 | </dict> | |
| 4831 | </array> | |
| 4832 | </dict> | |
| 4833 | <key>3</key> | |
| 4834 | <dict> | |
| 4835 | <key>patterns</key> | |
| 4836 | <array> | |
| 4837 | <dict> | |
| 4838 | <key>include</key> | |
| 4839 | <string>#markdown-string</string> | |
| 4840 | </dict> | |
| 4841 | </array> | |
| 4842 | </dict> | |
| 4843 | </dict> | |
| 4844 | <key>end</key> | |
| 4845 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4846 | <key>endCaptures</key> | |
| 4847 | <dict> | |
| 4848 | <key>1</key> | |
| 4849 | <dict> | |
| 4850 | <key>name</key> | |
| 4851 | <string>string.other.end.code.fenced.mdx</string> | |
| 4852 | </dict> | |
| 4853 | </dict> | |
| 4854 | <key>name</key> | |
| 4855 | <string>markup.code.graphql.mdx</string> | |
| 4856 | <key>patterns</key> | |
| 4857 | <array> | |
| 4858 | <dict> | |
| 4859 | <key>begin</key> | |
| 4860 | <string>(^|\G)(\s*)(.*)</string> | |
| 4861 | <key>while</key> | |
| 4862 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4863 | <key>contentName</key> | |
| 4864 | <string>meta.embedded.graphql</string> | |
| 4865 | <key>patterns</key> | |
| 4866 | <array> | |
| 4867 | <dict> | |
| 4868 | <key>include</key> | |
| 4869 | <string>source.graphql</string> | |
| 4870 | </dict> | |
| 4871 | </array> | |
| 4872 | </dict> | |
| 4873 | </array> | |
| 4874 | </dict> | |
| 4875 | <dict> | |
| 4876 | <key>begin</key> | |
| 4877 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?(?:gql|graphql|graphqls)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 4878 | <key>beginCaptures</key> | |
| 4879 | <dict> | |
| 4880 | <key>1</key> | |
| 4881 | <dict> | |
| 4882 | <key>name</key> | |
| 4883 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4884 | </dict> | |
| 4885 | <key>2</key> | |
| 4886 | <dict> | |
| 4887 | <key>name</key> | |
| 4888 | <string>entity.name.function.mdx</string> | |
| 4889 | <key>patterns</key> | |
| 4890 | <array> | |
| 4891 | <dict> | |
| 4892 | <key>include</key> | |
| 4893 | <string>#markdown-string</string> | |
| 4894 | </dict> | |
| 4895 | </array> | |
| 4896 | </dict> | |
| 4897 | <key>3</key> | |
| 4898 | <dict> | |
| 4899 | <key>patterns</key> | |
| 4900 | <array> | |
| 4901 | <dict> | |
| 4902 | <key>include</key> | |
| 4903 | <string>#markdown-string</string> | |
| 4904 | </dict> | |
| 4905 | </array> | |
| 4906 | </dict> | |
| 4907 | </dict> | |
| 4908 | <key>end</key> | |
| 4909 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4910 | <key>endCaptures</key> | |
| 4911 | <dict> | |
| 4912 | <key>1</key> | |
| 4913 | <dict> | |
| 4914 | <key>name</key> | |
| 4915 | <string>string.other.end.code.fenced.mdx</string> | |
| 4916 | </dict> | |
| 4917 | </dict> | |
| 4918 | <key>name</key> | |
| 4919 | <string>markup.code.graphql.mdx</string> | |
| 4920 | <key>patterns</key> | |
| 4921 | <array> | |
| 4922 | <dict> | |
| 4923 | <key>begin</key> | |
| 4924 | <string>(^|\G)(\s*)(.*)</string> | |
| 4925 | <key>while</key> | |
| 4926 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4927 | <key>contentName</key> | |
| 4928 | <string>meta.embedded.graphql</string> | |
| 4929 | <key>patterns</key> | |
| 4930 | <array> | |
| 4931 | <dict> | |
| 4932 | <key>include</key> | |
| 4933 | <string>source.graphql</string> | |
| 4934 | </dict> | |
| 4935 | </array> | |
| 4936 | </dict> | |
| 4937 | </array> | |
| 4938 | </dict> | |
| 4939 | </array> | |
| 4940 | </dict> | |
| 4941 | <key>commonmark-code-fenced-haskell</key> | |
| 4942 | <dict> | |
| 4943 | <key>patterns</key> | |
| 4944 | <array> | |
| 4945 | <dict> | |
| 4946 | <key>begin</key> | |
| 4947 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:c2hs|c2hs\x2dhaskell|frege|haskell|(?:.*\.)?(?:chs|dhall|hs|hs\x2dboot|hsc)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 4948 | <key>beginCaptures</key> | |
| 4949 | <dict> | |
| 4950 | <key>1</key> | |
| 4951 | <dict> | |
| 4952 | <key>name</key> | |
| 4953 | <string>string.other.begin.code.fenced.mdx</string> | |
| 4954 | </dict> | |
| 4955 | <key>2</key> | |
| 4956 | <dict> | |
| 4957 | <key>name</key> | |
| 4958 | <string>entity.name.function.mdx</string> | |
| 4959 | <key>patterns</key> | |
| 4960 | <array> | |
| 4961 | <dict> | |
| 4962 | <key>include</key> | |
| 4963 | <string>#markdown-string</string> | |
| 4964 | </dict> | |
| 4965 | </array> | |
| 4966 | </dict> | |
| 4967 | <key>3</key> | |
| 4968 | <dict> | |
| 4969 | <key>patterns</key> | |
| 4970 | <array> | |
| 4971 | <dict> | |
| 4972 | <key>include</key> | |
| 4973 | <string>#markdown-string</string> | |
| 4974 | </dict> | |
| 4975 | </array> | |
| 4976 | </dict> | |
| 4977 | </dict> | |
| 4978 | <key>end</key> | |
| 4979 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 4980 | <key>endCaptures</key> | |
| 4981 | <dict> | |
| 4982 | <key>1</key> | |
| 4983 | <dict> | |
| 4984 | <key>name</key> | |
| 4985 | <string>string.other.end.code.fenced.mdx</string> | |
| 4986 | </dict> | |
| 4987 | </dict> | |
| 4988 | <key>name</key> | |
| 4989 | <string>markup.code.haskell.mdx</string> | |
| 4990 | <key>patterns</key> | |
| 4991 | <array> | |
| 4992 | <dict> | |
| 4993 | <key>begin</key> | |
| 4994 | <string>(^|\G)(\s*)(.*)</string> | |
| 4995 | <key>while</key> | |
| 4996 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 4997 | <key>contentName</key> | |
| 4998 | <string>meta.embedded.haskell</string> | |
| 4999 | <key>patterns</key> | |
| 5000 | <array> | |
| 5001 | <dict> | |
| 5002 | <key>include</key> | |
| 5003 | <string>source.haskell</string> | |
| 5004 | </dict> | |
| 5005 | </array> | |
| 5006 | </dict> | |
| 5007 | </array> | |
| 5008 | </dict> | |
| 5009 | <dict> | |
| 5010 | <key>begin</key> | |
| 5011 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:c2hs|c2hs\x2dhaskell|frege|haskell|(?:.*\.)?(?:chs|dhall|hs|hs\x2dboot|hsc)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5012 | <key>beginCaptures</key> | |
| 5013 | <dict> | |
| 5014 | <key>1</key> | |
| 5015 | <dict> | |
| 5016 | <key>name</key> | |
| 5017 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5018 | </dict> | |
| 5019 | <key>2</key> | |
| 5020 | <dict> | |
| 5021 | <key>name</key> | |
| 5022 | <string>entity.name.function.mdx</string> | |
| 5023 | <key>patterns</key> | |
| 5024 | <array> | |
| 5025 | <dict> | |
| 5026 | <key>include</key> | |
| 5027 | <string>#markdown-string</string> | |
| 5028 | </dict> | |
| 5029 | </array> | |
| 5030 | </dict> | |
| 5031 | <key>3</key> | |
| 5032 | <dict> | |
| 5033 | <key>patterns</key> | |
| 5034 | <array> | |
| 5035 | <dict> | |
| 5036 | <key>include</key> | |
| 5037 | <string>#markdown-string</string> | |
| 5038 | </dict> | |
| 5039 | </array> | |
| 5040 | </dict> | |
| 5041 | </dict> | |
| 5042 | <key>end</key> | |
| 5043 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5044 | <key>endCaptures</key> | |
| 5045 | <dict> | |
| 5046 | <key>1</key> | |
| 5047 | <dict> | |
| 5048 | <key>name</key> | |
| 5049 | <string>string.other.end.code.fenced.mdx</string> | |
| 5050 | </dict> | |
| 5051 | </dict> | |
| 5052 | <key>name</key> | |
| 5053 | <string>markup.code.haskell.mdx</string> | |
| 5054 | <key>patterns</key> | |
| 5055 | <array> | |
| 5056 | <dict> | |
| 5057 | <key>begin</key> | |
| 5058 | <string>(^|\G)(\s*)(.*)</string> | |
| 5059 | <key>while</key> | |
| 5060 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5061 | <key>contentName</key> | |
| 5062 | <string>meta.embedded.haskell</string> | |
| 5063 | <key>patterns</key> | |
| 5064 | <array> | |
| 5065 | <dict> | |
| 5066 | <key>include</key> | |
| 5067 | <string>source.haskell</string> | |
| 5068 | </dict> | |
| 5069 | </array> | |
| 5070 | </dict> | |
| 5071 | </array> | |
| 5072 | </dict> | |
| 5073 | </array> | |
| 5074 | </dict> | |
| 5075 | <key>commonmark-code-fenced-html</key> | |
| 5076 | <dict> | |
| 5077 | <key>patterns</key> | |
| 5078 | <array> | |
| 5079 | <dict> | |
| 5080 | <key>begin</key> | |
| 5081 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:html|(?:.*\.)?(?:hta|htm|html\.hl|kit|mtml|xht|xhtml)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5082 | <key>beginCaptures</key> | |
| 5083 | <dict> | |
| 5084 | <key>1</key> | |
| 5085 | <dict> | |
| 5086 | <key>name</key> | |
| 5087 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5088 | </dict> | |
| 5089 | <key>2</key> | |
| 5090 | <dict> | |
| 5091 | <key>name</key> | |
| 5092 | <string>entity.name.function.mdx</string> | |
| 5093 | <key>patterns</key> | |
| 5094 | <array> | |
| 5095 | <dict> | |
| 5096 | <key>include</key> | |
| 5097 | <string>#markdown-string</string> | |
| 5098 | </dict> | |
| 5099 | </array> | |
| 5100 | </dict> | |
| 5101 | <key>3</key> | |
| 5102 | <dict> | |
| 5103 | <key>patterns</key> | |
| 5104 | <array> | |
| 5105 | <dict> | |
| 5106 | <key>include</key> | |
| 5107 | <string>#markdown-string</string> | |
| 5108 | </dict> | |
| 5109 | </array> | |
| 5110 | </dict> | |
| 5111 | </dict> | |
| 5112 | <key>end</key> | |
| 5113 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5114 | <key>endCaptures</key> | |
| 5115 | <dict> | |
| 5116 | <key>1</key> | |
| 5117 | <dict> | |
| 5118 | <key>name</key> | |
| 5119 | <string>string.other.end.code.fenced.mdx</string> | |
| 5120 | </dict> | |
| 5121 | </dict> | |
| 5122 | <key>name</key> | |
| 5123 | <string>markup.code.html.mdx</string> | |
| 5124 | <key>patterns</key> | |
| 5125 | <array> | |
| 5126 | <dict> | |
| 5127 | <key>begin</key> | |
| 5128 | <string>(^|\G)(\s*)(.*)</string> | |
| 5129 | <key>while</key> | |
| 5130 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5131 | <key>contentName</key> | |
| 5132 | <string>meta.embedded.html</string> | |
| 5133 | <key>patterns</key> | |
| 5134 | <array> | |
| 5135 | <dict> | |
| 5136 | <key>include</key> | |
| 5137 | <string>text.html.basic</string> | |
| 5138 | </dict> | |
| 5139 | </array> | |
| 5140 | </dict> | |
| 5141 | </array> | |
| 5142 | </dict> | |
| 5143 | <dict> | |
| 5144 | <key>begin</key> | |
| 5145 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:html|(?:.*\.)?(?:hta|htm|html\.hl|kit|mtml|xht|xhtml)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5146 | <key>beginCaptures</key> | |
| 5147 | <dict> | |
| 5148 | <key>1</key> | |
| 5149 | <dict> | |
| 5150 | <key>name</key> | |
| 5151 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5152 | </dict> | |
| 5153 | <key>2</key> | |
| 5154 | <dict> | |
| 5155 | <key>name</key> | |
| 5156 | <string>entity.name.function.mdx</string> | |
| 5157 | <key>patterns</key> | |
| 5158 | <array> | |
| 5159 | <dict> | |
| 5160 | <key>include</key> | |
| 5161 | <string>#markdown-string</string> | |
| 5162 | </dict> | |
| 5163 | </array> | |
| 5164 | </dict> | |
| 5165 | <key>3</key> | |
| 5166 | <dict> | |
| 5167 | <key>patterns</key> | |
| 5168 | <array> | |
| 5169 | <dict> | |
| 5170 | <key>include</key> | |
| 5171 | <string>#markdown-string</string> | |
| 5172 | </dict> | |
| 5173 | </array> | |
| 5174 | </dict> | |
| 5175 | </dict> | |
| 5176 | <key>end</key> | |
| 5177 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5178 | <key>endCaptures</key> | |
| 5179 | <dict> | |
| 5180 | <key>1</key> | |
| 5181 | <dict> | |
| 5182 | <key>name</key> | |
| 5183 | <string>string.other.end.code.fenced.mdx</string> | |
| 5184 | </dict> | |
| 5185 | </dict> | |
| 5186 | <key>name</key> | |
| 5187 | <string>markup.code.html.mdx</string> | |
| 5188 | <key>patterns</key> | |
| 5189 | <array> | |
| 5190 | <dict> | |
| 5191 | <key>begin</key> | |
| 5192 | <string>(^|\G)(\s*)(.*)</string> | |
| 5193 | <key>while</key> | |
| 5194 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5195 | <key>contentName</key> | |
| 5196 | <string>meta.embedded.html</string> | |
| 5197 | <key>patterns</key> | |
| 5198 | <array> | |
| 5199 | <dict> | |
| 5200 | <key>include</key> | |
| 5201 | <string>text.html.basic</string> | |
| 5202 | </dict> | |
| 5203 | </array> | |
| 5204 | </dict> | |
| 5205 | </array> | |
| 5206 | </dict> | |
| 5207 | </array> | |
| 5208 | </dict> | |
| 5209 | <key>commonmark-code-fenced-ini</key> | |
| 5210 | <dict> | |
| 5211 | <key>patterns</key> | |
| 5212 | <array> | |
| 5213 | <dict> | |
| 5214 | <key>begin</key> | |
| 5215 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:altium|altium\x2ddesigner|dosini|(?:.*\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5216 | <key>beginCaptures</key> | |
| 5217 | <dict> | |
| 5218 | <key>1</key> | |
| 5219 | <dict> | |
| 5220 | <key>name</key> | |
| 5221 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5222 | </dict> | |
| 5223 | <key>2</key> | |
| 5224 | <dict> | |
| 5225 | <key>name</key> | |
| 5226 | <string>entity.name.function.mdx</string> | |
| 5227 | <key>patterns</key> | |
| 5228 | <array> | |
| 5229 | <dict> | |
| 5230 | <key>include</key> | |
| 5231 | <string>#markdown-string</string> | |
| 5232 | </dict> | |
| 5233 | </array> | |
| 5234 | </dict> | |
| 5235 | <key>3</key> | |
| 5236 | <dict> | |
| 5237 | <key>patterns</key> | |
| 5238 | <array> | |
| 5239 | <dict> | |
| 5240 | <key>include</key> | |
| 5241 | <string>#markdown-string</string> | |
| 5242 | </dict> | |
| 5243 | </array> | |
| 5244 | </dict> | |
| 5245 | </dict> | |
| 5246 | <key>end</key> | |
| 5247 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5248 | <key>endCaptures</key> | |
| 5249 | <dict> | |
| 5250 | <key>1</key> | |
| 5251 | <dict> | |
| 5252 | <key>name</key> | |
| 5253 | <string>string.other.end.code.fenced.mdx</string> | |
| 5254 | </dict> | |
| 5255 | </dict> | |
| 5256 | <key>name</key> | |
| 5257 | <string>markup.code.ini.mdx</string> | |
| 5258 | <key>patterns</key> | |
| 5259 | <array> | |
| 5260 | <dict> | |
| 5261 | <key>begin</key> | |
| 5262 | <string>(^|\G)(\s*)(.*)</string> | |
| 5263 | <key>while</key> | |
| 5264 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5265 | <key>contentName</key> | |
| 5266 | <string>meta.embedded.ini</string> | |
| 5267 | <key>patterns</key> | |
| 5268 | <array> | |
| 5269 | <dict> | |
| 5270 | <key>include</key> | |
| 5271 | <string>source.ini</string> | |
| 5272 | </dict> | |
| 5273 | </array> | |
| 5274 | </dict> | |
| 5275 | </array> | |
| 5276 | </dict> | |
| 5277 | <dict> | |
| 5278 | <key>begin</key> | |
| 5279 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:altium|altium\x2ddesigner|dosini|(?:.*\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5280 | <key>beginCaptures</key> | |
| 5281 | <dict> | |
| 5282 | <key>1</key> | |
| 5283 | <dict> | |
| 5284 | <key>name</key> | |
| 5285 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5286 | </dict> | |
| 5287 | <key>2</key> | |
| 5288 | <dict> | |
| 5289 | <key>name</key> | |
| 5290 | <string>entity.name.function.mdx</string> | |
| 5291 | <key>patterns</key> | |
| 5292 | <array> | |
| 5293 | <dict> | |
| 5294 | <key>include</key> | |
| 5295 | <string>#markdown-string</string> | |
| 5296 | </dict> | |
| 5297 | </array> | |
| 5298 | </dict> | |
| 5299 | <key>3</key> | |
| 5300 | <dict> | |
| 5301 | <key>patterns</key> | |
| 5302 | <array> | |
| 5303 | <dict> | |
| 5304 | <key>include</key> | |
| 5305 | <string>#markdown-string</string> | |
| 5306 | </dict> | |
| 5307 | </array> | |
| 5308 | </dict> | |
| 5309 | </dict> | |
| 5310 | <key>end</key> | |
| 5311 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5312 | <key>endCaptures</key> | |
| 5313 | <dict> | |
| 5314 | <key>1</key> | |
| 5315 | <dict> | |
| 5316 | <key>name</key> | |
| 5317 | <string>string.other.end.code.fenced.mdx</string> | |
| 5318 | </dict> | |
| 5319 | </dict> | |
| 5320 | <key>name</key> | |
| 5321 | <string>markup.code.ini.mdx</string> | |
| 5322 | <key>patterns</key> | |
| 5323 | <array> | |
| 5324 | <dict> | |
| 5325 | <key>begin</key> | |
| 5326 | <string>(^|\G)(\s*)(.*)</string> | |
| 5327 | <key>while</key> | |
| 5328 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5329 | <key>contentName</key> | |
| 5330 | <string>meta.embedded.ini</string> | |
| 5331 | <key>patterns</key> | |
| 5332 | <array> | |
| 5333 | <dict> | |
| 5334 | <key>include</key> | |
| 5335 | <string>source.ini</string> | |
| 5336 | </dict> | |
| 5337 | </array> | |
| 5338 | </dict> | |
| 5339 | </array> | |
| 5340 | </dict> | |
| 5341 | </array> | |
| 5342 | </dict> | |
| 5343 | <key>commonmark-code-fenced-java</key> | |
| 5344 | <dict> | |
| 5345 | <key>patterns</key> | |
| 5346 | <array> | |
| 5347 | <dict> | |
| 5348 | <key>begin</key> | |
| 5349 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:chuck|unrealscript|(?:.*\.)?(?:ck|jav|java|jsh|uc)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5350 | <key>beginCaptures</key> | |
| 5351 | <dict> | |
| 5352 | <key>1</key> | |
| 5353 | <dict> | |
| 5354 | <key>name</key> | |
| 5355 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5356 | </dict> | |
| 5357 | <key>2</key> | |
| 5358 | <dict> | |
| 5359 | <key>name</key> | |
| 5360 | <string>entity.name.function.mdx</string> | |
| 5361 | <key>patterns</key> | |
| 5362 | <array> | |
| 5363 | <dict> | |
| 5364 | <key>include</key> | |
| 5365 | <string>#markdown-string</string> | |
| 5366 | </dict> | |
| 5367 | </array> | |
| 5368 | </dict> | |
| 5369 | <key>3</key> | |
| 5370 | <dict> | |
| 5371 | <key>patterns</key> | |
| 5372 | <array> | |
| 5373 | <dict> | |
| 5374 | <key>include</key> | |
| 5375 | <string>#markdown-string</string> | |
| 5376 | </dict> | |
| 5377 | </array> | |
| 5378 | </dict> | |
| 5379 | </dict> | |
| 5380 | <key>end</key> | |
| 5381 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5382 | <key>endCaptures</key> | |
| 5383 | <dict> | |
| 5384 | <key>1</key> | |
| 5385 | <dict> | |
| 5386 | <key>name</key> | |
| 5387 | <string>string.other.end.code.fenced.mdx</string> | |
| 5388 | </dict> | |
| 5389 | </dict> | |
| 5390 | <key>name</key> | |
| 5391 | <string>markup.code.java.mdx</string> | |
| 5392 | <key>patterns</key> | |
| 5393 | <array> | |
| 5394 | <dict> | |
| 5395 | <key>begin</key> | |
| 5396 | <string>(^|\G)(\s*)(.*)</string> | |
| 5397 | <key>while</key> | |
| 5398 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5399 | <key>contentName</key> | |
| 5400 | <string>meta.embedded.java</string> | |
| 5401 | <key>patterns</key> | |
| 5402 | <array> | |
| 5403 | <dict> | |
| 5404 | <key>include</key> | |
| 5405 | <string>source.java</string> | |
| 5406 | </dict> | |
| 5407 | </array> | |
| 5408 | </dict> | |
| 5409 | </array> | |
| 5410 | </dict> | |
| 5411 | <dict> | |
| 5412 | <key>begin</key> | |
| 5413 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:chuck|unrealscript|(?:.*\.)?(?:ck|jav|java|jsh|uc)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5414 | <key>beginCaptures</key> | |
| 5415 | <dict> | |
| 5416 | <key>1</key> | |
| 5417 | <dict> | |
| 5418 | <key>name</key> | |
| 5419 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5420 | </dict> | |
| 5421 | <key>2</key> | |
| 5422 | <dict> | |
| 5423 | <key>name</key> | |
| 5424 | <string>entity.name.function.mdx</string> | |
| 5425 | <key>patterns</key> | |
| 5426 | <array> | |
| 5427 | <dict> | |
| 5428 | <key>include</key> | |
| 5429 | <string>#markdown-string</string> | |
| 5430 | </dict> | |
| 5431 | </array> | |
| 5432 | </dict> | |
| 5433 | <key>3</key> | |
| 5434 | <dict> | |
| 5435 | <key>patterns</key> | |
| 5436 | <array> | |
| 5437 | <dict> | |
| 5438 | <key>include</key> | |
| 5439 | <string>#markdown-string</string> | |
| 5440 | </dict> | |
| 5441 | </array> | |
| 5442 | </dict> | |
| 5443 | </dict> | |
| 5444 | <key>end</key> | |
| 5445 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5446 | <key>endCaptures</key> | |
| 5447 | <dict> | |
| 5448 | <key>1</key> | |
| 5449 | <dict> | |
| 5450 | <key>name</key> | |
| 5451 | <string>string.other.end.code.fenced.mdx</string> | |
| 5452 | </dict> | |
| 5453 | </dict> | |
| 5454 | <key>name</key> | |
| 5455 | <string>markup.code.java.mdx</string> | |
| 5456 | <key>patterns</key> | |
| 5457 | <array> | |
| 5458 | <dict> | |
| 5459 | <key>begin</key> | |
| 5460 | <string>(^|\G)(\s*)(.*)</string> | |
| 5461 | <key>while</key> | |
| 5462 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5463 | <key>contentName</key> | |
| 5464 | <string>meta.embedded.java</string> | |
| 5465 | <key>patterns</key> | |
| 5466 | <array> | |
| 5467 | <dict> | |
| 5468 | <key>include</key> | |
| 5469 | <string>source.java</string> | |
| 5470 | </dict> | |
| 5471 | </array> | |
| 5472 | </dict> | |
| 5473 | </array> | |
| 5474 | </dict> | |
| 5475 | </array> | |
| 5476 | </dict> | |
| 5477 | <key>commonmark-code-fenced-js</key> | |
| 5478 | <dict> | |
| 5479 | <key>patterns</key> | |
| 5480 | <array> | |
| 5481 | <dict> | |
| 5482 | <key>begin</key> | |
| 5483 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:cycript|javascript\+erb|json\x2dwith\x2dcomments|node|qt\x2dscript|(?:.*\.)?(?:_js|bones|cjs|code\x2dsnippets|code\x2dworkspace|cy|es6|jake|javascript|js|js\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\x2dbuild|sublime\x2dcolor\x2dscheme|sublime\x2dcommands|sublime\x2dcompletions|sublime\x2dkeymap|sublime\x2dmacro|sublime\x2dmenu|sublime\x2dmousemap|sublime\x2dproject|sublime\x2dsettings|sublime\x2dtheme|sublime\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5484 | <key>beginCaptures</key> | |
| 5485 | <dict> | |
| 5486 | <key>1</key> | |
| 5487 | <dict> | |
| 5488 | <key>name</key> | |
| 5489 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5490 | </dict> | |
| 5491 | <key>2</key> | |
| 5492 | <dict> | |
| 5493 | <key>name</key> | |
| 5494 | <string>entity.name.function.mdx</string> | |
| 5495 | <key>patterns</key> | |
| 5496 | <array> | |
| 5497 | <dict> | |
| 5498 | <key>include</key> | |
| 5499 | <string>#markdown-string</string> | |
| 5500 | </dict> | |
| 5501 | </array> | |
| 5502 | </dict> | |
| 5503 | <key>3</key> | |
| 5504 | <dict> | |
| 5505 | <key>patterns</key> | |
| 5506 | <array> | |
| 5507 | <dict> | |
| 5508 | <key>include</key> | |
| 5509 | <string>#markdown-string</string> | |
| 5510 | </dict> | |
| 5511 | </array> | |
| 5512 | </dict> | |
| 5513 | </dict> | |
| 5514 | <key>end</key> | |
| 5515 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5516 | <key>endCaptures</key> | |
| 5517 | <dict> | |
| 5518 | <key>1</key> | |
| 5519 | <dict> | |
| 5520 | <key>name</key> | |
| 5521 | <string>string.other.end.code.fenced.mdx</string> | |
| 5522 | </dict> | |
| 5523 | </dict> | |
| 5524 | <key>name</key> | |
| 5525 | <string>markup.code.js.mdx</string> | |
| 5526 | <key>patterns</key> | |
| 5527 | <array> | |
| 5528 | <dict> | |
| 5529 | <key>begin</key> | |
| 5530 | <string>(^|\G)(\s*)(.*)</string> | |
| 5531 | <key>while</key> | |
| 5532 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5533 | <key>contentName</key> | |
| 5534 | <string>meta.embedded.js</string> | |
| 5535 | <key>patterns</key> | |
| 5536 | <array> | |
| 5537 | <dict> | |
| 5538 | <key>include</key> | |
| 5539 | <string>source.js</string> | |
| 5540 | </dict> | |
| 5541 | </array> | |
| 5542 | </dict> | |
| 5543 | </array> | |
| 5544 | </dict> | |
| 5545 | <dict> | |
| 5546 | <key>begin</key> | |
| 5547 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:cycript|javascript\+erb|json\x2dwith\x2dcomments|node|qt\x2dscript|(?:.*\.)?(?:_js|bones|cjs|code\x2dsnippets|code\x2dworkspace|cy|es6|jake|javascript|js|js\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\x2dbuild|sublime\x2dcolor\x2dscheme|sublime\x2dcommands|sublime\x2dcompletions|sublime\x2dkeymap|sublime\x2dmacro|sublime\x2dmenu|sublime\x2dmousemap|sublime\x2dproject|sublime\x2dsettings|sublime\x2dtheme|sublime\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5548 | <key>beginCaptures</key> | |
| 5549 | <dict> | |
| 5550 | <key>1</key> | |
| 5551 | <dict> | |
| 5552 | <key>name</key> | |
| 5553 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5554 | </dict> | |
| 5555 | <key>2</key> | |
| 5556 | <dict> | |
| 5557 | <key>name</key> | |
| 5558 | <string>entity.name.function.mdx</string> | |
| 5559 | <key>patterns</key> | |
| 5560 | <array> | |
| 5561 | <dict> | |
| 5562 | <key>include</key> | |
| 5563 | <string>#markdown-string</string> | |
| 5564 | </dict> | |
| 5565 | </array> | |
| 5566 | </dict> | |
| 5567 | <key>3</key> | |
| 5568 | <dict> | |
| 5569 | <key>patterns</key> | |
| 5570 | <array> | |
| 5571 | <dict> | |
| 5572 | <key>include</key> | |
| 5573 | <string>#markdown-string</string> | |
| 5574 | </dict> | |
| 5575 | </array> | |
| 5576 | </dict> | |
| 5577 | </dict> | |
| 5578 | <key>end</key> | |
| 5579 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5580 | <key>endCaptures</key> | |
| 5581 | <dict> | |
| 5582 | <key>1</key> | |
| 5583 | <dict> | |
| 5584 | <key>name</key> | |
| 5585 | <string>string.other.end.code.fenced.mdx</string> | |
| 5586 | </dict> | |
| 5587 | </dict> | |
| 5588 | <key>name</key> | |
| 5589 | <string>markup.code.js.mdx</string> | |
| 5590 | <key>patterns</key> | |
| 5591 | <array> | |
| 5592 | <dict> | |
| 5593 | <key>begin</key> | |
| 5594 | <string>(^|\G)(\s*)(.*)</string> | |
| 5595 | <key>while</key> | |
| 5596 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5597 | <key>contentName</key> | |
| 5598 | <string>meta.embedded.js</string> | |
| 5599 | <key>patterns</key> | |
| 5600 | <array> | |
| 5601 | <dict> | |
| 5602 | <key>include</key> | |
| 5603 | <string>source.js</string> | |
| 5604 | </dict> | |
| 5605 | </array> | |
| 5606 | </dict> | |
| 5607 | </array> | |
| 5608 | </dict> | |
| 5609 | </array> | |
| 5610 | </dict> | |
| 5611 | <key>commonmark-code-fenced-json</key> | |
| 5612 | <dict> | |
| 5613 | <key>patterns</key> | |
| 5614 | <array> | |
| 5615 | <dict> | |
| 5616 | <key>begin</key> | |
| 5617 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:ecere\x2dprojects|ipython\x2dnotebook|jupyter\x2dnotebook|max|max/msp|maxmsp|oasv2\x2djson|oasv3\x2djson|(?:.*\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|sarif|tfstate|tfstate\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5618 | <key>beginCaptures</key> | |
| 5619 | <dict> | |
| 5620 | <key>1</key> | |
| 5621 | <dict> | |
| 5622 | <key>name</key> | |
| 5623 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5624 | </dict> | |
| 5625 | <key>2</key> | |
| 5626 | <dict> | |
| 5627 | <key>name</key> | |
| 5628 | <string>entity.name.function.mdx</string> | |
| 5629 | <key>patterns</key> | |
| 5630 | <array> | |
| 5631 | <dict> | |
| 5632 | <key>include</key> | |
| 5633 | <string>#markdown-string</string> | |
| 5634 | </dict> | |
| 5635 | </array> | |
| 5636 | </dict> | |
| 5637 | <key>3</key> | |
| 5638 | <dict> | |
| 5639 | <key>patterns</key> | |
| 5640 | <array> | |
| 5641 | <dict> | |
| 5642 | <key>include</key> | |
| 5643 | <string>#markdown-string</string> | |
| 5644 | </dict> | |
| 5645 | </array> | |
| 5646 | </dict> | |
| 5647 | </dict> | |
| 5648 | <key>end</key> | |
| 5649 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5650 | <key>endCaptures</key> | |
| 5651 | <dict> | |
| 5652 | <key>1</key> | |
| 5653 | <dict> | |
| 5654 | <key>name</key> | |
| 5655 | <string>string.other.end.code.fenced.mdx</string> | |
| 5656 | </dict> | |
| 5657 | </dict> | |
| 5658 | <key>name</key> | |
| 5659 | <string>markup.code.json.mdx</string> | |
| 5660 | <key>patterns</key> | |
| 5661 | <array> | |
| 5662 | <dict> | |
| 5663 | <key>begin</key> | |
| 5664 | <string>(^|\G)(\s*)(.*)</string> | |
| 5665 | <key>while</key> | |
| 5666 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5667 | <key>contentName</key> | |
| 5668 | <string>meta.embedded.json</string> | |
| 5669 | <key>patterns</key> | |
| 5670 | <array> | |
| 5671 | <dict> | |
| 5672 | <key>include</key> | |
| 5673 | <string>source.json</string> | |
| 5674 | </dict> | |
| 5675 | </array> | |
| 5676 | </dict> | |
| 5677 | </array> | |
| 5678 | </dict> | |
| 5679 | <dict> | |
| 5680 | <key>begin</key> | |
| 5681 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:ecere\x2dprojects|ipython\x2dnotebook|jupyter\x2dnotebook|max|max/msp|maxmsp|oasv2\x2djson|oasv3\x2djson|(?:.*\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|sarif|tfstate|tfstate\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5682 | <key>beginCaptures</key> | |
| 5683 | <dict> | |
| 5684 | <key>1</key> | |
| 5685 | <dict> | |
| 5686 | <key>name</key> | |
| 5687 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5688 | </dict> | |
| 5689 | <key>2</key> | |
| 5690 | <dict> | |
| 5691 | <key>name</key> | |
| 5692 | <string>entity.name.function.mdx</string> | |
| 5693 | <key>patterns</key> | |
| 5694 | <array> | |
| 5695 | <dict> | |
| 5696 | <key>include</key> | |
| 5697 | <string>#markdown-string</string> | |
| 5698 | </dict> | |
| 5699 | </array> | |
| 5700 | </dict> | |
| 5701 | <key>3</key> | |
| 5702 | <dict> | |
| 5703 | <key>patterns</key> | |
| 5704 | <array> | |
| 5705 | <dict> | |
| 5706 | <key>include</key> | |
| 5707 | <string>#markdown-string</string> | |
| 5708 | </dict> | |
| 5709 | </array> | |
| 5710 | </dict> | |
| 5711 | </dict> | |
| 5712 | <key>end</key> | |
| 5713 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5714 | <key>endCaptures</key> | |
| 5715 | <dict> | |
| 5716 | <key>1</key> | |
| 5717 | <dict> | |
| 5718 | <key>name</key> | |
| 5719 | <string>string.other.end.code.fenced.mdx</string> | |
| 5720 | </dict> | |
| 5721 | </dict> | |
| 5722 | <key>name</key> | |
| 5723 | <string>markup.code.json.mdx</string> | |
| 5724 | <key>patterns</key> | |
| 5725 | <array> | |
| 5726 | <dict> | |
| 5727 | <key>begin</key> | |
| 5728 | <string>(^|\G)(\s*)(.*)</string> | |
| 5729 | <key>while</key> | |
| 5730 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5731 | <key>contentName</key> | |
| 5732 | <string>meta.embedded.json</string> | |
| 5733 | <key>patterns</key> | |
| 5734 | <array> | |
| 5735 | <dict> | |
| 5736 | <key>include</key> | |
| 5737 | <string>source.json</string> | |
| 5738 | </dict> | |
| 5739 | </array> | |
| 5740 | </dict> | |
| 5741 | </array> | |
| 5742 | </dict> | |
| 5743 | </array> | |
| 5744 | </dict> | |
| 5745 | <key>commonmark-code-fenced-julia</key> | |
| 5746 | <dict> | |
| 5747 | <key>patterns</key> | |
| 5748 | <array> | |
| 5749 | <dict> | |
| 5750 | <key>begin</key> | |
| 5751 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:julia|(?:.*\.)?jl))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5752 | <key>beginCaptures</key> | |
| 5753 | <dict> | |
| 5754 | <key>1</key> | |
| 5755 | <dict> | |
| 5756 | <key>name</key> | |
| 5757 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5758 | </dict> | |
| 5759 | <key>2</key> | |
| 5760 | <dict> | |
| 5761 | <key>name</key> | |
| 5762 | <string>entity.name.function.mdx</string> | |
| 5763 | <key>patterns</key> | |
| 5764 | <array> | |
| 5765 | <dict> | |
| 5766 | <key>include</key> | |
| 5767 | <string>#markdown-string</string> | |
| 5768 | </dict> | |
| 5769 | </array> | |
| 5770 | </dict> | |
| 5771 | <key>3</key> | |
| 5772 | <dict> | |
| 5773 | <key>patterns</key> | |
| 5774 | <array> | |
| 5775 | <dict> | |
| 5776 | <key>include</key> | |
| 5777 | <string>#markdown-string</string> | |
| 5778 | </dict> | |
| 5779 | </array> | |
| 5780 | </dict> | |
| 5781 | </dict> | |
| 5782 | <key>end</key> | |
| 5783 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5784 | <key>endCaptures</key> | |
| 5785 | <dict> | |
| 5786 | <key>1</key> | |
| 5787 | <dict> | |
| 5788 | <key>name</key> | |
| 5789 | <string>string.other.end.code.fenced.mdx</string> | |
| 5790 | </dict> | |
| 5791 | </dict> | |
| 5792 | <key>name</key> | |
| 5793 | <string>markup.code.julia.mdx</string> | |
| 5794 | <key>patterns</key> | |
| 5795 | <array> | |
| 5796 | <dict> | |
| 5797 | <key>begin</key> | |
| 5798 | <string>(^|\G)(\s*)(.*)</string> | |
| 5799 | <key>while</key> | |
| 5800 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5801 | <key>contentName</key> | |
| 5802 | <string>meta.embedded.julia</string> | |
| 5803 | <key>patterns</key> | |
| 5804 | <array> | |
| 5805 | <dict> | |
| 5806 | <key>include</key> | |
| 5807 | <string>source.julia</string> | |
| 5808 | </dict> | |
| 5809 | </array> | |
| 5810 | </dict> | |
| 5811 | </array> | |
| 5812 | </dict> | |
| 5813 | <dict> | |
| 5814 | <key>begin</key> | |
| 5815 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:julia|(?:.*\.)?jl))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5816 | <key>beginCaptures</key> | |
| 5817 | <dict> | |
| 5818 | <key>1</key> | |
| 5819 | <dict> | |
| 5820 | <key>name</key> | |
| 5821 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5822 | </dict> | |
| 5823 | <key>2</key> | |
| 5824 | <dict> | |
| 5825 | <key>name</key> | |
| 5826 | <string>entity.name.function.mdx</string> | |
| 5827 | <key>patterns</key> | |
| 5828 | <array> | |
| 5829 | <dict> | |
| 5830 | <key>include</key> | |
| 5831 | <string>#markdown-string</string> | |
| 5832 | </dict> | |
| 5833 | </array> | |
| 5834 | </dict> | |
| 5835 | <key>3</key> | |
| 5836 | <dict> | |
| 5837 | <key>patterns</key> | |
| 5838 | <array> | |
| 5839 | <dict> | |
| 5840 | <key>include</key> | |
| 5841 | <string>#markdown-string</string> | |
| 5842 | </dict> | |
| 5843 | </array> | |
| 5844 | </dict> | |
| 5845 | </dict> | |
| 5846 | <key>end</key> | |
| 5847 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5848 | <key>endCaptures</key> | |
| 5849 | <dict> | |
| 5850 | <key>1</key> | |
| 5851 | <dict> | |
| 5852 | <key>name</key> | |
| 5853 | <string>string.other.end.code.fenced.mdx</string> | |
| 5854 | </dict> | |
| 5855 | </dict> | |
| 5856 | <key>name</key> | |
| 5857 | <string>markup.code.julia.mdx</string> | |
| 5858 | <key>patterns</key> | |
| 5859 | <array> | |
| 5860 | <dict> | |
| 5861 | <key>begin</key> | |
| 5862 | <string>(^|\G)(\s*)(.*)</string> | |
| 5863 | <key>while</key> | |
| 5864 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5865 | <key>contentName</key> | |
| 5866 | <string>meta.embedded.julia</string> | |
| 5867 | <key>patterns</key> | |
| 5868 | <array> | |
| 5869 | <dict> | |
| 5870 | <key>include</key> | |
| 5871 | <string>source.julia</string> | |
| 5872 | </dict> | |
| 5873 | </array> | |
| 5874 | </dict> | |
| 5875 | </array> | |
| 5876 | </dict> | |
| 5877 | </array> | |
| 5878 | </dict> | |
| 5879 | <key>commonmark-code-fenced-kotlin</key> | |
| 5880 | <dict> | |
| 5881 | <key>patterns</key> | |
| 5882 | <array> | |
| 5883 | <dict> | |
| 5884 | <key>begin</key> | |
| 5885 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:gradle\x2dkotlin\x2ddsl|kotlin|(?:.*\.)?(?:gradle\.kts|kt|ktm|kts)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 5886 | <key>beginCaptures</key> | |
| 5887 | <dict> | |
| 5888 | <key>1</key> | |
| 5889 | <dict> | |
| 5890 | <key>name</key> | |
| 5891 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5892 | </dict> | |
| 5893 | <key>2</key> | |
| 5894 | <dict> | |
| 5895 | <key>name</key> | |
| 5896 | <string>entity.name.function.mdx</string> | |
| 5897 | <key>patterns</key> | |
| 5898 | <array> | |
| 5899 | <dict> | |
| 5900 | <key>include</key> | |
| 5901 | <string>#markdown-string</string> | |
| 5902 | </dict> | |
| 5903 | </array> | |
| 5904 | </dict> | |
| 5905 | <key>3</key> | |
| 5906 | <dict> | |
| 5907 | <key>patterns</key> | |
| 5908 | <array> | |
| 5909 | <dict> | |
| 5910 | <key>include</key> | |
| 5911 | <string>#markdown-string</string> | |
| 5912 | </dict> | |
| 5913 | </array> | |
| 5914 | </dict> | |
| 5915 | </dict> | |
| 5916 | <key>end</key> | |
| 5917 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5918 | <key>endCaptures</key> | |
| 5919 | <dict> | |
| 5920 | <key>1</key> | |
| 5921 | <dict> | |
| 5922 | <key>name</key> | |
| 5923 | <string>string.other.end.code.fenced.mdx</string> | |
| 5924 | </dict> | |
| 5925 | </dict> | |
| 5926 | <key>name</key> | |
| 5927 | <string>markup.code.kotlin.mdx</string> | |
| 5928 | <key>patterns</key> | |
| 5929 | <array> | |
| 5930 | <dict> | |
| 5931 | <key>begin</key> | |
| 5932 | <string>(^|\G)(\s*)(.*)</string> | |
| 5933 | <key>while</key> | |
| 5934 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5935 | <key>contentName</key> | |
| 5936 | <string>meta.embedded.kotlin</string> | |
| 5937 | <key>patterns</key> | |
| 5938 | <array> | |
| 5939 | <dict> | |
| 5940 | <key>include</key> | |
| 5941 | <string>source.kotlin</string> | |
| 5942 | </dict> | |
| 5943 | </array> | |
| 5944 | </dict> | |
| 5945 | </array> | |
| 5946 | </dict> | |
| 5947 | <dict> | |
| 5948 | <key>begin</key> | |
| 5949 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:gradle\x2dkotlin\x2ddsl|kotlin|(?:.*\.)?(?:gradle\.kts|kt|ktm|kts)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 5950 | <key>beginCaptures</key> | |
| 5951 | <dict> | |
| 5952 | <key>1</key> | |
| 5953 | <dict> | |
| 5954 | <key>name</key> | |
| 5955 | <string>string.other.begin.code.fenced.mdx</string> | |
| 5956 | </dict> | |
| 5957 | <key>2</key> | |
| 5958 | <dict> | |
| 5959 | <key>name</key> | |
| 5960 | <string>entity.name.function.mdx</string> | |
| 5961 | <key>patterns</key> | |
| 5962 | <array> | |
| 5963 | <dict> | |
| 5964 | <key>include</key> | |
| 5965 | <string>#markdown-string</string> | |
| 5966 | </dict> | |
| 5967 | </array> | |
| 5968 | </dict> | |
| 5969 | <key>3</key> | |
| 5970 | <dict> | |
| 5971 | <key>patterns</key> | |
| 5972 | <array> | |
| 5973 | <dict> | |
| 5974 | <key>include</key> | |
| 5975 | <string>#markdown-string</string> | |
| 5976 | </dict> | |
| 5977 | </array> | |
| 5978 | </dict> | |
| 5979 | </dict> | |
| 5980 | <key>end</key> | |
| 5981 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 5982 | <key>endCaptures</key> | |
| 5983 | <dict> | |
| 5984 | <key>1</key> | |
| 5985 | <dict> | |
| 5986 | <key>name</key> | |
| 5987 | <string>string.other.end.code.fenced.mdx</string> | |
| 5988 | </dict> | |
| 5989 | </dict> | |
| 5990 | <key>name</key> | |
| 5991 | <string>markup.code.kotlin.mdx</string> | |
| 5992 | <key>patterns</key> | |
| 5993 | <array> | |
| 5994 | <dict> | |
| 5995 | <key>begin</key> | |
| 5996 | <string>(^|\G)(\s*)(.*)</string> | |
| 5997 | <key>while</key> | |
| 5998 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 5999 | <key>contentName</key> | |
| 6000 | <string>meta.embedded.kotlin</string> | |
| 6001 | <key>patterns</key> | |
| 6002 | <array> | |
| 6003 | <dict> | |
| 6004 | <key>include</key> | |
| 6005 | <string>source.kotlin</string> | |
| 6006 | </dict> | |
| 6007 | </array> | |
| 6008 | </dict> | |
| 6009 | </array> | |
| 6010 | </dict> | |
| 6011 | </array> | |
| 6012 | </dict> | |
| 6013 | <key>commonmark-code-fenced-less</key> | |
| 6014 | <dict> | |
| 6015 | <key>patterns</key> | |
| 6016 | <array> | |
| 6017 | <dict> | |
| 6018 | <key>begin</key> | |
| 6019 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:less\x2dcss|(?:.*\.)?less))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6020 | <key>beginCaptures</key> | |
| 6021 | <dict> | |
| 6022 | <key>1</key> | |
| 6023 | <dict> | |
| 6024 | <key>name</key> | |
| 6025 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6026 | </dict> | |
| 6027 | <key>2</key> | |
| 6028 | <dict> | |
| 6029 | <key>name</key> | |
| 6030 | <string>entity.name.function.mdx</string> | |
| 6031 | <key>patterns</key> | |
| 6032 | <array> | |
| 6033 | <dict> | |
| 6034 | <key>include</key> | |
| 6035 | <string>#markdown-string</string> | |
| 6036 | </dict> | |
| 6037 | </array> | |
| 6038 | </dict> | |
| 6039 | <key>3</key> | |
| 6040 | <dict> | |
| 6041 | <key>patterns</key> | |
| 6042 | <array> | |
| 6043 | <dict> | |
| 6044 | <key>include</key> | |
| 6045 | <string>#markdown-string</string> | |
| 6046 | </dict> | |
| 6047 | </array> | |
| 6048 | </dict> | |
| 6049 | </dict> | |
| 6050 | <key>end</key> | |
| 6051 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6052 | <key>endCaptures</key> | |
| 6053 | <dict> | |
| 6054 | <key>1</key> | |
| 6055 | <dict> | |
| 6056 | <key>name</key> | |
| 6057 | <string>string.other.end.code.fenced.mdx</string> | |
| 6058 | </dict> | |
| 6059 | </dict> | |
| 6060 | <key>name</key> | |
| 6061 | <string>markup.code.less.mdx</string> | |
| 6062 | <key>patterns</key> | |
| 6063 | <array> | |
| 6064 | <dict> | |
| 6065 | <key>begin</key> | |
| 6066 | <string>(^|\G)(\s*)(.*)</string> | |
| 6067 | <key>while</key> | |
| 6068 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6069 | <key>contentName</key> | |
| 6070 | <string>meta.embedded.less</string> | |
| 6071 | <key>patterns</key> | |
| 6072 | <array> | |
| 6073 | <dict> | |
| 6074 | <key>include</key> | |
| 6075 | <string>source.css.less</string> | |
| 6076 | </dict> | |
| 6077 | </array> | |
| 6078 | </dict> | |
| 6079 | </array> | |
| 6080 | </dict> | |
| 6081 | <dict> | |
| 6082 | <key>begin</key> | |
| 6083 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:less\x2dcss|(?:.*\.)?less))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6084 | <key>beginCaptures</key> | |
| 6085 | <dict> | |
| 6086 | <key>1</key> | |
| 6087 | <dict> | |
| 6088 | <key>name</key> | |
| 6089 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6090 | </dict> | |
| 6091 | <key>2</key> | |
| 6092 | <dict> | |
| 6093 | <key>name</key> | |
| 6094 | <string>entity.name.function.mdx</string> | |
| 6095 | <key>patterns</key> | |
| 6096 | <array> | |
| 6097 | <dict> | |
| 6098 | <key>include</key> | |
| 6099 | <string>#markdown-string</string> | |
| 6100 | </dict> | |
| 6101 | </array> | |
| 6102 | </dict> | |
| 6103 | <key>3</key> | |
| 6104 | <dict> | |
| 6105 | <key>patterns</key> | |
| 6106 | <array> | |
| 6107 | <dict> | |
| 6108 | <key>include</key> | |
| 6109 | <string>#markdown-string</string> | |
| 6110 | </dict> | |
| 6111 | </array> | |
| 6112 | </dict> | |
| 6113 | </dict> | |
| 6114 | <key>end</key> | |
| 6115 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6116 | <key>endCaptures</key> | |
| 6117 | <dict> | |
| 6118 | <key>1</key> | |
| 6119 | <dict> | |
| 6120 | <key>name</key> | |
| 6121 | <string>string.other.end.code.fenced.mdx</string> | |
| 6122 | </dict> | |
| 6123 | </dict> | |
| 6124 | <key>name</key> | |
| 6125 | <string>markup.code.less.mdx</string> | |
| 6126 | <key>patterns</key> | |
| 6127 | <array> | |
| 6128 | <dict> | |
| 6129 | <key>begin</key> | |
| 6130 | <string>(^|\G)(\s*)(.*)</string> | |
| 6131 | <key>while</key> | |
| 6132 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6133 | <key>contentName</key> | |
| 6134 | <string>meta.embedded.less</string> | |
| 6135 | <key>patterns</key> | |
| 6136 | <array> | |
| 6137 | <dict> | |
| 6138 | <key>include</key> | |
| 6139 | <string>source.css.less</string> | |
| 6140 | </dict> | |
| 6141 | </array> | |
| 6142 | </dict> | |
| 6143 | </array> | |
| 6144 | </dict> | |
| 6145 | </array> | |
| 6146 | </dict> | |
| 6147 | <key>commonmark-code-fenced-lua</key> | |
| 6148 | <dict> | |
| 6149 | <key>patterns</key> | |
| 6150 | <array> | |
| 6151 | <dict> | |
| 6152 | <key>begin</key> | |
| 6153 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6154 | <key>beginCaptures</key> | |
| 6155 | <dict> | |
| 6156 | <key>1</key> | |
| 6157 | <dict> | |
| 6158 | <key>name</key> | |
| 6159 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6160 | </dict> | |
| 6161 | <key>2</key> | |
| 6162 | <dict> | |
| 6163 | <key>name</key> | |
| 6164 | <string>entity.name.function.mdx</string> | |
| 6165 | <key>patterns</key> | |
| 6166 | <array> | |
| 6167 | <dict> | |
| 6168 | <key>include</key> | |
| 6169 | <string>#markdown-string</string> | |
| 6170 | </dict> | |
| 6171 | </array> | |
| 6172 | </dict> | |
| 6173 | <key>3</key> | |
| 6174 | <dict> | |
| 6175 | <key>patterns</key> | |
| 6176 | <array> | |
| 6177 | <dict> | |
| 6178 | <key>include</key> | |
| 6179 | <string>#markdown-string</string> | |
| 6180 | </dict> | |
| 6181 | </array> | |
| 6182 | </dict> | |
| 6183 | </dict> | |
| 6184 | <key>end</key> | |
| 6185 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6186 | <key>endCaptures</key> | |
| 6187 | <dict> | |
| 6188 | <key>1</key> | |
| 6189 | <dict> | |
| 6190 | <key>name</key> | |
| 6191 | <string>string.other.end.code.fenced.mdx</string> | |
| 6192 | </dict> | |
| 6193 | </dict> | |
| 6194 | <key>name</key> | |
| 6195 | <string>markup.code.lua.mdx</string> | |
| 6196 | <key>patterns</key> | |
| 6197 | <array> | |
| 6198 | <dict> | |
| 6199 | <key>begin</key> | |
| 6200 | <string>(^|\G)(\s*)(.*)</string> | |
| 6201 | <key>while</key> | |
| 6202 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6203 | <key>contentName</key> | |
| 6204 | <string>meta.embedded.lua</string> | |
| 6205 | <key>patterns</key> | |
| 6206 | <array> | |
| 6207 | <dict> | |
| 6208 | <key>include</key> | |
| 6209 | <string>source.lua</string> | |
| 6210 | </dict> | |
| 6211 | </array> | |
| 6212 | </dict> | |
| 6213 | </array> | |
| 6214 | </dict> | |
| 6215 | <dict> | |
| 6216 | <key>begin</key> | |
| 6217 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6218 | <key>beginCaptures</key> | |
| 6219 | <dict> | |
| 6220 | <key>1</key> | |
| 6221 | <dict> | |
| 6222 | <key>name</key> | |
| 6223 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6224 | </dict> | |
| 6225 | <key>2</key> | |
| 6226 | <dict> | |
| 6227 | <key>name</key> | |
| 6228 | <string>entity.name.function.mdx</string> | |
| 6229 | <key>patterns</key> | |
| 6230 | <array> | |
| 6231 | <dict> | |
| 6232 | <key>include</key> | |
| 6233 | <string>#markdown-string</string> | |
| 6234 | </dict> | |
| 6235 | </array> | |
| 6236 | </dict> | |
| 6237 | <key>3</key> | |
| 6238 | <dict> | |
| 6239 | <key>patterns</key> | |
| 6240 | <array> | |
| 6241 | <dict> | |
| 6242 | <key>include</key> | |
| 6243 | <string>#markdown-string</string> | |
| 6244 | </dict> | |
| 6245 | </array> | |
| 6246 | </dict> | |
| 6247 | </dict> | |
| 6248 | <key>end</key> | |
| 6249 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6250 | <key>endCaptures</key> | |
| 6251 | <dict> | |
| 6252 | <key>1</key> | |
| 6253 | <dict> | |
| 6254 | <key>name</key> | |
| 6255 | <string>string.other.end.code.fenced.mdx</string> | |
| 6256 | </dict> | |
| 6257 | </dict> | |
| 6258 | <key>name</key> | |
| 6259 | <string>markup.code.lua.mdx</string> | |
| 6260 | <key>patterns</key> | |
| 6261 | <array> | |
| 6262 | <dict> | |
| 6263 | <key>begin</key> | |
| 6264 | <string>(^|\G)(\s*)(.*)</string> | |
| 6265 | <key>while</key> | |
| 6266 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6267 | <key>contentName</key> | |
| 6268 | <string>meta.embedded.lua</string> | |
| 6269 | <key>patterns</key> | |
| 6270 | <array> | |
| 6271 | <dict> | |
| 6272 | <key>include</key> | |
| 6273 | <string>source.lua</string> | |
| 6274 | </dict> | |
| 6275 | </array> | |
| 6276 | </dict> | |
| 6277 | </array> | |
| 6278 | </dict> | |
| 6279 | </array> | |
| 6280 | </dict> | |
| 6281 | <key>commonmark-code-fenced-makefile</key> | |
| 6282 | <dict> | |
| 6283 | <key>patterns</key> | |
| 6284 | <array> | |
| 6285 | <dict> | |
| 6286 | <key>begin</key> | |
| 6287 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:bsdmake|mf|(?:.*\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6288 | <key>beginCaptures</key> | |
| 6289 | <dict> | |
| 6290 | <key>1</key> | |
| 6291 | <dict> | |
| 6292 | <key>name</key> | |
| 6293 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6294 | </dict> | |
| 6295 | <key>2</key> | |
| 6296 | <dict> | |
| 6297 | <key>name</key> | |
| 6298 | <string>entity.name.function.mdx</string> | |
| 6299 | <key>patterns</key> | |
| 6300 | <array> | |
| 6301 | <dict> | |
| 6302 | <key>include</key> | |
| 6303 | <string>#markdown-string</string> | |
| 6304 | </dict> | |
| 6305 | </array> | |
| 6306 | </dict> | |
| 6307 | <key>3</key> | |
| 6308 | <dict> | |
| 6309 | <key>patterns</key> | |
| 6310 | <array> | |
| 6311 | <dict> | |
| 6312 | <key>include</key> | |
| 6313 | <string>#markdown-string</string> | |
| 6314 | </dict> | |
| 6315 | </array> | |
| 6316 | </dict> | |
| 6317 | </dict> | |
| 6318 | <key>end</key> | |
| 6319 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6320 | <key>endCaptures</key> | |
| 6321 | <dict> | |
| 6322 | <key>1</key> | |
| 6323 | <dict> | |
| 6324 | <key>name</key> | |
| 6325 | <string>string.other.end.code.fenced.mdx</string> | |
| 6326 | </dict> | |
| 6327 | </dict> | |
| 6328 | <key>name</key> | |
| 6329 | <string>markup.code.makefile.mdx</string> | |
| 6330 | <key>patterns</key> | |
| 6331 | <array> | |
| 6332 | <dict> | |
| 6333 | <key>begin</key> | |
| 6334 | <string>(^|\G)(\s*)(.*)</string> | |
| 6335 | <key>while</key> | |
| 6336 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6337 | <key>contentName</key> | |
| 6338 | <string>meta.embedded.makefile</string> | |
| 6339 | <key>patterns</key> | |
| 6340 | <array> | |
| 6341 | <dict> | |
| 6342 | <key>include</key> | |
| 6343 | <string>source.makefile</string> | |
| 6344 | </dict> | |
| 6345 | </array> | |
| 6346 | </dict> | |
| 6347 | </array> | |
| 6348 | </dict> | |
| 6349 | <dict> | |
| 6350 | <key>begin</key> | |
| 6351 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:bsdmake|mf|(?:.*\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6352 | <key>beginCaptures</key> | |
| 6353 | <dict> | |
| 6354 | <key>1</key> | |
| 6355 | <dict> | |
| 6356 | <key>name</key> | |
| 6357 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6358 | </dict> | |
| 6359 | <key>2</key> | |
| 6360 | <dict> | |
| 6361 | <key>name</key> | |
| 6362 | <string>entity.name.function.mdx</string> | |
| 6363 | <key>patterns</key> | |
| 6364 | <array> | |
| 6365 | <dict> | |
| 6366 | <key>include</key> | |
| 6367 | <string>#markdown-string</string> | |
| 6368 | </dict> | |
| 6369 | </array> | |
| 6370 | </dict> | |
| 6371 | <key>3</key> | |
| 6372 | <dict> | |
| 6373 | <key>patterns</key> | |
| 6374 | <array> | |
| 6375 | <dict> | |
| 6376 | <key>include</key> | |
| 6377 | <string>#markdown-string</string> | |
| 6378 | </dict> | |
| 6379 | </array> | |
| 6380 | </dict> | |
| 6381 | </dict> | |
| 6382 | <key>end</key> | |
| 6383 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6384 | <key>endCaptures</key> | |
| 6385 | <dict> | |
| 6386 | <key>1</key> | |
| 6387 | <dict> | |
| 6388 | <key>name</key> | |
| 6389 | <string>string.other.end.code.fenced.mdx</string> | |
| 6390 | </dict> | |
| 6391 | </dict> | |
| 6392 | <key>name</key> | |
| 6393 | <string>markup.code.makefile.mdx</string> | |
| 6394 | <key>patterns</key> | |
| 6395 | <array> | |
| 6396 | <dict> | |
| 6397 | <key>begin</key> | |
| 6398 | <string>(^|\G)(\s*)(.*)</string> | |
| 6399 | <key>while</key> | |
| 6400 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6401 | <key>contentName</key> | |
| 6402 | <string>meta.embedded.makefile</string> | |
| 6403 | <key>patterns</key> | |
| 6404 | <array> | |
| 6405 | <dict> | |
| 6406 | <key>include</key> | |
| 6407 | <string>source.makefile</string> | |
| 6408 | </dict> | |
| 6409 | </array> | |
| 6410 | </dict> | |
| 6411 | </array> | |
| 6412 | </dict> | |
| 6413 | </array> | |
| 6414 | </dict> | |
| 6415 | <key>commonmark-code-fenced-md</key> | |
| 6416 | <dict> | |
| 6417 | <key>patterns</key> | |
| 6418 | <array> | |
| 6419 | <dict> | |
| 6420 | <key>begin</key> | |
| 6421 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:md|pandoc|rmarkdown|(?:.*\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6422 | <key>beginCaptures</key> | |
| 6423 | <dict> | |
| 6424 | <key>1</key> | |
| 6425 | <dict> | |
| 6426 | <key>name</key> | |
| 6427 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6428 | </dict> | |
| 6429 | <key>2</key> | |
| 6430 | <dict> | |
| 6431 | <key>name</key> | |
| 6432 | <string>entity.name.function.mdx</string> | |
| 6433 | <key>patterns</key> | |
| 6434 | <array> | |
| 6435 | <dict> | |
| 6436 | <key>include</key> | |
| 6437 | <string>#markdown-string</string> | |
| 6438 | </dict> | |
| 6439 | </array> | |
| 6440 | </dict> | |
| 6441 | <key>3</key> | |
| 6442 | <dict> | |
| 6443 | <key>patterns</key> | |
| 6444 | <array> | |
| 6445 | <dict> | |
| 6446 | <key>include</key> | |
| 6447 | <string>#markdown-string</string> | |
| 6448 | </dict> | |
| 6449 | </array> | |
| 6450 | </dict> | |
| 6451 | </dict> | |
| 6452 | <key>end</key> | |
| 6453 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6454 | <key>endCaptures</key> | |
| 6455 | <dict> | |
| 6456 | <key>1</key> | |
| 6457 | <dict> | |
| 6458 | <key>name</key> | |
| 6459 | <string>string.other.end.code.fenced.mdx</string> | |
| 6460 | </dict> | |
| 6461 | </dict> | |
| 6462 | <key>name</key> | |
| 6463 | <string>markup.code.md.mdx</string> | |
| 6464 | <key>patterns</key> | |
| 6465 | <array> | |
| 6466 | <dict> | |
| 6467 | <key>begin</key> | |
| 6468 | <string>(^|\G)(\s*)(.*)</string> | |
| 6469 | <key>while</key> | |
| 6470 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6471 | <key>contentName</key> | |
| 6472 | <string>meta.embedded.md</string> | |
| 6473 | <key>patterns</key> | |
| 6474 | <array> | |
| 6475 | <dict> | |
| 6476 | <key>include</key> | |
| 6477 | <string>text.md</string> | |
| 6478 | </dict> | |
| 6479 | <dict> | |
| 6480 | <key>include</key> | |
| 6481 | <string>source.gfm</string> | |
| 6482 | </dict> | |
| 6483 | <dict> | |
| 6484 | <key>include</key> | |
| 6485 | <string>text.html.markdown</string> | |
| 6486 | </dict> | |
| 6487 | </array> | |
| 6488 | </dict> | |
| 6489 | </array> | |
| 6490 | </dict> | |
| 6491 | <dict> | |
| 6492 | <key>begin</key> | |
| 6493 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:md|pandoc|rmarkdown|(?:.*\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6494 | <key>beginCaptures</key> | |
| 6495 | <dict> | |
| 6496 | <key>1</key> | |
| 6497 | <dict> | |
| 6498 | <key>name</key> | |
| 6499 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6500 | </dict> | |
| 6501 | <key>2</key> | |
| 6502 | <dict> | |
| 6503 | <key>name</key> | |
| 6504 | <string>entity.name.function.mdx</string> | |
| 6505 | <key>patterns</key> | |
| 6506 | <array> | |
| 6507 | <dict> | |
| 6508 | <key>include</key> | |
| 6509 | <string>#markdown-string</string> | |
| 6510 | </dict> | |
| 6511 | </array> | |
| 6512 | </dict> | |
| 6513 | <key>3</key> | |
| 6514 | <dict> | |
| 6515 | <key>patterns</key> | |
| 6516 | <array> | |
| 6517 | <dict> | |
| 6518 | <key>include</key> | |
| 6519 | <string>#markdown-string</string> | |
| 6520 | </dict> | |
| 6521 | </array> | |
| 6522 | </dict> | |
| 6523 | </dict> | |
| 6524 | <key>end</key> | |
| 6525 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6526 | <key>endCaptures</key> | |
| 6527 | <dict> | |
| 6528 | <key>1</key> | |
| 6529 | <dict> | |
| 6530 | <key>name</key> | |
| 6531 | <string>string.other.end.code.fenced.mdx</string> | |
| 6532 | </dict> | |
| 6533 | </dict> | |
| 6534 | <key>name</key> | |
| 6535 | <string>markup.code.md.mdx</string> | |
| 6536 | <key>patterns</key> | |
| 6537 | <array> | |
| 6538 | <dict> | |
| 6539 | <key>begin</key> | |
| 6540 | <string>(^|\G)(\s*)(.*)</string> | |
| 6541 | <key>while</key> | |
| 6542 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6543 | <key>contentName</key> | |
| 6544 | <string>meta.embedded.md</string> | |
| 6545 | <key>patterns</key> | |
| 6546 | <array> | |
| 6547 | <dict> | |
| 6548 | <key>include</key> | |
| 6549 | <string>text.md</string> | |
| 6550 | </dict> | |
| 6551 | <dict> | |
| 6552 | <key>include</key> | |
| 6553 | <string>source.gfm</string> | |
| 6554 | </dict> | |
| 6555 | <dict> | |
| 6556 | <key>include</key> | |
| 6557 | <string>text.html.markdown</string> | |
| 6558 | </dict> | |
| 6559 | </array> | |
| 6560 | </dict> | |
| 6561 | </array> | |
| 6562 | </dict> | |
| 6563 | </array> | |
| 6564 | </dict> | |
| 6565 | <key>commonmark-code-fenced-mdx</key> | |
| 6566 | <dict> | |
| 6567 | <key>patterns</key> | |
| 6568 | <array> | |
| 6569 | <dict> | |
| 6570 | <key>begin</key> | |
| 6571 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?mdx))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6572 | <key>beginCaptures</key> | |
| 6573 | <dict> | |
| 6574 | <key>1</key> | |
| 6575 | <dict> | |
| 6576 | <key>name</key> | |
| 6577 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6578 | </dict> | |
| 6579 | <key>2</key> | |
| 6580 | <dict> | |
| 6581 | <key>name</key> | |
| 6582 | <string>entity.name.function.mdx</string> | |
| 6583 | <key>patterns</key> | |
| 6584 | <array> | |
| 6585 | <dict> | |
| 6586 | <key>include</key> | |
| 6587 | <string>#markdown-string</string> | |
| 6588 | </dict> | |
| 6589 | </array> | |
| 6590 | </dict> | |
| 6591 | <key>3</key> | |
| 6592 | <dict> | |
| 6593 | <key>patterns</key> | |
| 6594 | <array> | |
| 6595 | <dict> | |
| 6596 | <key>include</key> | |
| 6597 | <string>#markdown-string</string> | |
| 6598 | </dict> | |
| 6599 | </array> | |
| 6600 | </dict> | |
| 6601 | </dict> | |
| 6602 | <key>end</key> | |
| 6603 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6604 | <key>endCaptures</key> | |
| 6605 | <dict> | |
| 6606 | <key>1</key> | |
| 6607 | <dict> | |
| 6608 | <key>name</key> | |
| 6609 | <string>string.other.end.code.fenced.mdx</string> | |
| 6610 | </dict> | |
| 6611 | </dict> | |
| 6612 | <key>name</key> | |
| 6613 | <string>markup.code.mdx.mdx</string> | |
| 6614 | <key>patterns</key> | |
| 6615 | <array> | |
| 6616 | <dict> | |
| 6617 | <key>begin</key> | |
| 6618 | <string>(^|\G)(\s*)(.*)</string> | |
| 6619 | <key>while</key> | |
| 6620 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6621 | <key>contentName</key> | |
| 6622 | <string>meta.embedded.mdx</string> | |
| 6623 | <key>patterns</key> | |
| 6624 | <array> | |
| 6625 | <dict> | |
| 6626 | <key>include</key> | |
| 6627 | <string>source.mdx</string> | |
| 6628 | </dict> | |
| 6629 | </array> | |
| 6630 | </dict> | |
| 6631 | </array> | |
| 6632 | </dict> | |
| 6633 | <dict> | |
| 6634 | <key>begin</key> | |
| 6635 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?mdx))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6636 | <key>beginCaptures</key> | |
| 6637 | <dict> | |
| 6638 | <key>1</key> | |
| 6639 | <dict> | |
| 6640 | <key>name</key> | |
| 6641 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6642 | </dict> | |
| 6643 | <key>2</key> | |
| 6644 | <dict> | |
| 6645 | <key>name</key> | |
| 6646 | <string>entity.name.function.mdx</string> | |
| 6647 | <key>patterns</key> | |
| 6648 | <array> | |
| 6649 | <dict> | |
| 6650 | <key>include</key> | |
| 6651 | <string>#markdown-string</string> | |
| 6652 | </dict> | |
| 6653 | </array> | |
| 6654 | </dict> | |
| 6655 | <key>3</key> | |
| 6656 | <dict> | |
| 6657 | <key>patterns</key> | |
| 6658 | <array> | |
| 6659 | <dict> | |
| 6660 | <key>include</key> | |
| 6661 | <string>#markdown-string</string> | |
| 6662 | </dict> | |
| 6663 | </array> | |
| 6664 | </dict> | |
| 6665 | </dict> | |
| 6666 | <key>end</key> | |
| 6667 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6668 | <key>endCaptures</key> | |
| 6669 | <dict> | |
| 6670 | <key>1</key> | |
| 6671 | <dict> | |
| 6672 | <key>name</key> | |
| 6673 | <string>string.other.end.code.fenced.mdx</string> | |
| 6674 | </dict> | |
| 6675 | </dict> | |
| 6676 | <key>name</key> | |
| 6677 | <string>markup.code.mdx.mdx</string> | |
| 6678 | <key>patterns</key> | |
| 6679 | <array> | |
| 6680 | <dict> | |
| 6681 | <key>begin</key> | |
| 6682 | <string>(^|\G)(\s*)(.*)</string> | |
| 6683 | <key>while</key> | |
| 6684 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6685 | <key>contentName</key> | |
| 6686 | <string>meta.embedded.mdx</string> | |
| 6687 | <key>patterns</key> | |
| 6688 | <array> | |
| 6689 | <dict> | |
| 6690 | <key>include</key> | |
| 6691 | <string>source.mdx</string> | |
| 6692 | </dict> | |
| 6693 | </array> | |
| 6694 | </dict> | |
| 6695 | </array> | |
| 6696 | </dict> | |
| 6697 | </array> | |
| 6698 | </dict> | |
| 6699 | <key>commonmark-code-fenced-objc</key> | |
| 6700 | <dict> | |
| 6701 | <key>patterns</key> | |
| 6702 | <array> | |
| 6703 | <dict> | |
| 6704 | <key>begin</key> | |
| 6705 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:obj\x2dc|objc|objective\x2dc|objectivec))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6706 | <key>beginCaptures</key> | |
| 6707 | <dict> | |
| 6708 | <key>1</key> | |
| 6709 | <dict> | |
| 6710 | <key>name</key> | |
| 6711 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6712 | </dict> | |
| 6713 | <key>2</key> | |
| 6714 | <dict> | |
| 6715 | <key>name</key> | |
| 6716 | <string>entity.name.function.mdx</string> | |
| 6717 | <key>patterns</key> | |
| 6718 | <array> | |
| 6719 | <dict> | |
| 6720 | <key>include</key> | |
| 6721 | <string>#markdown-string</string> | |
| 6722 | </dict> | |
| 6723 | </array> | |
| 6724 | </dict> | |
| 6725 | <key>3</key> | |
| 6726 | <dict> | |
| 6727 | <key>patterns</key> | |
| 6728 | <array> | |
| 6729 | <dict> | |
| 6730 | <key>include</key> | |
| 6731 | <string>#markdown-string</string> | |
| 6732 | </dict> | |
| 6733 | </array> | |
| 6734 | </dict> | |
| 6735 | </dict> | |
| 6736 | <key>end</key> | |
| 6737 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6738 | <key>endCaptures</key> | |
| 6739 | <dict> | |
| 6740 | <key>1</key> | |
| 6741 | <dict> | |
| 6742 | <key>name</key> | |
| 6743 | <string>string.other.end.code.fenced.mdx</string> | |
| 6744 | </dict> | |
| 6745 | </dict> | |
| 6746 | <key>name</key> | |
| 6747 | <string>markup.code.objc.mdx</string> | |
| 6748 | <key>patterns</key> | |
| 6749 | <array> | |
| 6750 | <dict> | |
| 6751 | <key>begin</key> | |
| 6752 | <string>(^|\G)(\s*)(.*)</string> | |
| 6753 | <key>while</key> | |
| 6754 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6755 | <key>contentName</key> | |
| 6756 | <string>meta.embedded.objc</string> | |
| 6757 | <key>patterns</key> | |
| 6758 | <array> | |
| 6759 | <dict> | |
| 6760 | <key>include</key> | |
| 6761 | <string>source.objc</string> | |
| 6762 | </dict> | |
| 6763 | </array> | |
| 6764 | </dict> | |
| 6765 | </array> | |
| 6766 | </dict> | |
| 6767 | <dict> | |
| 6768 | <key>begin</key> | |
| 6769 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:obj\x2dc|objc|objective\x2dc|objectivec))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6770 | <key>beginCaptures</key> | |
| 6771 | <dict> | |
| 6772 | <key>1</key> | |
| 6773 | <dict> | |
| 6774 | <key>name</key> | |
| 6775 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6776 | </dict> | |
| 6777 | <key>2</key> | |
| 6778 | <dict> | |
| 6779 | <key>name</key> | |
| 6780 | <string>entity.name.function.mdx</string> | |
| 6781 | <key>patterns</key> | |
| 6782 | <array> | |
| 6783 | <dict> | |
| 6784 | <key>include</key> | |
| 6785 | <string>#markdown-string</string> | |
| 6786 | </dict> | |
| 6787 | </array> | |
| 6788 | </dict> | |
| 6789 | <key>3</key> | |
| 6790 | <dict> | |
| 6791 | <key>patterns</key> | |
| 6792 | <array> | |
| 6793 | <dict> | |
| 6794 | <key>include</key> | |
| 6795 | <string>#markdown-string</string> | |
| 6796 | </dict> | |
| 6797 | </array> | |
| 6798 | </dict> | |
| 6799 | </dict> | |
| 6800 | <key>end</key> | |
| 6801 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6802 | <key>endCaptures</key> | |
| 6803 | <dict> | |
| 6804 | <key>1</key> | |
| 6805 | <dict> | |
| 6806 | <key>name</key> | |
| 6807 | <string>string.other.end.code.fenced.mdx</string> | |
| 6808 | </dict> | |
| 6809 | </dict> | |
| 6810 | <key>name</key> | |
| 6811 | <string>markup.code.objc.mdx</string> | |
| 6812 | <key>patterns</key> | |
| 6813 | <array> | |
| 6814 | <dict> | |
| 6815 | <key>begin</key> | |
| 6816 | <string>(^|\G)(\s*)(.*)</string> | |
| 6817 | <key>while</key> | |
| 6818 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6819 | <key>contentName</key> | |
| 6820 | <string>meta.embedded.objc</string> | |
| 6821 | <key>patterns</key> | |
| 6822 | <array> | |
| 6823 | <dict> | |
| 6824 | <key>include</key> | |
| 6825 | <string>source.objc</string> | |
| 6826 | </dict> | |
| 6827 | </array> | |
| 6828 | </dict> | |
| 6829 | </array> | |
| 6830 | </dict> | |
| 6831 | </array> | |
| 6832 | </dict> | |
| 6833 | <key>commonmark-code-fenced-perl</key> | |
| 6834 | <dict> | |
| 6835 | <key>patterns</key> | |
| 6836 | <array> | |
| 6837 | <dict> | |
| 6838 | <key>begin</key> | |
| 6839 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:cperl|(?:.*\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6840 | <key>beginCaptures</key> | |
| 6841 | <dict> | |
| 6842 | <key>1</key> | |
| 6843 | <dict> | |
| 6844 | <key>name</key> | |
| 6845 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6846 | </dict> | |
| 6847 | <key>2</key> | |
| 6848 | <dict> | |
| 6849 | <key>name</key> | |
| 6850 | <string>entity.name.function.mdx</string> | |
| 6851 | <key>patterns</key> | |
| 6852 | <array> | |
| 6853 | <dict> | |
| 6854 | <key>include</key> | |
| 6855 | <string>#markdown-string</string> | |
| 6856 | </dict> | |
| 6857 | </array> | |
| 6858 | </dict> | |
| 6859 | <key>3</key> | |
| 6860 | <dict> | |
| 6861 | <key>patterns</key> | |
| 6862 | <array> | |
| 6863 | <dict> | |
| 6864 | <key>include</key> | |
| 6865 | <string>#markdown-string</string> | |
| 6866 | </dict> | |
| 6867 | </array> | |
| 6868 | </dict> | |
| 6869 | </dict> | |
| 6870 | <key>end</key> | |
| 6871 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6872 | <key>endCaptures</key> | |
| 6873 | <dict> | |
| 6874 | <key>1</key> | |
| 6875 | <dict> | |
| 6876 | <key>name</key> | |
| 6877 | <string>string.other.end.code.fenced.mdx</string> | |
| 6878 | </dict> | |
| 6879 | </dict> | |
| 6880 | <key>name</key> | |
| 6881 | <string>markup.code.perl.mdx</string> | |
| 6882 | <key>patterns</key> | |
| 6883 | <array> | |
| 6884 | <dict> | |
| 6885 | <key>begin</key> | |
| 6886 | <string>(^|\G)(\s*)(.*)</string> | |
| 6887 | <key>while</key> | |
| 6888 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6889 | <key>contentName</key> | |
| 6890 | <string>meta.embedded.perl</string> | |
| 6891 | <key>patterns</key> | |
| 6892 | <array> | |
| 6893 | <dict> | |
| 6894 | <key>include</key> | |
| 6895 | <string>source.perl</string> | |
| 6896 | </dict> | |
| 6897 | </array> | |
| 6898 | </dict> | |
| 6899 | </array> | |
| 6900 | </dict> | |
| 6901 | <dict> | |
| 6902 | <key>begin</key> | |
| 6903 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:cperl|(?:.*\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 6904 | <key>beginCaptures</key> | |
| 6905 | <dict> | |
| 6906 | <key>1</key> | |
| 6907 | <dict> | |
| 6908 | <key>name</key> | |
| 6909 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6910 | </dict> | |
| 6911 | <key>2</key> | |
| 6912 | <dict> | |
| 6913 | <key>name</key> | |
| 6914 | <string>entity.name.function.mdx</string> | |
| 6915 | <key>patterns</key> | |
| 6916 | <array> | |
| 6917 | <dict> | |
| 6918 | <key>include</key> | |
| 6919 | <string>#markdown-string</string> | |
| 6920 | </dict> | |
| 6921 | </array> | |
| 6922 | </dict> | |
| 6923 | <key>3</key> | |
| 6924 | <dict> | |
| 6925 | <key>patterns</key> | |
| 6926 | <array> | |
| 6927 | <dict> | |
| 6928 | <key>include</key> | |
| 6929 | <string>#markdown-string</string> | |
| 6930 | </dict> | |
| 6931 | </array> | |
| 6932 | </dict> | |
| 6933 | </dict> | |
| 6934 | <key>end</key> | |
| 6935 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 6936 | <key>endCaptures</key> | |
| 6937 | <dict> | |
| 6938 | <key>1</key> | |
| 6939 | <dict> | |
| 6940 | <key>name</key> | |
| 6941 | <string>string.other.end.code.fenced.mdx</string> | |
| 6942 | </dict> | |
| 6943 | </dict> | |
| 6944 | <key>name</key> | |
| 6945 | <string>markup.code.perl.mdx</string> | |
| 6946 | <key>patterns</key> | |
| 6947 | <array> | |
| 6948 | <dict> | |
| 6949 | <key>begin</key> | |
| 6950 | <string>(^|\G)(\s*)(.*)</string> | |
| 6951 | <key>while</key> | |
| 6952 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 6953 | <key>contentName</key> | |
| 6954 | <string>meta.embedded.perl</string> | |
| 6955 | <key>patterns</key> | |
| 6956 | <array> | |
| 6957 | <dict> | |
| 6958 | <key>include</key> | |
| 6959 | <string>source.perl</string> | |
| 6960 | </dict> | |
| 6961 | </array> | |
| 6962 | </dict> | |
| 6963 | </array> | |
| 6964 | </dict> | |
| 6965 | </array> | |
| 6966 | </dict> | |
| 6967 | <key>commonmark-code-fenced-php</key> | |
| 6968 | <dict> | |
| 6969 | <key>patterns</key> | |
| 6970 | <array> | |
| 6971 | <dict> | |
| 6972 | <key>begin</key> | |
| 6973 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:html\+php|inc|php|(?:.*\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 6974 | <key>beginCaptures</key> | |
| 6975 | <dict> | |
| 6976 | <key>1</key> | |
| 6977 | <dict> | |
| 6978 | <key>name</key> | |
| 6979 | <string>string.other.begin.code.fenced.mdx</string> | |
| 6980 | </dict> | |
| 6981 | <key>2</key> | |
| 6982 | <dict> | |
| 6983 | <key>name</key> | |
| 6984 | <string>entity.name.function.mdx</string> | |
| 6985 | <key>patterns</key> | |
| 6986 | <array> | |
| 6987 | <dict> | |
| 6988 | <key>include</key> | |
| 6989 | <string>#markdown-string</string> | |
| 6990 | </dict> | |
| 6991 | </array> | |
| 6992 | </dict> | |
| 6993 | <key>3</key> | |
| 6994 | <dict> | |
| 6995 | <key>patterns</key> | |
| 6996 | <array> | |
| 6997 | <dict> | |
| 6998 | <key>include</key> | |
| 6999 | <string>#markdown-string</string> | |
| 7000 | </dict> | |
| 7001 | </array> | |
| 7002 | </dict> | |
| 7003 | </dict> | |
| 7004 | <key>end</key> | |
| 7005 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7006 | <key>endCaptures</key> | |
| 7007 | <dict> | |
| 7008 | <key>1</key> | |
| 7009 | <dict> | |
| 7010 | <key>name</key> | |
| 7011 | <string>string.other.end.code.fenced.mdx</string> | |
| 7012 | </dict> | |
| 7013 | </dict> | |
| 7014 | <key>name</key> | |
| 7015 | <string>markup.code.php.mdx</string> | |
| 7016 | <key>patterns</key> | |
| 7017 | <array> | |
| 7018 | <dict> | |
| 7019 | <key>begin</key> | |
| 7020 | <string>(^|\G)(\s*)(.*)</string> | |
| 7021 | <key>while</key> | |
| 7022 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7023 | <key>contentName</key> | |
| 7024 | <string>meta.embedded.php</string> | |
| 7025 | <key>patterns</key> | |
| 7026 | <array> | |
| 7027 | <dict> | |
| 7028 | <key>include</key> | |
| 7029 | <string>text.html.php</string> | |
| 7030 | </dict> | |
| 7031 | </array> | |
| 7032 | </dict> | |
| 7033 | </array> | |
| 7034 | </dict> | |
| 7035 | <dict> | |
| 7036 | <key>begin</key> | |
| 7037 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:html\+php|inc|php|(?:.*\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7038 | <key>beginCaptures</key> | |
| 7039 | <dict> | |
| 7040 | <key>1</key> | |
| 7041 | <dict> | |
| 7042 | <key>name</key> | |
| 7043 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7044 | </dict> | |
| 7045 | <key>2</key> | |
| 7046 | <dict> | |
| 7047 | <key>name</key> | |
| 7048 | <string>entity.name.function.mdx</string> | |
| 7049 | <key>patterns</key> | |
| 7050 | <array> | |
| 7051 | <dict> | |
| 7052 | <key>include</key> | |
| 7053 | <string>#markdown-string</string> | |
| 7054 | </dict> | |
| 7055 | </array> | |
| 7056 | </dict> | |
| 7057 | <key>3</key> | |
| 7058 | <dict> | |
| 7059 | <key>patterns</key> | |
| 7060 | <array> | |
| 7061 | <dict> | |
| 7062 | <key>include</key> | |
| 7063 | <string>#markdown-string</string> | |
| 7064 | </dict> | |
| 7065 | </array> | |
| 7066 | </dict> | |
| 7067 | </dict> | |
| 7068 | <key>end</key> | |
| 7069 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7070 | <key>endCaptures</key> | |
| 7071 | <dict> | |
| 7072 | <key>1</key> | |
| 7073 | <dict> | |
| 7074 | <key>name</key> | |
| 7075 | <string>string.other.end.code.fenced.mdx</string> | |
| 7076 | </dict> | |
| 7077 | </dict> | |
| 7078 | <key>name</key> | |
| 7079 | <string>markup.code.php.mdx</string> | |
| 7080 | <key>patterns</key> | |
| 7081 | <array> | |
| 7082 | <dict> | |
| 7083 | <key>begin</key> | |
| 7084 | <string>(^|\G)(\s*)(.*)</string> | |
| 7085 | <key>while</key> | |
| 7086 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7087 | <key>contentName</key> | |
| 7088 | <string>meta.embedded.php</string> | |
| 7089 | <key>patterns</key> | |
| 7090 | <array> | |
| 7091 | <dict> | |
| 7092 | <key>include</key> | |
| 7093 | <string>text.html.php</string> | |
| 7094 | </dict> | |
| 7095 | </array> | |
| 7096 | </dict> | |
| 7097 | </array> | |
| 7098 | </dict> | |
| 7099 | </array> | |
| 7100 | </dict> | |
| 7101 | <key>commonmark-code-fenced-python</key> | |
| 7102 | <dict> | |
| 7103 | <key>patterns</key> | |
| 7104 | <array> | |
| 7105 | <dict> | |
| 7106 | <key>begin</key> | |
| 7107 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7108 | <key>beginCaptures</key> | |
| 7109 | <dict> | |
| 7110 | <key>1</key> | |
| 7111 | <dict> | |
| 7112 | <key>name</key> | |
| 7113 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7114 | </dict> | |
| 7115 | <key>2</key> | |
| 7116 | <dict> | |
| 7117 | <key>name</key> | |
| 7118 | <string>entity.name.function.mdx</string> | |
| 7119 | <key>patterns</key> | |
| 7120 | <array> | |
| 7121 | <dict> | |
| 7122 | <key>include</key> | |
| 7123 | <string>#markdown-string</string> | |
| 7124 | </dict> | |
| 7125 | </array> | |
| 7126 | </dict> | |
| 7127 | <key>3</key> | |
| 7128 | <dict> | |
| 7129 | <key>patterns</key> | |
| 7130 | <array> | |
| 7131 | <dict> | |
| 7132 | <key>include</key> | |
| 7133 | <string>#markdown-string</string> | |
| 7134 | </dict> | |
| 7135 | </array> | |
| 7136 | </dict> | |
| 7137 | </dict> | |
| 7138 | <key>end</key> | |
| 7139 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7140 | <key>endCaptures</key> | |
| 7141 | <dict> | |
| 7142 | <key>1</key> | |
| 7143 | <dict> | |
| 7144 | <key>name</key> | |
| 7145 | <string>string.other.end.code.fenced.mdx</string> | |
| 7146 | </dict> | |
| 7147 | </dict> | |
| 7148 | <key>name</key> | |
| 7149 | <string>markup.code.python.mdx</string> | |
| 7150 | <key>patterns</key> | |
| 7151 | <array> | |
| 7152 | <dict> | |
| 7153 | <key>begin</key> | |
| 7154 | <string>(^|\G)(\s*)(.*)</string> | |
| 7155 | <key>while</key> | |
| 7156 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7157 | <key>contentName</key> | |
| 7158 | <string>meta.embedded.python</string> | |
| 7159 | <key>patterns</key> | |
| 7160 | <array> | |
| 7161 | <dict> | |
| 7162 | <key>include</key> | |
| 7163 | <string>source.python</string> | |
| 7164 | </dict> | |
| 7165 | </array> | |
| 7166 | </dict> | |
| 7167 | </array> | |
| 7168 | </dict> | |
| 7169 | <dict> | |
| 7170 | <key>begin</key> | |
| 7171 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7172 | <key>beginCaptures</key> | |
| 7173 | <dict> | |
| 7174 | <key>1</key> | |
| 7175 | <dict> | |
| 7176 | <key>name</key> | |
| 7177 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7178 | </dict> | |
| 7179 | <key>2</key> | |
| 7180 | <dict> | |
| 7181 | <key>name</key> | |
| 7182 | <string>entity.name.function.mdx</string> | |
| 7183 | <key>patterns</key> | |
| 7184 | <array> | |
| 7185 | <dict> | |
| 7186 | <key>include</key> | |
| 7187 | <string>#markdown-string</string> | |
| 7188 | </dict> | |
| 7189 | </array> | |
| 7190 | </dict> | |
| 7191 | <key>3</key> | |
| 7192 | <dict> | |
| 7193 | <key>patterns</key> | |
| 7194 | <array> | |
| 7195 | <dict> | |
| 7196 | <key>include</key> | |
| 7197 | <string>#markdown-string</string> | |
| 7198 | </dict> | |
| 7199 | </array> | |
| 7200 | </dict> | |
| 7201 | </dict> | |
| 7202 | <key>end</key> | |
| 7203 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7204 | <key>endCaptures</key> | |
| 7205 | <dict> | |
| 7206 | <key>1</key> | |
| 7207 | <dict> | |
| 7208 | <key>name</key> | |
| 7209 | <string>string.other.end.code.fenced.mdx</string> | |
| 7210 | </dict> | |
| 7211 | </dict> | |
| 7212 | <key>name</key> | |
| 7213 | <string>markup.code.python.mdx</string> | |
| 7214 | <key>patterns</key> | |
| 7215 | <array> | |
| 7216 | <dict> | |
| 7217 | <key>begin</key> | |
| 7218 | <string>(^|\G)(\s*)(.*)</string> | |
| 7219 | <key>while</key> | |
| 7220 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7221 | <key>contentName</key> | |
| 7222 | <string>meta.embedded.python</string> | |
| 7223 | <key>patterns</key> | |
| 7224 | <array> | |
| 7225 | <dict> | |
| 7226 | <key>include</key> | |
| 7227 | <string>source.python</string> | |
| 7228 | </dict> | |
| 7229 | </array> | |
| 7230 | </dict> | |
| 7231 | </array> | |
| 7232 | </dict> | |
| 7233 | </array> | |
| 7234 | </dict> | |
| 7235 | <key>commonmark-code-fenced-r</key> | |
| 7236 | <dict> | |
| 7237 | <key>patterns</key> | |
| 7238 | <array> | |
| 7239 | <dict> | |
| 7240 | <key>begin</key> | |
| 7241 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:rscript|splus|(?:.*\.)?(?:r|rd|rsx)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7242 | <key>beginCaptures</key> | |
| 7243 | <dict> | |
| 7244 | <key>1</key> | |
| 7245 | <dict> | |
| 7246 | <key>name</key> | |
| 7247 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7248 | </dict> | |
| 7249 | <key>2</key> | |
| 7250 | <dict> | |
| 7251 | <key>name</key> | |
| 7252 | <string>entity.name.function.mdx</string> | |
| 7253 | <key>patterns</key> | |
| 7254 | <array> | |
| 7255 | <dict> | |
| 7256 | <key>include</key> | |
| 7257 | <string>#markdown-string</string> | |
| 7258 | </dict> | |
| 7259 | </array> | |
| 7260 | </dict> | |
| 7261 | <key>3</key> | |
| 7262 | <dict> | |
| 7263 | <key>patterns</key> | |
| 7264 | <array> | |
| 7265 | <dict> | |
| 7266 | <key>include</key> | |
| 7267 | <string>#markdown-string</string> | |
| 7268 | </dict> | |
| 7269 | </array> | |
| 7270 | </dict> | |
| 7271 | </dict> | |
| 7272 | <key>end</key> | |
| 7273 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7274 | <key>endCaptures</key> | |
| 7275 | <dict> | |
| 7276 | <key>1</key> | |
| 7277 | <dict> | |
| 7278 | <key>name</key> | |
| 7279 | <string>string.other.end.code.fenced.mdx</string> | |
| 7280 | </dict> | |
| 7281 | </dict> | |
| 7282 | <key>name</key> | |
| 7283 | <string>markup.code.r.mdx</string> | |
| 7284 | <key>patterns</key> | |
| 7285 | <array> | |
| 7286 | <dict> | |
| 7287 | <key>begin</key> | |
| 7288 | <string>(^|\G)(\s*)(.*)</string> | |
| 7289 | <key>while</key> | |
| 7290 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7291 | <key>contentName</key> | |
| 7292 | <string>meta.embedded.r</string> | |
| 7293 | <key>patterns</key> | |
| 7294 | <array> | |
| 7295 | <dict> | |
| 7296 | <key>include</key> | |
| 7297 | <string>source.r</string> | |
| 7298 | </dict> | |
| 7299 | </array> | |
| 7300 | </dict> | |
| 7301 | </array> | |
| 7302 | </dict> | |
| 7303 | <dict> | |
| 7304 | <key>begin</key> | |
| 7305 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:rscript|splus|(?:.*\.)?(?:r|rd|rsx)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7306 | <key>beginCaptures</key> | |
| 7307 | <dict> | |
| 7308 | <key>1</key> | |
| 7309 | <dict> | |
| 7310 | <key>name</key> | |
| 7311 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7312 | </dict> | |
| 7313 | <key>2</key> | |
| 7314 | <dict> | |
| 7315 | <key>name</key> | |
| 7316 | <string>entity.name.function.mdx</string> | |
| 7317 | <key>patterns</key> | |
| 7318 | <array> | |
| 7319 | <dict> | |
| 7320 | <key>include</key> | |
| 7321 | <string>#markdown-string</string> | |
| 7322 | </dict> | |
| 7323 | </array> | |
| 7324 | </dict> | |
| 7325 | <key>3</key> | |
| 7326 | <dict> | |
| 7327 | <key>patterns</key> | |
| 7328 | <array> | |
| 7329 | <dict> | |
| 7330 | <key>include</key> | |
| 7331 | <string>#markdown-string</string> | |
| 7332 | </dict> | |
| 7333 | </array> | |
| 7334 | </dict> | |
| 7335 | </dict> | |
| 7336 | <key>end</key> | |
| 7337 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7338 | <key>endCaptures</key> | |
| 7339 | <dict> | |
| 7340 | <key>1</key> | |
| 7341 | <dict> | |
| 7342 | <key>name</key> | |
| 7343 | <string>string.other.end.code.fenced.mdx</string> | |
| 7344 | </dict> | |
| 7345 | </dict> | |
| 7346 | <key>name</key> | |
| 7347 | <string>markup.code.r.mdx</string> | |
| 7348 | <key>patterns</key> | |
| 7349 | <array> | |
| 7350 | <dict> | |
| 7351 | <key>begin</key> | |
| 7352 | <string>(^|\G)(\s*)(.*)</string> | |
| 7353 | <key>while</key> | |
| 7354 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7355 | <key>contentName</key> | |
| 7356 | <string>meta.embedded.r</string> | |
| 7357 | <key>patterns</key> | |
| 7358 | <array> | |
| 7359 | <dict> | |
| 7360 | <key>include</key> | |
| 7361 | <string>source.r</string> | |
| 7362 | </dict> | |
| 7363 | </array> | |
| 7364 | </dict> | |
| 7365 | </array> | |
| 7366 | </dict> | |
| 7367 | </array> | |
| 7368 | </dict> | |
| 7369 | <key>commonmark-code-fenced-raku</key> | |
| 7370 | <dict> | |
| 7371 | <key>patterns</key> | |
| 7372 | <array> | |
| 7373 | <dict> | |
| 7374 | <key>begin</key> | |
| 7375 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:perl\x2d6|perl6|pod\x2d6|(?:.*\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7376 | <key>beginCaptures</key> | |
| 7377 | <dict> | |
| 7378 | <key>1</key> | |
| 7379 | <dict> | |
| 7380 | <key>name</key> | |
| 7381 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7382 | </dict> | |
| 7383 | <key>2</key> | |
| 7384 | <dict> | |
| 7385 | <key>name</key> | |
| 7386 | <string>entity.name.function.mdx</string> | |
| 7387 | <key>patterns</key> | |
| 7388 | <array> | |
| 7389 | <dict> | |
| 7390 | <key>include</key> | |
| 7391 | <string>#markdown-string</string> | |
| 7392 | </dict> | |
| 7393 | </array> | |
| 7394 | </dict> | |
| 7395 | <key>3</key> | |
| 7396 | <dict> | |
| 7397 | <key>patterns</key> | |
| 7398 | <array> | |
| 7399 | <dict> | |
| 7400 | <key>include</key> | |
| 7401 | <string>#markdown-string</string> | |
| 7402 | </dict> | |
| 7403 | </array> | |
| 7404 | </dict> | |
| 7405 | </dict> | |
| 7406 | <key>end</key> | |
| 7407 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7408 | <key>endCaptures</key> | |
| 7409 | <dict> | |
| 7410 | <key>1</key> | |
| 7411 | <dict> | |
| 7412 | <key>name</key> | |
| 7413 | <string>string.other.end.code.fenced.mdx</string> | |
| 7414 | </dict> | |
| 7415 | </dict> | |
| 7416 | <key>name</key> | |
| 7417 | <string>markup.code.raku.mdx</string> | |
| 7418 | <key>patterns</key> | |
| 7419 | <array> | |
| 7420 | <dict> | |
| 7421 | <key>begin</key> | |
| 7422 | <string>(^|\G)(\s*)(.*)</string> | |
| 7423 | <key>while</key> | |
| 7424 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7425 | <key>contentName</key> | |
| 7426 | <string>meta.embedded.raku</string> | |
| 7427 | <key>patterns</key> | |
| 7428 | <array> | |
| 7429 | <dict> | |
| 7430 | <key>include</key> | |
| 7431 | <string>source.raku</string> | |
| 7432 | </dict> | |
| 7433 | </array> | |
| 7434 | </dict> | |
| 7435 | </array> | |
| 7436 | </dict> | |
| 7437 | <dict> | |
| 7438 | <key>begin</key> | |
| 7439 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:perl\x2d6|perl6|pod\x2d6|(?:.*\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7440 | <key>beginCaptures</key> | |
| 7441 | <dict> | |
| 7442 | <key>1</key> | |
| 7443 | <dict> | |
| 7444 | <key>name</key> | |
| 7445 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7446 | </dict> | |
| 7447 | <key>2</key> | |
| 7448 | <dict> | |
| 7449 | <key>name</key> | |
| 7450 | <string>entity.name.function.mdx</string> | |
| 7451 | <key>patterns</key> | |
| 7452 | <array> | |
| 7453 | <dict> | |
| 7454 | <key>include</key> | |
| 7455 | <string>#markdown-string</string> | |
| 7456 | </dict> | |
| 7457 | </array> | |
| 7458 | </dict> | |
| 7459 | <key>3</key> | |
| 7460 | <dict> | |
| 7461 | <key>patterns</key> | |
| 7462 | <array> | |
| 7463 | <dict> | |
| 7464 | <key>include</key> | |
| 7465 | <string>#markdown-string</string> | |
| 7466 | </dict> | |
| 7467 | </array> | |
| 7468 | </dict> | |
| 7469 | </dict> | |
| 7470 | <key>end</key> | |
| 7471 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7472 | <key>endCaptures</key> | |
| 7473 | <dict> | |
| 7474 | <key>1</key> | |
| 7475 | <dict> | |
| 7476 | <key>name</key> | |
| 7477 | <string>string.other.end.code.fenced.mdx</string> | |
| 7478 | </dict> | |
| 7479 | </dict> | |
| 7480 | <key>name</key> | |
| 7481 | <string>markup.code.raku.mdx</string> | |
| 7482 | <key>patterns</key> | |
| 7483 | <array> | |
| 7484 | <dict> | |
| 7485 | <key>begin</key> | |
| 7486 | <string>(^|\G)(\s*)(.*)</string> | |
| 7487 | <key>while</key> | |
| 7488 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7489 | <key>contentName</key> | |
| 7490 | <string>meta.embedded.raku</string> | |
| 7491 | <key>patterns</key> | |
| 7492 | <array> | |
| 7493 | <dict> | |
| 7494 | <key>include</key> | |
| 7495 | <string>source.raku</string> | |
| 7496 | </dict> | |
| 7497 | </array> | |
| 7498 | </dict> | |
| 7499 | </array> | |
| 7500 | </dict> | |
| 7501 | </array> | |
| 7502 | </dict> | |
| 7503 | <key>commonmark-code-fenced-ruby</key> | |
| 7504 | <dict> | |
| 7505 | <key>patterns</key> | |
| 7506 | <array> | |
| 7507 | <dict> | |
| 7508 | <key>begin</key> | |
| 7509 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:jruby|macruby|(?:.*\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7510 | <key>beginCaptures</key> | |
| 7511 | <dict> | |
| 7512 | <key>1</key> | |
| 7513 | <dict> | |
| 7514 | <key>name</key> | |
| 7515 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7516 | </dict> | |
| 7517 | <key>2</key> | |
| 7518 | <dict> | |
| 7519 | <key>name</key> | |
| 7520 | <string>entity.name.function.mdx</string> | |
| 7521 | <key>patterns</key> | |
| 7522 | <array> | |
| 7523 | <dict> | |
| 7524 | <key>include</key> | |
| 7525 | <string>#markdown-string</string> | |
| 7526 | </dict> | |
| 7527 | </array> | |
| 7528 | </dict> | |
| 7529 | <key>3</key> | |
| 7530 | <dict> | |
| 7531 | <key>patterns</key> | |
| 7532 | <array> | |
| 7533 | <dict> | |
| 7534 | <key>include</key> | |
| 7535 | <string>#markdown-string</string> | |
| 7536 | </dict> | |
| 7537 | </array> | |
| 7538 | </dict> | |
| 7539 | </dict> | |
| 7540 | <key>end</key> | |
| 7541 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7542 | <key>endCaptures</key> | |
| 7543 | <dict> | |
| 7544 | <key>1</key> | |
| 7545 | <dict> | |
| 7546 | <key>name</key> | |
| 7547 | <string>string.other.end.code.fenced.mdx</string> | |
| 7548 | </dict> | |
| 7549 | </dict> | |
| 7550 | <key>name</key> | |
| 7551 | <string>markup.code.ruby.mdx</string> | |
| 7552 | <key>patterns</key> | |
| 7553 | <array> | |
| 7554 | <dict> | |
| 7555 | <key>begin</key> | |
| 7556 | <string>(^|\G)(\s*)(.*)</string> | |
| 7557 | <key>while</key> | |
| 7558 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7559 | <key>contentName</key> | |
| 7560 | <string>meta.embedded.ruby</string> | |
| 7561 | <key>patterns</key> | |
| 7562 | <array> | |
| 7563 | <dict> | |
| 7564 | <key>include</key> | |
| 7565 | <string>source.ruby</string> | |
| 7566 | </dict> | |
| 7567 | </array> | |
| 7568 | </dict> | |
| 7569 | </array> | |
| 7570 | </dict> | |
| 7571 | <dict> | |
| 7572 | <key>begin</key> | |
| 7573 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:jruby|macruby|(?:.*\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7574 | <key>beginCaptures</key> | |
| 7575 | <dict> | |
| 7576 | <key>1</key> | |
| 7577 | <dict> | |
| 7578 | <key>name</key> | |
| 7579 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7580 | </dict> | |
| 7581 | <key>2</key> | |
| 7582 | <dict> | |
| 7583 | <key>name</key> | |
| 7584 | <string>entity.name.function.mdx</string> | |
| 7585 | <key>patterns</key> | |
| 7586 | <array> | |
| 7587 | <dict> | |
| 7588 | <key>include</key> | |
| 7589 | <string>#markdown-string</string> | |
| 7590 | </dict> | |
| 7591 | </array> | |
| 7592 | </dict> | |
| 7593 | <key>3</key> | |
| 7594 | <dict> | |
| 7595 | <key>patterns</key> | |
| 7596 | <array> | |
| 7597 | <dict> | |
| 7598 | <key>include</key> | |
| 7599 | <string>#markdown-string</string> | |
| 7600 | </dict> | |
| 7601 | </array> | |
| 7602 | </dict> | |
| 7603 | </dict> | |
| 7604 | <key>end</key> | |
| 7605 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7606 | <key>endCaptures</key> | |
| 7607 | <dict> | |
| 7608 | <key>1</key> | |
| 7609 | <dict> | |
| 7610 | <key>name</key> | |
| 7611 | <string>string.other.end.code.fenced.mdx</string> | |
| 7612 | </dict> | |
| 7613 | </dict> | |
| 7614 | <key>name</key> | |
| 7615 | <string>markup.code.ruby.mdx</string> | |
| 7616 | <key>patterns</key> | |
| 7617 | <array> | |
| 7618 | <dict> | |
| 7619 | <key>begin</key> | |
| 7620 | <string>(^|\G)(\s*)(.*)</string> | |
| 7621 | <key>while</key> | |
| 7622 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7623 | <key>contentName</key> | |
| 7624 | <string>meta.embedded.ruby</string> | |
| 7625 | <key>patterns</key> | |
| 7626 | <array> | |
| 7627 | <dict> | |
| 7628 | <key>include</key> | |
| 7629 | <string>source.ruby</string> | |
| 7630 | </dict> | |
| 7631 | </array> | |
| 7632 | </dict> | |
| 7633 | </array> | |
| 7634 | </dict> | |
| 7635 | </array> | |
| 7636 | </dict> | |
| 7637 | <key>commonmark-code-fenced-rust</key> | |
| 7638 | <dict> | |
| 7639 | <key>patterns</key> | |
| 7640 | <array> | |
| 7641 | <dict> | |
| 7642 | <key>begin</key> | |
| 7643 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:rust|(?:.*\.)?(?:rs|rs\.in)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7644 | <key>beginCaptures</key> | |
| 7645 | <dict> | |
| 7646 | <key>1</key> | |
| 7647 | <dict> | |
| 7648 | <key>name</key> | |
| 7649 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7650 | </dict> | |
| 7651 | <key>2</key> | |
| 7652 | <dict> | |
| 7653 | <key>name</key> | |
| 7654 | <string>entity.name.function.mdx</string> | |
| 7655 | <key>patterns</key> | |
| 7656 | <array> | |
| 7657 | <dict> | |
| 7658 | <key>include</key> | |
| 7659 | <string>#markdown-string</string> | |
| 7660 | </dict> | |
| 7661 | </array> | |
| 7662 | </dict> | |
| 7663 | <key>3</key> | |
| 7664 | <dict> | |
| 7665 | <key>patterns</key> | |
| 7666 | <array> | |
| 7667 | <dict> | |
| 7668 | <key>include</key> | |
| 7669 | <string>#markdown-string</string> | |
| 7670 | </dict> | |
| 7671 | </array> | |
| 7672 | </dict> | |
| 7673 | </dict> | |
| 7674 | <key>end</key> | |
| 7675 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7676 | <key>endCaptures</key> | |
| 7677 | <dict> | |
| 7678 | <key>1</key> | |
| 7679 | <dict> | |
| 7680 | <key>name</key> | |
| 7681 | <string>string.other.end.code.fenced.mdx</string> | |
| 7682 | </dict> | |
| 7683 | </dict> | |
| 7684 | <key>name</key> | |
| 7685 | <string>markup.code.rust.mdx</string> | |
| 7686 | <key>patterns</key> | |
| 7687 | <array> | |
| 7688 | <dict> | |
| 7689 | <key>begin</key> | |
| 7690 | <string>(^|\G)(\s*)(.*)</string> | |
| 7691 | <key>while</key> | |
| 7692 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7693 | <key>contentName</key> | |
| 7694 | <string>meta.embedded.rust</string> | |
| 7695 | <key>patterns</key> | |
| 7696 | <array> | |
| 7697 | <dict> | |
| 7698 | <key>include</key> | |
| 7699 | <string>source.rust</string> | |
| 7700 | </dict> | |
| 7701 | </array> | |
| 7702 | </dict> | |
| 7703 | </array> | |
| 7704 | </dict> | |
| 7705 | <dict> | |
| 7706 | <key>begin</key> | |
| 7707 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:rust|(?:.*\.)?(?:rs|rs\.in)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7708 | <key>beginCaptures</key> | |
| 7709 | <dict> | |
| 7710 | <key>1</key> | |
| 7711 | <dict> | |
| 7712 | <key>name</key> | |
| 7713 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7714 | </dict> | |
| 7715 | <key>2</key> | |
| 7716 | <dict> | |
| 7717 | <key>name</key> | |
| 7718 | <string>entity.name.function.mdx</string> | |
| 7719 | <key>patterns</key> | |
| 7720 | <array> | |
| 7721 | <dict> | |
| 7722 | <key>include</key> | |
| 7723 | <string>#markdown-string</string> | |
| 7724 | </dict> | |
| 7725 | </array> | |
| 7726 | </dict> | |
| 7727 | <key>3</key> | |
| 7728 | <dict> | |
| 7729 | <key>patterns</key> | |
| 7730 | <array> | |
| 7731 | <dict> | |
| 7732 | <key>include</key> | |
| 7733 | <string>#markdown-string</string> | |
| 7734 | </dict> | |
| 7735 | </array> | |
| 7736 | </dict> | |
| 7737 | </dict> | |
| 7738 | <key>end</key> | |
| 7739 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7740 | <key>endCaptures</key> | |
| 7741 | <dict> | |
| 7742 | <key>1</key> | |
| 7743 | <dict> | |
| 7744 | <key>name</key> | |
| 7745 | <string>string.other.end.code.fenced.mdx</string> | |
| 7746 | </dict> | |
| 7747 | </dict> | |
| 7748 | <key>name</key> | |
| 7749 | <string>markup.code.rust.mdx</string> | |
| 7750 | <key>patterns</key> | |
| 7751 | <array> | |
| 7752 | <dict> | |
| 7753 | <key>begin</key> | |
| 7754 | <string>(^|\G)(\s*)(.*)</string> | |
| 7755 | <key>while</key> | |
| 7756 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7757 | <key>contentName</key> | |
| 7758 | <string>meta.embedded.rust</string> | |
| 7759 | <key>patterns</key> | |
| 7760 | <array> | |
| 7761 | <dict> | |
| 7762 | <key>include</key> | |
| 7763 | <string>source.rust</string> | |
| 7764 | </dict> | |
| 7765 | </array> | |
| 7766 | </dict> | |
| 7767 | </array> | |
| 7768 | </dict> | |
| 7769 | </array> | |
| 7770 | </dict> | |
| 7771 | <key>commonmark-code-fenced-scala</key> | |
| 7772 | <dict> | |
| 7773 | <key>patterns</key> | |
| 7774 | <array> | |
| 7775 | <dict> | |
| 7776 | <key>begin</key> | |
| 7777 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?(?:kojo|sbt|sc|scala)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7778 | <key>beginCaptures</key> | |
| 7779 | <dict> | |
| 7780 | <key>1</key> | |
| 7781 | <dict> | |
| 7782 | <key>name</key> | |
| 7783 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7784 | </dict> | |
| 7785 | <key>2</key> | |
| 7786 | <dict> | |
| 7787 | <key>name</key> | |
| 7788 | <string>entity.name.function.mdx</string> | |
| 7789 | <key>patterns</key> | |
| 7790 | <array> | |
| 7791 | <dict> | |
| 7792 | <key>include</key> | |
| 7793 | <string>#markdown-string</string> | |
| 7794 | </dict> | |
| 7795 | </array> | |
| 7796 | </dict> | |
| 7797 | <key>3</key> | |
| 7798 | <dict> | |
| 7799 | <key>patterns</key> | |
| 7800 | <array> | |
| 7801 | <dict> | |
| 7802 | <key>include</key> | |
| 7803 | <string>#markdown-string</string> | |
| 7804 | </dict> | |
| 7805 | </array> | |
| 7806 | </dict> | |
| 7807 | </dict> | |
| 7808 | <key>end</key> | |
| 7809 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7810 | <key>endCaptures</key> | |
| 7811 | <dict> | |
| 7812 | <key>1</key> | |
| 7813 | <dict> | |
| 7814 | <key>name</key> | |
| 7815 | <string>string.other.end.code.fenced.mdx</string> | |
| 7816 | </dict> | |
| 7817 | </dict> | |
| 7818 | <key>name</key> | |
| 7819 | <string>markup.code.scala.mdx</string> | |
| 7820 | <key>patterns</key> | |
| 7821 | <array> | |
| 7822 | <dict> | |
| 7823 | <key>begin</key> | |
| 7824 | <string>(^|\G)(\s*)(.*)</string> | |
| 7825 | <key>while</key> | |
| 7826 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7827 | <key>contentName</key> | |
| 7828 | <string>meta.embedded.scala</string> | |
| 7829 | <key>patterns</key> | |
| 7830 | <array> | |
| 7831 | <dict> | |
| 7832 | <key>include</key> | |
| 7833 | <string>source.scala</string> | |
| 7834 | </dict> | |
| 7835 | </array> | |
| 7836 | </dict> | |
| 7837 | </array> | |
| 7838 | </dict> | |
| 7839 | <dict> | |
| 7840 | <key>begin</key> | |
| 7841 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?(?:kojo|sbt|sc|scala)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7842 | <key>beginCaptures</key> | |
| 7843 | <dict> | |
| 7844 | <key>1</key> | |
| 7845 | <dict> | |
| 7846 | <key>name</key> | |
| 7847 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7848 | </dict> | |
| 7849 | <key>2</key> | |
| 7850 | <dict> | |
| 7851 | <key>name</key> | |
| 7852 | <string>entity.name.function.mdx</string> | |
| 7853 | <key>patterns</key> | |
| 7854 | <array> | |
| 7855 | <dict> | |
| 7856 | <key>include</key> | |
| 7857 | <string>#markdown-string</string> | |
| 7858 | </dict> | |
| 7859 | </array> | |
| 7860 | </dict> | |
| 7861 | <key>3</key> | |
| 7862 | <dict> | |
| 7863 | <key>patterns</key> | |
| 7864 | <array> | |
| 7865 | <dict> | |
| 7866 | <key>include</key> | |
| 7867 | <string>#markdown-string</string> | |
| 7868 | </dict> | |
| 7869 | </array> | |
| 7870 | </dict> | |
| 7871 | </dict> | |
| 7872 | <key>end</key> | |
| 7873 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7874 | <key>endCaptures</key> | |
| 7875 | <dict> | |
| 7876 | <key>1</key> | |
| 7877 | <dict> | |
| 7878 | <key>name</key> | |
| 7879 | <string>string.other.end.code.fenced.mdx</string> | |
| 7880 | </dict> | |
| 7881 | </dict> | |
| 7882 | <key>name</key> | |
| 7883 | <string>markup.code.scala.mdx</string> | |
| 7884 | <key>patterns</key> | |
| 7885 | <array> | |
| 7886 | <dict> | |
| 7887 | <key>begin</key> | |
| 7888 | <string>(^|\G)(\s*)(.*)</string> | |
| 7889 | <key>while</key> | |
| 7890 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7891 | <key>contentName</key> | |
| 7892 | <string>meta.embedded.scala</string> | |
| 7893 | <key>patterns</key> | |
| 7894 | <array> | |
| 7895 | <dict> | |
| 7896 | <key>include</key> | |
| 7897 | <string>source.scala</string> | |
| 7898 | </dict> | |
| 7899 | </array> | |
| 7900 | </dict> | |
| 7901 | </array> | |
| 7902 | </dict> | |
| 7903 | </array> | |
| 7904 | </dict> | |
| 7905 | <key>commonmark-code-fenced-scss</key> | |
| 7906 | <dict> | |
| 7907 | <key>patterns</key> | |
| 7908 | <array> | |
| 7909 | <dict> | |
| 7910 | <key>begin</key> | |
| 7911 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?scss))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 7912 | <key>beginCaptures</key> | |
| 7913 | <dict> | |
| 7914 | <key>1</key> | |
| 7915 | <dict> | |
| 7916 | <key>name</key> | |
| 7917 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7918 | </dict> | |
| 7919 | <key>2</key> | |
| 7920 | <dict> | |
| 7921 | <key>name</key> | |
| 7922 | <string>entity.name.function.mdx</string> | |
| 7923 | <key>patterns</key> | |
| 7924 | <array> | |
| 7925 | <dict> | |
| 7926 | <key>include</key> | |
| 7927 | <string>#markdown-string</string> | |
| 7928 | </dict> | |
| 7929 | </array> | |
| 7930 | </dict> | |
| 7931 | <key>3</key> | |
| 7932 | <dict> | |
| 7933 | <key>patterns</key> | |
| 7934 | <array> | |
| 7935 | <dict> | |
| 7936 | <key>include</key> | |
| 7937 | <string>#markdown-string</string> | |
| 7938 | </dict> | |
| 7939 | </array> | |
| 7940 | </dict> | |
| 7941 | </dict> | |
| 7942 | <key>end</key> | |
| 7943 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 7944 | <key>endCaptures</key> | |
| 7945 | <dict> | |
| 7946 | <key>1</key> | |
| 7947 | <dict> | |
| 7948 | <key>name</key> | |
| 7949 | <string>string.other.end.code.fenced.mdx</string> | |
| 7950 | </dict> | |
| 7951 | </dict> | |
| 7952 | <key>name</key> | |
| 7953 | <string>markup.code.scss.mdx</string> | |
| 7954 | <key>patterns</key> | |
| 7955 | <array> | |
| 7956 | <dict> | |
| 7957 | <key>begin</key> | |
| 7958 | <string>(^|\G)(\s*)(.*)</string> | |
| 7959 | <key>while</key> | |
| 7960 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 7961 | <key>contentName</key> | |
| 7962 | <string>meta.embedded.scss</string> | |
| 7963 | <key>patterns</key> | |
| 7964 | <array> | |
| 7965 | <dict> | |
| 7966 | <key>include</key> | |
| 7967 | <string>source.css.scss</string> | |
| 7968 | </dict> | |
| 7969 | </array> | |
| 7970 | </dict> | |
| 7971 | </array> | |
| 7972 | </dict> | |
| 7973 | <dict> | |
| 7974 | <key>begin</key> | |
| 7975 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?scss))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 7976 | <key>beginCaptures</key> | |
| 7977 | <dict> | |
| 7978 | <key>1</key> | |
| 7979 | <dict> | |
| 7980 | <key>name</key> | |
| 7981 | <string>string.other.begin.code.fenced.mdx</string> | |
| 7982 | </dict> | |
| 7983 | <key>2</key> | |
| 7984 | <dict> | |
| 7985 | <key>name</key> | |
| 7986 | <string>entity.name.function.mdx</string> | |
| 7987 | <key>patterns</key> | |
| 7988 | <array> | |
| 7989 | <dict> | |
| 7990 | <key>include</key> | |
| 7991 | <string>#markdown-string</string> | |
| 7992 | </dict> | |
| 7993 | </array> | |
| 7994 | </dict> | |
| 7995 | <key>3</key> | |
| 7996 | <dict> | |
| 7997 | <key>patterns</key> | |
| 7998 | <array> | |
| 7999 | <dict> | |
| 8000 | <key>include</key> | |
| 8001 | <string>#markdown-string</string> | |
| 8002 | </dict> | |
| 8003 | </array> | |
| 8004 | </dict> | |
| 8005 | </dict> | |
| 8006 | <key>end</key> | |
| 8007 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8008 | <key>endCaptures</key> | |
| 8009 | <dict> | |
| 8010 | <key>1</key> | |
| 8011 | <dict> | |
| 8012 | <key>name</key> | |
| 8013 | <string>string.other.end.code.fenced.mdx</string> | |
| 8014 | </dict> | |
| 8015 | </dict> | |
| 8016 | <key>name</key> | |
| 8017 | <string>markup.code.scss.mdx</string> | |
| 8018 | <key>patterns</key> | |
| 8019 | <array> | |
| 8020 | <dict> | |
| 8021 | <key>begin</key> | |
| 8022 | <string>(^|\G)(\s*)(.*)</string> | |
| 8023 | <key>while</key> | |
| 8024 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8025 | <key>contentName</key> | |
| 8026 | <string>meta.embedded.scss</string> | |
| 8027 | <key>patterns</key> | |
| 8028 | <array> | |
| 8029 | <dict> | |
| 8030 | <key>include</key> | |
| 8031 | <string>source.css.scss</string> | |
| 8032 | </dict> | |
| 8033 | </array> | |
| 8034 | </dict> | |
| 8035 | </array> | |
| 8036 | </dict> | |
| 8037 | </array> | |
| 8038 | </dict> | |
| 8039 | <key>commonmark-code-fenced-shell</key> | |
| 8040 | <dict> | |
| 8041 | <key>patterns</key> | |
| 8042 | <array> | |
| 8043 | <dict> | |
| 8044 | <key>begin</key> | |
| 8045 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:abuild|alpine\x2dabuild|apkbuild|envrc|gentoo\x2debuild|gentoo\x2declass|openrc|openrc\x2drunscript|shell|shell\x2dscript|(?:.*\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\.in|tcsh|tmux|tool|zsh|zsh\x2dtheme)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8046 | <key>beginCaptures</key> | |
| 8047 | <dict> | |
| 8048 | <key>1</key> | |
| 8049 | <dict> | |
| 8050 | <key>name</key> | |
| 8051 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8052 | </dict> | |
| 8053 | <key>2</key> | |
| 8054 | <dict> | |
| 8055 | <key>name</key> | |
| 8056 | <string>entity.name.function.mdx</string> | |
| 8057 | <key>patterns</key> | |
| 8058 | <array> | |
| 8059 | <dict> | |
| 8060 | <key>include</key> | |
| 8061 | <string>#markdown-string</string> | |
| 8062 | </dict> | |
| 8063 | </array> | |
| 8064 | </dict> | |
| 8065 | <key>3</key> | |
| 8066 | <dict> | |
| 8067 | <key>patterns</key> | |
| 8068 | <array> | |
| 8069 | <dict> | |
| 8070 | <key>include</key> | |
| 8071 | <string>#markdown-string</string> | |
| 8072 | </dict> | |
| 8073 | </array> | |
| 8074 | </dict> | |
| 8075 | </dict> | |
| 8076 | <key>end</key> | |
| 8077 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8078 | <key>endCaptures</key> | |
| 8079 | <dict> | |
| 8080 | <key>1</key> | |
| 8081 | <dict> | |
| 8082 | <key>name</key> | |
| 8083 | <string>string.other.end.code.fenced.mdx</string> | |
| 8084 | </dict> | |
| 8085 | </dict> | |
| 8086 | <key>name</key> | |
| 8087 | <string>markup.code.shell.mdx</string> | |
| 8088 | <key>patterns</key> | |
| 8089 | <array> | |
| 8090 | <dict> | |
| 8091 | <key>begin</key> | |
| 8092 | <string>(^|\G)(\s*)(.*)</string> | |
| 8093 | <key>while</key> | |
| 8094 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8095 | <key>contentName</key> | |
| 8096 | <string>meta.embedded.shell</string> | |
| 8097 | <key>patterns</key> | |
| 8098 | <array> | |
| 8099 | <dict> | |
| 8100 | <key>include</key> | |
| 8101 | <string>source.shell</string> | |
| 8102 | </dict> | |
| 8103 | </array> | |
| 8104 | </dict> | |
| 8105 | </array> | |
| 8106 | </dict> | |
| 8107 | <dict> | |
| 8108 | <key>begin</key> | |
| 8109 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:abuild|alpine\x2dabuild|apkbuild|envrc|gentoo\x2debuild|gentoo\x2declass|openrc|openrc\x2drunscript|shell|shell\x2dscript|(?:.*\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\.in|tcsh|tmux|tool|zsh|zsh\x2dtheme)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8110 | <key>beginCaptures</key> | |
| 8111 | <dict> | |
| 8112 | <key>1</key> | |
| 8113 | <dict> | |
| 8114 | <key>name</key> | |
| 8115 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8116 | </dict> | |
| 8117 | <key>2</key> | |
| 8118 | <dict> | |
| 8119 | <key>name</key> | |
| 8120 | <string>entity.name.function.mdx</string> | |
| 8121 | <key>patterns</key> | |
| 8122 | <array> | |
| 8123 | <dict> | |
| 8124 | <key>include</key> | |
| 8125 | <string>#markdown-string</string> | |
| 8126 | </dict> | |
| 8127 | </array> | |
| 8128 | </dict> | |
| 8129 | <key>3</key> | |
| 8130 | <dict> | |
| 8131 | <key>patterns</key> | |
| 8132 | <array> | |
| 8133 | <dict> | |
| 8134 | <key>include</key> | |
| 8135 | <string>#markdown-string</string> | |
| 8136 | </dict> | |
| 8137 | </array> | |
| 8138 | </dict> | |
| 8139 | </dict> | |
| 8140 | <key>end</key> | |
| 8141 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8142 | <key>endCaptures</key> | |
| 8143 | <dict> | |
| 8144 | <key>1</key> | |
| 8145 | <dict> | |
| 8146 | <key>name</key> | |
| 8147 | <string>string.other.end.code.fenced.mdx</string> | |
| 8148 | </dict> | |
| 8149 | </dict> | |
| 8150 | <key>name</key> | |
| 8151 | <string>markup.code.shell.mdx</string> | |
| 8152 | <key>patterns</key> | |
| 8153 | <array> | |
| 8154 | <dict> | |
| 8155 | <key>begin</key> | |
| 8156 | <string>(^|\G)(\s*)(.*)</string> | |
| 8157 | <key>while</key> | |
| 8158 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8159 | <key>contentName</key> | |
| 8160 | <string>meta.embedded.shell</string> | |
| 8161 | <key>patterns</key> | |
| 8162 | <array> | |
| 8163 | <dict> | |
| 8164 | <key>include</key> | |
| 8165 | <string>source.shell</string> | |
| 8166 | </dict> | |
| 8167 | </array> | |
| 8168 | </dict> | |
| 8169 | </array> | |
| 8170 | </dict> | |
| 8171 | </array> | |
| 8172 | </dict> | |
| 8173 | <key>commonmark-code-fenced-shell-session</key> | |
| 8174 | <dict> | |
| 8175 | <key>patterns</key> | |
| 8176 | <array> | |
| 8177 | <dict> | |
| 8178 | <key>begin</key> | |
| 8179 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:bash\x2dsession|console|shellsession|(?:.*\.)?sh\x2dsession))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8180 | <key>beginCaptures</key> | |
| 8181 | <dict> | |
| 8182 | <key>1</key> | |
| 8183 | <dict> | |
| 8184 | <key>name</key> | |
| 8185 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8186 | </dict> | |
| 8187 | <key>2</key> | |
| 8188 | <dict> | |
| 8189 | <key>name</key> | |
| 8190 | <string>entity.name.function.mdx</string> | |
| 8191 | <key>patterns</key> | |
| 8192 | <array> | |
| 8193 | <dict> | |
| 8194 | <key>include</key> | |
| 8195 | <string>#markdown-string</string> | |
| 8196 | </dict> | |
| 8197 | </array> | |
| 8198 | </dict> | |
| 8199 | <key>3</key> | |
| 8200 | <dict> | |
| 8201 | <key>patterns</key> | |
| 8202 | <array> | |
| 8203 | <dict> | |
| 8204 | <key>include</key> | |
| 8205 | <string>#markdown-string</string> | |
| 8206 | </dict> | |
| 8207 | </array> | |
| 8208 | </dict> | |
| 8209 | </dict> | |
| 8210 | <key>end</key> | |
| 8211 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8212 | <key>endCaptures</key> | |
| 8213 | <dict> | |
| 8214 | <key>1</key> | |
| 8215 | <dict> | |
| 8216 | <key>name</key> | |
| 8217 | <string>string.other.end.code.fenced.mdx</string> | |
| 8218 | </dict> | |
| 8219 | </dict> | |
| 8220 | <key>name</key> | |
| 8221 | <string>markup.code.shell-session.mdx</string> | |
| 8222 | <key>patterns</key> | |
| 8223 | <array> | |
| 8224 | <dict> | |
| 8225 | <key>begin</key> | |
| 8226 | <string>(^|\G)(\s*)(.*)</string> | |
| 8227 | <key>while</key> | |
| 8228 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8229 | <key>contentName</key> | |
| 8230 | <string>meta.embedded.shell-session</string> | |
| 8231 | <key>patterns</key> | |
| 8232 | <array> | |
| 8233 | <dict> | |
| 8234 | <key>include</key> | |
| 8235 | <string>text.shell-session</string> | |
| 8236 | </dict> | |
| 8237 | </array> | |
| 8238 | </dict> | |
| 8239 | </array> | |
| 8240 | </dict> | |
| 8241 | <dict> | |
| 8242 | <key>begin</key> | |
| 8243 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:bash\x2dsession|console|shellsession|(?:.*\.)?sh\x2dsession))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8244 | <key>beginCaptures</key> | |
| 8245 | <dict> | |
| 8246 | <key>1</key> | |
| 8247 | <dict> | |
| 8248 | <key>name</key> | |
| 8249 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8250 | </dict> | |
| 8251 | <key>2</key> | |
| 8252 | <dict> | |
| 8253 | <key>name</key> | |
| 8254 | <string>entity.name.function.mdx</string> | |
| 8255 | <key>patterns</key> | |
| 8256 | <array> | |
| 8257 | <dict> | |
| 8258 | <key>include</key> | |
| 8259 | <string>#markdown-string</string> | |
| 8260 | </dict> | |
| 8261 | </array> | |
| 8262 | </dict> | |
| 8263 | <key>3</key> | |
| 8264 | <dict> | |
| 8265 | <key>patterns</key> | |
| 8266 | <array> | |
| 8267 | <dict> | |
| 8268 | <key>include</key> | |
| 8269 | <string>#markdown-string</string> | |
| 8270 | </dict> | |
| 8271 | </array> | |
| 8272 | </dict> | |
| 8273 | </dict> | |
| 8274 | <key>end</key> | |
| 8275 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8276 | <key>endCaptures</key> | |
| 8277 | <dict> | |
| 8278 | <key>1</key> | |
| 8279 | <dict> | |
| 8280 | <key>name</key> | |
| 8281 | <string>string.other.end.code.fenced.mdx</string> | |
| 8282 | </dict> | |
| 8283 | </dict> | |
| 8284 | <key>name</key> | |
| 8285 | <string>markup.code.shell-session.mdx</string> | |
| 8286 | <key>patterns</key> | |
| 8287 | <array> | |
| 8288 | <dict> | |
| 8289 | <key>begin</key> | |
| 8290 | <string>(^|\G)(\s*)(.*)</string> | |
| 8291 | <key>while</key> | |
| 8292 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8293 | <key>contentName</key> | |
| 8294 | <string>meta.embedded.shell-session</string> | |
| 8295 | <key>patterns</key> | |
| 8296 | <array> | |
| 8297 | <dict> | |
| 8298 | <key>include</key> | |
| 8299 | <string>text.shell-session</string> | |
| 8300 | </dict> | |
| 8301 | </array> | |
| 8302 | </dict> | |
| 8303 | </array> | |
| 8304 | </dict> | |
| 8305 | </array> | |
| 8306 | </dict> | |
| 8307 | <key>commonmark-code-fenced-sql</key> | |
| 8308 | <dict> | |
| 8309 | <key>patterns</key> | |
| 8310 | <array> | |
| 8311 | <dict> | |
| 8312 | <key>begin</key> | |
| 8313 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:plpgsql|sqlpl|(?:.*\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8314 | <key>beginCaptures</key> | |
| 8315 | <dict> | |
| 8316 | <key>1</key> | |
| 8317 | <dict> | |
| 8318 | <key>name</key> | |
| 8319 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8320 | </dict> | |
| 8321 | <key>2</key> | |
| 8322 | <dict> | |
| 8323 | <key>name</key> | |
| 8324 | <string>entity.name.function.mdx</string> | |
| 8325 | <key>patterns</key> | |
| 8326 | <array> | |
| 8327 | <dict> | |
| 8328 | <key>include</key> | |
| 8329 | <string>#markdown-string</string> | |
| 8330 | </dict> | |
| 8331 | </array> | |
| 8332 | </dict> | |
| 8333 | <key>3</key> | |
| 8334 | <dict> | |
| 8335 | <key>patterns</key> | |
| 8336 | <array> | |
| 8337 | <dict> | |
| 8338 | <key>include</key> | |
| 8339 | <string>#markdown-string</string> | |
| 8340 | </dict> | |
| 8341 | </array> | |
| 8342 | </dict> | |
| 8343 | </dict> | |
| 8344 | <key>end</key> | |
| 8345 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8346 | <key>endCaptures</key> | |
| 8347 | <dict> | |
| 8348 | <key>1</key> | |
| 8349 | <dict> | |
| 8350 | <key>name</key> | |
| 8351 | <string>string.other.end.code.fenced.mdx</string> | |
| 8352 | </dict> | |
| 8353 | </dict> | |
| 8354 | <key>name</key> | |
| 8355 | <string>markup.code.sql.mdx</string> | |
| 8356 | <key>patterns</key> | |
| 8357 | <array> | |
| 8358 | <dict> | |
| 8359 | <key>begin</key> | |
| 8360 | <string>(^|\G)(\s*)(.*)</string> | |
| 8361 | <key>while</key> | |
| 8362 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8363 | <key>contentName</key> | |
| 8364 | <string>meta.embedded.sql</string> | |
| 8365 | <key>patterns</key> | |
| 8366 | <array> | |
| 8367 | <dict> | |
| 8368 | <key>include</key> | |
| 8369 | <string>source.sql</string> | |
| 8370 | </dict> | |
| 8371 | </array> | |
| 8372 | </dict> | |
| 8373 | </array> | |
| 8374 | </dict> | |
| 8375 | <dict> | |
| 8376 | <key>begin</key> | |
| 8377 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:plpgsql|sqlpl|(?:.*\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8378 | <key>beginCaptures</key> | |
| 8379 | <dict> | |
| 8380 | <key>1</key> | |
| 8381 | <dict> | |
| 8382 | <key>name</key> | |
| 8383 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8384 | </dict> | |
| 8385 | <key>2</key> | |
| 8386 | <dict> | |
| 8387 | <key>name</key> | |
| 8388 | <string>entity.name.function.mdx</string> | |
| 8389 | <key>patterns</key> | |
| 8390 | <array> | |
| 8391 | <dict> | |
| 8392 | <key>include</key> | |
| 8393 | <string>#markdown-string</string> | |
| 8394 | </dict> | |
| 8395 | </array> | |
| 8396 | </dict> | |
| 8397 | <key>3</key> | |
| 8398 | <dict> | |
| 8399 | <key>patterns</key> | |
| 8400 | <array> | |
| 8401 | <dict> | |
| 8402 | <key>include</key> | |
| 8403 | <string>#markdown-string</string> | |
| 8404 | </dict> | |
| 8405 | </array> | |
| 8406 | </dict> | |
| 8407 | </dict> | |
| 8408 | <key>end</key> | |
| 8409 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8410 | <key>endCaptures</key> | |
| 8411 | <dict> | |
| 8412 | <key>1</key> | |
| 8413 | <dict> | |
| 8414 | <key>name</key> | |
| 8415 | <string>string.other.end.code.fenced.mdx</string> | |
| 8416 | </dict> | |
| 8417 | </dict> | |
| 8418 | <key>name</key> | |
| 8419 | <string>markup.code.sql.mdx</string> | |
| 8420 | <key>patterns</key> | |
| 8421 | <array> | |
| 8422 | <dict> | |
| 8423 | <key>begin</key> | |
| 8424 | <string>(^|\G)(\s*)(.*)</string> | |
| 8425 | <key>while</key> | |
| 8426 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8427 | <key>contentName</key> | |
| 8428 | <string>meta.embedded.sql</string> | |
| 8429 | <key>patterns</key> | |
| 8430 | <array> | |
| 8431 | <dict> | |
| 8432 | <key>include</key> | |
| 8433 | <string>source.sql</string> | |
| 8434 | </dict> | |
| 8435 | </array> | |
| 8436 | </dict> | |
| 8437 | </array> | |
| 8438 | </dict> | |
| 8439 | </array> | |
| 8440 | </dict> | |
| 8441 | <key>commonmark-code-fenced-svg</key> | |
| 8442 | <dict> | |
| 8443 | <key>patterns</key> | |
| 8444 | <array> | |
| 8445 | <dict> | |
| 8446 | <key>begin</key> | |
| 8447 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?svg))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8448 | <key>beginCaptures</key> | |
| 8449 | <dict> | |
| 8450 | <key>1</key> | |
| 8451 | <dict> | |
| 8452 | <key>name</key> | |
| 8453 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8454 | </dict> | |
| 8455 | <key>2</key> | |
| 8456 | <dict> | |
| 8457 | <key>name</key> | |
| 8458 | <string>entity.name.function.mdx</string> | |
| 8459 | <key>patterns</key> | |
| 8460 | <array> | |
| 8461 | <dict> | |
| 8462 | <key>include</key> | |
| 8463 | <string>#markdown-string</string> | |
| 8464 | </dict> | |
| 8465 | </array> | |
| 8466 | </dict> | |
| 8467 | <key>3</key> | |
| 8468 | <dict> | |
| 8469 | <key>patterns</key> | |
| 8470 | <array> | |
| 8471 | <dict> | |
| 8472 | <key>include</key> | |
| 8473 | <string>#markdown-string</string> | |
| 8474 | </dict> | |
| 8475 | </array> | |
| 8476 | </dict> | |
| 8477 | </dict> | |
| 8478 | <key>end</key> | |
| 8479 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8480 | <key>endCaptures</key> | |
| 8481 | <dict> | |
| 8482 | <key>1</key> | |
| 8483 | <dict> | |
| 8484 | <key>name</key> | |
| 8485 | <string>string.other.end.code.fenced.mdx</string> | |
| 8486 | </dict> | |
| 8487 | </dict> | |
| 8488 | <key>name</key> | |
| 8489 | <string>markup.code.svg.mdx</string> | |
| 8490 | <key>patterns</key> | |
| 8491 | <array> | |
| 8492 | <dict> | |
| 8493 | <key>begin</key> | |
| 8494 | <string>(^|\G)(\s*)(.*)</string> | |
| 8495 | <key>while</key> | |
| 8496 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8497 | <key>contentName</key> | |
| 8498 | <string>meta.embedded.svg</string> | |
| 8499 | <key>patterns</key> | |
| 8500 | <array> | |
| 8501 | <dict> | |
| 8502 | <key>include</key> | |
| 8503 | <string>text.xml.svg</string> | |
| 8504 | </dict> | |
| 8505 | <dict> | |
| 8506 | <key>include</key> | |
| 8507 | <string>text.xml</string> | |
| 8508 | </dict> | |
| 8509 | </array> | |
| 8510 | </dict> | |
| 8511 | </array> | |
| 8512 | </dict> | |
| 8513 | <dict> | |
| 8514 | <key>begin</key> | |
| 8515 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?svg))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8516 | <key>beginCaptures</key> | |
| 8517 | <dict> | |
| 8518 | <key>1</key> | |
| 8519 | <dict> | |
| 8520 | <key>name</key> | |
| 8521 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8522 | </dict> | |
| 8523 | <key>2</key> | |
| 8524 | <dict> | |
| 8525 | <key>name</key> | |
| 8526 | <string>entity.name.function.mdx</string> | |
| 8527 | <key>patterns</key> | |
| 8528 | <array> | |
| 8529 | <dict> | |
| 8530 | <key>include</key> | |
| 8531 | <string>#markdown-string</string> | |
| 8532 | </dict> | |
| 8533 | </array> | |
| 8534 | </dict> | |
| 8535 | <key>3</key> | |
| 8536 | <dict> | |
| 8537 | <key>patterns</key> | |
| 8538 | <array> | |
| 8539 | <dict> | |
| 8540 | <key>include</key> | |
| 8541 | <string>#markdown-string</string> | |
| 8542 | </dict> | |
| 8543 | </array> | |
| 8544 | </dict> | |
| 8545 | </dict> | |
| 8546 | <key>end</key> | |
| 8547 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8548 | <key>endCaptures</key> | |
| 8549 | <dict> | |
| 8550 | <key>1</key> | |
| 8551 | <dict> | |
| 8552 | <key>name</key> | |
| 8553 | <string>string.other.end.code.fenced.mdx</string> | |
| 8554 | </dict> | |
| 8555 | </dict> | |
| 8556 | <key>name</key> | |
| 8557 | <string>markup.code.svg.mdx</string> | |
| 8558 | <key>patterns</key> | |
| 8559 | <array> | |
| 8560 | <dict> | |
| 8561 | <key>begin</key> | |
| 8562 | <string>(^|\G)(\s*)(.*)</string> | |
| 8563 | <key>while</key> | |
| 8564 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8565 | <key>contentName</key> | |
| 8566 | <string>meta.embedded.svg</string> | |
| 8567 | <key>patterns</key> | |
| 8568 | <array> | |
| 8569 | <dict> | |
| 8570 | <key>include</key> | |
| 8571 | <string>text.xml.svg</string> | |
| 8572 | </dict> | |
| 8573 | <dict> | |
| 8574 | <key>include</key> | |
| 8575 | <string>text.xml</string> | |
| 8576 | </dict> | |
| 8577 | </array> | |
| 8578 | </dict> | |
| 8579 | </array> | |
| 8580 | </dict> | |
| 8581 | </array> | |
| 8582 | </dict> | |
| 8583 | <key>commonmark-code-fenced-swift</key> | |
| 8584 | <dict> | |
| 8585 | <key>patterns</key> | |
| 8586 | <array> | |
| 8587 | <dict> | |
| 8588 | <key>begin</key> | |
| 8589 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?swift))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8590 | <key>beginCaptures</key> | |
| 8591 | <dict> | |
| 8592 | <key>1</key> | |
| 8593 | <dict> | |
| 8594 | <key>name</key> | |
| 8595 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8596 | </dict> | |
| 8597 | <key>2</key> | |
| 8598 | <dict> | |
| 8599 | <key>name</key> | |
| 8600 | <string>entity.name.function.mdx</string> | |
| 8601 | <key>patterns</key> | |
| 8602 | <array> | |
| 8603 | <dict> | |
| 8604 | <key>include</key> | |
| 8605 | <string>#markdown-string</string> | |
| 8606 | </dict> | |
| 8607 | </array> | |
| 8608 | </dict> | |
| 8609 | <key>3</key> | |
| 8610 | <dict> | |
| 8611 | <key>patterns</key> | |
| 8612 | <array> | |
| 8613 | <dict> | |
| 8614 | <key>include</key> | |
| 8615 | <string>#markdown-string</string> | |
| 8616 | </dict> | |
| 8617 | </array> | |
| 8618 | </dict> | |
| 8619 | </dict> | |
| 8620 | <key>end</key> | |
| 8621 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8622 | <key>endCaptures</key> | |
| 8623 | <dict> | |
| 8624 | <key>1</key> | |
| 8625 | <dict> | |
| 8626 | <key>name</key> | |
| 8627 | <string>string.other.end.code.fenced.mdx</string> | |
| 8628 | </dict> | |
| 8629 | </dict> | |
| 8630 | <key>name</key> | |
| 8631 | <string>markup.code.swift.mdx</string> | |
| 8632 | <key>patterns</key> | |
| 8633 | <array> | |
| 8634 | <dict> | |
| 8635 | <key>begin</key> | |
| 8636 | <string>(^|\G)(\s*)(.*)</string> | |
| 8637 | <key>while</key> | |
| 8638 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8639 | <key>contentName</key> | |
| 8640 | <string>meta.embedded.swift</string> | |
| 8641 | <key>patterns</key> | |
| 8642 | <array> | |
| 8643 | <dict> | |
| 8644 | <key>include</key> | |
| 8645 | <string>source.swift</string> | |
| 8646 | </dict> | |
| 8647 | </array> | |
| 8648 | </dict> | |
| 8649 | </array> | |
| 8650 | </dict> | |
| 8651 | <dict> | |
| 8652 | <key>begin</key> | |
| 8653 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?swift))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8654 | <key>beginCaptures</key> | |
| 8655 | <dict> | |
| 8656 | <key>1</key> | |
| 8657 | <dict> | |
| 8658 | <key>name</key> | |
| 8659 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8660 | </dict> | |
| 8661 | <key>2</key> | |
| 8662 | <dict> | |
| 8663 | <key>name</key> | |
| 8664 | <string>entity.name.function.mdx</string> | |
| 8665 | <key>patterns</key> | |
| 8666 | <array> | |
| 8667 | <dict> | |
| 8668 | <key>include</key> | |
| 8669 | <string>#markdown-string</string> | |
| 8670 | </dict> | |
| 8671 | </array> | |
| 8672 | </dict> | |
| 8673 | <key>3</key> | |
| 8674 | <dict> | |
| 8675 | <key>patterns</key> | |
| 8676 | <array> | |
| 8677 | <dict> | |
| 8678 | <key>include</key> | |
| 8679 | <string>#markdown-string</string> | |
| 8680 | </dict> | |
| 8681 | </array> | |
| 8682 | </dict> | |
| 8683 | </dict> | |
| 8684 | <key>end</key> | |
| 8685 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8686 | <key>endCaptures</key> | |
| 8687 | <dict> | |
| 8688 | <key>1</key> | |
| 8689 | <dict> | |
| 8690 | <key>name</key> | |
| 8691 | <string>string.other.end.code.fenced.mdx</string> | |
| 8692 | </dict> | |
| 8693 | </dict> | |
| 8694 | <key>name</key> | |
| 8695 | <string>markup.code.swift.mdx</string> | |
| 8696 | <key>patterns</key> | |
| 8697 | <array> | |
| 8698 | <dict> | |
| 8699 | <key>begin</key> | |
| 8700 | <string>(^|\G)(\s*)(.*)</string> | |
| 8701 | <key>while</key> | |
| 8702 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8703 | <key>contentName</key> | |
| 8704 | <string>meta.embedded.swift</string> | |
| 8705 | <key>patterns</key> | |
| 8706 | <array> | |
| 8707 | <dict> | |
| 8708 | <key>include</key> | |
| 8709 | <string>source.swift</string> | |
| 8710 | </dict> | |
| 8711 | </array> | |
| 8712 | </dict> | |
| 8713 | </array> | |
| 8714 | </dict> | |
| 8715 | </array> | |
| 8716 | </dict> | |
| 8717 | <key>commonmark-code-fenced-toml</key> | |
| 8718 | <dict> | |
| 8719 | <key>patterns</key> | |
| 8720 | <array> | |
| 8721 | <dict> | |
| 8722 | <key>begin</key> | |
| 8723 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?toml))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8724 | <key>beginCaptures</key> | |
| 8725 | <dict> | |
| 8726 | <key>1</key> | |
| 8727 | <dict> | |
| 8728 | <key>name</key> | |
| 8729 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8730 | </dict> | |
| 8731 | <key>2</key> | |
| 8732 | <dict> | |
| 8733 | <key>name</key> | |
| 8734 | <string>entity.name.function.mdx</string> | |
| 8735 | <key>patterns</key> | |
| 8736 | <array> | |
| 8737 | <dict> | |
| 8738 | <key>include</key> | |
| 8739 | <string>#markdown-string</string> | |
| 8740 | </dict> | |
| 8741 | </array> | |
| 8742 | </dict> | |
| 8743 | <key>3</key> | |
| 8744 | <dict> | |
| 8745 | <key>patterns</key> | |
| 8746 | <array> | |
| 8747 | <dict> | |
| 8748 | <key>include</key> | |
| 8749 | <string>#markdown-string</string> | |
| 8750 | </dict> | |
| 8751 | </array> | |
| 8752 | </dict> | |
| 8753 | </dict> | |
| 8754 | <key>end</key> | |
| 8755 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8756 | <key>endCaptures</key> | |
| 8757 | <dict> | |
| 8758 | <key>1</key> | |
| 8759 | <dict> | |
| 8760 | <key>name</key> | |
| 8761 | <string>string.other.end.code.fenced.mdx</string> | |
| 8762 | </dict> | |
| 8763 | </dict> | |
| 8764 | <key>name</key> | |
| 8765 | <string>markup.code.toml.mdx</string> | |
| 8766 | <key>patterns</key> | |
| 8767 | <array> | |
| 8768 | <dict> | |
| 8769 | <key>begin</key> | |
| 8770 | <string>(^|\G)(\s*)(.*)</string> | |
| 8771 | <key>while</key> | |
| 8772 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8773 | <key>contentName</key> | |
| 8774 | <string>meta.embedded.toml</string> | |
| 8775 | <key>patterns</key> | |
| 8776 | <array> | |
| 8777 | <dict> | |
| 8778 | <key>include</key> | |
| 8779 | <string>source.toml</string> | |
| 8780 | </dict> | |
| 8781 | </array> | |
| 8782 | </dict> | |
| 8783 | </array> | |
| 8784 | </dict> | |
| 8785 | <dict> | |
| 8786 | <key>begin</key> | |
| 8787 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?toml))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8788 | <key>beginCaptures</key> | |
| 8789 | <dict> | |
| 8790 | <key>1</key> | |
| 8791 | <dict> | |
| 8792 | <key>name</key> | |
| 8793 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8794 | </dict> | |
| 8795 | <key>2</key> | |
| 8796 | <dict> | |
| 8797 | <key>name</key> | |
| 8798 | <string>entity.name.function.mdx</string> | |
| 8799 | <key>patterns</key> | |
| 8800 | <array> | |
| 8801 | <dict> | |
| 8802 | <key>include</key> | |
| 8803 | <string>#markdown-string</string> | |
| 8804 | </dict> | |
| 8805 | </array> | |
| 8806 | </dict> | |
| 8807 | <key>3</key> | |
| 8808 | <dict> | |
| 8809 | <key>patterns</key> | |
| 8810 | <array> | |
| 8811 | <dict> | |
| 8812 | <key>include</key> | |
| 8813 | <string>#markdown-string</string> | |
| 8814 | </dict> | |
| 8815 | </array> | |
| 8816 | </dict> | |
| 8817 | </dict> | |
| 8818 | <key>end</key> | |
| 8819 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8820 | <key>endCaptures</key> | |
| 8821 | <dict> | |
| 8822 | <key>1</key> | |
| 8823 | <dict> | |
| 8824 | <key>name</key> | |
| 8825 | <string>string.other.end.code.fenced.mdx</string> | |
| 8826 | </dict> | |
| 8827 | </dict> | |
| 8828 | <key>name</key> | |
| 8829 | <string>markup.code.toml.mdx</string> | |
| 8830 | <key>patterns</key> | |
| 8831 | <array> | |
| 8832 | <dict> | |
| 8833 | <key>begin</key> | |
| 8834 | <string>(^|\G)(\s*)(.*)</string> | |
| 8835 | <key>while</key> | |
| 8836 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8837 | <key>contentName</key> | |
| 8838 | <string>meta.embedded.toml</string> | |
| 8839 | <key>patterns</key> | |
| 8840 | <array> | |
| 8841 | <dict> | |
| 8842 | <key>include</key> | |
| 8843 | <string>source.toml</string> | |
| 8844 | </dict> | |
| 8845 | </array> | |
| 8846 | </dict> | |
| 8847 | </array> | |
| 8848 | </dict> | |
| 8849 | </array> | |
| 8850 | </dict> | |
| 8851 | <key>commonmark-code-fenced-ts</key> | |
| 8852 | <dict> | |
| 8853 | <key>patterns</key> | |
| 8854 | <array> | |
| 8855 | <dict> | |
| 8856 | <key>begin</key> | |
| 8857 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:typescript|(?:.*\.)?(?:cts|mts|ts)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8858 | <key>beginCaptures</key> | |
| 8859 | <dict> | |
| 8860 | <key>1</key> | |
| 8861 | <dict> | |
| 8862 | <key>name</key> | |
| 8863 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8864 | </dict> | |
| 8865 | <key>2</key> | |
| 8866 | <dict> | |
| 8867 | <key>name</key> | |
| 8868 | <string>entity.name.function.mdx</string> | |
| 8869 | <key>patterns</key> | |
| 8870 | <array> | |
| 8871 | <dict> | |
| 8872 | <key>include</key> | |
| 8873 | <string>#markdown-string</string> | |
| 8874 | </dict> | |
| 8875 | </array> | |
| 8876 | </dict> | |
| 8877 | <key>3</key> | |
| 8878 | <dict> | |
| 8879 | <key>patterns</key> | |
| 8880 | <array> | |
| 8881 | <dict> | |
| 8882 | <key>include</key> | |
| 8883 | <string>#markdown-string</string> | |
| 8884 | </dict> | |
| 8885 | </array> | |
| 8886 | </dict> | |
| 8887 | </dict> | |
| 8888 | <key>end</key> | |
| 8889 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8890 | <key>endCaptures</key> | |
| 8891 | <dict> | |
| 8892 | <key>1</key> | |
| 8893 | <dict> | |
| 8894 | <key>name</key> | |
| 8895 | <string>string.other.end.code.fenced.mdx</string> | |
| 8896 | </dict> | |
| 8897 | </dict> | |
| 8898 | <key>name</key> | |
| 8899 | <string>markup.code.ts.mdx</string> | |
| 8900 | <key>patterns</key> | |
| 8901 | <array> | |
| 8902 | <dict> | |
| 8903 | <key>begin</key> | |
| 8904 | <string>(^|\G)(\s*)(.*)</string> | |
| 8905 | <key>while</key> | |
| 8906 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8907 | <key>contentName</key> | |
| 8908 | <string>meta.embedded.ts</string> | |
| 8909 | <key>patterns</key> | |
| 8910 | <array> | |
| 8911 | <dict> | |
| 8912 | <key>include</key> | |
| 8913 | <string>source.ts</string> | |
| 8914 | </dict> | |
| 8915 | </array> | |
| 8916 | </dict> | |
| 8917 | </array> | |
| 8918 | </dict> | |
| 8919 | <dict> | |
| 8920 | <key>begin</key> | |
| 8921 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:typescript|(?:.*\.)?(?:cts|mts|ts)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 8922 | <key>beginCaptures</key> | |
| 8923 | <dict> | |
| 8924 | <key>1</key> | |
| 8925 | <dict> | |
| 8926 | <key>name</key> | |
| 8927 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8928 | </dict> | |
| 8929 | <key>2</key> | |
| 8930 | <dict> | |
| 8931 | <key>name</key> | |
| 8932 | <string>entity.name.function.mdx</string> | |
| 8933 | <key>patterns</key> | |
| 8934 | <array> | |
| 8935 | <dict> | |
| 8936 | <key>include</key> | |
| 8937 | <string>#markdown-string</string> | |
| 8938 | </dict> | |
| 8939 | </array> | |
| 8940 | </dict> | |
| 8941 | <key>3</key> | |
| 8942 | <dict> | |
| 8943 | <key>patterns</key> | |
| 8944 | <array> | |
| 8945 | <dict> | |
| 8946 | <key>include</key> | |
| 8947 | <string>#markdown-string</string> | |
| 8948 | </dict> | |
| 8949 | </array> | |
| 8950 | </dict> | |
| 8951 | </dict> | |
| 8952 | <key>end</key> | |
| 8953 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 8954 | <key>endCaptures</key> | |
| 8955 | <dict> | |
| 8956 | <key>1</key> | |
| 8957 | <dict> | |
| 8958 | <key>name</key> | |
| 8959 | <string>string.other.end.code.fenced.mdx</string> | |
| 8960 | </dict> | |
| 8961 | </dict> | |
| 8962 | <key>name</key> | |
| 8963 | <string>markup.code.ts.mdx</string> | |
| 8964 | <key>patterns</key> | |
| 8965 | <array> | |
| 8966 | <dict> | |
| 8967 | <key>begin</key> | |
| 8968 | <string>(^|\G)(\s*)(.*)</string> | |
| 8969 | <key>while</key> | |
| 8970 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 8971 | <key>contentName</key> | |
| 8972 | <string>meta.embedded.ts</string> | |
| 8973 | <key>patterns</key> | |
| 8974 | <array> | |
| 8975 | <dict> | |
| 8976 | <key>include</key> | |
| 8977 | <string>source.ts</string> | |
| 8978 | </dict> | |
| 8979 | </array> | |
| 8980 | </dict> | |
| 8981 | </array> | |
| 8982 | </dict> | |
| 8983 | </array> | |
| 8984 | </dict> | |
| 8985 | <key>commonmark-code-fenced-tsx</key> | |
| 8986 | <dict> | |
| 8987 | <key>patterns</key> | |
| 8988 | <array> | |
| 8989 | <dict> | |
| 8990 | <key>begin</key> | |
| 8991 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:(?:.*\.)?tsx))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 8992 | <key>beginCaptures</key> | |
| 8993 | <dict> | |
| 8994 | <key>1</key> | |
| 8995 | <dict> | |
| 8996 | <key>name</key> | |
| 8997 | <string>string.other.begin.code.fenced.mdx</string> | |
| 8998 | </dict> | |
| 8999 | <key>2</key> | |
| 9000 | <dict> | |
| 9001 | <key>name</key> | |
| 9002 | <string>entity.name.function.mdx</string> | |
| 9003 | <key>patterns</key> | |
| 9004 | <array> | |
| 9005 | <dict> | |
| 9006 | <key>include</key> | |
| 9007 | <string>#markdown-string</string> | |
| 9008 | </dict> | |
| 9009 | </array> | |
| 9010 | </dict> | |
| 9011 | <key>3</key> | |
| 9012 | <dict> | |
| 9013 | <key>patterns</key> | |
| 9014 | <array> | |
| 9015 | <dict> | |
| 9016 | <key>include</key> | |
| 9017 | <string>#markdown-string</string> | |
| 9018 | </dict> | |
| 9019 | </array> | |
| 9020 | </dict> | |
| 9021 | </dict> | |
| 9022 | <key>end</key> | |
| 9023 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9024 | <key>endCaptures</key> | |
| 9025 | <dict> | |
| 9026 | <key>1</key> | |
| 9027 | <dict> | |
| 9028 | <key>name</key> | |
| 9029 | <string>string.other.end.code.fenced.mdx</string> | |
| 9030 | </dict> | |
| 9031 | </dict> | |
| 9032 | <key>name</key> | |
| 9033 | <string>markup.code.tsx.mdx</string> | |
| 9034 | <key>patterns</key> | |
| 9035 | <array> | |
| 9036 | <dict> | |
| 9037 | <key>begin</key> | |
| 9038 | <string>(^|\G)(\s*)(.*)</string> | |
| 9039 | <key>while</key> | |
| 9040 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9041 | <key>contentName</key> | |
| 9042 | <string>meta.embedded.tsx</string> | |
| 9043 | <key>patterns</key> | |
| 9044 | <array> | |
| 9045 | <dict> | |
| 9046 | <key>include</key> | |
| 9047 | <string>source.tsx</string> | |
| 9048 | </dict> | |
| 9049 | </array> | |
| 9050 | </dict> | |
| 9051 | </array> | |
| 9052 | </dict> | |
| 9053 | <dict> | |
| 9054 | <key>begin</key> | |
| 9055 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:(?:.*\.)?tsx))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 9056 | <key>beginCaptures</key> | |
| 9057 | <dict> | |
| 9058 | <key>1</key> | |
| 9059 | <dict> | |
| 9060 | <key>name</key> | |
| 9061 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9062 | </dict> | |
| 9063 | <key>2</key> | |
| 9064 | <dict> | |
| 9065 | <key>name</key> | |
| 9066 | <string>entity.name.function.mdx</string> | |
| 9067 | <key>patterns</key> | |
| 9068 | <array> | |
| 9069 | <dict> | |
| 9070 | <key>include</key> | |
| 9071 | <string>#markdown-string</string> | |
| 9072 | </dict> | |
| 9073 | </array> | |
| 9074 | </dict> | |
| 9075 | <key>3</key> | |
| 9076 | <dict> | |
| 9077 | <key>patterns</key> | |
| 9078 | <array> | |
| 9079 | <dict> | |
| 9080 | <key>include</key> | |
| 9081 | <string>#markdown-string</string> | |
| 9082 | </dict> | |
| 9083 | </array> | |
| 9084 | </dict> | |
| 9085 | </dict> | |
| 9086 | <key>end</key> | |
| 9087 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9088 | <key>endCaptures</key> | |
| 9089 | <dict> | |
| 9090 | <key>1</key> | |
| 9091 | <dict> | |
| 9092 | <key>name</key> | |
| 9093 | <string>string.other.end.code.fenced.mdx</string> | |
| 9094 | </dict> | |
| 9095 | </dict> | |
| 9096 | <key>name</key> | |
| 9097 | <string>markup.code.tsx.mdx</string> | |
| 9098 | <key>patterns</key> | |
| 9099 | <array> | |
| 9100 | <dict> | |
| 9101 | <key>begin</key> | |
| 9102 | <string>(^|\G)(\s*)(.*)</string> | |
| 9103 | <key>while</key> | |
| 9104 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9105 | <key>contentName</key> | |
| 9106 | <string>meta.embedded.tsx</string> | |
| 9107 | <key>patterns</key> | |
| 9108 | <array> | |
| 9109 | <dict> | |
| 9110 | <key>include</key> | |
| 9111 | <string>source.tsx</string> | |
| 9112 | </dict> | |
| 9113 | </array> | |
| 9114 | </dict> | |
| 9115 | </array> | |
| 9116 | </dict> | |
| 9117 | </array> | |
| 9118 | </dict> | |
| 9119 | <key>commonmark-code-fenced-vbnet</key> | |
| 9120 | <dict> | |
| 9121 | <key>patterns</key> | |
| 9122 | <array> | |
| 9123 | <dict> | |
| 9124 | <key>begin</key> | |
| 9125 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:fb|freebasic|realbasic|vb\x2d\.net|vb\.net|vbnet|vbscript|visual\x2dbasic|visual\x2dbasic\x2d\.net|(?:.*\.)?(?:bi|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 9126 | <key>beginCaptures</key> | |
| 9127 | <dict> | |
| 9128 | <key>1</key> | |
| 9129 | <dict> | |
| 9130 | <key>name</key> | |
| 9131 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9132 | </dict> | |
| 9133 | <key>2</key> | |
| 9134 | <dict> | |
| 9135 | <key>name</key> | |
| 9136 | <string>entity.name.function.mdx</string> | |
| 9137 | <key>patterns</key> | |
| 9138 | <array> | |
| 9139 | <dict> | |
| 9140 | <key>include</key> | |
| 9141 | <string>#markdown-string</string> | |
| 9142 | </dict> | |
| 9143 | </array> | |
| 9144 | </dict> | |
| 9145 | <key>3</key> | |
| 9146 | <dict> | |
| 9147 | <key>patterns</key> | |
| 9148 | <array> | |
| 9149 | <dict> | |
| 9150 | <key>include</key> | |
| 9151 | <string>#markdown-string</string> | |
| 9152 | </dict> | |
| 9153 | </array> | |
| 9154 | </dict> | |
| 9155 | </dict> | |
| 9156 | <key>end</key> | |
| 9157 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9158 | <key>endCaptures</key> | |
| 9159 | <dict> | |
| 9160 | <key>1</key> | |
| 9161 | <dict> | |
| 9162 | <key>name</key> | |
| 9163 | <string>string.other.end.code.fenced.mdx</string> | |
| 9164 | </dict> | |
| 9165 | </dict> | |
| 9166 | <key>name</key> | |
| 9167 | <string>markup.code.vbnet.mdx</string> | |
| 9168 | <key>patterns</key> | |
| 9169 | <array> | |
| 9170 | <dict> | |
| 9171 | <key>begin</key> | |
| 9172 | <string>(^|\G)(\s*)(.*)</string> | |
| 9173 | <key>while</key> | |
| 9174 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9175 | <key>contentName</key> | |
| 9176 | <string>meta.embedded.vbnet</string> | |
| 9177 | <key>patterns</key> | |
| 9178 | <array> | |
| 9179 | <dict> | |
| 9180 | <key>include</key> | |
| 9181 | <string>source.vbnet</string> | |
| 9182 | </dict> | |
| 9183 | </array> | |
| 9184 | </dict> | |
| 9185 | </array> | |
| 9186 | </dict> | |
| 9187 | <dict> | |
| 9188 | <key>begin</key> | |
| 9189 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:fb|freebasic|realbasic|vb\x2d\.net|vb\.net|vbnet|vbscript|visual\x2dbasic|visual\x2dbasic\x2d\.net|(?:.*\.)?(?:bi|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 9190 | <key>beginCaptures</key> | |
| 9191 | <dict> | |
| 9192 | <key>1</key> | |
| 9193 | <dict> | |
| 9194 | <key>name</key> | |
| 9195 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9196 | </dict> | |
| 9197 | <key>2</key> | |
| 9198 | <dict> | |
| 9199 | <key>name</key> | |
| 9200 | <string>entity.name.function.mdx</string> | |
| 9201 | <key>patterns</key> | |
| 9202 | <array> | |
| 9203 | <dict> | |
| 9204 | <key>include</key> | |
| 9205 | <string>#markdown-string</string> | |
| 9206 | </dict> | |
| 9207 | </array> | |
| 9208 | </dict> | |
| 9209 | <key>3</key> | |
| 9210 | <dict> | |
| 9211 | <key>patterns</key> | |
| 9212 | <array> | |
| 9213 | <dict> | |
| 9214 | <key>include</key> | |
| 9215 | <string>#markdown-string</string> | |
| 9216 | </dict> | |
| 9217 | </array> | |
| 9218 | </dict> | |
| 9219 | </dict> | |
| 9220 | <key>end</key> | |
| 9221 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9222 | <key>endCaptures</key> | |
| 9223 | <dict> | |
| 9224 | <key>1</key> | |
| 9225 | <dict> | |
| 9226 | <key>name</key> | |
| 9227 | <string>string.other.end.code.fenced.mdx</string> | |
| 9228 | </dict> | |
| 9229 | </dict> | |
| 9230 | <key>name</key> | |
| 9231 | <string>markup.code.vbnet.mdx</string> | |
| 9232 | <key>patterns</key> | |
| 9233 | <array> | |
| 9234 | <dict> | |
| 9235 | <key>begin</key> | |
| 9236 | <string>(^|\G)(\s*)(.*)</string> | |
| 9237 | <key>while</key> | |
| 9238 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9239 | <key>contentName</key> | |
| 9240 | <string>meta.embedded.vbnet</string> | |
| 9241 | <key>patterns</key> | |
| 9242 | <array> | |
| 9243 | <dict> | |
| 9244 | <key>include</key> | |
| 9245 | <string>source.vbnet</string> | |
| 9246 | </dict> | |
| 9247 | </array> | |
| 9248 | </dict> | |
| 9249 | </array> | |
| 9250 | </dict> | |
| 9251 | </array> | |
| 9252 | </dict> | |
| 9253 | <key>commonmark-code-fenced-xml</key> | |
| 9254 | <dict> | |
| 9255 | <key>patterns</key> | |
| 9256 | <array> | |
| 9257 | <dict> | |
| 9258 | <key>begin</key> | |
| 9259 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:collada|eagle|labview|web\x2dontology\x2dlanguage|xpages|(?:.*\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\.dist|xmp|xpl|xproc|xproj|xsd|xsp\x2dconfig|xsp\.metadata|xspec|xul|zcml)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 9260 | <key>beginCaptures</key> | |
| 9261 | <dict> | |
| 9262 | <key>1</key> | |
| 9263 | <dict> | |
| 9264 | <key>name</key> | |
| 9265 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9266 | </dict> | |
| 9267 | <key>2</key> | |
| 9268 | <dict> | |
| 9269 | <key>name</key> | |
| 9270 | <string>entity.name.function.mdx</string> | |
| 9271 | <key>patterns</key> | |
| 9272 | <array> | |
| 9273 | <dict> | |
| 9274 | <key>include</key> | |
| 9275 | <string>#markdown-string</string> | |
| 9276 | </dict> | |
| 9277 | </array> | |
| 9278 | </dict> | |
| 9279 | <key>3</key> | |
| 9280 | <dict> | |
| 9281 | <key>patterns</key> | |
| 9282 | <array> | |
| 9283 | <dict> | |
| 9284 | <key>include</key> | |
| 9285 | <string>#markdown-string</string> | |
| 9286 | </dict> | |
| 9287 | </array> | |
| 9288 | </dict> | |
| 9289 | </dict> | |
| 9290 | <key>end</key> | |
| 9291 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9292 | <key>endCaptures</key> | |
| 9293 | <dict> | |
| 9294 | <key>1</key> | |
| 9295 | <dict> | |
| 9296 | <key>name</key> | |
| 9297 | <string>string.other.end.code.fenced.mdx</string> | |
| 9298 | </dict> | |
| 9299 | </dict> | |
| 9300 | <key>name</key> | |
| 9301 | <string>markup.code.xml.mdx</string> | |
| 9302 | <key>patterns</key> | |
| 9303 | <array> | |
| 9304 | <dict> | |
| 9305 | <key>begin</key> | |
| 9306 | <string>(^|\G)(\s*)(.*)</string> | |
| 9307 | <key>while</key> | |
| 9308 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9309 | <key>contentName</key> | |
| 9310 | <string>meta.embedded.xml</string> | |
| 9311 | <key>patterns</key> | |
| 9312 | <array> | |
| 9313 | <dict> | |
| 9314 | <key>include</key> | |
| 9315 | <string>text.xml</string> | |
| 9316 | </dict> | |
| 9317 | </array> | |
| 9318 | </dict> | |
| 9319 | </array> | |
| 9320 | </dict> | |
| 9321 | <dict> | |
| 9322 | <key>begin</key> | |
| 9323 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:collada|eagle|labview|web\x2dontology\x2dlanguage|xpages|(?:.*\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\.dist|xmp|xpl|xproc|xproj|xsd|xsp\x2dconfig|xsp\.metadata|xspec|xul|zcml)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 9324 | <key>beginCaptures</key> | |
| 9325 | <dict> | |
| 9326 | <key>1</key> | |
| 9327 | <dict> | |
| 9328 | <key>name</key> | |
| 9329 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9330 | </dict> | |
| 9331 | <key>2</key> | |
| 9332 | <dict> | |
| 9333 | <key>name</key> | |
| 9334 | <string>entity.name.function.mdx</string> | |
| 9335 | <key>patterns</key> | |
| 9336 | <array> | |
| 9337 | <dict> | |
| 9338 | <key>include</key> | |
| 9339 | <string>#markdown-string</string> | |
| 9340 | </dict> | |
| 9341 | </array> | |
| 9342 | </dict> | |
| 9343 | <key>3</key> | |
| 9344 | <dict> | |
| 9345 | <key>patterns</key> | |
| 9346 | <array> | |
| 9347 | <dict> | |
| 9348 | <key>include</key> | |
| 9349 | <string>#markdown-string</string> | |
| 9350 | </dict> | |
| 9351 | </array> | |
| 9352 | </dict> | |
| 9353 | </dict> | |
| 9354 | <key>end</key> | |
| 9355 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9356 | <key>endCaptures</key> | |
| 9357 | <dict> | |
| 9358 | <key>1</key> | |
| 9359 | <dict> | |
| 9360 | <key>name</key> | |
| 9361 | <string>string.other.end.code.fenced.mdx</string> | |
| 9362 | </dict> | |
| 9363 | </dict> | |
| 9364 | <key>name</key> | |
| 9365 | <string>markup.code.xml.mdx</string> | |
| 9366 | <key>patterns</key> | |
| 9367 | <array> | |
| 9368 | <dict> | |
| 9369 | <key>begin</key> | |
| 9370 | <string>(^|\G)(\s*)(.*)</string> | |
| 9371 | <key>while</key> | |
| 9372 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9373 | <key>contentName</key> | |
| 9374 | <string>meta.embedded.xml</string> | |
| 9375 | <key>patterns</key> | |
| 9376 | <array> | |
| 9377 | <dict> | |
| 9378 | <key>include</key> | |
| 9379 | <string>text.xml</string> | |
| 9380 | </dict> | |
| 9381 | </array> | |
| 9382 | </dict> | |
| 9383 | </array> | |
| 9384 | </dict> | |
| 9385 | </array> | |
| 9386 | </dict> | |
| 9387 | <key>commonmark-code-fenced-yaml</key> | |
| 9388 | <dict> | |
| 9389 | <key>patterns</key> | |
| 9390 | <array> | |
| 9391 | <dict> | |
| 9392 | <key>begin</key> | |
| 9393 | <string>(?:^|\G)[\t ]*(`{3,})(?:[\t ]*((?i:jar\x2dmanifest|kaitai\x2dstruct|oasv2\x2dyaml|oasv3\x2dyaml|unity3d\x2dasset|yaml|yml|(?:.*\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\x2dsyntax|syntax|unity|yaml\x2dtmlanguage|yaml\.sed|yml\.mysql)))(?:[\t ]+((?:[^\n\r`])+))?)(?:[\t ]*$)</string> | |
| 9394 | <key>beginCaptures</key> | |
| 9395 | <dict> | |
| 9396 | <key>1</key> | |
| 9397 | <dict> | |
| 9398 | <key>name</key> | |
| 9399 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9400 | </dict> | |
| 9401 | <key>2</key> | |
| 9402 | <dict> | |
| 9403 | <key>name</key> | |
| 9404 | <string>entity.name.function.mdx</string> | |
| 9405 | <key>patterns</key> | |
| 9406 | <array> | |
| 9407 | <dict> | |
| 9408 | <key>include</key> | |
| 9409 | <string>#markdown-string</string> | |
| 9410 | </dict> | |
| 9411 | </array> | |
| 9412 | </dict> | |
| 9413 | <key>3</key> | |
| 9414 | <dict> | |
| 9415 | <key>patterns</key> | |
| 9416 | <array> | |
| 9417 | <dict> | |
| 9418 | <key>include</key> | |
| 9419 | <string>#markdown-string</string> | |
| 9420 | </dict> | |
| 9421 | </array> | |
| 9422 | </dict> | |
| 9423 | </dict> | |
| 9424 | <key>end</key> | |
| 9425 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9426 | <key>endCaptures</key> | |
| 9427 | <dict> | |
| 9428 | <key>1</key> | |
| 9429 | <dict> | |
| 9430 | <key>name</key> | |
| 9431 | <string>string.other.end.code.fenced.mdx</string> | |
| 9432 | </dict> | |
| 9433 | </dict> | |
| 9434 | <key>name</key> | |
| 9435 | <string>markup.code.yaml.mdx</string> | |
| 9436 | <key>patterns</key> | |
| 9437 | <array> | |
| 9438 | <dict> | |
| 9439 | <key>begin</key> | |
| 9440 | <string>(^|\G)(\s*)(.*)</string> | |
| 9441 | <key>while</key> | |
| 9442 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9443 | <key>contentName</key> | |
| 9444 | <string>meta.embedded.yaml</string> | |
| 9445 | <key>patterns</key> | |
| 9446 | <array> | |
| 9447 | <dict> | |
| 9448 | <key>include</key> | |
| 9449 | <string>source.yaml</string> | |
| 9450 | </dict> | |
| 9451 | </array> | |
| 9452 | </dict> | |
| 9453 | </array> | |
| 9454 | </dict> | |
| 9455 | <dict> | |
| 9456 | <key>begin</key> | |
| 9457 | <string>(?:^|\G)[\t ]*(~{3,})(?:[\t ]*((?i:jar\x2dmanifest|kaitai\x2dstruct|oasv2\x2dyaml|oasv3\x2dyaml|unity3d\x2dasset|yaml|yml|(?:.*\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\x2dsyntax|syntax|unity|yaml\x2dtmlanguage|yaml\.sed|yml\.mysql)))(?:[\t ]+((?:[^\n\r])+))?)(?:[\t ]*$)</string> | |
| 9458 | <key>beginCaptures</key> | |
| 9459 | <dict> | |
| 9460 | <key>1</key> | |
| 9461 | <dict> | |
| 9462 | <key>name</key> | |
| 9463 | <string>string.other.begin.code.fenced.mdx</string> | |
| 9464 | </dict> | |
| 9465 | <key>2</key> | |
| 9466 | <dict> | |
| 9467 | <key>name</key> | |
| 9468 | <string>entity.name.function.mdx</string> | |
| 9469 | <key>patterns</key> | |
| 9470 | <array> | |
| 9471 | <dict> | |
| 9472 | <key>include</key> | |
| 9473 | <string>#markdown-string</string> | |
| 9474 | </dict> | |
| 9475 | </array> | |
| 9476 | </dict> | |
| 9477 | <key>3</key> | |
| 9478 | <dict> | |
| 9479 | <key>patterns</key> | |
| 9480 | <array> | |
| 9481 | <dict> | |
| 9482 | <key>include</key> | |
| 9483 | <string>#markdown-string</string> | |
| 9484 | </dict> | |
| 9485 | </array> | |
| 9486 | </dict> | |
| 9487 | </dict> | |
| 9488 | <key>end</key> | |
| 9489 | <string>(?:^|\G)[\t ]*(\1)(?:[\t ]*$)</string> | |
| 9490 | <key>endCaptures</key> | |
| 9491 | <dict> | |
| 9492 | <key>1</key> | |
| 9493 | <dict> | |
| 9494 | <key>name</key> | |
| 9495 | <string>string.other.end.code.fenced.mdx</string> | |
| 9496 | </dict> | |
| 9497 | </dict> | |
| 9498 | <key>name</key> | |
| 9499 | <string>markup.code.yaml.mdx</string> | |
| 9500 | <key>patterns</key> | |
| 9501 | <array> | |
| 9502 | <dict> | |
| 9503 | <key>begin</key> | |
| 9504 | <string>(^|\G)(\s*)(.*)</string> | |
| 9505 | <key>while</key> | |
| 9506 | <string>(^|\G)(?![\t ]*([`~]{3,})[\t ]*$)</string> | |
| 9507 | <key>contentName</key> | |
| 9508 | <string>meta.embedded.yaml</string> | |
| 9509 | <key>patterns</key> | |
| 9510 | <array> | |
| 9511 | <dict> | |
| 9512 | <key>include</key> | |
| 9513 | <string>source.yaml</string> | |
| 9514 | </dict> | |
| 9515 | </array> | |
| 9516 | </dict> | |
| 9517 | </array> | |
| 9518 | </dict> | |
| 9519 | </array> | |
| 9520 | </dict> | |
| 9521 | </dict> | |
| 9522 | <key>scopeName</key> | |
| 9523 | <string>source.mdx</string> | |
| 9524 | <key>uuid</key> | |
| 9525 | <string>fe65e2cd-7c73-4a27-8b5e-5902893626aa</string> | |
| 9526 | </dict> | |
| 9527 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/php.plist created+4019| ... | ... | @@ -0,0 +1,4019 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>comment</key> | |
| 6 | 	<string>TODO: | |
| 7 | • Try to improve parameters list syntax – scope numbers, ‘=’, ‘,’ and possibly be intelligent about entity ordering | |
| 8 | • Is meta.function-call the correct scope? I've added it to my theme but by default it's not highlighted</string> | |
| 9 | 	<key>fileTypes</key> | |
| 10 | 	<array> | |
| 11 | 		<string>php</string> | |
| 12 | 		<string>php3</string> | |
| 13 | 		<string>php4</string> | |
| 14 | 		<string>php5</string> | |
| 15 | 		<string>phpt</string> | |
| 16 | 		<string>phtml</string> | |
| 17 | 		<string>aw</string> | |
| 18 | 		<string>ctp</string> | |
| 19 | 	</array> | |
| 20 | 	<key>firstLineMatch</key> | |
| 21 | 	<string>^#!.*(?&lt;!-)php[0-9]{0,1}\b|&lt;\?php</string> | |
| 22 | 	<key>foldingStartMarker</key> | |
| 23 | 	<string>(/\*|\{\s*$|&lt;&lt;&lt;HTML)</string> | |
| 24 | 	<key>foldingStopMarker</key> | |
| 25 | 	<string>(\*/|^\s*\}|^HTML;)</string> | |
| 26 | 	<key>injections</key> | |
| 27 | 	<dict> | |
| 28 | 		<key>^text.html - (meta.embedded | meta.tag), L:^text.html meta.tag, L:text.html.php source.js</key> | |
| 29 | 		<dict> | |
| 30 | 			<key>patterns</key> | |
| 31 | 			<array> | |
| 32 | 				<dict> | |
| 33 | 					<key>begin</key> | |
| 34 | 					<string>(^\s*)(?=&lt;\?(?![^?]*\?&gt;))</string> | |
| 35 | 					<key>beginCaptures</key> | |
| 36 | 					<dict> | |
| 37 | 						<key>0</key> | |
| 38 | 						<dict> | |
| 39 | 							<key>name</key> | |
| 40 | 							<string>punctuation.whitespace.embedded.leading.php</string> | |
| 41 | 						</dict> | |
| 42 | 					</dict> | |
| 43 | 					<key>end</key> | |
| 44 | 					<string>(?!\G)(\s*$\n)?</string> | |
| 45 | 					<key>endCaptures</key> | |
| 46 | 					<dict> | |
| 47 | 						<key>0</key> | |
| 48 | 						<dict> | |
| 49 | 							<key>name</key> | |
| 50 | 							<string>punctuation.whitespace.embedded.trailing.php</string> | |
| 51 | 						</dict> | |
| 52 | 					</dict> | |
| 53 | 					<key>patterns</key> | |
| 54 | 					<array> | |
| 55 | 						<dict> | |
| 56 | 							<key>begin</key> | |
| 57 | 							<string>&lt;\?(?i:php|=)?</string> | |
| 58 | 							<key>beginCaptures</key> | |
| 59 | 							<dict> | |
| 60 | 								<key>0</key> | |
| 61 | 								<dict> | |
| 62 | 									<key>name</key> | |
| 63 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 64 | 								</dict> | |
| 65 | 							</dict> | |
| 66 | 							<key>contentName</key> | |
| 67 | 							<string>source.php</string> | |
| 68 | 							<key>end</key> | |
| 69 | 							<string>(\?)&gt;</string> | |
| 70 | 							<key>endCaptures</key> | |
| 71 | 							<dict> | |
| 72 | 								<key>0</key> | |
| 73 | 								<dict> | |
| 74 | 									<key>name</key> | |
| 75 | 									<string>punctuation.section.embedded.end.php</string> | |
| 76 | 								</dict> | |
| 77 | 								<key>1</key> | |
| 78 | 								<dict> | |
| 79 | 									<key>name</key> | |
| 80 | 									<string>source.php</string> | |
| 81 | 								</dict> | |
| 82 | 							</dict> | |
| 83 | 							<key>name</key> | |
| 84 | 							<string>meta.embedded.block.php</string> | |
| 85 | 							<key>patterns</key> | |
| 86 | 							<array> | |
| 87 | 								<dict> | |
| 88 | 									<key>include</key> | |
| 89 | 									<string>#language</string> | |
| 90 | 								</dict> | |
| 91 | 							</array> | |
| 92 | 						</dict> | |
| 93 | 					</array> | |
| 94 | 				</dict> | |
| 95 | 				<dict> | |
| 96 | 					<key>begin</key> | |
| 97 | 					<string>&lt;\?(?i:php|=)?(?![^?]*\?&gt;)</string> | |
| 98 | 					<key>beginCaptures</key> | |
| 99 | 					<dict> | |
| 100 | 						<key>0</key> | |
| 101 | 						<dict> | |
| 102 | 							<key>name</key> | |
| 103 | 							<string>punctuation.section.embedded.begin.php</string> | |
| 104 | 						</dict> | |
| 105 | 					</dict> | |
| 106 | 					<key>contentName</key> | |
| 107 | 					<string>source.php</string> | |
| 108 | 					<key>end</key> | |
| 109 | 					<string>(\?)&gt;</string> | |
| 110 | 					<key>endCaptures</key> | |
| 111 | 					<dict> | |
| 112 | 						<key>0</key> | |
| 113 | 						<dict> | |
| 114 | 							<key>name</key> | |
| 115 | 							<string>punctuation.section.embedded.end.php</string> | |
| 116 | 						</dict> | |
| 117 | 						<key>1</key> | |
| 118 | 						<dict> | |
| 119 | 							<key>name</key> | |
| 120 | 							<string>source.php</string> | |
| 121 | 						</dict> | |
| 122 | 					</dict> | |
| 123 | 					<key>name</key> | |
| 124 | 					<string>meta.embedded.block.php</string> | |
| 125 | 					<key>patterns</key> | |
| 126 | 					<array> | |
| 127 | 						<dict> | |
| 128 | 							<key>include</key> | |
| 129 | 							<string>#language</string> | |
| 130 | 						</dict> | |
| 131 | 					</array> | |
| 132 | 				</dict> | |
| 133 | 				<dict> | |
| 134 | 					<key>begin</key> | |
| 135 | 					<string>&lt;\?(?i:php|=)?</string> | |
| 136 | 					<key>beginCaptures</key> | |
| 137 | 					<dict> | |
| 138 | 						<key>0</key> | |
| 139 | 						<dict> | |
| 140 | 							<key>name</key> | |
| 141 | 							<string>punctuation.section.embedded.begin.php</string> | |
| 142 | 						</dict> | |
| 143 | 					</dict> | |
| 144 | 					<key>end</key> | |
| 145 | 					<string>&gt;</string> | |
| 146 | 					<key>endCaptures</key> | |
| 147 | 					<dict> | |
| 148 | 						<key>0</key> | |
| 149 | 						<dict> | |
| 150 | 							<key>name</key> | |
| 151 | 							<string>punctuation.section.embedded.end.php</string> | |
| 152 | 						</dict> | |
| 153 | 					</dict> | |
| 154 | 					<key>name</key> | |
| 155 | 					<string>meta.embedded.line.php</string> | |
| 156 | 					<key>patterns</key> | |
| 157 | 					<array> | |
| 158 | 						<dict> | |
| 159 | 							<key>captures</key> | |
| 160 | 							<dict> | |
| 161 | 								<key>1</key> | |
| 162 | 								<dict> | |
| 163 | 									<key>name</key> | |
| 164 | 									<string>source.php</string> | |
| 165 | 								</dict> | |
| 166 | 								<key>2</key> | |
| 167 | 								<dict> | |
| 168 | 									<key>name</key> | |
| 169 | 									<string>punctuation.section.embedded.end.php</string> | |
| 170 | 								</dict> | |
| 171 | 								<key>3</key> | |
| 172 | 								<dict> | |
| 173 | 									<key>name</key> | |
| 174 | 									<string>source.php</string> | |
| 175 | 								</dict> | |
| 176 | 							</dict> | |
| 177 | 							<key>match</key> | |
| 178 | 							<string>\G(\s*)((\?))(?=&gt;)</string> | |
| 179 | 							<key>name</key> | |
| 180 | 							<string>meta.special.empty-tag.php</string> | |
| 181 | 						</dict> | |
| 182 | 						<dict> | |
| 183 | 							<key>begin</key> | |
| 184 | 							<string>\G</string> | |
| 185 | 							<key>contentName</key> | |
| 186 | 							<string>source.php</string> | |
| 187 | 							<key>end</key> | |
| 188 | 							<string>(\?)(?=&gt;)</string> | |
| 189 | 							<key>endCaptures</key> | |
| 190 | 							<dict> | |
| 191 | 								<key>0</key> | |
| 192 | 								<dict> | |
| 193 | 									<key>name</key> | |
| 194 | 									<string>punctuation.section.embedded.end.php</string> | |
| 195 | 								</dict> | |
| 196 | 								<key>1</key> | |
| 197 | 								<dict> | |
| 198 | 									<key>name</key> | |
| 199 | 									<string>source.php</string> | |
| 200 | 								</dict> | |
| 201 | 							</dict> | |
| 202 | 							<key>patterns</key> | |
| 203 | 							<array> | |
| 204 | 								<dict> | |
| 205 | 									<key>include</key> | |
| 206 | 									<string>#language</string> | |
| 207 | 								</dict> | |
| 208 | 							</array> | |
| 209 | 						</dict> | |
| 210 | 					</array> | |
| 211 | 				</dict> | |
| 212 | 			</array> | |
| 213 | 		</dict> | |
| 214 | 	</dict> | |
| 215 | 	<key>keyEquivalent</key> | |
| 216 | 	<string>^~P</string> | |
| 217 | 	<key>name</key> | |
| 218 | 	<string>PHP</string> | |
| 219 | 	<key>patterns</key> | |
| 220 | 	<array> | |
| 221 | 		<dict> | |
| 222 | 			<key>include</key> | |
| 223 | 			<string>text.html.basic</string> | |
| 224 | 		</dict> | |
| 225 | 	</array> | |
| 226 | 	<key>repository</key> | |
| 227 | 	<dict> | |
| 228 | 		<key>class-builtin</key> | |
| 229 | 		<dict> | |
| 230 | 			<key>patterns</key> | |
| 231 | 			<array> | |
| 232 | 				<dict> | |
| 233 | 					<key>captures</key> | |
| 234 | 					<dict> | |
| 235 | 						<key>1</key> | |
| 236 | 						<dict> | |
| 237 | 							<key>name</key> | |
| 238 | 							<string>punctuation.separator.inheritance.php</string> | |
| 239 | 						</dict> | |
| 240 | 					</dict> | |
| 241 | 					<key>match</key> | |
| 242 | 					<string>(?ix) | |
| 243 | 						(\\)?\b | |
| 244 | 						(st(dClass|reamWrapper)|R(RD(Graph|Creator|Updater)|untimeException|e(sourceBundle|cursive(RegexIterator|Ca(chingIterator|llbackFilterIterator)|TreeIterator|Iterator(Iterator)?|DirectoryIterator|FilterIterator|ArrayIterator)|flect(ion(Generator|Method|Class|Type|ZendExtension|Object|P(arameter|roperty)|Extension|Function(Abstract)?)?|or)|gexIterator)|angeException)|G(ender\\Gender|lobIterator|magick(Draw|Pixel)?)|X(sltProcessor|ML(Reader|Diff\\(Memory|Base|DOM|File)|Writer)|SLTProcessor)|M(ysqlndUh(Connection|PreparedStatement)|ongo(Re(sultException|gex)|Grid(fsFile|FS(Cursor|File)?)|BinData|C(o(de|llection|mmandCursor)|ursor(Interface|Exception)?|lient)|Timestamp|I(n(sertBatch|t(32|64))|d)|D(B(Ref|\\(BSON\\(Regex|M(inKey|axKey)|Binary|Serializable|Timestamp|ObjectID|Decimal128|U(nserializable|TCDateTime)|Javascript)|Driver\\(Read(Concern|Preference)|Manager|BulkWrite|Server|C(ommand|ursor(Id)?)|Exception\\WriteException|Query|Write(Result|Concern(Error)?|Error))))?|eleteBatch|ate)|UpdateBatch|Pool|Write(Batch|ConcernException)|Log)?|u(tex|ltipleIterator)|e(ssageFormatter|mcache(d)?))|Bad(MethodCallException|FunctionCallException)|tidy(Node)?|S(ync(ReaderWriter|Mutex|S(haredMemory|emaphore)|Event)|impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|NMP|CA(_(SoapProxy|LocalProxy))?|p(hinxClient|oofchecker|l(M(inHeap|axHeap)|S(tack|ubject)|Heap|T(ype|empFileObject)|Ob(server|jectStorage)|DoublyLinkedList|PriorityQueue|Enum|Queue|Fi(le(Info|Object)|xedArray)))|e(ssionHandler(Interface)?|ekableIterator|rializable)|DO_(Model_(ReflectionDataObject|Type|Property)|Sequence|D(ata(Object|Factory)|AS_(Relational|XML(_Document)?|Setting|ChangeSummary|Data(Object|Factory)))|Exception|List)|wish(Result(s)?|Search)?|VM(Model)?|QLite(Result|3(Result|Stmt)?|Database|Unbuffered)|AM(Message|Connection))|H(RTime\\(StopWatch|PerformanceCounter)|aru(Image|Outline|D(oc|estination)|Page|Encoder|Font|Annotation)) | |
| 245 | 						|Ya(f_(R(oute(_(Re(write|gex)|Map|S(tatic|imple|upervar)|Interface)|r)|e(sponse_Abstract|quest_(Simple|Http|Abstract)|gistry))|Session|Con(troller_Abstract|fig_(Simple|Ini|Abstract))|Dispatcher|Plugin_Abstract|Exception|View_(Simple|Interface)|Loader|A(ction_Abstract|pplication))|r_(Server(_Exception)?|C(oncurrent_Client|lient(_Exception)?)))|N(o(RewindIterator|rmalizer)|umberFormatter)|C(o(nd|untable|ll(ectable|ator))|URLFile|a(chingIterator|llbackFilterIterator))|T(hread(ed)?|okyoTyrant(Table|Iterator|Query)?|ra(nsliterator|versable))|I(n(tl(RuleBasedBreakIterator|BreakIterator|C(har|odePointBreakIterator|alendar)|TimeZone|Iterator|DateFormatter|PartsIterator)|validArgumentException|finiteIterator)|terator(Iterator|Aggregate)?|magick(Draw|Pixel(Iterator)?|Kernel)?)|php_user_filter|Z(MQ(Socket|Context|Device|Poll)?|ipArchive|ookeeper)|O(CI\-(Collection|Lob)|ut(erIterator|Of(RangeException|BoundsException))|verflowException)|D(s\\(Map|S(tack|e(t|quence))|Hashable|Collection|Deque|P(air|riorityQueue)|Vector|Queue)|irectory(Iterator)?|omainException|OM(XPath|N(ode(list)?|amedNodeMap)|C(haracterData|omment|dataSection)|Text|Implementation|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr)|ate(Time(I(nterface|mmutable)|Zone)?|Interval|Period))|U(n(derflowException|expectedValueException)|Converter|I\\(Menu(Item)?|Size|Control(s\\(Radio|Gr(id|oup)|MultilineEntry|B(ox|utton)|S(pin|eparator|lider)|C(heck|o(lorButton|mbo))|Tab|P(icker|rogress)|E(ntry|ditableCombo)|Form|Label))?|Draw\\(Matrix|Brush(\\(RadialGradient|Gradient|LinearGradient))?|Stroke|Color|Text\\(Font(\\Descriptor)?|Layout)|P(en|ath))|Point|Executor|Window|Area))|JsonSerializable|finfo|P(har(Data|FileInfo)?|ool|DO(Statement)?|arentIterator)|E(v(S(tat|ignal)|Ch(ild|eck)|Timer|I(o|dle)|ent(B(uffer(Event)?|ase)|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?|P(eriodic|repare)|Embed|Fork|Watcher|Loop)?|rrorException|xception|mptyIterator)|V(8Js(Exception)?|arnish(Stat|Log|Admin))|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|Frame|AttachedPictureFrame))|QuickHash(StringIntHash|Int(S(tringHash|et)|Hash))|F(il(terIterator|esystemIterator)|ANNConnection)|mysqli(_(stmt|driver|warning|result))?|W(orker|eak(Map|ref))|L(imitIterator|o(cale|gicException)|ua(Closure)?|engthException|apack)|A(ppendIterator|PC(Iterator|UIterator)|rray(Iterator|Object|Access))) | |
| 246 | 						\b | |
| 247 | 					</string> | |
| 248 | 					<key>name</key> | |
| 249 | 					<string>support.class.builtin.php</string> | |
| 250 | 				</dict> | |
| 251 | 			</array> | |
| 252 | 		</dict> | |
| 253 | 		<key>class-name</key> | |
| 254 | 		<dict> | |
| 255 | 			<key>patterns</key> | |
| 256 | 			<array> | |
| 257 | 				<dict> | |
| 258 | 					<key>begin</key> | |
| 259 | 					<string>(?i)(?=\\?[a-z_0-9]+\\)</string> | |
| 260 | 					<key>end</key> | |
| 261 | 					<string>(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\]|\z)</string> | |
| 262 | 					<key>endCaptures</key> | |
| 263 | 					<dict> | |
| 264 | 						<key>1</key> | |
| 265 | 						<dict> | |
| 266 | 							<key>name</key> | |
| 267 | 							<string>support.class.php</string> | |
| 268 | 						</dict> | |
| 269 | 					</dict> | |
| 270 | 					<key>patterns</key> | |
| 271 | 					<array> | |
| 272 | 						<dict> | |
| 273 | 							<key>include</key> | |
| 274 | 							<string>#namespace</string> | |
| 275 | 						</dict> | |
| 276 | 					</array> | |
| 277 | 				</dict> | |
| 278 | 				<dict> | |
| 279 | 					<key>include</key> | |
| 280 | 					<string>#class-builtin</string> | |
| 281 | 				</dict> | |
| 282 | 				<dict> | |
| 283 | 					<key>begin</key> | |
| 284 | 					<string>(?=[\\a-zA-Z_])</string> | |
| 285 | 					<key>end</key> | |
| 286 | 					<string>(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\]|\z)</string> | |
| 287 | 					<key>endCaptures</key> | |
| 288 | 					<dict> | |
| 289 | 						<key>1</key> | |
| 290 | 						<dict> | |
| 291 | 							<key>name</key> | |
| 292 | 							<string>support.class.php</string> | |
| 293 | 						</dict> | |
| 294 | 					</dict> | |
| 295 | 					<key>patterns</key> | |
| 296 | 					<array> | |
| 297 | 						<dict> | |
| 298 | 							<key>include</key> | |
| 299 | 							<string>#namespace</string> | |
| 300 | 						</dict> | |
| 301 | 					</array> | |
| 302 | 				</dict> | |
| 303 | 			</array> | |
| 304 | 		</dict> | |
| 305 | 		<key>comments</key> | |
| 306 | 		<dict> | |
| 307 | 			<key>patterns</key> | |
| 308 | 			<array> | |
| 309 | 				<dict> | |
| 310 | 					<key>begin</key> | |
| 311 | 					<string>/\*\*(?:#@\+)?\s*$</string> | |
| 312 | 					<key>captures</key> | |
| 313 | 					<dict> | |
| 314 | 						<key>0</key> | |
| 315 | 						<dict> | |
| 316 | 							<key>name</key> | |
| 317 | 							<string>punctuation.definition.comment.php</string> | |
| 318 | 						</dict> | |
| 319 | 					</dict> | |
| 320 | 					<key>comment</key> | |
| 321 | 					<string>This now only highlights a docblock if the first line contains only /** | |
| 322 | 								- this is to stop highlighting everything as invalid when people do comment banners with /******** ... | |
| 323 | 								- Now matches /**#@+ too - used for docblock templates: http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate</string> | |
| 324 | 					<key>end</key> | |
| 325 | 					<string>\*/</string> | |
| 326 | 					<key>name</key> | |
| 327 | 					<string>comment.block.documentation.phpdoc.php</string> | |
| 328 | 					<key>patterns</key> | |
| 329 | 					<array> | |
| 330 | 						<dict> | |
| 331 | 							<key>include</key> | |
| 332 | 							<string>#php_doc</string> | |
| 333 | 						</dict> | |
| 334 | 					</array> | |
| 335 | 				</dict> | |
| 336 | 				<dict> | |
| 337 | 					<key>begin</key> | |
| 338 | 					<string>/\*</string> | |
| 339 | 					<key>captures</key> | |
| 340 | 					<dict> | |
| 341 | 						<key>0</key> | |
| 342 | 						<dict> | |
| 343 | 							<key>name</key> | |
| 344 | 							<string>punctuation.definition.comment.php</string> | |
| 345 | 						</dict> | |
| 346 | 					</dict> | |
| 347 | 					<key>end</key> | |
| 348 | 					<string>\*/</string> | |
| 349 | 					<key>name</key> | |
| 350 | 					<string>comment.block.php</string> | |
| 351 | 				</dict> | |
| 352 | 				<dict> | |
| 353 | 					<key>begin</key> | |
| 354 | 					<string>(^[ \t]+)?(?=//)</string> | |
| 355 | 					<key>beginCaptures</key> | |
| 356 | 					<dict> | |
| 357 | 						<key>1</key> | |
| 358 | 						<dict> | |
| 359 | 							<key>name</key> | |
| 360 | 							<string>punctuation.whitespace.comment.leading.php</string> | |
| 361 | 						</dict> | |
| 362 | 					</dict> | |
| 363 | 					<key>end</key> | |
| 364 | 					<string>(?!\G)</string> | |
| 365 | 					<key>patterns</key> | |
| 366 | 					<array> | |
| 367 | 						<dict> | |
| 368 | 							<key>begin</key> | |
| 369 | 							<string>//</string> | |
| 370 | 							<key>beginCaptures</key> | |
| 371 | 							<dict> | |
| 372 | 								<key>0</key> | |
| 373 | 								<dict> | |
| 374 | 									<key>name</key> | |
| 375 | 									<string>punctuation.definition.comment.php</string> | |
| 376 | 								</dict> | |
| 377 | 							</dict> | |
| 378 | 							<key>end</key> | |
| 379 | 							<string>\n|(?=\?&gt;)</string> | |
| 380 | 							<key>name</key> | |
| 381 | 							<string>comment.line.double-slash.php</string> | |
| 382 | 						</dict> | |
| 383 | 					</array> | |
| 384 | 				</dict> | |
| 385 | 				<dict> | |
| 386 | 					<key>begin</key> | |
| 387 | 					<string>(^[ \t]+)?(?=#)</string> | |
| 388 | 					<key>beginCaptures</key> | |
| 389 | 					<dict> | |
| 390 | 						<key>1</key> | |
| 391 | 						<dict> | |
| 392 | 							<key>name</key> | |
| 393 | 							<string>punctuation.whitespace.comment.leading.php</string> | |
| 394 | 						</dict> | |
| 395 | 					</dict> | |
| 396 | 					<key>end</key> | |
| 397 | 					<string>(?!\G)</string> | |
| 398 | 					<key>patterns</key> | |
| 399 | 					<array> | |
| 400 | 						<dict> | |
| 401 | 							<key>begin</key> | |
| 402 | 							<string>#</string> | |
| 403 | 							<key>beginCaptures</key> | |
| 404 | 							<dict> | |
| 405 | 								<key>0</key> | |
| 406 | 								<dict> | |
| 407 | 									<key>name</key> | |
| 408 | 									<string>punctuation.definition.comment.php</string> | |
| 409 | 								</dict> | |
| 410 | 							</dict> | |
| 411 | 							<key>end</key> | |
| 412 | 							<string>\n|(?=\?&gt;)</string> | |
| 413 | 							<key>name</key> | |
| 414 | 							<string>comment.line.number-sign.php</string> | |
| 415 | 						</dict> | |
| 416 | 					</array> | |
| 417 | 				</dict> | |
| 418 | 			</array> | |
| 419 | 		</dict> | |
| 420 | 		<key>constants</key> | |
| 421 | 		<dict> | |
| 422 | 			<key>patterns</key> | |
| 423 | 			<array> | |
| 424 | 				<dict> | |
| 425 | 					<key>begin</key> | |
| 426 | 					<string>(?xi)(?= | |
| 427 | 			 ( | |
| 428 | 			 (\\[a-z_][a-z_0-9]*\\[a-z_][a-z_0-9\\]*)| | |
| 429 | 			 ([a-z_][a-z_0-9]*\\[a-z_][a-z_0-9\\]*) | |
| 430 | 			 ) | |
| 431 | 			 [^a-z_0-9\\])</string> | |
| 432 | 					<key>end</key> | |
| 433 | 					<string>(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\])</string> | |
| 434 | 					<key>endCaptures</key> | |
| 435 | 					<dict> | |
| 436 | 						<key>1</key> | |
| 437 | 						<dict> | |
| 438 | 							<key>name</key> | |
| 439 | 							<string>constant.other.php</string> | |
| 440 | 						</dict> | |
| 441 | 					</dict> | |
| 442 | 					<key>patterns</key> | |
| 443 | 					<array> | |
| 444 | 						<dict> | |
| 445 | 							<key>include</key> | |
| 446 | 							<string>#namespace</string> | |
| 447 | 						</dict> | |
| 448 | 					</array> | |
| 449 | 				</dict> | |
| 450 | 				<dict> | |
| 451 | 					<key>begin</key> | |
| 452 | 					<string>(?=\\?[a-zA-Z_\x{7f}-\x{ff}])</string> | |
| 453 | 					<key>end</key> | |
| 454 | 					<string>(?=[^\\a-zA-Z_\x{7f}-\x{ff}])</string> | |
| 455 | 					<key>patterns</key> | |
| 456 | 					<array> | |
| 457 | 						<dict> | |
| 458 | 							<key>match</key> | |
| 459 | 							<string>(?i)\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string> | |
| 460 | 							<key>name</key> | |
| 461 | 							<string>constant.language.php</string> | |
| 462 | 						</dict> | |
| 463 | 						<dict> | |
| 464 | 							<key>captures</key> | |
| 465 | 							<dict> | |
| 466 | 								<key>1</key> | |
| 467 | 								<dict> | |
| 468 | 									<key>name</key> | |
| 469 | 									<string>punctuation.separator.inheritance.php</string> | |
| 470 | 								</dict> | |
| 471 | 							</dict> | |
| 472 | 							<key>match</key> | |
| 473 | 							<string>(\\)?\b(STD(IN|OUT|ERR)|ZEND_(THREAD_SAFE|DEBUG_BUILD)|DEFAULT_INCLUDE_PATH|P(HP_(R(OUND_HALF_(ODD|DOWN|UP|EVEN)|ELEASE_VERSION)|M(INOR_VERSION|A(XPATHLEN|JOR_VERSION))|BINDIR|S(HLIB_SUFFIX|YSCONFDIR|API)|CONFIG_FILE_(SCAN_DIR|PATH)|INT_(MAX|SIZE)|ZTS|O(S|UTPUT_HANDLER_(START|CONT|END))|D(EBUG|ATADIR)|URL_(SCHEME|HOST|USER|P(ORT|A(SS|TH))|QUERY|FRAGMENT)|PREFIX|E(XT(RA_VERSION|ENSION_DIR)|OL)|VERSION(_ID)?|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)|VERSION_(M(INOR|AJOR)|BUILD|S(UITEMASK|P_M(INOR|AJOR))|P(RODUCTTYPE|LATFORM)))|L(IBDIR|OCALSTATEDIR))|EAR_(INSTALL_DIR|EXTENSION_DIR))|E_(RECOVERABLE_ERROR|STRICT|NOTICE|CO(RE_(ERROR|WARNING)|MPILE_(ERROR|WARNING))|DEPRECATED|USER_(NOTICE|DEPRECATED|ERROR|WARNING)|PARSE|ERROR|WARNING|ALL))\b</string> | |
| 474 | 							<key>name</key> | |
| 475 | 							<string>support.constant.core.php</string> | |
| 476 | 						</dict> | |
| 477 | 						<dict> | |
| 478 | 							<key>captures</key> | |
| 479 | 							<dict> | |
| 480 | 								<key>1</key> | |
| 481 | 								<dict> | |
| 482 | 									<key>name</key> | |
| 483 | 									<string>punctuation.separator.inheritance.php</string> | |
| 484 | 								</dict> | |
| 485 | 							</dict> | |
| 486 | 							<key>match</key> | |
| 487 | 							<string>(\\)?\b(RADIXCHAR|GROUPING|M(_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRTPI|PI)|PI(_(2|4))?|E(ULER)?|L(N(10|2|PI)|OG(10E|2E)))|ON_(GROUPING|1(1|2|0)?|7|2|8|THOUSANDS_SEP|3|DECIMAL_POINT|9|4|5|6))|S(TR_PAD_(RIGHT|BOTH|LEFT)|ORT_(REGULAR|STRING|NUMERIC|DESC|LOCALE_STRING|ASC)|EEK_(SET|CUR|END))|H(TML_(SPECIALCHARS|ENTITIES)|ASH_HMAC)|YES(STR|EXPR)|N(_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|O(STR|EXPR)|EGATIVE_SIGN|AN)|C(R(YPT_(MD5|BLOWFISH|S(HA(256|512)|TD_DES|ALT_LENGTH)|EXT_DES)|NCYSTR|EDITS_(G(ROUP|ENERAL)|MODULES|SAPI|DOCS|QA|FULLPAGE|ALL))|HAR_MAX|O(NNECTION_(NORMAL|TIMEOUT|ABORTED)|DESET|UNT_(RECURSIVE|NORMAL))|URRENCY_SYMBOL|ASE_(UPPER|LOWER))|__COMPILER_HALT_OFFSET__|T(HOUS(EP|ANDS_SEP)|_FMT(_AMPM)?)|IN(T_(CURR_SYMBOL|FRAC_DIGITS)|I_(S(YSTEM|CANNER_(RAW|NORMAL))|USER|PERDIR|ALL)|F(O_(GENERAL|MODULES|C(REDITS|ONFIGURATION)|ENVIRONMENT|VARIABLES|LICENSE|ALL))?)|D(_(T_FMT|FMT)|IRECTORY_SEPARATOR|ECIMAL_POINT|A(Y_(1|7|2|3|4|5|6)|TE_(R(SS|FC(1(123|036)|2822|8(22|50)|3339))|COOKIE|ISO8601|W3C|ATOM)))|UPLOAD_ERR_(NO_(TMP_DIR|FILE)|CANT_WRITE|INI_SIZE|OK|PARTIAL|EXTENSION|FORM_SIZE)|P(M_STR|_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|OSITIVE_SIGN|ATH(_SEPARATOR|INFO_(BASENAME|DIRNAME|EXTENSION|FILENAME)))|E(RA(_(YEAR|T_FMT|D_(T_FMT|FMT)))?|XTR_(REFS|SKIP|IF_EXISTS|OVERWRITE|PREFIX_(SAME|I(NVALID|F_EXISTS)|ALL))|NT_(NOQUOTES|COMPAT|IGNORE|QUOTES))|FRAC_DIGITS|L(C_(M(ONETARY|ESSAGES)|NUMERIC|C(TYPE|OLLATE)|TIME|ALL)|O(G_(MAIL|SYSLOG|N(O(TICE|WAIT)|DELAY|EWS)|C(R(IT|ON)|ONS)|INFO|ODELAY|D(EBUG|AEMON)|U(SER|UCP)|P(ID|ERROR)|E(RR|MERG)|KERN|WARNING|L(OCAL(1|7|2|3|4|5|0|6)|PR)|A(UTH(PRIV)?|LERT))|CK_(SH|NB|UN|EX)))|A(M_STR|B(MON_(1(1|2|0)?|7|2|8|3|9|4|5|6)|DAY_(1|7|2|3|4|5|6))|SSERT_(BAIL|CALLBACK|QUIET_EVAL|WARNING|ACTIVE)|LT_DIGITS))\b</string> | |
| 488 | 							<key>name</key> | |
| 489 | 							<string>support.constant.std.php</string> | |
| 490 | 						</dict> | |
| 491 | 						<dict> | |
| 492 | 							<key>captures</key> | |
| 493 | 							<dict> | |
| 494 | 								<key>1</key> | |
| 495 | 								<dict> | |
| 496 | 									<key>name</key> | |
| 497 | 									<string>punctuation.separator.inheritance.php</string> | |
| 498 | 								</dict> | |
| 499 | 							</dict> | |
| 500 | 							<key>match</key> | |
| 501 | 							<string>(?x) | |
| 502 | 								(\\)?\b | |
| 503 | 								(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)|XML_(SAX_IMPL|HTML_DOCUMENT_NODE|N(OTATION_NODE|AMESPACE_DECL_NODE)|C(OMMENT_NODE|DATA_SECTION_NODE)|TEXT_NODE|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)|D(TD_NODE|OCUMENT_(NODE|TYPE_NODE|FRAG_NODE))|PI_NODE|E(RROR_(RECURSIVE_ENTITY_REF|MISPLACED_XML_PI|B(INARY_ENTITY_REF|AD_CHAR_REF)|SYNTAX|NO(NE|_(MEMORY|ELEMENTS))|TAG_MISMATCH|IN(CORRECT_ENCODING|VALID_TOKEN)|DUPLICATE_ATTRIBUTE|UN(CLOSED_(CDATA_SECTION|TOKEN)|DEFINED_ENTITY|KNOWN_ENCODING)|JUNK_AFTER_DOC_ELEMENT|PAR(TIAL_CHAR|AM_ENTITY_REF)|EXTERNAL_ENTITY_HANDLING|A(SYNC_ENTITY|TTRIBUTE_EXTERNAL_ENTITY_REF))|NTITY_(REF_NODE|NODE|DECL_NODE)|LEMENT_(NODE|DECL_NODE))|LOCAL_NAMESPACE|ATTRIBUTE_(N(MTOKEN(S)?|O(TATION|DE))|CDATA|ID(REF(S)?)?|DECL_NODE|EN(TITY|UMERATION)))|M(HASH_(RIPEMD(1(28|60)|256|320)|GOST|MD(2|4|5)|S(HA(1|2(24|56)|384|512)|NEFRU256)|HAVAL(1(28|92|60)|2(24|56))|CRC32(B)?|TIGER(1(28|60))?|WHIRLPOOL|ADLER32)|YSQL(_(BOTH|NUM|CLIENT_(SSL|COMPRESS|I(GNORE_SPACE|NTERACTIVE))|ASSOC)|I_(RE(PORT_(STRICT|INDEX|OFF|ERROR|ALL)|FRESH_(GRANT|MASTER|BACKUP_LOG|S(TATUS|LAVE)|HOSTS|T(HREADS|ABLES)|LOG)|AD_DEFAULT_(GROUP|FILE))|GROUP_FLAG|MULTIPLE_KEY_FLAG|B(INARY_FLAG|OTH|LOB_FLAG)|S(T(MT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|ORE_RESULT)|E(RVER_QUERY_(NO_(GOOD_INDEX_USED|INDEX_USED)|WAS_SLOW)|T_(CHARSET_NAME|FLAG)))|N(O(_D(EFAULT_VALUE_FLAG|ATA)|T_NULL_FLAG)|UM(_FLAG)?)|C(URSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)|LIENT_(SSL|NO_SCHEMA|COMPRESS|I(GNORE_SPACE|NTERACTIVE)|FOUND_ROWS))|T(YPE_(GEOMETRY|MEDIUM_BLOB|B(IT|LOB)|S(HORT|TRING|ET)|YEAR|N(ULL|EWD(ECIMAL|ATE))|CHAR|TI(ME(STAMP)?|NY(_BLOB)?)|INT(24|ERVAL)|D(OUBLE|ECIMAL|ATE(TIME)?)|ENUM|VAR_STRING|FLOAT|LONG(_BLOB|LONG)?)|IMESTAMP_FLAG)|INIT_COMMAND|ZEROFILL_FLAG|O(N_UPDATE_NOW_FLAG|PT_(NET_(READ_BUFFER_SIZE|CMD_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE))|D(EBUG_TRACE_ENABLED|ATA_TRUNCATED)|U(SE_RESULT|N(SIGNED_FLAG|IQUE_KEY_FLAG))|P(RI_KEY_FLAG|ART_KEY_FLAG)|ENUM_FLAG|A(S(SOC|YNC)|UTO_INCREMENT_FLAG)))|CRYPT_(R(C(2|6)|IJNDAEL_(1(28|92)|256)|AND)|GOST|XTEA|M(ODE_(STREAM|NOFB|C(BC|FB)|OFB|ECB)|ARS)|BLOWFISH(_COMPAT)?|S(ERPENT|KIPJACK|AFER(128|PLUS|64))|C(RYPT|AST_(128|256))|T(RIPLEDES|HREEWAY|WOFISH)|IDEA|3DES| | |
| 504 | 									DE(S|CRYPT|V_(RANDOM|URANDOM))|PANAMA|EN(CRYPT|IGNA)|WAKE|LOKI97|ARCFOUR(_IV)?))|S(TREAM_(REPORT_ERRORS|M(UST_SEEK|KDIR_RECURSIVE)|BUFFER_(NONE|FULL|LINE)|S(HUT_(RD(WR)?|WR)|OCK_(R(DM|AW)|S(TREAM|EQPACKET)|DGRAM)|ERVER_(BIND|LISTEN))|NOTIFY_(RE(SOLVE|DIRECTED)|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|CO(MPLETED|NNECT)|PROGRESS|F(ILE_SIZE_IS|AILURE)|AUTH_RE(SULT|QUIRED))|C(RYPTO_METHOD_(SSLv(2(_(SERVER|CLIENT)|3_(SERVER|CLIENT))|3_(SERVER|CLIENT))|TLS_(SERVER|CLIENT))|LIENT_(CONNECT|PERSISTENT|ASYNC_CONNECT)|AST_(FOR_SELECT|AS_STREAM))|I(GNORE_URL|S_URL|PPROTO_(RAW|TCP|I(CMP|P)|UDP))|O(OB|PTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER))|U(RL_STAT_(QUIET|LINK)|SE_PATH)|P(EEK|F_(INET(6)?|UNIX))|ENFORCE_SAFE_MODE|FILTER_(READ|WRITE|ALL))|UNFUNCS_RET_(STRING|TIMESTAMP|DOUBLE)|QLITE(_(R(OW|EADONLY)|MIS(MATCH|USE)|B(OTH|USY)|SCHEMA|N(O(MEM|T(FOUND|ADB)|LFS)|UM)|C(O(RRUPT|NSTRAINT)|ANTOPEN)|TOOBIG|I(NTER(RUPT|NAL)|OERR)|OK|DONE|P(ROTOCOL|ERM)|E(RROR|MPTY)|F(ORMAT|ULL)|LOCKED|A(BORT|SSOC|UTH))|3_(B(OTH|LOB)|NU(M|LL)|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT|ASSOC)))|CURL(M(SG_DONE|_(BAD_(HANDLE|EASY_HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|O(UT_OF_MEMORY|K)))|SSH_AUTH_(HOST|NONE|DEFAULT|P(UBLICKEY|ASSWORD)|KEYBOARD)|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC))|_(HTTP_VERSION_(1_(1|0)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(MODSINCE|UNMODSINCE)|LASTMOD)|IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))|INFO_(RE(DIRECT_(COUNT|TIME)|QUEST_SIZE)|S(SL_VERIFYRESULT|TARTTRANSFER_TIME|IZE_(DOWNLOAD|UPLOAD)|PEED_(DOWNLOAD|UPLOAD))|H(TTP_CODE|EADER_(SIZE|OUT))|NAMELOOKUP_TIME|C(ON(NECT_TIME|TENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD)))|ERTINFO)|TOTAL_TIME|PR(IVATE|ETRANSFER_TIME)|EFFECTIVE_URL|FILETIME)|OPT_(R(E(SUME_FROM|TURNTRANSFER|DIR_PROTOCOLS|FERER|AD(DATA|FUNCTION))|AN(GE|DOM_FILE))|MAX(REDIRS|CONNECTS)|B(INARYTRANSFER|UFFERSIZE)|S(S(H_(HOST_PUBLIC_KEY_MD5|P(RIVATE_KEYFILE|UBLIC_KEYFILE)|AUTH_TYPES)|L(CERT(TYPE|PASSWD)?|_(CIPHER_LIST|VERIFY(HOST|PEER))|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?))|TDERR)|H(TTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)|EADER(FUNCTION)?) | |
| 505 | 									|N(O(BODY|SIGNAL|PROGRESS)|ETRC)|C(RLF|O(NNECTTIMEOUT(_MS)?|OKIE(SESSION|JAR|FILE)?)|USTOMREQUEST|ERTINFO|LOSEPOLICY|A(INFO|PATH))|T(RANSFERTEXT|CP_NODELAY|IME(CONDITION|OUT(_MS)?|VALUE))|I(N(TERFACE|FILE(SIZE)?)|PRESOLVE)|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|U(RL|SER(PWD|AGENT)|NRESTRICTED_AUTH|PLOAD)|P(R(IVATE|O(GRESSFUNCTION|XY(TYPE|USERPWD|PORT|AUTH)?|TOCOLS))|O(RT|ST(REDIR|QUOTE|FIELDS)?)|UT)|E(GDSOCKET|NCODING)|VERBOSE|K(RB4LEVEL|EYPASSWD)|QUOTE|F(RESH_CONNECT|TP(SSLAUTH|_(S(SL|KIP_PASV_IP)|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)|PORT|LISTONLY|APPEND)|ILE(TIME)?|O(RBID_REUSE|LLOWLOCATION)|AILONERROR)|WRITE(HEADER|FUNCTION)|LOW_SPEED_(TIME|LIMIT)|AUTOREFERER)|PRO(XY_(SOCKS(4|5)|HTTP)|TO_(S(CP|FTP)|HTTP(S)?|T(ELNET|FTP)|DICT|F(TP(S)?|ILE)|LDAP(S)?|ALL))|E_(RE(CV_ERROR|AD_ERROR)|GOT_NOTHING|MALFORMAT_USER|BAD_(C(ONTENT_ENCODING|ALLING_ORDER)|PASSWORD_ENTERED|FUNCTION_ARGUMENT)|S(S(H|L_(C(IPHER|ONNECT_ERROR|ERTPROBLEM|ACERT)|PEER_CERTIFICATE|ENGINE_(SETFAILED|NOTFOUND)))|HARE_IN_USE|END_ERROR)|HTTP_(RANGE_ERROR|NOT_FOUND|PO(RT_FAILED|ST_ERROR))|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|T(OO_MANY_REDIRECTS|ELNET_OPTION_SYNTAX)|O(BSOLETE|UT_OF_MEMORY|PERATION_TIMEOUTED|K)|U(RL_MALFORMAT(_USER)?|N(SUPPORTED_PROTOCOL|KNOWN_TELNET_OPTION))|PARTIAL_FILE|F(TP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|C(OULDNT_(RETR_FILE|GET_SIZE|S(TOR_FILE|ET_(BINARY|ASCII))|USE_REST)|ANT_(RECONNECT|GET_HOST))|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|W(RITE_ERROR|EIRD_(SERVER_REPLY|227_FORMAT|USER_REPLY|PAS(S_REPLY|V_REPLY)))|ACCESS_DENIED)|ILE(SIZE_EXCEEDED|_COULDNT_READ_FILE)|UNCTION_NOT_FOUND|AILED_INIT)|WRITE_ERROR|L(IBRARY_NOT_FOUND|DAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL))|ABORTED_BY_CALLBACK)|VERSION_NOW|FTP(METHOD_(MULTICWD|SINGLECWD|NOCWD)|SSL_(NONE|CONTROL|TRY|ALL)|AUTH_(SSL|TLS|DEFAULT))|AUTH_(GSSNEGOTIATE|BASIC|NTLM|DIGEST|ANY(SAFE)?))|I(MAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|I(CO|FF)|UNKNOWN|J(B2|P(X|2|C|EG(2000)?))|P(SD|NG)|WBMP)|NPUT_(REQUEST|GET|SE(RVER|SSION)|COOKIE|POST|ENV)|CONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION))|D(NS_(MX|S(RV|OA)|HINFO|N(S|APTR)|CNAME|TXT|PTR|A(NY|LL|AAA|6)?)|OM(STRING_SIZE_ERR|_(SYNTAX_ERR|HIERARCHY_REQUEST_ERR|N(O(_(MODIFICATION_ALLOWED_ERR|DATA_ALLOWED_ERR)|T_(SUPPORTED_ERR|FOUND_ERR))|AMESPACE_ERR)|IN(DEX_SIZE_ERR|USE_ATTRIBUTE_ERR|VALID_(MODIFICATION_ERR|STATE_ERR|CHARACTER_ERR|ACCESS_ERR))|PHP_ERR|VALIDATION_ERR|WRONG_DOCUMENT_ERR)))|JSON_(HEX_(TAG|QUOT|A(MP|POS))|NUMERIC_CHECK|ERROR_(S(YNTAX|TATE_MISMATCH)|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)|P(REG_(RECURSION_LIMIT_ERROR|GREP_INVERT|BA(CKTRACK_LIMIT_ERROR|D_UTF8_(OFFSET_ERROR|ERROR))|S(PLIT_(NO_EMPTY|OFFSET_CAPTURE|DELIM_CAPTURE)|ET_ORDER)|NO_ERROR|INTERNAL_ERROR|OFFSET_CAPTURE|PATTERN_ORDER)|SFS_(PASS_ON|ERR_FATAL|F(EED_ME|LAG_(NORMAL|FLUSH_(CLOSE|INC))))|CRE_VERSION|OSIX_(R_OK|X_OK|S_IF(REG|BLK|SOCK|CHR|IFO)|F_OK|W_OK))|F(NM_(NOESCAPE|CASEFOLD|P(ERIOD|ATHNAME))|IL(TER_(REQUIRE_(SCALAR|ARRAY)|SANITIZE_(MAGIC_QUOTES|S(TRI(NG|PPED)|PECIAL_CHARS)|NUMBER_(INT|FLOAT)|URL|E(MAIL|NCODED)|FULL_SPECIAL_CHARS)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW|VALIDATE_(REGEXP|BOOLEAN|I(NT|P)|URL|EMAIL|FLOAT)|F(ORCE_ARRAY|LAG_(S(CHEME_REQUIRED|TRIP_(BACKTICK|HIGH|LOW))|HOST_REQUIRED|NO(NE|_(RES_RANGE|PRIV_RANGE|ENCODE_QUOTES))|IPV(4|6)|PATH_REQUIRED|E(MPTY_STRING_NULL|NCODE_(HIGH|LOW|AMP))|QUERY_REQUIRED|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION))))|E(_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)|INFO_(RAW|MIME(_(TYPE|ENCODING))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)))|ORCE_(GZIP|DEFLATE))|LIBXML_(XINCLUDE|N(SCLEAN|O(XMLDECL|BLANKS|NET|CDATA|E(RROR|MPTYTAG|NT)|WARNING))|COMPACT|D(TD(VALID|LOAD|ATTR)|OTTED_VERSION)|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)|VERSION|LOADED_VERSION)) | |
| 506 | 							\b | |
| 507 | 							</string> | |
| 508 | 							<key>name</key> | |
| 509 | 							<string>support.constant.ext.php</string> | |
| 510 | 						</dict> | |
| 511 | 						<dict> | |
| 512 | 							<key>captures</key> | |
| 513 | 							<dict> | |
| 514 | 								<key>1</key> | |
| 515 | 								<dict> | |
| 516 | 									<key>name</key> | |
| 517 | 									<string>punctuation.separator.inheritance.php</string> | |
| 518 | 								</dict> | |
| 519 | 							</dict> | |
| 520 | 							<key>match</key> | |
| 521 | 							<string>(\\)?\bT_(RE(TURN|QUIRE(_ONCE)?)|G(OTO|LOBAL)|XOR_EQUAL|M(INUS_EQUAL|OD_EQUAL|UL_EQUAL|ETHOD_C|L_COMMENT)|B(REAK|OOL(_CAST|EAN_(OR|AND))|AD_CHARACTER)|S(R(_EQUAL)?|T(RING(_(CAST|VARNAME))?|A(RT_HEREDOC|TIC))|WITCH|L(_EQUAL)?)|HALT_COMPILER|N(S_(SEPARATOR|C)|UM_STRING|EW|AMESPACE)|C(HARACTER|O(MMENT|N(ST(ANT_ENCAPSED_STRING)?|CAT_EQUAL|TINUE))|URLY_OPEN|L(O(SE_TAG|NE)|ASS(_C)?)|A(SE|TCH))|T(RY|HROW)|I(MPLEMENTS|S(SET|_(GREATER_OR_EQUAL|SMALLER_OR_EQUAL|NOT_(IDENTICAL|EQUAL)|IDENTICAL|EQUAL))|N(STANCEOF|C(LUDE(_ONCE)?)?|T(_CAST|ERFACE)|LINE_HTML)|F)|O(R_EQUAL|BJECT_(CAST|OPERATOR)|PEN_TAG(_WITH_ECHO)?|LD_FUNCTION)|D(NUMBER|I(R|V_EQUAL)|O(C_COMMENT|UBLE_(C(OLON|AST)|ARROW)|LLAR_OPEN_CURLY_BRACES)?|E(C(LARE)?|FAULT))|U(SE|NSET(_CAST)?)|P(R(I(NT|VATE)|OTECTED)|UBLIC|LUS_EQUAL|AAMAYIM_NEKUDOTAYIM)|E(X(TENDS|IT)|MPTY|N(CAPSED_AND_WHITESPACE|D(SWITCH|_HEREDOC|IF|DECLARE|FOR(EACH)?|WHILE))|CHO|VAL|LSE(IF)?)|VAR(IABLE)?|F(I(NAL|LE)|OR(EACH)?|UNC(_C|TION))|WHI(TESPACE|LE)|L(NUMBER|I(ST|NE)|OGICAL_(XOR|OR|AND))|A(RRAY(_CAST)?|BSTRACT|S|ND_EQUAL))\b</string> | |
| 522 | 							<key>name</key> | |
| 523 | 							<string>support.constant.parser-token.php</string> | |
| 524 | 						</dict> | |
| 525 | 						<dict> | |
| 526 | 							<key>comment</key> | |
| 527 | 							<string>In PHP, any identifier which is not a variable is taken to be a constant. | |
| 528 | 				However, if there is no constant defined with the given name then a notice | |
| 529 | 				is generated and the constant is assumed to have the value of its name.</string> | |
| 530 | 							<key>match</key> | |
| 531 | 							<string>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*</string> | |
| 532 | 							<key>name</key> | |
| 533 | 							<string>constant.other.php</string> | |
| 534 | 						</dict> | |
| 535 | 					</array> | |
| 536 | 				</dict> | |
| 537 | 			</array> | |
| 538 | 		</dict> | |
| 539 | 		<key>function-arguments</key> | |
| 540 | 		<dict> | |
| 541 | 			<key>patterns</key> | |
| 542 | 			<array> | |
| 543 | 				<dict> | |
| 544 | 					<key>include</key> | |
| 545 | 					<string>#comments</string> | |
| 546 | 				</dict> | |
| 547 | 				<dict> | |
| 548 | 					<key>begin</key> | |
| 549 | 					<string>(?ix) | |
| 550 | 						(?:														# Optional | |
| 551 | 							(\?)? | |
| 552 | 							(?: | |
| 553 | 								(array|bool|float|int|string)					# scalar-type | |
| 554 | 							 | (callable|iterable)								# base-type-declaration | |
| 555 | 							 | ([a-z_0-9\\]*[a-z_][a-z_0-9]*) | |
| 556 | 							) | |
| 557 | 							\s+ | |
| 558 | 						)? | |
| 559 | 						(?:(&amp;)\s*)?												# Reference | |
| 560 | 						((\$+)[a-z_\x{7f}-\x{ff}][a-z0-9_\x{7f}-\x{ff}]*)		# Variable name | |
| 561 | 					</string> | |
| 562 | 					<key>beginCaptures</key> | |
| 563 | 					<dict> | |
| 564 | 						<key>1</key> | |
| 565 | 						<dict> | |
| 566 | 							<key>name</key> | |
| 567 | 							<string>storage.modifier.nullable.php</string> | |
| 568 | 						</dict> | |
| 569 | 						<key>2</key> | |
| 570 | 						<dict> | |
| 571 | 							<key>name</key> | |
| 572 | 							<string>storage.type.$2.php</string> | |
| 573 | 						</dict> | |
| 574 | 						<key>3</key> | |
| 575 | 						<dict> | |
| 576 | 							<key>name</key> | |
| 577 | 							<string>storage.modifier.$3.php</string> | |
| 578 | 						</dict> | |
| 579 | 						<key>4</key> | |
| 580 | 						<dict> | |
| 581 | 							<key>patterns</key> | |
| 582 | 							<array> | |
| 583 | 								<dict> | |
| 584 | 									<key>include</key> | |
| 585 | 									<string>#class-name</string> | |
| 586 | 								</dict> | |
| 587 | 							</array> | |
| 588 | 						</dict> | |
| 589 | 						<key>5</key> | |
| 590 | 						<dict> | |
| 591 | 							<key>name</key> | |
| 592 | 							<string>storage.modifier.reference.php</string> | |
| 593 | 						</dict> | |
| 594 | 						<key>6</key> | |
| 595 | 						<dict> | |
| 596 | 							<key>name</key> | |
| 597 | 							<string>variable.other.php</string> | |
| 598 | 						</dict> | |
| 599 | 						<key>7</key> | |
| 600 | 						<dict> | |
| 601 | 							<key>name</key> | |
| 602 | 							<string>punctuation.definition.variable.php</string> | |
| 603 | 						</dict> | |
| 604 | 					</dict> | |
| 605 | 					<key>end</key> | |
| 606 | 					<string>(?=,|\)|/[/*]|\#)</string> | |
| 607 | 					<key>name</key> | |
| 608 | 					<string>meta.function.argment.php</string> | |
| 609 | 					<key>patterns</key> | |
| 610 | 					<array> | |
| 611 | 						<dict> | |
| 612 | 							<key>begin</key> | |
| 613 | 							<string>\s*(=)</string> | |
| 614 | 							<key>beginCaptures</key> | |
| 615 | 							<dict> | |
| 616 | 								<key>1</key> | |
| 617 | 								<dict> | |
| 618 | 									<key>name</key> | |
| 619 | 									<string>keyword.operator.assignment.php</string> | |
| 620 | 								</dict> | |
| 621 | 							</dict> | |
| 622 | 							<key>end</key> | |
| 623 | 							<string>(?=,|\)|/[/*]|\#)</string> | |
| 624 | 							<key>patterns</key> | |
| 625 | 							<array> | |
| 626 | 								<dict> | |
| 627 | 									<key>include</key> | |
| 628 | 									<string>#parameter-default-types</string> | |
| 629 | 								</dict> | |
| 630 | 							</array> | |
| 631 | 						</dict> | |
| 632 | 						<dict> | |
| 633 | 							<key>match</key> | |
| 634 | 							<string>\S</string> | |
| 635 | 							<key>name</key> | |
| 636 | 							<string>invalid.illegal.character-not-allowed-here.php</string> | |
| 637 | 						</dict> | |
| 638 | 					</array> | |
| 639 | 				</dict> | |
| 640 | 			</array> | |
| 641 | 		</dict> | |
| 642 | 		<key>function-call</key> | |
| 643 | 		<dict> | |
| 644 | 			<key>patterns</key> | |
| 645 | 			<array> | |
| 646 | 				<dict> | |
| 647 | 					<key>begin</key> | |
| 648 | 					<string>(?i)(?=\\?[a-z_0-9\\]+\\[a-z_][a-z0-9_]*\s*\()</string> | |
| 649 | 					<key>comment</key> | |
| 650 | 					<string>Functions in a user-defined namespace (overrides any built-ins)</string> | |
| 651 | 					<key>end</key> | |
| 652 | 					<string>(?=\s*\()</string> | |
| 653 | 					<key>patterns</key> | |
| 654 | 					<array> | |
| 655 | 						<dict> | |
| 656 | 							<key>include</key> | |
| 657 | 							<string>#user-function-call</string> | |
| 658 | 						</dict> | |
| 659 | 					</array> | |
| 660 | 				</dict> | |
| 661 | 				<dict> | |
| 662 | 					<key>match</key> | |
| 663 | 					<string>(?i)\b(print|echo)\b</string> | |
| 664 | 					<key>name</key> | |
| 665 | 					<string>support.function.construct.php</string> | |
| 666 | 				</dict> | |
| 667 | 				<dict> | |
| 668 | 					<key>begin</key> | |
| 669 | 					<string>(?i)(\\)?(?=\b[a-z_][a-z_0-9]*\s*\()</string> | |
| 670 | 					<key>beginCaptures</key> | |
| 671 | 					<dict> | |
| 672 | 						<key>1</key> | |
| 673 | 						<dict> | |
| 674 | 							<key>name</key> | |
| 675 | 							<string>punctuation.separator.inheritance.php</string> | |
| 676 | 						</dict> | |
| 677 | 					</dict> | |
| 678 | 					<key>comment</key> | |
| 679 | 					<string>Root namespace function calls (built-in or user)</string> | |
| 680 | 					<key>end</key> | |
| 681 | 					<string>(?=\s*\()</string> | |
| 682 | 					<key>patterns</key> | |
| 683 | 					<array> | |
| 684 | 						<dict> | |
| 685 | 							<key>match</key> | |
| 686 | 							<string>(?i)\b(isset|unset|e(val|mpty)|list)(?=\s*\()</string> | |
| 687 | 							<key>name</key> | |
| 688 | 							<string>support.function.construct.php</string> | |
| 689 | 						</dict> | |
| 690 | 						<dict> | |
| 691 | 							<key>include</key> | |
| 692 | 							<string>#support</string> | |
| 693 | 						</dict> | |
| 694 | 						<dict> | |
| 695 | 							<key>include</key> | |
| 696 | 							<string>#user-function-call</string> | |
| 697 | 						</dict> | |
| 698 | 					</array> | |
| 699 | 				</dict> | |
| 700 | 			</array> | |
| 701 | 		</dict> | |
| 702 | 		<key>heredoc</key> | |
| 703 | 		<dict> | |
| 704 | 			<key>patterns</key> | |
| 705 | 			<array> | |
| 706 | 				<dict> | |
| 707 | 					<key>begin</key> | |
| 708 | 					<string>(?=&lt;&lt;&lt;\s*("?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\1)\s*$)</string> | |
| 709 | 					<key>end</key> | |
| 710 | 					<string>(?!\G)</string> | |
| 711 | 					<key>injections</key> | |
| 712 | 					<dict> | |
| 713 | 						<key>*</key> | |
| 714 | 						<dict> | |
| 715 | 							<key>patterns</key> | |
| 716 | 							<array> | |
| 717 | 								<dict> | |
| 718 | 									<key>include</key> | |
| 719 | 									<string>#interpolation</string> | |
| 720 | 								</dict> | |
| 721 | 							</array> | |
| 722 | 						</dict> | |
| 723 | 					</dict> | |
| 724 | 					<key>name</key> | |
| 725 | 					<string>string.unquoted.heredoc.php</string> | |
| 726 | 					<key>patterns</key> | |
| 727 | 					<array> | |
| 728 | 						<dict> | |
| 729 | 							<key>include</key> | |
| 730 | 							<string>#heredoc_interior</string> | |
| 731 | 						</dict> | |
| 732 | 					</array> | |
| 733 | 				</dict> | |
| 734 | 				<dict> | |
| 735 | 					<key>begin</key> | |
| 736 | 					<string>(?=&lt;&lt;&lt;\s*('?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\1)\s*$)</string> | |
| 737 | 					<key>end</key> | |
| 738 | 					<string>(?!\G)</string> | |
| 739 | 					<key>name</key> | |
| 740 | 					<string>string.unquoted.heredoc.nowdoc.php</string> | |
| 741 | 					<key>patterns</key> | |
| 742 | 					<array> | |
| 743 | 						<dict> | |
| 744 | 							<key>include</key> | |
| 745 | 							<string>#heredoc_interior</string> | |
| 746 | 						</dict> | |
| 747 | 					</array> | |
| 748 | 				</dict> | |
| 749 | 			</array> | |
| 750 | 			<key>repository</key> | |
| 751 | 			<dict> | |
| 752 | 				<key>heredoc_interior</key> | |
| 753 | 				<dict> | |
| 754 | 					<key>patterns</key> | |
| 755 | 					<array> | |
| 756 | 						<dict> | |
| 757 | 							<key>begin</key> | |
| 758 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(HTML)(\2)\s*$\n?</string> | |
| 759 | 							<key>beginCaptures</key> | |
| 760 | 							<dict> | |
| 761 | 								<key>0</key> | |
| 762 | 								<dict> | |
| 763 | 									<key>name</key> | |
| 764 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 765 | 								</dict> | |
| 766 | 								<key>1</key> | |
| 767 | 								<dict> | |
| 768 | 									<key>name</key> | |
| 769 | 									<string>punctuation.definition.string.php</string> | |
| 770 | 								</dict> | |
| 771 | 								<key>3</key> | |
| 772 | 								<dict> | |
| 773 | 									<key>name</key> | |
| 774 | 									<string>keyword.operator.heredoc.php</string> | |
| 775 | 								</dict> | |
| 776 | 							</dict> | |
| 777 | 							<key>contentName</key> | |
| 778 | 							<string>text.html</string> | |
| 779 | 							<key>end</key> | |
| 780 | 							<string>^(\3)\b</string> | |
| 781 | 							<key>endCaptures</key> | |
| 782 | 							<dict> | |
| 783 | 								<key>0</key> | |
| 784 | 								<dict> | |
| 785 | 									<key>name</key> | |
| 786 | 									<string>punctuation.section.embedded.end.php</string> | |
| 787 | 								</dict> | |
| 788 | 								<key>1</key> | |
| 789 | 								<dict> | |
| 790 | 									<key>name</key> | |
| 791 | 									<string>keyword.operator.heredoc.php</string> | |
| 792 | 								</dict> | |
| 793 | 							</dict> | |
| 794 | 							<key>name</key> | |
| 795 | 							<string>meta.embedded.html</string> | |
| 796 | 							<key>patterns</key> | |
| 797 | 							<array> | |
| 798 | 								<dict> | |
| 799 | 									<key>include</key> | |
| 800 | 									<string>text.html.basic</string> | |
| 801 | 								</dict> | |
| 802 | 							</array> | |
| 803 | 						</dict> | |
| 804 | 						<dict> | |
| 805 | 							<key>begin</key> | |
| 806 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(XML)(\2)\s*$\n?</string> | |
| 807 | 							<key>beginCaptures</key> | |
| 808 | 							<dict> | |
| 809 | 								<key>0</key> | |
| 810 | 								<dict> | |
| 811 | 									<key>name</key> | |
| 812 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 813 | 								</dict> | |
| 814 | 								<key>1</key> | |
| 815 | 								<dict> | |
| 816 | 									<key>name</key> | |
| 817 | 									<string>punctuation.definition.string.php</string> | |
| 818 | 								</dict> | |
| 819 | 								<key>3</key> | |
| 820 | 								<dict> | |
| 821 | 									<key>name</key> | |
| 822 | 									<string>keyword.operator.heredoc.php</string> | |
| 823 | 								</dict> | |
| 824 | 							</dict> | |
| 825 | 							<key>contentName</key> | |
| 826 | 							<string>text.xml</string> | |
| 827 | 							<key>end</key> | |
| 828 | 							<string>^(\3)\b</string> | |
| 829 | 							<key>endCaptures</key> | |
| 830 | 							<dict> | |
| 831 | 								<key>0</key> | |
| 832 | 								<dict> | |
| 833 | 									<key>name</key> | |
| 834 | 									<string>punctuation.section.embedded.end.php</string> | |
| 835 | 								</dict> | |
| 836 | 								<key>1</key> | |
| 837 | 								<dict> | |
| 838 | 									<key>name</key> | |
| 839 | 									<string>keyword.operator.heredoc.php</string> | |
| 840 | 								</dict> | |
| 841 | 							</dict> | |
| 842 | 							<key>name</key> | |
| 843 | 							<string>meta.embedded.xml</string> | |
| 844 | 							<key>patterns</key> | |
| 845 | 							<array> | |
| 846 | 								<dict> | |
| 847 | 									<key>include</key> | |
| 848 | 									<string>text.xml</string> | |
| 849 | 								</dict> | |
| 850 | 							</array> | |
| 851 | 						</dict> | |
| 852 | 						<dict> | |
| 853 | 							<key>begin</key> | |
| 854 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(SQL)(\2)\s*$\n?</string> | |
| 855 | 							<key>beginCaptures</key> | |
| 856 | 							<dict> | |
| 857 | 								<key>0</key> | |
| 858 | 								<dict> | |
| 859 | 									<key>name</key> | |
| 860 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 861 | 								</dict> | |
| 862 | 								<key>1</key> | |
| 863 | 								<dict> | |
| 864 | 									<key>name</key> | |
| 865 | 									<string>punctuation.definition.string.php</string> | |
| 866 | 								</dict> | |
| 867 | 								<key>3</key> | |
| 868 | 								<dict> | |
| 869 | 									<key>name</key> | |
| 870 | 									<string>keyword.operator.heredoc.php</string> | |
| 871 | 								</dict> | |
| 872 | 							</dict> | |
| 873 | 							<key>contentName</key> | |
| 874 | 							<string>source.sql</string> | |
| 875 | 							<key>end</key> | |
| 876 | 							<string>^(\3)\b</string> | |
| 877 | 							<key>endCaptures</key> | |
| 878 | 							<dict> | |
| 879 | 								<key>0</key> | |
| 880 | 								<dict> | |
| 881 | 									<key>name</key> | |
| 882 | 									<string>punctuation.section.embedded.end.php</string> | |
| 883 | 								</dict> | |
| 884 | 								<key>1</key> | |
| 885 | 								<dict> | |
| 886 | 									<key>name</key> | |
| 887 | 									<string>keyword.operator.heredoc.php</string> | |
| 888 | 								</dict> | |
| 889 | 							</dict> | |
| 890 | 							<key>name</key> | |
| 891 | 							<string>meta.embedded.sql</string> | |
| 892 | 							<key>patterns</key> | |
| 893 | 							<array> | |
| 894 | 								<dict> | |
| 895 | 									<key>include</key> | |
| 896 | 									<string>source.sql</string> | |
| 897 | 								</dict> | |
| 898 | 							</array> | |
| 899 | 						</dict> | |
| 900 | 						<dict> | |
| 901 | 							<key>begin</key> | |
| 902 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(JAVASCRIPT)(\2)\s*$\n?</string> | |
| 903 | 							<key>beginCaptures</key> | |
| 904 | 							<dict> | |
| 905 | 								<key>0</key> | |
| 906 | 								<dict> | |
| 907 | 									<key>name</key> | |
| 908 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 909 | 								</dict> | |
| 910 | 								<key>1</key> | |
| 911 | 								<dict> | |
| 912 | 									<key>name</key> | |
| 913 | 									<string>punctuation.definition.string.php</string> | |
| 914 | 								</dict> | |
| 915 | 								<key>3</key> | |
| 916 | 								<dict> | |
| 917 | 									<key>name</key> | |
| 918 | 									<string>keyword.operator.heredoc.php</string> | |
| 919 | 								</dict> | |
| 920 | 							</dict> | |
| 921 | 							<key>contentName</key> | |
| 922 | 							<string>source.js</string> | |
| 923 | 							<key>end</key> | |
| 924 | 							<string>^(\3)\b</string> | |
| 925 | 							<key>endCaptures</key> | |
| 926 | 							<dict> | |
| 927 | 								<key>0</key> | |
| 928 | 								<dict> | |
| 929 | 									<key>name</key> | |
| 930 | 									<string>punctuation.section.embedded.end.php</string> | |
| 931 | 								</dict> | |
| 932 | 								<key>1</key> | |
| 933 | 								<dict> | |
| 934 | 									<key>name</key> | |
| 935 | 									<string>keyword.operator.heredoc.php</string> | |
| 936 | 								</dict> | |
| 937 | 							</dict> | |
| 938 | 							<key>name</key> | |
| 939 | 							<string>meta.embedded.js</string> | |
| 940 | 							<key>patterns</key> | |
| 941 | 							<array> | |
| 942 | 								<dict> | |
| 943 | 									<key>include</key> | |
| 944 | 									<string>source.js</string> | |
| 945 | 								</dict> | |
| 946 | 							</array> | |
| 947 | 						</dict> | |
| 948 | 						<dict> | |
| 949 | 							<key>begin</key> | |
| 950 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(JSON)(\2)\s*$\n?</string> | |
| 951 | 							<key>beginCaptures</key> | |
| 952 | 							<dict> | |
| 953 | 								<key>0</key> | |
| 954 | 								<dict> | |
| 955 | 									<key>name</key> | |
| 956 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 957 | 								</dict> | |
| 958 | 								<key>1</key> | |
| 959 | 								<dict> | |
| 960 | 									<key>name</key> | |
| 961 | 									<string>punctuation.definition.string.php</string> | |
| 962 | 								</dict> | |
| 963 | 								<key>3</key> | |
| 964 | 								<dict> | |
| 965 | 									<key>name</key> | |
| 966 | 									<string>keyword.operator.heredoc.php</string> | |
| 967 | 								</dict> | |
| 968 | 							</dict> | |
| 969 | 							<key>contentName</key> | |
| 970 | 							<string>source.json</string> | |
| 971 | 							<key>end</key> | |
| 972 | 							<string>^(\3)\b</string> | |
| 973 | 							<key>endCaptures</key> | |
| 974 | 							<dict> | |
| 975 | 								<key>0</key> | |
| 976 | 								<dict> | |
| 977 | 									<key>name</key> | |
| 978 | 									<string>punctuation.section.embedded.end.php</string> | |
| 979 | 								</dict> | |
| 980 | 								<key>1</key> | |
| 981 | 								<dict> | |
| 982 | 									<key>name</key> | |
| 983 | 									<string>keyword.operator.heredoc.php</string> | |
| 984 | 								</dict> | |
| 985 | 							</dict> | |
| 986 | 							<key>name</key> | |
| 987 | 							<string>meta.embedded.json</string> | |
| 988 | 							<key>patterns</key> | |
| 989 | 							<array> | |
| 990 | 								<dict> | |
| 991 | 									<key>include</key> | |
| 992 | 									<string>source.json</string> | |
| 993 | 								</dict> | |
| 994 | 							</array> | |
| 995 | 						</dict> | |
| 996 | 						<dict> | |
| 997 | 							<key>begin</key> | |
| 998 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(CSS)(\2)\s*$\n?</string> | |
| 999 | 							<key>beginCaptures</key> | |
| 1000 | 							<dict> | |
| 1001 | 								<key>0</key> | |
| 1002 | 								<dict> | |
| 1003 | 									<key>name</key> | |
| 1004 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 1005 | 								</dict> | |
| 1006 | 								<key>1</key> | |
| 1007 | 								<dict> | |
| 1008 | 									<key>name</key> | |
| 1009 | 									<string>punctuation.definition.string.php</string> | |
| 1010 | 								</dict> | |
| 1011 | 								<key>3</key> | |
| 1012 | 								<dict> | |
| 1013 | 									<key>name</key> | |
| 1014 | 									<string>keyword.operator.heredoc.php</string> | |
| 1015 | 								</dict> | |
| 1016 | 							</dict> | |
| 1017 | 							<key>contentName</key> | |
| 1018 | 							<string>source.css</string> | |
| 1019 | 							<key>end</key> | |
| 1020 | 							<string>^(\3)\b</string> | |
| 1021 | 							<key>endCaptures</key> | |
| 1022 | 							<dict> | |
| 1023 | 								<key>0</key> | |
| 1024 | 								<dict> | |
| 1025 | 									<key>name</key> | |
| 1026 | 									<string>punctuation.section.embedded.end.php</string> | |
| 1027 | 								</dict> | |
| 1028 | 								<key>1</key> | |
| 1029 | 								<dict> | |
| 1030 | 									<key>name</key> | |
| 1031 | 									<string>keyword.operator.heredoc.php</string> | |
| 1032 | 								</dict> | |
| 1033 | 							</dict> | |
| 1034 | 							<key>name</key> | |
| 1035 | 							<string>meta.embedded.css</string> | |
| 1036 | 							<key>patterns</key> | |
| 1037 | 							<array> | |
| 1038 | 								<dict> | |
| 1039 | 									<key>include</key> | |
| 1040 | 									<string>source.css</string> | |
| 1041 | 								</dict> | |
| 1042 | 							</array> | |
| 1043 | 						</dict> | |
| 1044 | 						<dict> | |
| 1045 | 							<key>begin</key> | |
| 1046 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)(REGEX)(\2)\s*$\n?</string> | |
| 1047 | 							<key>beginCaptures</key> | |
| 1048 | 							<dict> | |
| 1049 | 								<key>0</key> | |
| 1050 | 								<dict> | |
| 1051 | 									<key>name</key> | |
| 1052 | 									<string>punctuation.section.embedded.begin.php</string> | |
| 1053 | 								</dict> | |
| 1054 | 								<key>1</key> | |
| 1055 | 								<dict> | |
| 1056 | 									<key>name</key> | |
| 1057 | 									<string>punctuation.definition.string.php</string> | |
| 1058 | 								</dict> | |
| 1059 | 								<key>3</key> | |
| 1060 | 								<dict> | |
| 1061 | 									<key>name</key> | |
| 1062 | 									<string>keyword.operator.heredoc.php</string> | |
| 1063 | 								</dict> | |
| 1064 | 							</dict> | |
| 1065 | 							<key>contentName</key> | |
| 1066 | 							<string>string.regexp.heredoc.php</string> | |
| 1067 | 							<key>end</key> | |
| 1068 | 							<string>^(\3)\b</string> | |
| 1069 | 							<key>endCaptures</key> | |
| 1070 | 							<dict> | |
| 1071 | 								<key>0</key> | |
| 1072 | 								<dict> | |
| 1073 | 									<key>name</key> | |
| 1074 | 									<string>punctuation.section.embedded.end.php</string> | |
| 1075 | 								</dict> | |
| 1076 | 								<key>1</key> | |
| 1077 | 								<dict> | |
| 1078 | 									<key>name</key> | |
| 1079 | 									<string>keyword.operator.heredoc.php</string> | |
| 1080 | 								</dict> | |
| 1081 | 							</dict> | |
| 1082 | 							<key>patterns</key> | |
| 1083 | 							<array> | |
| 1084 | 								<dict> | |
| 1085 | 									<key>comment</key> | |
| 1086 | 									<string>Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)</string> | |
| 1087 | 									<key>match</key> | |
| 1088 | 									<string>(\\){1,2}[.$^\[\]{}]</string> | |
| 1089 | 									<key>name</key> | |
| 1090 | 									<string>constant.character.escape.regex.php</string> | |
| 1091 | 								</dict> | |
| 1092 | 								<dict> | |
| 1093 | 									<key>captures</key> | |
| 1094 | 									<dict> | |
| 1095 | 										<key>1</key> | |
| 1096 | 										<dict> | |
| 1097 | 											<key>name</key> | |
| 1098 | 											<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 1099 | 										</dict> | |
| 1100 | 										<key>3</key> | |
| 1101 | 										<dict> | |
| 1102 | 											<key>name</key> | |
| 1103 | 											<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 1104 | 										</dict> | |
| 1105 | 									</dict> | |
| 1106 | 									<key>match</key> | |
| 1107 | 									<string>(\{)\d+(,\d+)?(\})</string> | |
| 1108 | 									<key>name</key> | |
| 1109 | 									<string>string.regexp.arbitrary-repitition.php</string> | |
| 1110 | 								</dict> | |
| 1111 | 								<dict> | |
| 1112 | 									<key>begin</key> | |
| 1113 | 									<string>\[(?:\^?\])?</string> | |
| 1114 | 									<key>captures</key> | |
| 1115 | 									<dict> | |
| 1116 | 										<key>0</key> | |
| 1117 | 										<dict> | |
| 1118 | 											<key>name</key> | |
| 1119 | 											<string>punctuation.definition.character-class.php</string> | |
| 1120 | 										</dict> | |
| 1121 | 									</dict> | |
| 1122 | 									<key>end</key> | |
| 1123 | 									<string>\]</string> | |
| 1124 | 									<key>name</key> | |
| 1125 | 									<string>string.regexp.character-class.php</string> | |
| 1126 | 									<key>patterns</key> | |
| 1127 | 									<array> | |
| 1128 | 										<dict> | |
| 1129 | 											<key>match</key> | |
| 1130 | 											<string>\\[\\'\[\]]</string> | |
| 1131 | 											<key>name</key> | |
| 1132 | 											<string>constant.character.escape.php</string> | |
| 1133 | 										</dict> | |
| 1134 | 									</array> | |
| 1135 | 								</dict> | |
| 1136 | 								<dict> | |
| 1137 | 									<key>match</key> | |
| 1138 | 									<string>[$^+*]</string> | |
| 1139 | 									<key>name</key> | |
| 1140 | 									<string>keyword.operator.regexp.php</string> | |
| 1141 | 								</dict> | |
| 1142 | 								<dict> | |
| 1143 | 									<key>begin</key> | |
| 1144 | 									<string>(?&lt;=^|\s)(#)\s(?=[[a-zA-Z0-9,. \t?!-][^\x{00}-\x{7F}]]*$)</string> | |
| 1145 | 									<key>beginCaptures</key> | |
| 1146 | 									<dict> | |
| 1147 | 										<key>1</key> | |
| 1148 | 										<dict> | |
| 1149 | 											<key>name</key> | |
| 1150 | 											<string>punctuation.definition.comment.php</string> | |
| 1151 | 										</dict> | |
| 1152 | 									</dict> | |
| 1153 | 									<key>comment</key> | |
| 1154 | 									<string>We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.</string> | |
| 1155 | 									<key>end</key> | |
| 1156 | 									<string>$\n?</string> | |
| 1157 | 									<key>endCaptures</key> | |
| 1158 | 									<dict> | |
| 1159 | 										<key>0</key> | |
| 1160 | 										<dict> | |
| 1161 | 											<key>name</key> | |
| 1162 | 											<string>punctuation.definition.comment.php</string> | |
| 1163 | 										</dict> | |
| 1164 | 									</dict> | |
| 1165 | 									<key>name</key> | |
| 1166 | 									<string>comment.line.number-sign.php</string> | |
| 1167 | 								</dict> | |
| 1168 | 							</array> | |
| 1169 | 						</dict> | |
| 1170 | 						<dict> | |
| 1171 | 							<key>begin</key> | |
| 1172 | 							<string>(&lt;&lt;&lt;)\s*(['"]?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\2)</string> | |
| 1173 | 							<key>beginCaptures</key> | |
| 1174 | 							<dict> | |
| 1175 | 								<key>1</key> | |
| 1176 | 								<dict> | |
| 1177 | 									<key>name</key> | |
| 1178 | 									<string>punctuation.definition.string.php</string> | |
| 1179 | 								</dict> | |
| 1180 | 								<key>3</key> | |
| 1181 | 								<dict> | |
| 1182 | 									<key>name</key> | |
| 1183 | 									<string>keyword.operator.heredoc.php</string> | |
| 1184 | 								</dict> | |
| 1185 | 							</dict> | |
| 1186 | 							<key>end</key> | |
| 1187 | 							<string>^(\3)\b</string> | |
| 1188 | 							<key>endCaptures</key> | |
| 1189 | 							<dict> | |
| 1190 | 								<key>1</key> | |
| 1191 | 								<dict> | |
| 1192 | 									<key>name</key> | |
| 1193 | 									<string>keyword.operator.heredoc.php</string> | |
| 1194 | 								</dict> | |
| 1195 | 							</dict> | |
| 1196 | 						</dict> | |
| 1197 | 					</array> | |
| 1198 | 				</dict> | |
| 1199 | 			</dict> | |
| 1200 | 		</dict> | |
| 1201 | 		<key>instantiation</key> | |
| 1202 | 		<dict> | |
| 1203 | 			<key>begin</key> | |
| 1204 | 			<string>(?i)(new)\s+</string> | |
| 1205 | 			<key>beginCaptures</key> | |
| 1206 | 			<dict> | |
| 1207 | 				<key>1</key> | |
| 1208 | 				<dict> | |
| 1209 | 					<key>name</key> | |
| 1210 | 					<string>keyword.other.new.php</string> | |
| 1211 | 				</dict> | |
| 1212 | 			</dict> | |
| 1213 | 			<key>end</key> | |
| 1214 | 			<string>(?i)(?=[^$a-z0-9_\\])</string> | |
| 1215 | 			<key>patterns</key> | |
| 1216 | 			<array> | |
| 1217 | 				<dict> | |
| 1218 | 					<key>match</key> | |
| 1219 | 					<string>(parent|static|self)(?=[^a-z0-9_])</string> | |
| 1220 | 					<key>name</key> | |
| 1221 | 					<string>storage.type.php</string> | |
| 1222 | 				</dict> | |
| 1223 | 				<dict> | |
| 1224 | 					<key>include</key> | |
| 1225 | 					<string>#class-name</string> | |
| 1226 | 				</dict> | |
| 1227 | 				<dict> | |
| 1228 | 					<key>include</key> | |
| 1229 | 					<string>#variable-name</string> | |
| 1230 | 				</dict> | |
| 1231 | 			</array> | |
| 1232 | 		</dict> | |
| 1233 | 		<key>interpolation</key> | |
| 1234 | 		<dict> | |
| 1235 | 			<key>comment</key> | |
| 1236 | 			<string>http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing</string> | |
| 1237 | 			<key>patterns</key> | |
| 1238 | 			<array> | |
| 1239 | 				<dict> | |
| 1240 | 					<key>match</key> | |
| 1241 | 					<string>\\[0-7]{1,3}</string> | |
| 1242 | 					<key>name</key> | |
| 1243 | 					<string>constant.numeric.octal.php</string> | |
| 1244 | 				</dict> | |
| 1245 | 				<dict> | |
| 1246 | 					<key>match</key> | |
| 1247 | 					<string>\\x[0-9A-Fa-f]{1,2}</string> | |
| 1248 | 					<key>name</key> | |
| 1249 | 					<string>constant.numeric.hex.php</string> | |
| 1250 | 				</dict> | |
| 1251 | 				<dict> | |
| 1252 | 					<key>match</key> | |
| 1253 | 					<string>\\[enrt\\\$\"]</string> | |
| 1254 | 					<key>name</key> | |
| 1255 | 					<string>constant.character.escape.php</string> | |
| 1256 | 				</dict> | |
| 1257 | 				<dict> | |
| 1258 | 					<key>begin</key> | |
| 1259 | 					<string>(\{)(?=\$.*?\})</string> | |
| 1260 | 					<key>beginCaptures</key> | |
| 1261 | 					<dict> | |
| 1262 | 						<key>1</key> | |
| 1263 | 						<dict> | |
| 1264 | 							<key>name</key> | |
| 1265 | 							<string>punctuation.definition.variable.php</string> | |
| 1266 | 						</dict> | |
| 1267 | 					</dict> | |
| 1268 | 					<key>end</key> | |
| 1269 | 					<string>(\})</string> | |
| 1270 | 					<key>endCaptures</key> | |
| 1271 | 					<dict> | |
| 1272 | 						<key>1</key> | |
| 1273 | 						<dict> | |
| 1274 | 							<key>name</key> | |
| 1275 | 							<string>punctuation.definition.variable.php</string> | |
| 1276 | 						</dict> | |
| 1277 | 					</dict> | |
| 1278 | 					<key>patterns</key> | |
| 1279 | 					<array> | |
| 1280 | 						<dict> | |
| 1281 | 							<key>include</key> | |
| 1282 | 							<string>#language</string> | |
| 1283 | 						</dict> | |
| 1284 | 					</array> | |
| 1285 | 				</dict> | |
| 1286 | 				<dict> | |
| 1287 | 					<key>include</key> | |
| 1288 | 					<string>#variable-name</string> | |
| 1289 | 				</dict> | |
| 1290 | 			</array> | |
| 1291 | 		</dict> | |
| 1292 | 		<key>invoke-call</key> | |
| 1293 | 		<dict> | |
| 1294 | 			<key>captures</key> | |
| 1295 | 			<dict> | |
| 1296 | 				<key>1</key> | |
| 1297 | 				<dict> | |
| 1298 | 					<key>name</key> | |
| 1299 | 					<string>punctuation.definition.variable.php</string> | |
| 1300 | 				</dict> | |
| 1301 | 				<key>2</key> | |
| 1302 | 				<dict> | |
| 1303 | 					<key>name</key> | |
| 1304 | 					<string>variable.other.php</string> | |
| 1305 | 				</dict> | |
| 1306 | 			</dict> | |
| 1307 | 			<key>match</key> | |
| 1308 | 			<string>(?i)(\$+)([a-z_][a-z_0-9]*)(?=\s*\()</string> | |
| 1309 | 			<key>name</key> | |
| 1310 | 			<string>meta.function-call.invoke.php</string> | |
| 1311 | 		</dict> | |
| 1312 | 		<key>language</key> | |
| 1313 | 		<dict> | |
| 1314 | 			<key>patterns</key> | |
| 1315 | 			<array> | |
| 1316 | 				<dict> | |
| 1317 | 					<key>include</key> | |
| 1318 | 					<string>#comments</string> | |
| 1319 | 				</dict> | |
| 1320 | 				<dict> | |
| 1321 | 					<key>match</key> | |
| 1322 | 					<string>\{</string> | |
| 1323 | 					<key>name</key> | |
| 1324 | 					<string>punctuation.section.scope.begin.php</string> | |
| 1325 | 				</dict> | |
| 1326 | 				<dict> | |
| 1327 | 					<key>match</key> | |
| 1328 | 					<string>\}</string> | |
| 1329 | 					<key>name</key> | |
| 1330 | 					<string>punctuation.section.scope.end.php</string> | |
| 1331 | 				</dict> | |
| 1332 | 				<dict> | |
| 1333 | 					<key>begin</key> | |
| 1334 | 					<string>(?i)^\s*(interface)\s+([a-z0-9_]+)\s*(extends)?\s*</string> | |
| 1335 | 					<key>beginCaptures</key> | |
| 1336 | 					<dict> | |
| 1337 | 						<key>1</key> | |
| 1338 | 						<dict> | |
| 1339 | 							<key>name</key> | |
| 1340 | 							<string>storage.type.interface.php</string> | |
| 1341 | 						</dict> | |
| 1342 | 						<key>2</key> | |
| 1343 | 						<dict> | |
| 1344 | 							<key>name</key> | |
| 1345 | 							<string>entity.name.type.interface.php</string> | |
| 1346 | 						</dict> | |
| 1347 | 						<key>3</key> | |
| 1348 | 						<dict> | |
| 1349 | 							<key>name</key> | |
| 1350 | 							<string>storage.modifier.extends.php</string> | |
| 1351 | 						</dict> | |
| 1352 | 					</dict> | |
| 1353 | 					<key>end</key> | |
| 1354 | 					<string>((?:[a-zA-Z0-9_]+\s*,\s*)*)([a-zA-Z0-9_]+)?\s*(?:(?=\{)|$)</string> | |
| 1355 | 					<key>endCaptures</key> | |
| 1356 | 					<dict> | |
| 1357 | 						<key>1</key> | |
| 1358 | 						<dict> | |
| 1359 | 							<key>patterns</key> | |
| 1360 | 							<array> | |
| 1361 | 								<dict> | |
| 1362 | 									<key>match</key> | |
| 1363 | 									<string>[a-zA-Z0-9_]+</string> | |
| 1364 | 									<key>name</key> | |
| 1365 | 									<string>entity.other.inherited-class.php</string> | |
| 1366 | 								</dict> | |
| 1367 | 								<dict> | |
| 1368 | 									<key>match</key> | |
| 1369 | 									<string>,</string> | |
| 1370 | 									<key>name</key> | |
| 1371 | 									<string>punctuation.separator.classes.php</string> | |
| 1372 | 								</dict> | |
| 1373 | 							</array> | |
| 1374 | 						</dict> | |
| 1375 | 						<key>2</key> | |
| 1376 | 						<dict> | |
| 1377 | 							<key>name</key> | |
| 1378 | 							<string>entity.other.inherited-class.php</string> | |
| 1379 | 						</dict> | |
| 1380 | 					</dict> | |
| 1381 | 					<key>name</key> | |
| 1382 | 					<string>meta.interface.php</string> | |
| 1383 | 					<key>patterns</key> | |
| 1384 | 					<array> | |
| 1385 | 						<dict> | |
| 1386 | 							<key>include</key> | |
| 1387 | 							<string>#namespace</string> | |
| 1388 | 						</dict> | |
| 1389 | 					</array> | |
| 1390 | 				</dict> | |
| 1391 | 				<dict> | |
| 1392 | 					<key>begin</key> | |
| 1393 | 					<string>(?i)(?:^|(?&lt;=&lt;\?php))\s*(namespace)\b\s+(?=([a-z0-9_\\]+\s*($|[;{]|(\/[\/*])))|$)</string> | |
| 1394 | 					<key>beginCaptures</key> | |
| 1395 | 					<dict> | |
| 1396 | 						<key>1</key> | |
| 1397 | 						<dict> | |
| 1398 | 							<key>name</key> | |
| 1399 | 							<string>keyword.other.namespace.php</string> | |
| 1400 | 						</dict> | |
| 1401 | 					</dict> | |
| 1402 | 					<key>contentName</key> | |
| 1403 | 					<string>entity.name.type.namespace.php</string> | |
| 1404 | 					<key>end</key> | |
| 1405 | 					<string>(?i)(?=\s*$|[^a-z0-9_\\])</string> | |
| 1406 | 					<key>name</key> | |
| 1407 | 					<string>meta.namespace.php</string> | |
| 1408 | 					<key>patterns</key> | |
| 1409 | 					<array> | |
| 1410 | 						<dict> | |
| 1411 | 							<key>match</key> | |
| 1412 | 							<string>\\</string> | |
| 1413 | 							<key>name</key> | |
| 1414 | 							<string>punctuation.separator.inheritance.php</string> | |
| 1415 | 						</dict> | |
| 1416 | 					</array> | |
| 1417 | 				</dict> | |
| 1418 | 				<dict> | |
| 1419 | 					<key>begin</key> | |
| 1420 | 					<string>(?i)\s*\b(use)\s+(?:((const)|(function))\s+)?</string> | |
| 1421 | 					<key>beginCaptures</key> | |
| 1422 | 					<dict> | |
| 1423 | 						<key>1</key> | |
| 1424 | 						<dict> | |
| 1425 | 							<key>name</key> | |
| 1426 | 							<string>keyword.other.use.php</string> | |
| 1427 | 						</dict> | |
| 1428 | 						<key>3</key> | |
| 1429 | 						<dict> | |
| 1430 | 							<key>name</key> | |
| 1431 | 							<string>storage.type.const.php</string> | |
| 1432 | 						</dict> | |
| 1433 | 						<key>4</key> | |
| 1434 | 						<dict> | |
| 1435 | 							<key>name</key> | |
| 1436 | 							<string>storage.type.function.php</string> | |
| 1437 | 						</dict> | |
| 1438 | 					</dict> | |
| 1439 | 					<key>end</key> | |
| 1440 | 					<string>(?=;|(?:^\s*$))</string> | |
| 1441 | 					<key>name</key> | |
| 1442 | 					<string>meta.use.php</string> | |
| 1443 | 					<key>patterns</key> | |
| 1444 | 					<array> | |
| 1445 | 						<dict> | |
| 1446 | 							<key>include</key> | |
| 1447 | 							<string>#comments</string> | |
| 1448 | 						</dict> | |
| 1449 | 						<dict> | |
| 1450 | 							<key>begin</key> | |
| 1451 | 							<string>(?i)\s*(?=[a-z_0-9\\])</string> | |
| 1452 | 							<key>end</key> | |
| 1453 | 							<string>(?xi)(?: | |
| 1454 | 			 (?:\s*(as)\b\s*([a-z_0-9]*)\s*(?=,|;|$)) | |
| 1455 | 			 |(?=,|;|$) | |
| 1456 | 			 )</string> | |
| 1457 | 							<key>endCaptures</key> | |
| 1458 | 							<dict> | |
| 1459 | 								<key>1</key> | |
| 1460 | 								<dict> | |
| 1461 | 									<key>name</key> | |
| 1462 | 									<string>keyword.other.use-as.php</string> | |
| 1463 | 								</dict> | |
| 1464 | 								<key>2</key> | |
| 1465 | 								<dict> | |
| 1466 | 									<key>name</key> | |
| 1467 | 									<string>support.other.namespace.use-as.php</string> | |
| 1468 | 								</dict> | |
| 1469 | 							</dict> | |
| 1470 | 							<key>patterns</key> | |
| 1471 | 							<array> | |
| 1472 | 								<dict> | |
| 1473 | 									<key>include</key> | |
| 1474 | 									<string>#class-builtin</string> | |
| 1475 | 								</dict> | |
| 1476 | 								<dict> | |
| 1477 | 									<key>begin</key> | |
| 1478 | 									<string>(?i)\s*(?=[\\a-z_0-9])</string> | |
| 1479 | 									<key>end</key> | |
| 1480 | 									<string>$|(?=[\s,;])</string> | |
| 1481 | 									<key>name</key> | |
| 1482 | 									<string>support.other.namespace.use.php</string> | |
| 1483 | 									<key>patterns</key> | |
| 1484 | 									<array> | |
| 1485 | 										<dict> | |
| 1486 | 											<key>match</key> | |
| 1487 | 											<string>\\</string> | |
| 1488 | 											<key>name</key> | |
| 1489 | 											<string>punctuation.separator.inheritance.php</string> | |
| 1490 | 										</dict> | |
| 1491 | 									</array> | |
| 1492 | 								</dict> | |
| 1493 | 							</array> | |
| 1494 | 						</dict> | |
| 1495 | 						<dict> | |
| 1496 | 							<key>match</key> | |
| 1497 | 							<string>\s*,\s*</string> | |
| 1498 | 						</dict> | |
| 1499 | 					</array> | |
| 1500 | 				</dict> | |
| 1501 | 				<dict> | |
| 1502 | 					<key>begin</key> | |
| 1503 | 					<string>(?i)^\s*(trait)\s+([a-zA-Z0-9_]+)</string> | |
| 1504 | 					<key>beginCaptures</key> | |
| 1505 | 					<dict> | |
| 1506 | 						<key>1</key> | |
| 1507 | 						<dict> | |
| 1508 | 							<key>name</key> | |
| 1509 | 							<string>storage.type.trait.php</string> | |
| 1510 | 						</dict> | |
| 1511 | 						<key>2</key> | |
| 1512 | 						<dict> | |
| 1513 | 							<key>name</key> | |
| 1514 | 							<string>entity.name.type.trait.php</string> | |
| 1515 | 						</dict> | |
| 1516 | 					</dict> | |
| 1517 | 					<key>end</key> | |
| 1518 | 					<string>(?=\{)</string> | |
| 1519 | 					<key>name</key> | |
| 1520 | 					<string>meta.trait.php</string> | |
| 1521 | 				</dict> | |
| 1522 | 				<dict> | |
| 1523 | 					<key>begin</key> | |
| 1524 | 					<string>(?i)^\s*(abstract|final)?\s*(class)\s+([a-z0-9_]+)\s*</string> | |
| 1525 | 					<key>beginCaptures</key> | |
| 1526 | 					<dict> | |
| 1527 | 						<key>1</key> | |
| 1528 | 						<dict> | |
| 1529 | 							<key>name</key> | |
| 1530 | 							<string>storage.modifier.abstract.php</string> | |
| 1531 | 						</dict> | |
| 1532 | 						<key>2</key> | |
| 1533 | 						<dict> | |
| 1534 | 							<key>name</key> | |
| 1535 | 							<string>storage.type.class.php</string> | |
| 1536 | 						</dict> | |
| 1537 | 						<key>3</key> | |
| 1538 | 						<dict> | |
| 1539 | 							<key>name</key> | |
| 1540 | 							<string>entity.name.type.class.php</string> | |
| 1541 | 						</dict> | |
| 1542 | 					</dict> | |
| 1543 | 					<key>end</key> | |
| 1544 | 					<string>(?=[;{])</string> | |
| 1545 | 					<key>name</key> | |
| 1546 | 					<string>meta.class.php</string> | |
| 1547 | 					<key>patterns</key> | |
| 1548 | 					<array> | |
| 1549 | 						<dict> | |
| 1550 | 							<key>include</key> | |
| 1551 | 							<string>#comments</string> | |
| 1552 | 						</dict> | |
| 1553 | 						<dict> | |
| 1554 | 							<key>begin</key> | |
| 1555 | 							<string>(?i)(extends)\s+</string> | |
| 1556 | 							<key>beginCaptures</key> | |
| 1557 | 							<dict> | |
| 1558 | 								<key>1</key> | |
| 1559 | 								<dict> | |
| 1560 | 									<key>name</key> | |
| 1561 | 									<string>storage.modifier.extends.php</string> | |
| 1562 | 								</dict> | |
| 1563 | 							</dict> | |
| 1564 | 							<key>contentName</key> | |
| 1565 | 							<string>meta.other.inherited-class.php</string> | |
| 1566 | 							<key>end</key> | |
| 1567 | 							<string>(?i)(?=[^a-z_0-9\\])</string> | |
| 1568 | 							<key>patterns</key> | |
| 1569 | 							<array> | |
| 1570 | 								<dict> | |
| 1571 | 									<key>begin</key> | |
| 1572 | 									<string>(?i)(?=\\?[a-z_0-9]+\\)</string> | |
| 1573 | 									<key>end</key> | |
| 1574 | 									<string>(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\])</string> | |
| 1575 | 									<key>endCaptures</key> | |
| 1576 | 									<dict> | |
| 1577 | 										<key>1</key> | |
| 1578 | 										<dict> | |
| 1579 | 											<key>name</key> | |
| 1580 | 											<string>entity.other.inherited-class.php</string> | |
| 1581 | 										</dict> | |
| 1582 | 									</dict> | |
| 1583 | 									<key>patterns</key> | |
| 1584 | 									<array> | |
| 1585 | 										<dict> | |
| 1586 | 											<key>include</key> | |
| 1587 | 											<string>#namespace</string> | |
| 1588 | 										</dict> | |
| 1589 | 									</array> | |
| 1590 | 								</dict> | |
| 1591 | 								<dict> | |
| 1592 | 									<key>include</key> | |
| 1593 | 									<string>#class-builtin</string> | |
| 1594 | 								</dict> | |
| 1595 | 								<dict> | |
| 1596 | 									<key>include</key> | |
| 1597 | 									<string>#namespace</string> | |
| 1598 | 								</dict> | |
| 1599 | 								<dict> | |
| 1600 | 									<key>match</key> | |
| 1601 | 									<string>(?i)[a-z_][a-z_0-9]*</string> | |
| 1602 | 									<key>name</key> | |
| 1603 | 									<string>entity.other.inherited-class.php</string> | |
| 1604 | 								</dict> | |
| 1605 | 							</array> | |
| 1606 | 						</dict> | |
| 1607 | 						<dict> | |
| 1608 | 							<key>begin</key> | |
| 1609 | 							<string>(?i)(implements)\s+</string> | |
| 1610 | 							<key>beginCaptures</key> | |
| 1611 | 							<dict> | |
| 1612 | 								<key>1</key> | |
| 1613 | 								<dict> | |
| 1614 | 									<key>name</key> | |
| 1615 | 									<string>storage.modifier.implements.php</string> | |
| 1616 | 								</dict> | |
| 1617 | 							</dict> | |
| 1618 | 							<key>end</key> | |
| 1619 | 							<string>(?i)(?=[;{])</string> | |
| 1620 | 							<key>patterns</key> | |
| 1621 | 							<array> | |
| 1622 | 								<dict> | |
| 1623 | 									<key>include</key> | |
| 1624 | 									<string>#comments</string> | |
| 1625 | 								</dict> | |
| 1626 | 								<dict> | |
| 1627 | 									<key>begin</key> | |
| 1628 | 									<string>(?i)(?=[a-z0-9_\\]+)</string> | |
| 1629 | 									<key>contentName</key> | |
| 1630 | 									<string>meta.other.inherited-class.php</string> | |
| 1631 | 									<key>end</key> | |
| 1632 | 									<string>(?i)(?:\s*(?:,|(?=[^a-z0-9_\\\s]))\s*)</string> | |
| 1633 | 									<key>patterns</key> | |
| 1634 | 									<array> | |
| 1635 | 										<dict> | |
| 1636 | 											<key>begin</key> | |
| 1637 | 											<string>(?i)(?=\\?[a-z_0-9]+\\)</string> | |
| 1638 | 											<key>end</key> | |
| 1639 | 											<string>(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\])</string> | |
| 1640 | 											<key>endCaptures</key> | |
| 1641 | 											<dict> | |
| 1642 | 												<key>1</key> | |
| 1643 | 												<dict> | |
| 1644 | 													<key>name</key> | |
| 1645 | 													<string>entity.other.inherited-class.php</string> | |
| 1646 | 												</dict> | |
| 1647 | 											</dict> | |
| 1648 | 											<key>patterns</key> | |
| 1649 | 											<array> | |
| 1650 | 												<dict> | |
| 1651 | 													<key>include</key> | |
| 1652 | 													<string>#namespace</string> | |
| 1653 | 												</dict> | |
| 1654 | 											</array> | |
| 1655 | 										</dict> | |
| 1656 | 										<dict> | |
| 1657 | 											<key>include</key> | |
| 1658 | 											<string>#class-builtin</string> | |
| 1659 | 										</dict> | |
| 1660 | 										<dict> | |
| 1661 | 											<key>include</key> | |
| 1662 | 											<string>#namespace</string> | |
| 1663 | 										</dict> | |
| 1664 | 										<dict> | |
| 1665 | 											<key>match</key> | |
| 1666 | 											<string>(?i)[a-z_][a-z_0-9]*</string> | |
| 1667 | 											<key>name</key> | |
| 1668 | 											<string>entity.other.inherited-class.php</string> | |
| 1669 | 										</dict> | |
| 1670 | 									</array> | |
| 1671 | 								</dict> | |
| 1672 | 							</array> | |
| 1673 | 						</dict> | |
| 1674 | 					</array> | |
| 1675 | 				</dict> | |
| 1676 | 				<dict> | |
| 1677 | 					<key>captures</key> | |
| 1678 | 					<dict> | |
| 1679 | 						<key>1</key> | |
| 1680 | 						<dict> | |
| 1681 | 							<key>name</key> | |
| 1682 | 							<string>keyword.control.php</string> | |
| 1683 | 						</dict> | |
| 1684 | 					</dict> | |
| 1685 | 					<key>match</key> | |
| 1686 | 					<string>\s*\b((break|c(ase|ontinue)|d(e(clare|fault)|ie|o)|e(lse(if)?|nd(declare|for(each)?|if|switch|while)|xit)|for(each)?|if|return|switch|use|while|yield))\b</string> | |
| 1687 | 				</dict> | |
| 1688 | 				<dict> | |
| 1689 | 					<key>begin</key> | |
| 1690 | 					<string>(?i)\b((?:require|include)(?:_once)?)\b\s*</string> | |
| 1691 | 					<key>beginCaptures</key> | |
| 1692 | 					<dict> | |
| 1693 | 						<key>1</key> | |
| 1694 | 						<dict> | |
| 1695 | 							<key>name</key> | |
| 1696 | 							<string>keyword.control.import.include.php</string> | |
| 1697 | 						</dict> | |
| 1698 | 					</dict> | |
| 1699 | 					<key>end</key> | |
| 1700 | 					<string>(?=\s|;|$)</string> | |
| 1701 | 					<key>name</key> | |
| 1702 | 					<string>meta.include.php</string> | |
| 1703 | 					<key>patterns</key> | |
| 1704 | 					<array> | |
| 1705 | 						<dict> | |
| 1706 | 							<key>include</key> | |
| 1707 | 							<string>#language</string> | |
| 1708 | 						</dict> | |
| 1709 | 					</array> | |
| 1710 | 				</dict> | |
| 1711 | 				<dict> | |
| 1712 | 					<key>begin</key> | |
| 1713 | 					<string>\b(catch)\b\s*\(\s*</string> | |
| 1714 | 					<key>beginCaptures</key> | |
| 1715 | 					<dict> | |
| 1716 | 						<key>1</key> | |
| 1717 | 						<dict> | |
| 1718 | 							<key>name</key> | |
| 1719 | 							<string>keyword.control.exception.catch.php</string> | |
| 1720 | 						</dict> | |
| 1721 | 					</dict> | |
| 1722 | 					<key>end</key> | |
| 1723 | 					<string>([A-Za-z_][A-Za-z_0-9]*)\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*\)</string> | |
| 1724 | 					<key>endCaptures</key> | |
| 1725 | 					<dict> | |
| 1726 | 						<key>1</key> | |
| 1727 | 						<dict> | |
| 1728 | 							<key>name</key> | |
| 1729 | 							<string>support.class.exception.php</string> | |
| 1730 | 						</dict> | |
| 1731 | 						<key>2</key> | |
| 1732 | 						<dict> | |
| 1733 | 							<key>name</key> | |
| 1734 | 							<string>variable.other.php</string> | |
| 1735 | 						</dict> | |
| 1736 | 						<key>3</key> | |
| 1737 | 						<dict> | |
| 1738 | 							<key>name</key> | |
| 1739 | 							<string>punctuation.definition.variable.php</string> | |
| 1740 | 						</dict> | |
| 1741 | 					</dict> | |
| 1742 | 					<key>name</key> | |
| 1743 | 					<string>meta.catch.php</string> | |
| 1744 | 					<key>patterns</key> | |
| 1745 | 					<array> | |
| 1746 | 						<dict> | |
| 1747 | 							<key>include</key> | |
| 1748 | 							<string>#namespace</string> | |
| 1749 | 						</dict> | |
| 1750 | 					</array> | |
| 1751 | 				</dict> | |
| 1752 | 				<dict> | |
| 1753 | 					<key>match</key> | |
| 1754 | 					<string>\b(catch|try|throw|exception|finally)\b</string> | |
| 1755 | 					<key>name</key> | |
| 1756 | 					<string>keyword.control.exception.php</string> | |
| 1757 | 				</dict> | |
| 1758 | 				<dict> | |
| 1759 | 					<key>begin</key> | |
| 1760 | 					<string>(?i)\b(function)\s*(&amp;\s*)?(?=\()</string> | |
| 1761 | 					<key>beginCaptures</key> | |
| 1762 | 					<dict> | |
| 1763 | 						<key>1</key> | |
| 1764 | 						<dict> | |
| 1765 | 							<key>name</key> | |
| 1766 | 							<string>storage.type.function.php</string> | |
| 1767 | 						</dict> | |
| 1768 | 						<key>2</key> | |
| 1769 | 						<dict> | |
| 1770 | 							<key>name</key> | |
| 1771 | 							<string>storage.modifier.reference.php</string> | |
| 1772 | 						</dict> | |
| 1773 | 					</dict> | |
| 1774 | 					<key>end</key> | |
| 1775 | 					<string>\{</string> | |
| 1776 | 					<key>name</key> | |
| 1777 | 					<string>meta.function.closure.php</string> | |
| 1778 | 					<key>patterns</key> | |
| 1779 | 					<array> | |
| 1780 | 						<dict> | |
| 1781 | 							<key>begin</key> | |
| 1782 | 							<string>(\()</string> | |
| 1783 | 							<key>beginCaptures</key> | |
| 1784 | 							<dict> | |
| 1785 | 								<key>1</key> | |
| 1786 | 								<dict> | |
| 1787 | 									<key>name</key> | |
| 1788 | 									<string>punctuation.definition.parameters.begin.php</string> | |
| 1789 | 								</dict> | |
| 1790 | 							</dict> | |
| 1791 | 							<key>contentName</key> | |
| 1792 | 							<string>meta.function.arguments.php</string> | |
| 1793 | 							<key>end</key> | |
| 1794 | 							<string>(\))</string> | |
| 1795 | 							<key>endCaptures</key> | |
| 1796 | 							<dict> | |
| 1797 | 								<key>1</key> | |
| 1798 | 								<dict> | |
| 1799 | 									<key>name</key> | |
| 1800 | 									<string>punctuation.definition.parameters.end.php</string> | |
| 1801 | 								</dict> | |
| 1802 | 							</dict> | |
| 1803 | 							<key>patterns</key> | |
| 1804 | 							<array> | |
| 1805 | 								<dict> | |
| 1806 | 									<key>include</key> | |
| 1807 | 									<string>#function-arguments</string> | |
| 1808 | 								</dict> | |
| 1809 | 							</array> | |
| 1810 | 						</dict> | |
| 1811 | 						<dict> | |
| 1812 | 							<key>begin</key> | |
| 1813 | 							<string>(?i)(use)\s*(\()</string> | |
| 1814 | 							<key>beginCaptures</key> | |
| 1815 | 							<dict> | |
| 1816 | 								<key>1</key> | |
| 1817 | 								<dict> | |
| 1818 | 									<key>name</key> | |
| 1819 | 									<string>keyword.other.function.use.php</string> | |
| 1820 | 								</dict> | |
| 1821 | 								<key>2</key> | |
| 1822 | 								<dict> | |
| 1823 | 									<key>name</key> | |
| 1824 | 									<string>punctuation.definition.parameters.begin.php</string> | |
| 1825 | 								</dict> | |
| 1826 | 							</dict> | |
| 1827 | 							<key>end</key> | |
| 1828 | 							<string>(\))</string> | |
| 1829 | 							<key>endCaptures</key> | |
| 1830 | 							<dict> | |
| 1831 | 								<key>1</key> | |
| 1832 | 								<dict> | |
| 1833 | 									<key>name</key> | |
| 1834 | 									<string>punctuation.definition.parameters.end.php</string> | |
| 1835 | 								</dict> | |
| 1836 | 							</dict> | |
| 1837 | 							<key>patterns</key> | |
| 1838 | 							<array> | |
| 1839 | 								<dict> | |
| 1840 | 									<key>captures</key> | |
| 1841 | 									<dict> | |
| 1842 | 										<key>1</key> | |
| 1843 | 										<dict> | |
| 1844 | 											<key>name</key> | |
| 1845 | 											<string>storage.modifier.reference.php</string> | |
| 1846 | 										</dict> | |
| 1847 | 										<key>2</key> | |
| 1848 | 										<dict> | |
| 1849 | 											<key>name</key> | |
| 1850 | 											<string>variable.other.php</string> | |
| 1851 | 										</dict> | |
| 1852 | 										<key>3</key> | |
| 1853 | 										<dict> | |
| 1854 | 											<key>name</key> | |
| 1855 | 											<string>punctuation.definition.variable.php</string> | |
| 1856 | 										</dict> | |
| 1857 | 									</dict> | |
| 1858 | 									<key>match</key> | |
| 1859 | 									<string>(?:\s*(&amp;))?\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*(?=,|\))</string> | |
| 1860 | 									<key>name</key> | |
| 1861 | 									<string>meta.function.closure.use.php</string> | |
| 1862 | 								</dict> | |
| 1863 | 							</array> | |
| 1864 | 						</dict> | |
| 1865 | 					</array> | |
| 1866 | 				</dict> | |
| 1867 | 				<dict> | |
| 1868 | 					<key>begin</key> | |
| 1869 | 					<string>(?x)\s* | |
| 1870 | 					 ((?:(?:final|abstract|public|private|protected|static)\s+)*) | |
| 1871 | 				 (function) | |
| 1872 | 				 (?:\s+|(\s*&amp;\s*)) | |
| 1873 | 				 (?: | |
| 1874 | 				 (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|clone|set_state|sleep|wakeup|autoload|invoke|callStatic)) | |
| 1875 | 				 |([a-zA-Z0-9_]+) | |
| 1876 | 				 ) | |
| 1877 | 				 \s* | |
| 1878 | 				 (\()</string> | |
| 1879 | 					<key>beginCaptures</key> | |
| 1880 | 					<dict> | |
| 1881 | 						<key>1</key> | |
| 1882 | 						<dict> | |
| 1883 | 							<key>patterns</key> | |
| 1884 | 							<array> | |
| 1885 | 								<dict> | |
| 1886 | 									<key>match</key> | |
| 1887 | 									<string>final|abstract|public|private|protected|static</string> | |
| 1888 | 									<key>name</key> | |
| 1889 | 									<string>storage.modifier.php</string> | |
| 1890 | 								</dict> | |
| 1891 | 							</array> | |
| 1892 | 						</dict> | |
| 1893 | 						<key>2</key> | |
| 1894 | 						<dict> | |
| 1895 | 							<key>name</key> | |
| 1896 | 							<string>storage.type.function.php</string> | |
| 1897 | 						</dict> | |
| 1898 | 						<key>3</key> | |
| 1899 | 						<dict> | |
| 1900 | 							<key>name</key> | |
| 1901 | 							<string>storage.modifier.reference.php</string> | |
| 1902 | 						</dict> | |
| 1903 | 						<key>4</key> | |
| 1904 | 						<dict> | |
| 1905 | 							<key>name</key> | |
| 1906 | 							<string>support.function.magic.php</string> | |
| 1907 | 						</dict> | |
| 1908 | 						<key>5</key> | |
| 1909 | 						<dict> | |
| 1910 | 							<key>name</key> | |
| 1911 | 							<string>entity.name.function.php</string> | |
| 1912 | 						</dict> | |
| 1913 | 						<key>6</key> | |
| 1914 | 						<dict> | |
| 1915 | 							<key>name</key> | |
| 1916 | 							<string>punctuation.definition.parameters.begin.php</string> | |
| 1917 | 						</dict> | |
| 1918 | 					</dict> | |
| 1919 | 					<key>contentName</key> | |
| 1920 | 					<string>meta.function.arguments.php</string> | |
| 1921 | 					<key>end</key> | |
| 1922 | 					<string>(?ix) | |
| 1923 | 						(\))											# Close arguments | |
| 1924 | 						(?:												# Optional return type | |
| 1925 | 							\s*(:)\s* | |
| 1926 | 							(\?)? | |
| 1927 | 							(?: | |
| 1928 | 								(array|bool|float|int|string)			# scalar-type | |
| 1929 | 							 | (callable|iterable)						# base-type-declaration | |
| 1930 | 							 | (void) | |
| 1931 | 							 | ([a-z_0-9\\]*[a-z_][a-z_0-9]*)			# qualified-name | |
| 1932 | 							) | |
| 1933 | 						)? | |
| 1934 | 					</string> | |
| 1935 | 					<key>endCaptures</key> | |
| 1936 | 					<dict> | |
| 1937 | 						<key>1</key> | |
| 1938 | 						<dict> | |
| 1939 | 							<key>name</key> | |
| 1940 | 							<string>punctuation.definition.parameters.end.php</string> | |
| 1941 | 						</dict> | |
| 1942 | 						<key>2</key> | |
| 1943 | 						<dict> | |
| 1944 | 							<key>name</key> | |
| 1945 | 							<string>punctuation.separator.return-type.php</string> | |
| 1946 | 						</dict> | |
| 1947 | 						<key>3</key> | |
| 1948 | 						<dict> | |
| 1949 | 							<key>name</key> | |
| 1950 | 							<string>storage.modifier.nullable.php</string> | |
| 1951 | 						</dict> | |
| 1952 | 						<key>4</key> | |
| 1953 | 						<dict> | |
| 1954 | 							<key>name</key> | |
| 1955 | 							<string>storage.type.$4.php</string> | |
| 1956 | 						</dict> | |
| 1957 | 						<key>5</key> | |
| 1958 | 						<dict> | |
| 1959 | 							<key>name</key> | |
| 1960 | 							<string>storage.modifier.$5.php</string> | |
| 1961 | 						</dict> | |
| 1962 | 						<key>6</key> | |
| 1963 | 						<dict> | |
| 1964 | 							<key>name</key> | |
| 1965 | 							<string>storage.type.void.php</string> | |
| 1966 | 						</dict> | |
| 1967 | 						<key>7</key> | |
| 1968 | 						<dict> | |
| 1969 | 							<key>patterns</key> | |
| 1970 | 							<array> | |
| 1971 | 								<dict> | |
| 1972 | 									<key>include</key> | |
| 1973 | 									<string>#class-name</string> | |
| 1974 | 								</dict> | |
| 1975 | 							</array> | |
| 1976 | 						</dict> | |
| 1977 | 					</dict> | |
| 1978 | 					<key>name</key> | |
| 1979 | 					<string>meta.function.php</string> | |
| 1980 | 					<key>patterns</key> | |
| 1981 | 					<array> | |
| 1982 | 						<dict> | |
| 1983 | 							<key>include</key> | |
| 1984 | 							<string>#function-arguments</string> | |
| 1985 | 						</dict> | |
| 1986 | 					</array> | |
| 1987 | 				</dict> | |
| 1988 | 				<dict> | |
| 1989 | 					<key>include</key> | |
| 1990 | 					<string>#invoke-call</string> | |
| 1991 | 				</dict> | |
| 1992 | 				<dict> | |
| 1993 | 					<key>begin</key> | |
| 1994 | 					<string>(?xi)\s*(?= | |
| 1995 | 				 [a-z_0-9$\\]+(::) | |
| 1996 | (?: | |
| 1997 | 				 ([a-z_][a-z_0-9]*)\s*\( | |
| 1998 | 				 | | |
| 1999 | 				 ((\$+)[a-z_\x{7f}-\x{ff}][a-z0-9_\x{7f}-\x{ff}]*) | |
| 2000 | 				 | | |
| 2001 | 				 ([a-z_\x{7f}-\x{ff}][a-z0-9_\x{7f}-\x{ff}]*) | |
| 2002 | 				)? | |
| 2003 | 				 )</string> | |
| 2004 | 					<key>end</key> | |
| 2005 | 					<string>(?x)(::) | |
| 2006 | (?: | |
| 2007 | 				 ([A-Za-z_][A-Za-z_0-9]*)\s*\( | |
| 2008 | 				 | | |
| 2009 | 				 ((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) | |
| 2010 | 				 | | |
| 2011 | 				 ([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) | |
| 2012 | 				)?</string> | |
| 2013 | 					<key>endCaptures</key> | |
| 2014 | 					<dict> | |
| 2015 | 						<key>1</key> | |
| 2016 | 						<dict> | |
| 2017 | 							<key>name</key> | |
| 2018 | 							<string>keyword.operator.class.php</string> | |
| 2019 | 						</dict> | |
| 2020 | 						<key>2</key> | |
| 2021 | 						<dict> | |
| 2022 | 							<key>name</key> | |
| 2023 | 							<string>meta.function-call.static.php</string> | |
| 2024 | 						</dict> | |
| 2025 | 						<key>3</key> | |
| 2026 | 						<dict> | |
| 2027 | 							<key>name</key> | |
| 2028 | 							<string>variable.other.class.php</string> | |
| 2029 | 						</dict> | |
| 2030 | 						<key>4</key> | |
| 2031 | 						<dict> | |
| 2032 | 							<key>name</key> | |
| 2033 | 							<string>punctuation.definition.variable.php</string> | |
| 2034 | 						</dict> | |
| 2035 | 						<key>5</key> | |
| 2036 | 						<dict> | |
| 2037 | 							<key>name</key> | |
| 2038 | 							<string>constant.other.class.php</string> | |
| 2039 | 						</dict> | |
| 2040 | 					</dict> | |
| 2041 | 					<key>patterns</key> | |
| 2042 | 					<array> | |
| 2043 | 						<dict> | |
| 2044 | 							<key>match</key> | |
| 2045 | 							<string>(self|static|parent)\b</string> | |
| 2046 | 							<key>name</key> | |
| 2047 | 							<string>storage.type.php</string> | |
| 2048 | 						</dict> | |
| 2049 | 						<dict> | |
| 2050 | 							<key>include</key> | |
| 2051 | 							<string>#class-name</string> | |
| 2052 | 						</dict> | |
| 2053 | 						<dict> | |
| 2054 | 							<key>include</key> | |
| 2055 | 							<string>#variable-name</string> | |
| 2056 | 						</dict> | |
| 2057 | 					</array> | |
| 2058 | 				</dict> | |
| 2059 | 				<dict> | |
| 2060 | 					<key>include</key> | |
| 2061 | 					<string>#variables</string> | |
| 2062 | 				</dict> | |
| 2063 | 				<dict> | |
| 2064 | 					<key>include</key> | |
| 2065 | 					<string>#strings</string> | |
| 2066 | 				</dict> | |
| 2067 | 				<dict> | |
| 2068 | 					<key>captures</key> | |
| 2069 | 					<dict> | |
| 2070 | 						<key>1</key> | |
| 2071 | 						<dict> | |
| 2072 | 							<key>name</key> | |
| 2073 | 							<string>support.function.construct.php</string> | |
| 2074 | 						</dict> | |
| 2075 | 						<key>2</key> | |
| 2076 | 						<dict> | |
| 2077 | 							<key>name</key> | |
| 2078 | 							<string>punctuation.definition.array.begin.php</string> | |
| 2079 | 						</dict> | |
| 2080 | 						<key>3</key> | |
| 2081 | 						<dict> | |
| 2082 | 							<key>name</key> | |
| 2083 | 							<string>punctuation.definition.array.end.php</string> | |
| 2084 | 						</dict> | |
| 2085 | 					</dict> | |
| 2086 | 					<key>match</key> | |
| 2087 | 					<string>(array)(\()(\))</string> | |
| 2088 | 					<key>name</key> | |
| 2089 | 					<string>meta.array.empty.php</string> | |
| 2090 | 				</dict> | |
| 2091 | 				<dict> | |
| 2092 | 					<key>begin</key> | |
| 2093 | 					<string>(array)(\()</string> | |
| 2094 | 					<key>beginCaptures</key> | |
| 2095 | 					<dict> | |
| 2096 | 						<key>1</key> | |
| 2097 | 						<dict> | |
| 2098 | 							<key>name</key> | |
| 2099 | 							<string>support.function.construct.php</string> | |
| 2100 | 						</dict> | |
| 2101 | 						<key>2</key> | |
| 2102 | 						<dict> | |
| 2103 | 							<key>name</key> | |
| 2104 | 							<string>punctuation.definition.array.begin.php</string> | |
| 2105 | 						</dict> | |
| 2106 | 					</dict> | |
| 2107 | 					<key>end</key> | |
| 2108 | 					<string>\)</string> | |
| 2109 | 					<key>endCaptures</key> | |
| 2110 | 					<dict> | |
| 2111 | 						<key>0</key> | |
| 2112 | 						<dict> | |
| 2113 | 							<key>name</key> | |
| 2114 | 							<string>punctuation.definition.array.end.php</string> | |
| 2115 | 						</dict> | |
| 2116 | 					</dict> | |
| 2117 | 					<key>name</key> | |
| 2118 | 					<string>meta.array.php</string> | |
| 2119 | 					<key>patterns</key> | |
| 2120 | 					<array> | |
| 2121 | 						<dict> | |
| 2122 | 							<key>include</key> | |
| 2123 | 							<string>#language</string> | |
| 2124 | 						</dict> | |
| 2125 | 					</array> | |
| 2126 | 				</dict> | |
| 2127 | 				<dict> | |
| 2128 | 					<key>captures</key> | |
| 2129 | 					<dict> | |
| 2130 | 						<key>1</key> | |
| 2131 | 						<dict> | |
| 2132 | 							<key>name</key> | |
| 2133 | 							<string>storage.type.php</string> | |
| 2134 | 						</dict> | |
| 2135 | 					</dict> | |
| 2136 | 					<key>match</key> | |
| 2137 | 					<string>(?i)\s*\(\s*(array|real|double|float|int(eger)?|bool(ean)?|string|object|binary|unset)\s*\)</string> | |
| 2138 | 				</dict> | |
| 2139 | 				<dict> | |
| 2140 | 					<key>match</key> | |
| 2141 | 					<string>(?i)\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|clone|var|function|interface|parent|self|object)\b</string> | |
| 2142 | 					<key>name</key> | |
| 2143 | 					<string>storage.type.php</string> | |
| 2144 | 				</dict> | |
| 2145 | 				<dict> | |
| 2146 | 					<key>match</key> | |
| 2147 | 					<string>(?i)\b(global|abstract|const|extends|implements|final|p(r(ivate|otected)|ublic)|static)\b</string> | |
| 2148 | 					<key>name</key> | |
| 2149 | 					<string>storage.modifier.php</string> | |
| 2150 | 				</dict> | |
| 2151 | 				<dict> | |
| 2152 | 					<key>include</key> | |
| 2153 | 					<string>#object</string> | |
| 2154 | 				</dict> | |
| 2155 | 				<dict> | |
| 2156 | 					<key>match</key> | |
| 2157 | 					<string>;</string> | |
| 2158 | 					<key>name</key> | |
| 2159 | 					<string>punctuation.terminator.expression.php</string> | |
| 2160 | 				</dict> | |
| 2161 | 				<dict> | |
| 2162 | 					<key>include</key> | |
| 2163 | 					<string>#heredoc</string> | |
| 2164 | 				</dict> | |
| 2165 | 				<dict> | |
| 2166 | 					<key>match</key> | |
| 2167 | 					<string>\.=?</string> | |
| 2168 | 					<key>name</key> | |
| 2169 | 					<string>keyword.operator.string.php</string> | |
| 2170 | 				</dict> | |
| 2171 | 				<dict> | |
| 2172 | 					<key>match</key> | |
| 2173 | 					<string>=&gt;</string> | |
| 2174 | 					<key>name</key> | |
| 2175 | 					<string>keyword.operator.key.php</string> | |
| 2176 | 				</dict> | |
| 2177 | 				<dict> | |
| 2178 | 					<key>captures</key> | |
| 2179 | 					<dict> | |
| 2180 | 						<key>1</key> | |
| 2181 | 						<dict> | |
| 2182 | 							<key>name</key> | |
| 2183 | 							<string>keyword.operator.assignment.php</string> | |
| 2184 | 						</dict> | |
| 2185 | 						<key>2</key> | |
| 2186 | 						<dict> | |
| 2187 | 							<key>name</key> | |
| 2188 | 							<string>storage.modifier.reference.php</string> | |
| 2189 | 						</dict> | |
| 2190 | 						<key>3</key> | |
| 2191 | 						<dict> | |
| 2192 | 							<key>name</key> | |
| 2193 | 							<string>storage.modifier.reference.php</string> | |
| 2194 | 						</dict> | |
| 2195 | 					</dict> | |
| 2196 | 					<key>match</key> | |
| 2197 | 					<string>(?:(\=)(&amp;))|(&amp;(?=[$A-Za-z_]))</string> | |
| 2198 | 				</dict> | |
| 2199 | 				<dict> | |
| 2200 | 					<key>match</key> | |
| 2201 | 					<string>(@)</string> | |
| 2202 | 					<key>name</key> | |
| 2203 | 					<string>keyword.operator.error-control.php</string> | |
| 2204 | 				</dict> | |
| 2205 | 				<dict> | |
| 2206 | 					<key>match</key> | |
| 2207 | 					<string>(\-\-|\+\+)</string> | |
| 2208 | 					<key>name</key> | |
| 2209 | 					<string>keyword.operator.increment-decrement.php</string> | |
| 2210 | 				</dict> | |
| 2211 | 				<dict> | |
| 2212 | 					<key>match</key> | |
| 2213 | 					<string>(\-|\+|\*|/|%)</string> | |
| 2214 | 					<key>name</key> | |
| 2215 | 					<string>keyword.operator.arithmetic.php</string> | |
| 2216 | 				</dict> | |
| 2217 | 				<dict> | |
| 2218 | 					<key>match</key> | |
| 2219 | 					<string>(?i)(!|&amp;&amp;|\|\|)|\b(and|or|xor|as)\b</string> | |
| 2220 | 					<key>name</key> | |
| 2221 | 					<string>keyword.operator.logical.php</string> | |
| 2222 | 				</dict> | |
| 2223 | 				<dict> | |
| 2224 | 					<key>include</key> | |
| 2225 | 					<string>#function-call</string> | |
| 2226 | 				</dict> | |
| 2227 | 				<dict> | |
| 2228 | 					<key>match</key> | |
| 2229 | 					<string>&lt;&lt;|&gt;&gt;|~|\^|&amp;|\|</string> | |
| 2230 | 					<key>name</key> | |
| 2231 | 					<string>keyword.operator.bitwise.php</string> | |
| 2232 | 				</dict> | |
| 2233 | 				<dict> | |
| 2234 | 					<key>match</key> | |
| 2235 | 					<string>(===|==|!==|!=|&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;)</string> | |
| 2236 | 					<key>name</key> | |
| 2237 | 					<string>keyword.operator.comparison.php</string> | |
| 2238 | 				</dict> | |
| 2239 | 				<dict> | |
| 2240 | 					<key>match</key> | |
| 2241 | 					<string>=</string> | |
| 2242 | 					<key>name</key> | |
| 2243 | 					<string>keyword.operator.assignment.php</string> | |
| 2244 | 				</dict> | |
| 2245 | 				<dict> | |
| 2246 | 					<key>begin</key> | |
| 2247 | 					<string>(?i)\b(instanceof)\b\s+(?=[\\$a-z_])</string> | |
| 2248 | 					<key>beginCaptures</key> | |
| 2249 | 					<dict> | |
| 2250 | 						<key>1</key> | |
| 2251 | 						<dict> | |
| 2252 | 							<key>name</key> | |
| 2253 | 							<string>keyword.operator.type.php</string> | |
| 2254 | 						</dict> | |
| 2255 | 					</dict> | |
| 2256 | 					<key>end</key> | |
| 2257 | 					<string>(?=[^\\$A-Za-z_0-9])</string> | |
| 2258 | 					<key>patterns</key> | |
| 2259 | 					<array> | |
| 2260 | 						<dict> | |
| 2261 | 							<key>include</key> | |
| 2262 | 							<string>#class-name</string> | |
| 2263 | 						</dict> | |
| 2264 | 						<dict> | |
| 2265 | 							<key>include</key> | |
| 2266 | 							<string>#variable-name</string> | |
| 2267 | 						</dict> | |
| 2268 | 					</array> | |
| 2269 | 				</dict> | |
| 2270 | 				<dict> | |
| 2271 | 					<key>include</key> | |
| 2272 | 					<string>#numbers</string> | |
| 2273 | 				</dict> | |
| 2274 | 				<dict> | |
| 2275 | 					<key>include</key> | |
| 2276 | 					<string>#instantiation</string> | |
| 2277 | 				</dict> | |
| 2278 | 				<dict> | |
| 2279 | 					<key>captures</key> | |
| 2280 | 					<dict> | |
| 2281 | 						<key>1</key> | |
| 2282 | 						<dict> | |
| 2283 | 							<key>name</key> | |
| 2284 | 							<string>keyword.control.goto.php</string> | |
| 2285 | 						</dict> | |
| 2286 | 						<key>2</key> | |
| 2287 | 						<dict> | |
| 2288 | 							<key>name</key> | |
| 2289 | 							<string>support.other.php</string> | |
| 2290 | 						</dict> | |
| 2291 | 					</dict> | |
| 2292 | 					<key>match</key> | |
| 2293 | 					<string>(?i)(goto)\s+([a-z_][a-z_0-9]*)</string> | |
| 2294 | 				</dict> | |
| 2295 | 				<dict> | |
| 2296 | 					<key>captures</key> | |
| 2297 | 					<dict> | |
| 2298 | 						<key>1</key> | |
| 2299 | 						<dict> | |
| 2300 | 							<key>name</key> | |
| 2301 | 							<string>entity.name.goto-label.php</string> | |
| 2302 | 						</dict> | |
| 2303 | 					</dict> | |
| 2304 | 					<key>match</key> | |
| 2305 | 					<string>(?i)^\s*([a-z_][a-z_0-9]*)\s*:</string> | |
| 2306 | 				</dict> | |
| 2307 | 				<dict> | |
| 2308 | 					<key>include</key> | |
| 2309 | 					<string>#string-backtick</string> | |
| 2310 | 				</dict> | |
| 2311 | 				<dict> | |
| 2312 | 					<key>begin</key> | |
| 2313 | 					<string>\[</string> | |
| 2314 | 					<key>beginCaptures</key> | |
| 2315 | 					<dict> | |
| 2316 | 						<key>0</key> | |
| 2317 | 						<dict> | |
| 2318 | 							<key>name</key> | |
| 2319 | 							<string>punctuation.section.array.begin.php</string> | |
| 2320 | 						</dict> | |
| 2321 | 					</dict> | |
| 2322 | 					<key>end</key> | |
| 2323 | 					<string>\]</string> | |
| 2324 | 					<key>endCaptures</key> | |
| 2325 | 					<dict> | |
| 2326 | 						<key>0</key> | |
| 2327 | 						<dict> | |
| 2328 | 							<key>name</key> | |
| 2329 | 							<string>punctuation.section.array.end.php</string> | |
| 2330 | 						</dict> | |
| 2331 | 					</dict> | |
| 2332 | 					<key>patterns</key> | |
| 2333 | 					<array> | |
| 2334 | 						<dict> | |
| 2335 | 							<key>include</key> | |
| 2336 | 							<string>#language</string> | |
| 2337 | 						</dict> | |
| 2338 | 					</array> | |
| 2339 | 				</dict> | |
| 2340 | 				<dict> | |
| 2341 | 					<key>include</key> | |
| 2342 | 					<string>#constants</string> | |
| 2343 | 				</dict> | |
| 2344 | 			</array> | |
| 2345 | 		</dict> | |
| 2346 | 		<key>namespace</key> | |
| 2347 | 		<dict> | |
| 2348 | 			<key>begin</key> | |
| 2349 | 			<string>(?i)(?:(namespace)|[a-z0-9_]+)?(\\)(?=.*?([^a-z0-9_\\]|\z))</string> | |
| 2350 | 			<key>beginCaptures</key> | |
| 2351 | 			<dict> | |
| 2352 | 				<key>1</key> | |
| 2353 | 				<dict> | |
| 2354 | 					<key>name</key> | |
| 2355 | 					<string>variable.language.namespace.php</string> | |
| 2356 | 				</dict> | |
| 2357 | 				<key>2</key> | |
| 2358 | 				<dict> | |
| 2359 | 					<key>name</key> | |
| 2360 | 					<string>punctuation.separator.inheritance.php</string> | |
| 2361 | 				</dict> | |
| 2362 | 			</dict> | |
| 2363 | 			<key>end</key> | |
| 2364 | 			<string>(?i)(?=[a-z0-9_]*([^a-z0-9_\\]|\z))</string> | |
| 2365 | 			<key>name</key> | |
| 2366 | 			<string>support.other.namespace.php</string> | |
| 2367 | 			<key>patterns</key> | |
| 2368 | 			<array> | |
| 2369 | 				<dict> | |
| 2370 | 					<key>captures</key> | |
| 2371 | 					<dict> | |
| 2372 | 						<key>1</key> | |
| 2373 | 						<dict> | |
| 2374 | 							<key>name</key> | |
| 2375 | 							<string>punctuation.separator.inheritance.php</string> | |
| 2376 | 						</dict> | |
| 2377 | 					</dict> | |
| 2378 | 					<key>match</key> | |
| 2379 | 					<string>(?i)(\\)</string> | |
| 2380 | 				</dict> | |
| 2381 | 			</array> | |
| 2382 | 		</dict> | |
| 2383 | 		<key>numbers</key> | |
| 2384 | 		<dict> | |
| 2385 | 			<key>match</key> | |
| 2386 | 			<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b</string> | |
| 2387 | 			<key>name</key> | |
| 2388 | 			<string>constant.numeric.php</string> | |
| 2389 | 		</dict> | |
| 2390 | 		<key>object</key> | |
| 2391 | 		<dict> | |
| 2392 | 			<key>patterns</key> | |
| 2393 | 			<array> | |
| 2394 | 				<dict> | |
| 2395 | 					<key>begin</key> | |
| 2396 | 					<string>(-&gt;)(\$?\{)</string> | |
| 2397 | 					<key>beginCaptures</key> | |
| 2398 | 					<dict> | |
| 2399 | 						<key>1</key> | |
| 2400 | 						<dict> | |
| 2401 | 							<key>name</key> | |
| 2402 | 							<string>keyword.operator.class.php</string> | |
| 2403 | 						</dict> | |
| 2404 | 						<key>2</key> | |
| 2405 | 						<dict> | |
| 2406 | 							<key>name</key> | |
| 2407 | 							<string>punctuation.definition.variable.php</string> | |
| 2408 | 						</dict> | |
| 2409 | 					</dict> | |
| 2410 | 					<key>end</key> | |
| 2411 | 					<string>(\})</string> | |
| 2412 | 					<key>endCaptures</key> | |
| 2413 | 					<dict> | |
| 2414 | 						<key>1</key> | |
| 2415 | 						<dict> | |
| 2416 | 							<key>name</key> | |
| 2417 | 							<string>punctuation.definition.variable.php</string> | |
| 2418 | 						</dict> | |
| 2419 | 					</dict> | |
| 2420 | 					<key>patterns</key> | |
| 2421 | 					<array> | |
| 2422 | 						<dict> | |
| 2423 | 							<key>include</key> | |
| 2424 | 							<string>#language</string> | |
| 2425 | 						</dict> | |
| 2426 | 					</array> | |
| 2427 | 				</dict> | |
| 2428 | 				<dict> | |
| 2429 | 					<key>captures</key> | |
| 2430 | 					<dict> | |
| 2431 | 						<key>1</key> | |
| 2432 | 						<dict> | |
| 2433 | 							<key>name</key> | |
| 2434 | 							<string>keyword.operator.class.php</string> | |
| 2435 | 						</dict> | |
| 2436 | 						<key>2</key> | |
| 2437 | 						<dict> | |
| 2438 | 							<key>name</key> | |
| 2439 | 							<string>meta.function-call.object.php</string> | |
| 2440 | 						</dict> | |
| 2441 | 						<key>3</key> | |
| 2442 | 						<dict> | |
| 2443 | 							<key>name</key> | |
| 2444 | 							<string>variable.other.property.php</string> | |
| 2445 | 						</dict> | |
| 2446 | 						<key>4</key> | |
| 2447 | 						<dict> | |
| 2448 | 							<key>name</key> | |
| 2449 | 							<string>punctuation.definition.variable.php</string> | |
| 2450 | 						</dict> | |
| 2451 | 					</dict> | |
| 2452 | 					<key>match</key> | |
| 2453 | 					<string>(?x)(-&gt;) | |
| 2454 | 				(?: | |
| 2455 | 				 ([A-Za-z_][A-Za-z_0-9]*)\s*\( | |
| 2456 | 				 | | |
| 2457 | 				 ((\$+)?[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) | |
| 2458 | 				)?</string> | |
| 2459 | 				</dict> | |
| 2460 | 			</array> | |
| 2461 | 		</dict> | |
| 2462 | 		<key>parameter-default-types</key> | |
| 2463 | 		<dict> | |
| 2464 | 			<key>patterns</key> | |
| 2465 | 			<array> | |
| 2466 | 				<dict> | |
| 2467 | 					<key>include</key> | |
| 2468 | 					<string>#strings</string> | |
| 2469 | 				</dict> | |
| 2470 | 				<dict> | |
| 2471 | 					<key>include</key> | |
| 2472 | 					<string>#numbers</string> | |
| 2473 | 				</dict> | |
| 2474 | 				<dict> | |
| 2475 | 					<key>include</key> | |
| 2476 | 					<string>#string-backtick</string> | |
| 2477 | 				</dict> | |
| 2478 | 				<dict> | |
| 2479 | 					<key>include</key> | |
| 2480 | 					<string>#variables</string> | |
| 2481 | 				</dict> | |
| 2482 | 				<dict> | |
| 2483 | 					<key>match</key> | |
| 2484 | 					<string>=&gt;</string> | |
| 2485 | 					<key>name</key> | |
| 2486 | 					<string>keyword.operator.key.php</string> | |
| 2487 | 				</dict> | |
| 2488 | 				<dict> | |
| 2489 | 					<key>match</key> | |
| 2490 | 					<string>=</string> | |
| 2491 | 					<key>name</key> | |
| 2492 | 					<string>keyword.operator.assignment.php</string> | |
| 2493 | 				</dict> | |
| 2494 | 				<dict> | |
| 2495 | 					<key>match</key> | |
| 2496 | 					<string>&amp;(?=\s*\$)</string> | |
| 2497 | 					<key>name</key> | |
| 2498 | 					<string>storage.modifier.reference.php</string> | |
| 2499 | 				</dict> | |
| 2500 | 				<dict> | |
| 2501 | 					<key>begin</key> | |
| 2502 | 					<string>(array)\s*(\()</string> | |
| 2503 | 					<key>beginCaptures</key> | |
| 2504 | 					<dict> | |
| 2505 | 						<key>1</key> | |
| 2506 | 						<dict> | |
| 2507 | 							<key>name</key> | |
| 2508 | 							<string>support.function.construct.php</string> | |
| 2509 | 						</dict> | |
| 2510 | 						<key>2</key> | |
| 2511 | 						<dict> | |
| 2512 | 							<key>name</key> | |
| 2513 | 							<string>punctuation.definition.array.begin.php</string> | |
| 2514 | 						</dict> | |
| 2515 | 					</dict> | |
| 2516 | 					<key>end</key> | |
| 2517 | 					<string>\)</string> | |
| 2518 | 					<key>endCaptures</key> | |
| 2519 | 					<dict> | |
| 2520 | 						<key>0</key> | |
| 2521 | 						<dict> | |
| 2522 | 							<key>name</key> | |
| 2523 | 							<string>punctuation.definition.array.end.php</string> | |
| 2524 | 						</dict> | |
| 2525 | 					</dict> | |
| 2526 | 					<key>name</key> | |
| 2527 | 					<string>meta.array.php</string> | |
| 2528 | 					<key>patterns</key> | |
| 2529 | 					<array> | |
| 2530 | 						<dict> | |
| 2531 | 							<key>include</key> | |
| 2532 | 							<string>#parameter-default-types</string> | |
| 2533 | 						</dict> | |
| 2534 | 					</array> | |
| 2535 | 				</dict> | |
| 2536 | 				<dict> | |
| 2537 | 					<key>include</key> | |
| 2538 | 					<string>#instantiation</string> | |
| 2539 | 				</dict> | |
| 2540 | 				<dict> | |
| 2541 | 					<key>begin</key> | |
| 2542 | 					<string>(?xi)\s*(?= | |
| 2543 | 				 [a-z_0-9\\]+(::) | |
| 2544 | 				 ([a-z_\x{7f}-\x{ff}][a-z0-9_\x{7f}-\x{ff}]*)? | |
| 2545 | 				 )</string> | |
| 2546 | 					<key>end</key> | |
| 2547 | 					<string>(?i)(::)([a-z_\x{7f}-\x{ff}][a-z0-9_\x{7f}-\x{ff}]*)?</string> | |
| 2548 | 					<key>endCaptures</key> | |
| 2549 | 					<dict> | |
| 2550 | 						<key>1</key> | |
| 2551 | 						<dict> | |
| 2552 | 							<key>name</key> | |
| 2553 | 							<string>keyword.operator.class.php</string> | |
| 2554 | 						</dict> | |
| 2555 | 						<key>2</key> | |
| 2556 | 						<dict> | |
| 2557 | 							<key>name</key> | |
| 2558 | 							<string>constant.other.class.php</string> | |
| 2559 | 						</dict> | |
| 2560 | 					</dict> | |
| 2561 | 					<key>patterns</key> | |
| 2562 | 					<array> | |
| 2563 | 						<dict> | |
| 2564 | 							<key>include</key> | |
| 2565 | 							<string>#class-name</string> | |
| 2566 | 						</dict> | |
| 2567 | 					</array> | |
| 2568 | 				</dict> | |
| 2569 | 				<dict> | |
| 2570 | 					<key>include</key> | |
| 2571 | 					<string>#constants</string> | |
| 2572 | 				</dict> | |
| 2573 | 			</array> | |
| 2574 | 		</dict> | |
| 2575 | 		<key>php_doc</key> | |
| 2576 | 		<dict> | |
| 2577 | 			<key>patterns</key> | |
| 2578 | 			<array> | |
| 2579 | 				<dict> | |
| 2580 | 					<key>comment</key> | |
| 2581 | 					<string>PHPDocumentor only recognises lines with an asterisk as the first non-whitespaces character</string> | |
| 2582 | 					<key>match</key> | |
| 2583 | 					<string>^(?!\s*\*).*$\n?</string> | |
| 2584 | 					<key>name</key> | |
| 2585 | 					<string>invalid.illegal.missing-asterisk.phpdoc.php</string> | |
| 2586 | 				</dict> | |
| 2587 | 				<dict> | |
| 2588 | 					<key>captures</key> | |
| 2589 | 					<dict> | |
| 2590 | 						<key>1</key> | |
| 2591 | 						<dict> | |
| 2592 | 							<key>name</key> | |
| 2593 | 							<string>keyword.other.phpdoc.php</string> | |
| 2594 | 						</dict> | |
| 2595 | 						<key>3</key> | |
| 2596 | 						<dict> | |
| 2597 | 							<key>name</key> | |
| 2598 | 							<string>storage.modifier.php</string> | |
| 2599 | 						</dict> | |
| 2600 | 						<key>4</key> | |
| 2601 | 						<dict> | |
| 2602 | 							<key>name</key> | |
| 2603 | 							<string>invalid.illegal.wrong-access-type.phpdoc.php</string> | |
| 2604 | 						</dict> | |
| 2605 | 					</dict> | |
| 2606 | 					<key>match</key> | |
| 2607 | 					<string>^\s*\*\s*(@access)\s+((public|private|protected)|(.+))\s*$</string> | |
| 2608 | 				</dict> | |
| 2609 | 				<dict> | |
| 2610 | 					<key>captures</key> | |
| 2611 | 					<dict> | |
| 2612 | 						<key>1</key> | |
| 2613 | 						<dict> | |
| 2614 | 							<key>name</key> | |
| 2615 | 							<string>keyword.other.phpdoc.php</string> | |
| 2616 | 						</dict> | |
| 2617 | 						<key>2</key> | |
| 2618 | 						<dict> | |
| 2619 | 							<key>name</key> | |
| 2620 | 							<string>markup.underline.link.php</string> | |
| 2621 | 						</dict> | |
| 2622 | 					</dict> | |
| 2623 | 					<key>match</key> | |
| 2624 | 					<string>(@xlink)\s+(.+)\s*$</string> | |
| 2625 | 				</dict> | |
| 2626 | 				<dict> | |
| 2627 | 					<key>match</key> | |
| 2628 | 					<string>\@(a(bstract|uthor)|c(ategory|opyright)|example|global|internal|li(cense|nk)|pa(ckage|ram)|return|s(ee|ince|tatic|ubpackage)|t(hrows|odo)|v(ar|ersion)|uses|deprecated|final|ignore)\b</string> | |
| 2629 | 					<key>name</key> | |
| 2630 | 					<string>keyword.other.phpdoc.php</string> | |
| 2631 | 				</dict> | |
| 2632 | 				<dict> | |
| 2633 | 					<key>captures</key> | |
| 2634 | 					<dict> | |
| 2635 | 						<key>1</key> | |
| 2636 | 						<dict> | |
| 2637 | 							<key>name</key> | |
| 2638 | 							<string>keyword.other.phpdoc.php</string> | |
| 2639 | 						</dict> | |
| 2640 | 					</dict> | |
| 2641 | 					<key>match</key> | |
| 2642 | 					<string>\{(@(link)).+?\}</string> | |
| 2643 | 					<key>name</key> | |
| 2644 | 					<string>meta.tag.inline.phpdoc.php</string> | |
| 2645 | 				</dict> | |
| 2646 | 			</array> | |
| 2647 | 		</dict> | |
| 2648 | 		<key>regex-double-quoted</key> | |
| 2649 | 		<dict> | |
| 2650 | 			<key>begin</key> | |
| 2651 | 			<string>(?x)"/ (?= (\\.|[^"/])++/[imsxeADSUXu]*" )</string> | |
| 2652 | 			<key>beginCaptures</key> | |
| 2653 | 			<dict> | |
| 2654 | 				<key>0</key> | |
| 2655 | 				<dict> | |
| 2656 | 					<key>name</key> | |
| 2657 | 					<string>punctuation.definition.string.begin.php</string> | |
| 2658 | 				</dict> | |
| 2659 | 			</dict> | |
| 2660 | 			<key>end</key> | |
| 2661 | 			<string>(/)([imsxeADSUXu]*)(")</string> | |
| 2662 | 			<key>endCaptures</key> | |
| 2663 | 			<dict> | |
| 2664 | 				<key>0</key> | |
| 2665 | 				<dict> | |
| 2666 | 					<key>name</key> | |
| 2667 | 					<string>punctuation.definition.string.end.php</string> | |
| 2668 | 				</dict> | |
| 2669 | 			</dict> | |
| 2670 | 			<key>name</key> | |
| 2671 | 			<string>string.regexp.double-quoted.php</string> | |
| 2672 | 			<key>patterns</key> | |
| 2673 | 			<array> | |
| 2674 | 				<dict> | |
| 2675 | 					<key>comment</key> | |
| 2676 | 					<string>Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)</string> | |
| 2677 | 					<key>match</key> | |
| 2678 | 					<string>(\\){1,2}[.$^\[\]{}]</string> | |
| 2679 | 					<key>name</key> | |
| 2680 | 					<string>constant.character.escape.regex.php</string> | |
| 2681 | 				</dict> | |
| 2682 | 				<dict> | |
| 2683 | 					<key>include</key> | |
| 2684 | 					<string>#interpolation</string> | |
| 2685 | 				</dict> | |
| 2686 | 				<dict> | |
| 2687 | 					<key>captures</key> | |
| 2688 | 					<dict> | |
| 2689 | 						<key>1</key> | |
| 2690 | 						<dict> | |
| 2691 | 							<key>name</key> | |
| 2692 | 							<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 2693 | 						</dict> | |
| 2694 | 						<key>3</key> | |
| 2695 | 						<dict> | |
| 2696 | 							<key>name</key> | |
| 2697 | 							<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 2698 | 						</dict> | |
| 2699 | 					</dict> | |
| 2700 | 					<key>match</key> | |
| 2701 | 					<string>(\{)\d+(,\d+)?(\})</string> | |
| 2702 | 					<key>name</key> | |
| 2703 | 					<string>string.regexp.arbitrary-repitition.php</string> | |
| 2704 | 				</dict> | |
| 2705 | 				<dict> | |
| 2706 | 					<key>begin</key> | |
| 2707 | 					<string>\[(?:\^?\])?</string> | |
| 2708 | 					<key>captures</key> | |
| 2709 | 					<dict> | |
| 2710 | 						<key>0</key> | |
| 2711 | 						<dict> | |
| 2712 | 							<key>name</key> | |
| 2713 | 							<string>punctuation.definition.character-class.php</string> | |
| 2714 | 						</dict> | |
| 2715 | 					</dict> | |
| 2716 | 					<key>end</key> | |
| 2717 | 					<string>\]</string> | |
| 2718 | 					<key>name</key> | |
| 2719 | 					<string>string.regexp.character-class.php</string> | |
| 2720 | 					<key>patterns</key> | |
| 2721 | 					<array> | |
| 2722 | 						<dict> | |
| 2723 | 							<key>include</key> | |
| 2724 | 							<string>#interpolation</string> | |
| 2725 | 						</dict> | |
| 2726 | 					</array> | |
| 2727 | 				</dict> | |
| 2728 | 				<dict> | |
| 2729 | 					<key>match</key> | |
| 2730 | 					<string>[$^+*]</string> | |
| 2731 | 					<key>name</key> | |
| 2732 | 					<string>keyword.operator.regexp.php</string> | |
| 2733 | 				</dict> | |
| 2734 | 			</array> | |
| 2735 | 		</dict> | |
| 2736 | 		<key>regex-single-quoted</key> | |
| 2737 | 		<dict> | |
| 2738 | 			<key>begin</key> | |
| 2739 | 			<string>(?x)'/ (?= ( \\ (?: \\ (?: \\ [\\']? | [^'] ) | . ) | [^'/] )++/[imsxeADSUXu]*' )</string> | |
| 2740 | 			<key>beginCaptures</key> | |
| 2741 | 			<dict> | |
| 2742 | 				<key>0</key> | |
| 2743 | 				<dict> | |
| 2744 | 					<key>name</key> | |
| 2745 | 					<string>punctuation.definition.string.begin.php</string> | |
| 2746 | 				</dict> | |
| 2747 | 			</dict> | |
| 2748 | 			<key>end</key> | |
| 2749 | 			<string>(/)([imsxeADSUXu]*)(')</string> | |
| 2750 | 			<key>endCaptures</key> | |
| 2751 | 			<dict> | |
| 2752 | 				<key>0</key> | |
| 2753 | 				<dict> | |
| 2754 | 					<key>name</key> | |
| 2755 | 					<string>punctuation.definition.string.end.php</string> | |
| 2756 | 				</dict> | |
| 2757 | 			</dict> | |
| 2758 | 			<key>name</key> | |
| 2759 | 			<string>string.regexp.single-quoted.php</string> | |
| 2760 | 			<key>patterns</key> | |
| 2761 | 			<array> | |
| 2762 | 				<dict> | |
| 2763 | 					<key>captures</key> | |
| 2764 | 					<dict> | |
| 2765 | 						<key>1</key> | |
| 2766 | 						<dict> | |
| 2767 | 							<key>name</key> | |
| 2768 | 							<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 2769 | 						</dict> | |
| 2770 | 						<key>3</key> | |
| 2771 | 						<dict> | |
| 2772 | 							<key>name</key> | |
| 2773 | 							<string>punctuation.definition.arbitrary-repitition.php</string> | |
| 2774 | 						</dict> | |
| 2775 | 					</dict> | |
| 2776 | 					<key>match</key> | |
| 2777 | 					<string>(\{)\d+(,\d+)?(\})</string> | |
| 2778 | 					<key>name</key> | |
| 2779 | 					<string>string.regexp.arbitrary-repitition.php</string> | |
| 2780 | 				</dict> | |
| 2781 | 				<dict> | |
| 2782 | 					<key>begin</key> | |
| 2783 | 					<string>\[(?:\^?\])?</string> | |
| 2784 | 					<key>captures</key> | |
| 2785 | 					<dict> | |
| 2786 | 						<key>0</key> | |
| 2787 | 						<dict> | |
| 2788 | 							<key>name</key> | |
| 2789 | 							<string>punctuation.definition.character-class.php</string> | |
| 2790 | 						</dict> | |
| 2791 | 					</dict> | |
| 2792 | 					<key>end</key> | |
| 2793 | 					<string>\]</string> | |
| 2794 | 					<key>name</key> | |
| 2795 | 					<string>string.regexp.character-class.php</string> | |
| 2796 | 					<key>patterns</key> | |
| 2797 | 					<array> | |
| 2798 | 						<dict> | |
| 2799 | 							<key>include</key> | |
| 2800 | 							<string>#single_quote_regex_escape</string> | |
| 2801 | 						</dict> | |
| 2802 | 					</array> | |
| 2803 | 				</dict> | |
| 2804 | 				<dict> | |
| 2805 | 					<key>match</key> | |
| 2806 | 					<string>[$^+*]</string> | |
| 2807 | 					<key>name</key> | |
| 2808 | 					<string>keyword.operator.regexp.php</string> | |
| 2809 | 				</dict> | |
| 2810 | 				<dict> | |
| 2811 | 					<key>include</key> | |
| 2812 | 					<string>#single_quote_regex_escape</string> | |
| 2813 | 				</dict> | |
| 2814 | 			</array> | |
| 2815 | 			<key>repository</key> | |
| 2816 | 			<dict> | |
| 2817 | 				<key>single_quote_regex_escape</key> | |
| 2818 | 				<dict> | |
| 2819 | 					<key>comment</key> | |
| 2820 | 					<string>Support both PHP string and regex escaping</string> | |
| 2821 | 					<key>match</key> | |
| 2822 | 					<string>(?x) \\ (?: \\ (?: \\ [\\']? | [^'] ) | . )</string> | |
| 2823 | 					<key>name</key> | |
| 2824 | 					<string>constant.character.escape.php</string> | |
| 2825 | 				</dict> | |
| 2826 | 			</dict> | |
| 2827 | 		</dict> | |
| 2828 | 		<key>sql-string-double-quoted</key> | |
| 2829 | 		<dict> | |
| 2830 | 			<key>begin</key> | |
| 2831 | 			<string>"\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b)</string> | |
| 2832 | 			<key>beginCaptures</key> | |
| 2833 | 			<dict> | |
| 2834 | 				<key>0</key> | |
| 2835 | 				<dict> | |
| 2836 | 					<key>name</key> | |
| 2837 | 					<string>punctuation.definition.string.begin.php</string> | |
| 2838 | 				</dict> | |
| 2839 | 			</dict> | |
| 2840 | 			<key>contentName</key> | |
| 2841 | 			<string>source.sql.embedded.php</string> | |
| 2842 | 			<key>end</key> | |
| 2843 | 			<string>"</string> | |
| 2844 | 			<key>endCaptures</key> | |
| 2845 | 			<dict> | |
| 2846 | 				<key>0</key> | |
| 2847 | 				<dict> | |
| 2848 | 					<key>name</key> | |
| 2849 | 					<string>punctuation.definition.string.end.php</string> | |
| 2850 | 				</dict> | |
| 2851 | 			</dict> | |
| 2852 | 			<key>name</key> | |
| 2853 | 			<string>string.quoted.double.sql.php</string> | |
| 2854 | 			<key>patterns</key> | |
| 2855 | 			<array> | |
| 2856 | 				<dict> | |
| 2857 | 					<key>match</key> | |
| 2858 | 					<string>#(\\"|[^"])*(?="|$\n?)</string> | |
| 2859 | 					<key>name</key> | |
| 2860 | 					<string>comment.line.number-sign.sql</string> | |
| 2861 | 				</dict> | |
| 2862 | 				<dict> | |
| 2863 | 					<key>match</key> | |
| 2864 | 					<string>--(\\"|[^"])*(?="|$\n?)</string> | |
| 2865 | 					<key>name</key> | |
| 2866 | 					<string>comment.line.double-dash.sql</string> | |
| 2867 | 				</dict> | |
| 2868 | 				<dict> | |
| 2869 | 					<key>match</key> | |
| 2870 | 					<string>\\[\\"`']</string> | |
| 2871 | 					<key>name</key> | |
| 2872 | 					<string>constant.character.escape.php</string> | |
| 2873 | 				</dict> | |
| 2874 | 				<dict> | |
| 2875 | 					<key>comment</key> | |
| 2876 | 					<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script | |
| 2877 | 					Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string> | |
| 2878 | 					<key>match</key> | |
| 2879 | 					<string>'(?=((\\')|[^'"])*("|$))</string> | |
| 2880 | 					<key>name</key> | |
| 2881 | 					<string>string.quoted.single.unclosed.sql</string> | |
| 2882 | 				</dict> | |
| 2883 | 				<dict> | |
| 2884 | 					<key>comment</key> | |
| 2885 | 					<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script | |
| 2886 | 					Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string> | |
| 2887 | 					<key>match</key> | |
| 2888 | 					<string>`(?=((\\`)|[^`"])*("|$))</string> | |
| 2889 | 					<key>name</key> | |
| 2890 | 					<string>string.quoted.other.backtick.unclosed.sql</string> | |
| 2891 | 				</dict> | |
| 2892 | 				<dict> | |
| 2893 | 					<key>begin</key> | |
| 2894 | 					<string>'</string> | |
| 2895 | 					<key>end</key> | |
| 2896 | 					<string>'</string> | |
| 2897 | 					<key>name</key> | |
| 2898 | 					<string>string.quoted.single.sql</string> | |
| 2899 | 					<key>patterns</key> | |
| 2900 | 					<array> | |
| 2901 | 						<dict> | |
| 2902 | 							<key>include</key> | |
| 2903 | 							<string>#interpolation</string> | |
| 2904 | 						</dict> | |
| 2905 | 					</array> | |
| 2906 | 				</dict> | |
| 2907 | 				<dict> | |
| 2908 | 					<key>begin</key> | |
| 2909 | 					<string>`</string> | |
| 2910 | 					<key>end</key> | |
| 2911 | 					<string>`</string> | |
| 2912 | 					<key>name</key> | |
| 2913 | 					<string>string.quoted.other.backtick.sql</string> | |
| 2914 | 					<key>patterns</key> | |
| 2915 | 					<array> | |
| 2916 | 						<dict> | |
| 2917 | 							<key>include</key> | |
| 2918 | 							<string>#interpolation</string> | |
| 2919 | 						</dict> | |
| 2920 | 					</array> | |
| 2921 | 				</dict> | |
| 2922 | 				<dict> | |
| 2923 | 					<key>include</key> | |
| 2924 | 					<string>#interpolation</string> | |
| 2925 | 				</dict> | |
| 2926 | 				<dict> | |
| 2927 | 					<key>include</key> | |
| 2928 | 					<string>source.sql</string> | |
| 2929 | 				</dict> | |
| 2930 | 			</array> | |
| 2931 | 		</dict> | |
| 2932 | 		<key>sql-string-single-quoted</key> | |
| 2933 | 		<dict> | |
| 2934 | 			<key>begin</key> | |
| 2935 | 			<string>'\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b)</string> | |
| 2936 | 			<key>beginCaptures</key> | |
| 2937 | 			<dict> | |
| 2938 | 				<key>0</key> | |
| 2939 | 				<dict> | |
| 2940 | 					<key>name</key> | |
| 2941 | 					<string>punctuation.definition.string.begin.php</string> | |
| 2942 | 				</dict> | |
| 2943 | 			</dict> | |
| 2944 | 			<key>contentName</key> | |
| 2945 | 			<string>source.sql.embedded.php</string> | |
| 2946 | 			<key>end</key> | |
| 2947 | 			<string>'</string> | |
| 2948 | 			<key>endCaptures</key> | |
| 2949 | 			<dict> | |
| 2950 | 				<key>0</key> | |
| 2951 | 				<dict> | |
| 2952 | 					<key>name</key> | |
| 2953 | 					<string>punctuation.definition.string.end.php</string> | |
| 2954 | 				</dict> | |
| 2955 | 			</dict> | |
| 2956 | 			<key>name</key> | |
| 2957 | 			<string>string.quoted.single.sql.php</string> | |
| 2958 | 			<key>patterns</key> | |
| 2959 | 			<array> | |
| 2960 | 				<dict> | |
| 2961 | 					<key>match</key> | |
| 2962 | 					<string>#(\\'|[^'])*(?='|$\n?)</string> | |
| 2963 | 					<key>name</key> | |
| 2964 | 					<string>comment.line.number-sign.sql</string> | |
| 2965 | 				</dict> | |
| 2966 | 				<dict> | |
| 2967 | 					<key>match</key> | |
| 2968 | 					<string>--(\\'|[^'])*(?='|$\n?)</string> | |
| 2969 | 					<key>name</key> | |
| 2970 | 					<string>comment.line.double-dash.sql</string> | |
| 2971 | 				</dict> | |
| 2972 | 				<dict> | |
| 2973 | 					<key>match</key> | |
| 2974 | 					<string>\\[\\'`"]</string> | |
| 2975 | 					<key>name</key> | |
| 2976 | 					<string>constant.character.escape.php</string> | |
| 2977 | 				</dict> | |
| 2978 | 				<dict> | |
| 2979 | 					<key>comment</key> | |
| 2980 | 					<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script | |
| 2981 | 					Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string> | |
| 2982 | 					<key>match</key> | |
| 2983 | 					<string>`(?=((\\`)|[^`'])*('|$))</string> | |
| 2984 | 					<key>name</key> | |
| 2985 | 					<string>string.quoted.other.backtick.unclosed.sql</string> | |
| 2986 | 				</dict> | |
| 2987 | 				<dict> | |
| 2988 | 					<key>comment</key> | |
| 2989 | 					<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script | |
| 2990 | 					Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string> | |
| 2991 | 					<key>match</key> | |
| 2992 | 					<string>"(?=((\\")|[^"'])*('|$))</string> | |
| 2993 | 					<key>name</key> | |
| 2994 | 					<string>string.quoted.double.unclosed.sql</string> | |
| 2995 | 				</dict> | |
| 2996 | 				<dict> | |
| 2997 | 					<key>include</key> | |
| 2998 | 					<string>source.sql</string> | |
| 2999 | 				</dict> | |
| 3000 | 			</array> | |
| 3001 | 		</dict> | |
| 3002 | 		<key>string-backtick</key> | |
| 3003 | 		<dict> | |
| 3004 | 			<key>begin</key> | |
| 3005 | 			<string>`</string> | |
| 3006 | 			<key>beginCaptures</key> | |
| 3007 | 			<dict> | |
| 3008 | 				<key>0</key> | |
| 3009 | 				<dict> | |
| 3010 | 					<key>name</key> | |
| 3011 | 					<string>punctuation.definition.string.begin.php</string> | |
| 3012 | 				</dict> | |
| 3013 | 			</dict> | |
| 3014 | 			<key>end</key> | |
| 3015 | 			<string>`</string> | |
| 3016 | 			<key>endCaptures</key> | |
| 3017 | 			<dict> | |
| 3018 | 				<key>0</key> | |
| 3019 | 				<dict> | |
| 3020 | 					<key>name</key> | |
| 3021 | 					<string>punctuation.definition.string.end.php</string> | |
| 3022 | 				</dict> | |
| 3023 | 			</dict> | |
| 3024 | 			<key>name</key> | |
| 3025 | 			<string>string.interpolated.php</string> | |
| 3026 | 			<key>patterns</key> | |
| 3027 | 			<array> | |
| 3028 | 				<dict> | |
| 3029 | 					<key>match</key> | |
| 3030 | 					<string>\\.</string> | |
| 3031 | 					<key>name</key> | |
| 3032 | 					<string>constant.character.escape.php</string> | |
| 3033 | 				</dict> | |
| 3034 | 				<dict> | |
| 3035 | 					<key>include</key> | |
| 3036 | 					<string>#interpolation</string> | |
| 3037 | 				</dict> | |
| 3038 | 			</array> | |
| 3039 | 		</dict> | |
| 3040 | 		<key>string-double-quoted</key> | |
| 3041 | 		<dict> | |
| 3042 | 			<key>begin</key> | |
| 3043 | 			<string>"</string> | |
| 3044 | 			<key>beginCaptures</key> | |
| 3045 | 			<dict> | |
| 3046 | 				<key>0</key> | |
| 3047 | 				<dict> | |
| 3048 | 					<key>name</key> | |
| 3049 | 					<string>punctuation.definition.string.begin.php</string> | |
| 3050 | 				</dict> | |
| 3051 | 			</dict> | |
| 3052 | 			<key>comment</key> | |
| 3053 | 			<string>This contentName is just to allow the usage of “select scope” to select the string contents first, then the string with quotes</string> | |
| 3054 | 			<key>contentName</key> | |
| 3055 | 			<string>meta.string-contents.quoted.double.php</string> | |
| 3056 | 			<key>end</key> | |
| 3057 | 			<string>"</string> | |
| 3058 | 			<key>endCaptures</key> | |
| 3059 | 			<dict> | |
| 3060 | 				<key>0</key> | |
| 3061 | 				<dict> | |
| 3062 | 					<key>name</key> | |
| 3063 | 					<string>punctuation.definition.string.end.php</string> | |
| 3064 | 				</dict> | |
| 3065 | 			</dict> | |
| 3066 | 			<key>name</key> | |
| 3067 | 			<string>string.quoted.double.php</string> | |
| 3068 | 			<key>patterns</key> | |
| 3069 | 			<array> | |
| 3070 | 				<dict> | |
| 3071 | 					<key>include</key> | |
| 3072 | 					<string>#interpolation</string> | |
| 3073 | 				</dict> | |
| 3074 | 			</array> | |
| 3075 | 		</dict> | |
| 3076 | 		<key>string-single-quoted</key> | |
| 3077 | 		<dict> | |
| 3078 | 			<key>begin</key> | |
| 3079 | 			<string>'</string> | |
| 3080 | 			<key>beginCaptures</key> | |
| 3081 | 			<dict> | |
| 3082 | 				<key>0</key> | |
| 3083 | 				<dict> | |
| 3084 | 					<key>name</key> | |
| 3085 | 					<string>punctuation.definition.string.begin.php</string> | |
| 3086 | 				</dict> | |
| 3087 | 			</dict> | |
| 3088 | 			<key>contentName</key> | |
| 3089 | 			<string>meta.string-contents.quoted.single.php</string> | |
| 3090 | 			<key>end</key> | |
| 3091 | 			<string>'</string> | |
| 3092 | 			<key>endCaptures</key> | |
| 3093 | 			<dict> | |
| 3094 | 				<key>0</key> | |
| 3095 | 				<dict> | |
| 3096 | 					<key>name</key> | |
| 3097 | 					<string>punctuation.definition.string.end.php</string> | |
| 3098 | 				</dict> | |
| 3099 | 			</dict> | |
| 3100 | 			<key>name</key> | |
| 3101 | 			<string>string.quoted.single.php</string> | |
| 3102 | 			<key>patterns</key> | |
| 3103 | 			<array> | |
| 3104 | 				<dict> | |
| 3105 | 					<key>match</key> | |
| 3106 | 					<string>\\[\\']</string> | |
| 3107 | 					<key>name</key> | |
| 3108 | 					<string>constant.character.escape.php</string> | |
| 3109 | 				</dict> | |
| 3110 | 			</array> | |
| 3111 | 		</dict> | |
| 3112 | 		<key>strings</key> | |
| 3113 | 		<dict> | |
| 3114 | 			<key>patterns</key> | |
| 3115 | 			<array> | |
| 3116 | 				<dict> | |
| 3117 | 					<key>include</key> | |
| 3118 | 					<string>#regex-double-quoted</string> | |
| 3119 | 				</dict> | |
| 3120 | 				<dict> | |
| 3121 | 					<key>include</key> | |
| 3122 | 					<string>#sql-string-double-quoted</string> | |
| 3123 | 				</dict> | |
| 3124 | 				<dict> | |
| 3125 | 					<key>include</key> | |
| 3126 | 					<string>#string-double-quoted</string> | |
| 3127 | 				</dict> | |
| 3128 | 				<dict> | |
| 3129 | 					<key>include</key> | |
| 3130 | 					<string>#regex-single-quoted</string> | |
| 3131 | 				</dict> | |
| 3132 | 				<dict> | |
| 3133 | 					<key>include</key> | |
| 3134 | 					<string>#sql-string-single-quoted</string> | |
| 3135 | 				</dict> | |
| 3136 | 				<dict> | |
| 3137 | 					<key>include</key> | |
| 3138 | 					<string>#string-single-quoted</string> | |
| 3139 | 				</dict> | |
| 3140 | 			</array> | |
| 3141 | 		</dict> | |
| 3142 | 		<key>support</key> | |
| 3143 | 		<dict> | |
| 3144 | 			<key>patterns</key> | |
| 3145 | 			<array> | |
| 3146 | 				<dict> | |
| 3147 | 					<key>match</key> | |
| 3148 | 					<string>(?i)\bapc_(s(tore|ma_info)|c(ompile_file|lear_cache|a(s|che_info))|inc|de(c|fine_constants|lete(_file)?)|exists|fetch|load_constants|add|bin_(dump(file)?|load(file)?))\b</string> | |
| 3149 | 					<key>name</key> | |
| 3150 | 					<string>support.function.apc.php</string> | |
| 3151 | 				</dict> | |
| 3152 | 				<dict> | |
| 3153 | 					<key>match</key> | |
| 3154 | 					<string>(?i)\bapcu_(s(tore|ma_info)|c(lear_cache|a(s|che_info))|inc|de(c|lete)|e(ntry|xists)|fetch|add)\b</string> | |
| 3155 | 					<key>name</key> | |
| 3156 | 					<string>support.function.apcu.php</string> | |
| 3157 | 				</dict> | |
| 3158 | 				<dict> | |
| 3159 | 					<key>match</key> | |
| 3160 | 					<string>(?i)\b(s(huffle|izeof|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|p(os|rev)|e(nd|ach|xtract)|k(sort|ey(_exists)?|rsort)|list|a(sort|r(sort|ray(_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|lumn|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|place(_recursive)?|verse)|and)|m(ultisort|erge(_recursive)?|ap)))?))|r(sort|eset|ange))\b</string> | |
| 3161 | 					<key>name</key> | |
| 3162 | 					<string>support.function.array.php</string> | |
| 3163 | 				</dict> | |
| 3164 | 				<dict> | |
| 3165 | 					<key>match</key> | |
| 3166 | 					<string>(?i)\b(s(how_source|ys_getloadavg|leep)|highlight_(string|file)|con(stant|nection_(status|aborted))|time_(sleep_until|nanosleep)|ignore_user_abort|d(ie|efine(d)?)|u(sleep|n(iqid|pack))|__halt_compiler|p(hp_(strip_whitespace|check_syntax)|ack)|e(val|xit)|get_browser)\b</string> | |
| 3167 | 					<key>name</key> | |
| 3168 | 					<string>support.function.basic_functions.php</string> | |
| 3169 | 				</dict> | |
| 3170 | 				<dict> | |
| 3171 | 					<key>match</key> | |
| 3172 | 					<string>(?i)\bbc(s(cale|ub|qrt)|comp|div|pow(mod)?|add|m(od|ul))\b</string> | |
| 3173 | 					<key>name</key> | |
| 3174 | 					<string>support.function.bcmath.php</string> | |
| 3175 | 				</dict> | |
| 3176 | 				<dict> | |
| 3177 | 					<key>match</key> | |
| 3178 | 					<string>(?i)\bblenc_encrypt\b</string> | |
| 3179 | 					<key>name</key> | |
| 3180 | 					<string>support.function.blenc.php</string> | |
| 3181 | 				</dict> | |
| 3182 | 				<dict> | |
| 3183 | 					<key>match</key> | |
| 3184 | 					<string>(?i)\bMongoDB\\BSON\\(to(JSON|PHP)|from(JSON|PHP))\b</string> | |
| 3185 | 					<key>name</key> | |
| 3186 | 					<string>support.function.bson.php</string> | |
| 3187 | 				</dict> | |
| 3188 | 				<dict> | |
| 3189 | 					<key>match</key> | |
| 3190 | 					<string>(?i)\bbz(c(ompress|lose)|open|decompress|err(str|no|or)|flush|write|read)\b</string> | |
| 3191 | 					<key>name</key> | |
| 3192 | 					<string>support.function.bz2.php</string> | |
| 3193 | 				</dict> | |
| 3194 | 				<dict> | |
| 3195 | 					<key>match</key> | |
| 3196 | 					<string>(?i)\b(cal_(to_jd|info|days_in_month|from_jd)|unixtojd|j(d(to(unix|j(ulian|ewish)|french|gregorian)|dayofweek|monthname)|uliantojd|ewishtojd)|easter_da(ys|te)|frenchtojd|gregoriantojd)\b</string> | |
| 3197 | 					<key>name</key> | |
| 3198 | 					<string>support.function.calendar.php</string> | |
| 3199 | 				</dict> | |
| 3200 | 				<dict> | |
| 3201 | 					<key>match</key> | |
| 3202 | 					<string>(?i)\b(c(lass_(exists|alias)|all_user_method(_array)?)|trait_exists|i(s_(subclass_of|a)|nterface_exists)|__autoload|property_exists|get_(c(lass(_(vars|methods))?|alled_class)|object_vars|declared_(classes|traits|interfaces)|parent_class)|method_exists)\b</string> | |
| 3203 | 					<key>name</key> | |
| 3204 | 					<string>support.function.classobj.php</string> | |
| 3205 | 				</dict> | |
| 3206 | 				<dict> | |
| 3207 | 					<key>match</key> | |
| 3208 | 					<string>(?i)\b(com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|variant_(s(ub|et(_type)?)|n(ot|eg)|c(a(st|t)|mp)|i(nt|div|mp)|or|d(iv|ate_(to_timestamp|from_timestamp))|pow|eqv|fix|a(nd|dd|bs)|round|get_type|xor|m(od|ul)))\b</string> | |
| 3209 | 					<key>name</key> | |
| 3210 | 					<string>support.function.com.php</string> | |
| 3211 | 				</dict> | |
| 3212 | 				<dict> | |
| 3213 | 					<key>match</key> | |
| 3214 | 					<string>(?i)\brandom_(int|bytes)\b</string> | |
| 3215 | 					<key>name</key> | |
| 3216 | 					<string>support.function.csprng.php</string> | |
| 3217 | 				</dict> | |
| 3218 | 				<dict> | |
| 3219 | 					<key>match</key> | |
| 3220 | 					<string>(?i)\bctype_(space|cntrl|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit)\b</string> | |
| 3221 | 					<key>name</key> | |
| 3222 | 					<string>support.function.ctype.php</string> | |
| 3223 | 				</dict> | |
| 3224 | 				<dict> | |
| 3225 | 					<key>match</key> | |
| 3226 | 					<string>(?i)\bcurl_(s(hare_(setopt|close|init)|trerror|etopt(_array)?)|c(opy_handle|lose)|init|unescape|pause|e(scape|rr(no|or)|xec)|version|file_create|reset|getinfo|multi_(s(trerror|e(topt|lect))|close|in(it|fo_read)|exec|add_handle|remove_handle|getcontent))\b</string> | |
| 3227 | 					<key>name</key> | |
| 3228 | 					<string>support.function.curl.php</string> | |
| 3229 | 				</dict> | |
| 3230 | 				<dict> | |
| 3231 | 					<key>match</key> | |
| 3232 | 					<string>(?i)\b(str(totime|ptime|ftime)|checkdate|time(zone_(name_(from_abbr|get)|transitions_get|identifiers_list|o(pen|ffset_get)|version_get|location_get|abbreviations_list))?|idate|date(_(su(n(set|_info|rise)|b)|create(_(immutable(_from_format)?|from_format))?|time(stamp_(set|get)|zone_(set|get)|_set)|i(sodate_set|nterval_(create_from_date_string|format))|offset_get|d(iff|efault_timezone_(set|get)|ate_set)|parse(_from_format)?|format|add|get_last_errors|modify))?|localtime|g(et(timeofday|date)|m(strftime|date|mktime))|m(icrotime|ktime))\b</string> | |
| 3233 | 					<key>name</key> | |
| 3234 | 					<string>support.function.datetime.php</string> | |
| 3235 | 				</dict> | |
| 3236 | 				<dict> | |
| 3237 | 					<key>match</key> | |
| 3238 | 					<string>(?i)\bdba_(sync|handlers|nextkey|close|insert|op(timize|en)|delete|popen|exists|key_split|f(irstkey|etch)|list|replace)\b</string> | |
| 3239 | 					<key>name</key> | |
| 3240 | 					<string>support.function.dba.php</string> | |
| 3241 | 				</dict> | |
| 3242 | 				<dict> | |
| 3243 | 					<key>match</key> | |
| 3244 | 					<string>(?i)\bdbx_(sort|c(o(nnect|mpare)|lose)|e(scape_string|rror)|query|fetch_row)\b</string> | |
| 3245 | 					<key>name</key> | |
| 3246 | 					<string>support.function.dbx.php</string> | |
| 3247 | 				</dict> | |
| 3248 | 				<dict> | |
| 3249 | 					<key>match</key> | |
| 3250 | 					<string>(?i)\b(scandir|c(h(dir|root)|losedir)|opendir|dir|re(winddir|addir)|getcwd)\b</string> | |
| 3251 | 					<key>name</key> | |
| 3252 | 					<string>support.function.dir.php</string> | |
| 3253 | 				</dict> | |
| 3254 | 				<dict> | |
| 3255 | 					<key>match</key> | |
| 3256 | 					<string>(?i)\beio_(s(y(nc(_file_range|fs)?|mlink)|tat(vfs)?|e(ndfile|t_m(in_parallel|ax_(idle|p(oll_(time|reqs)|arallel)))|ek))|n(threads|op|pending|re(qs|ady))|c(h(own|mod)|ustom|lose|ancel)|truncate|init|open|dup2|u(nlink|time)|poll|event_loop|f(s(ync|tat(vfs)?)|ch(own|mod)|truncate|datasync|utime|allocate)|write|l(stat|ink)|r(e(name|a(d(dir|link|ahead)?|lpath))|mdir)|g(et_(event_stream|last_error)|rp(_(cancel|limit|add))?)|mk(nod|dir)|busy)\b</string> | |
| 3257 | 					<key>name</key> | |
| 3258 | 					<string>support.function.eio.php</string> | |
| 3259 | 				</dict> | |
| 3260 | 				<dict> | |
| 3261 | 					<key>match</key> | |
| 3262 | 					<string>(?i)\benchant_(dict_(s(tore_replacement|uggest)|check|is_in_session|describe|quick_check|add_to_(session|personal)|get_error)|broker_(set_(ordering|dict_path)|init|d(ict_exists|escribe)|free(_dict)?|list_dicts|request_(dict|pwl_dict)|get_(dict_path|error)))\b</string> | |
| 3263 | 					<key>name</key> | |
| 3264 | 					<string>support.function.enchant.php</string> | |
| 3265 | 				</dict> | |
| 3266 | 				<dict> | |
| 3267 | 					<key>match</key> | |
| 3268 | 					<string>(?i)\b(s(plit(i)?|ql_regcase)|ereg(i(_replace)?|_replace)?)\b</string> | |
| 3269 | 					<key>name</key> | |
| 3270 | 					<string>support.function.ereg.php</string> | |
| 3271 | 				</dict> | |
| 3272 | 				<dict> | |
| 3273 | 					<key>match</key> | |
| 3274 | 					<string>(?i)\b(set_e(rror_handler|xception_handler)|trigger_error|debug_(print_backtrace|backtrace)|user_error|error_(clear_last|log|reporting|get_last)|restore_e(rror_handler|xception_handler))\b</string> | |
| 3275 | 					<key>name</key> | |
| 3276 | 					<string>support.function.errorfunc.php</string> | |
| 3277 | 				</dict> | |
| 3278 | 				<dict> | |
| 3279 | 					<key>match</key> | |
| 3280 | 					<string>(?i)\b(s(hell_exec|ystem)|p(assthru|roc_(nice|close|terminate|open|get_status))|e(scapeshell(cmd|arg)|xec))\b</string> | |
| 3281 | 					<key>name</key> | |
| 3282 | 					<string>support.function.exec.php</string> | |
| 3283 | 				</dict> | |
| 3284 | 				<dict> | |
| 3285 | 					<key>match</key> | |
| 3286 | 					<string>(?i)\b(exif_(t(humbnail|agname)|imagetype|read_data)|read_exif_data)\b</string> | |
| 3287 | 					<key>name</key> | |
| 3288 | 					<string>support.function.exif.php</string> | |
| 3289 | 				</dict> | |
| 3290 | 				<dict> | |
| 3291 | 					<key>match</key> | |
| 3292 | 					<string>(?i)\bfann_(s(huffle_train_data|cale_(train(_data)?|input(_train_data)?|output(_train_data)?)|ubset_train_data|et_(s(caling_params|arprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift))|ca(scade_(num_candidate_groups|candidate_(stagnation_epochs|change_fraction|limit)|output_(stagnation_epochs|change_fraction)|weight_multiplier|activation_(steepnesses|functions)|m(in_(cand_epochs|out_epochs)|ax_(cand_epochs|out_epochs)))|llback)|train(ing_algorithm|_(stop_function|error_function))|input_scaling_params|output_scaling_params|error_log|quickprop_(decay|mu)|weight(_array)?|learning_(rate|momentum)|activation_(steepness(_(hidden|output|layer))?|function(_(hidden|output|layer))?)|rprop_(increase_factor|de(crease_factor|lta_(zero|m(in|ax))))|bit_fail_limit)|ave(_train)?)|num_(input_train_data|output_train_data)|c(opy|lear_scaling_params|ascadetrain_on_(data|file)|reate_(s(hortcut(_array)?|tandard(_array)?|parse(_array)?)|train(_from_callback)?|from_file))|t(est(_data)?|rain(_(on_(data|file)|epoch))?)|init_weights|d(uplicate_train_data|es(cale_(train|input|output)|troy(_train)?))|print_error|length_train_data|r(un|e(set_(MSE|err(str|no))|ad_train_from_file)|andomize_weights)|get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|n(um_(input|output|layers)|etwork_type)|MSE|c(onnection_(array|rate)|ascade_(num_candidate(s|_groups)|candidate_(stagnation_epochs|change_fraction|limit)|output_(stagnation_epochs|change_fraction)|weight_multiplier|activation_(steepnesses(_count)?|functions(_count)?)|m(in_(cand_epochs|out_epochs)|ax_(cand_epochs|out_epochs))))|t(otal_(neurons|connections)|rain(ing_algorithm|_(stop_function|error_function)))|err(str|no)|quickprop_(decay|mu)|l(earning_(rate|momentum)|ayer_array)|activation_(steepness|function)|rprop_(increase_factor|de(crease_factor|lta_(zero|m(in|ax))))|bi(t_fail(_limit)?|as_array))|merge_train_data)\b</string> | |
| 3293 | 					<key>name</key> | |
| 3294 | 					<string>support.function.fann.php</string> | |
| 3295 | 				</dict> | |
| 3296 | 				<dict> | |
| 3297 | 					<key>match</key> | |
| 3298 | 					<string>(?i)\b(s(ymlink|tat|et_file_buffer)|c(h(own|grp|mod)|opy|learstatcache)|t(ouch|empnam|mpfile)|is_(dir|uploaded_file|executable|file|writ(eable|able)|link|readable)|d(i(sk(_(total_space|free_space)|freespace)|rname)|elete)|u(nlink|mask)|p(close|open|a(thinfo|rse_ini_(string|file)))|f(s(canf|tat|eek)|nmatch|close|t(ell|runcate)|ile(size|ctime|type|inode|owner|_(put_contents|exists|get_contents)|perms|atime|group|mtime)?|open|p(ut(s|csv)|assthru)|eof|flush|write|lock|read|get(s(s)?|c(sv)?))|l(stat|ch(own|grp)|ink(info)?)|r(e(name|wind|a(d(file|link)|lpath(_cache_(size|get))?))|mdir)|glob|m(ove_uploaded_file|kdir)|basename)\b</string> | |
| 3299 | 					<key>name</key> | |
| 3300 | 					<string>support.function.file.php</string> | |
| 3301 | 				</dict> | |
| 3302 | 				<dict> | |
| 3303 | 					<key>match</key> | |
| 3304 | 					<string>(?i)\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\b</string> | |
| 3305 | 					<key>name</key> | |
| 3306 | 					<string>support.function.fileinfo.php</string> | |
| 3307 | 				</dict> | |
| 3308 | 				<dict> | |
| 3309 | 					<key>match</key> | |
| 3310 | 					<string>(?i)\bfilter_(has_var|i(nput(_array)?|d)|var(_array)?|list)\b</string> | |
| 3311 | 					<key>name</key> | |
| 3312 | 					<string>support.function.filter.php</string> | |
| 3313 | 				</dict> | |
| 3314 | 				<dict> | |
| 3315 | 					<key>match</key> | |
| 3316 | 					<string>(?i)\bfastcgi_finish_request\b</string> | |
| 3317 | 					<key>name</key> | |
| 3318 | 					<string>support.function.fpm.php</string> | |
| 3319 | 				</dict> | |
| 3320 | 				<dict> | |
| 3321 | 					<key>match</key> | |
| 3322 | 					<string>(?i)\b(c(all_user_func(_array)?|reate_function)|unregister_tick_function|f(orward_static_call(_array)?|unc(tion_exists|_(num_args|get_arg(s)?)))|register_(shutdown_function|tick_function)|get_defined_functions)\b</string> | |
| 3323 | 					<key>name</key> | |
| 3324 | 					<string>support.function.funchand.php</string> | |
| 3325 | 				</dict> | |
| 3326 | 				<dict> | |
| 3327 | 					<key>match</key> | |
| 3328 | 					<string>(?i)\b(ngettext|textdomain|d(ngettext|c(ngettext|gettext)|gettext)|gettext|bind(textdomain|_textdomain_codeset))\b</string> | |
| 3329 | 					<key>name</key> | |
| 3330 | 					<string>support.function.gettext.php</string> | |
| 3331 | 				</dict> | |
| 3332 | 				<dict> | |
| 3333 | 					<key>match</key> | |
| 3334 | 					<string>(?i)\bgmp_(s(can(1|0)|trval|ign|ub|etbit|qrt(rem)?)|hamdist|ne(g|xtprime)|c(om|lrbit|mp)|testbit|i(n(tval|it|vert)|mport)|or|div(_(q(r)?|r)|exact)?|jacobi|p(o(pcount|w(m)?)|erfect_square|rob_prime)|export|fact|legendre|a(nd|dd|bs)|r(oot(rem)?|andom(_(seed|range|bits))?)|gcd(ext)?|xor|m(od|ul))\b</string> | |
| 3335 | 					<key>name</key> | |
| 3336 | 					<string>support.function.gmp.php</string> | |
| 3337 | 				</dict> | |
| 3338 | 				<dict> | |
| 3339 | 					<key>match</key> | |
| 3340 | 					<string>(?i)\bhash(_(h(kdf|mac(_file)?)|copy|init|update(_(stream|file))?|pbkdf2|equals|fi(nal|le)|algos))?\b</string> | |
| 3341 | 					<key>name</key> | |
| 3342 | 					<string>support.function.hash.php</string> | |
| 3343 | 				</dict> | |
| 3344 | 				<dict> | |
| 3345 | 					<key>match</key> | |
| 3346 | 					<string>(?i)\b(iconv(_(s(tr(pos|len|rpos)|ubstr|et_encoding)|get_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\b</string> | |
| 3347 | 					<key>name</key> | |
| 3348 | 					<string>support.function.iconv.php</string> | |
| 3349 | 				</dict> | |
| 3350 | 				<dict> | |
| 3351 | 					<key>match</key> | |
| 3352 | 					<string>(?i)\biis_(s(t(op_serv(ice|er)|art_serv(ice|er))|et_(s(cript_map|erver_rights)|dir_security|app_settings))|add_server|remove_server|get_(s(cript_map|erv(ice_state|er_(rights|by_(comment|path))))|dir_security))\b</string> | |
| 3353 | 					<key>name</key> | |
| 3354 | 					<string>support.function.iisfunc.php</string> | |
| 3355 | 				</dict> | |
| 3356 | 				<dict> | |
| 3357 | 					<key>match</key> | |
| 3358 | 					<string>(?i)\b(i(ptc(parse|embed)|mage(s(y|cale|tring(up)?|et(style|clip|t(hickness|ile)|interpolation|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|r(op(auto)?|eate(truecolor|from(string|jpeg|png|w(ebp|bmp)|g(if|d(2(part)?)?)|x(pm|bm)|bmp))?))|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|2wbmp|openpolygon|d(estroy|ashedline)|jpeg|_type_to_(extension|mime_type)|p(s(slantfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alette(copy|totruecolor))|ellipse|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width)|lip)|w(ebp|bmp)|l(ine|oadfont|ayereffect)|a(ntialias|ffine(matrix(concat|get))?|lphablending|rc)|r(otate|e(solution|ctangle))|g(if|d(2)?|etclip|ammacorrect|rab(screen|window))|xbm|bmp))|jpeg2wbmp|png2wbmp|g(d_info|etimagesize(fromstring)?))\b</string> | |
| 3359 | 					<key>name</key> | |
| 3360 | 					<string>support.function.image.php</string> | |
| 3361 | 				</dict> | |
| 3362 | 				<dict> | |
| 3363 | 					<key>match</key> | |
| 3364 | 					<string>(?i)\b(s(ys_get_temp_dir|et_(time_limit|include_path|magic_quotes_runtime))|cli_(set_process_title|get_process_title)|ini_(set|alter|restore|get(_all)?)|zend_(thread_id|version|logo_guid)|dl|p(hp(credits|info|_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|version)|utenv)|extension_loaded|version_compare|assert(_options)?|restore_include_path|g(c_(collect_cycles|disable|enable(d)?|mem_caches)|et(opt|_(c(urrent_user|fg_var)|include(d_files|_path)|defined_constants|extension_funcs|loaded_extensions|re(sources|quired_files)|magic_quotes_(runtime|gpc))|env|lastmod|rusage|my(inode|uid|pid|gid)))|m(emory_get_(usage|peak_usage)|a(in|gic_quotes_runtime)))\b</string> | |
| 3365 | 					<key>name</key> | |
| 3366 | 					<string>support.function.info.php</string> | |
| 3367 | 				</dict> | |
| 3368 | 				<dict> | |
| 3369 | 					<key>match</key> | |
| 3370 | 					<string>(?i)\bibase_(se(t_event_handler|rv(ice_(detach|attach)|er_info))|n(um_(params|fields)|ame_result)|c(o(nnect|mmit(_ret)?)|lose)|trans|d(elete_user|rop_db|b_info)|p(connect|aram_info|repare)|e(rr(code|msg)|xecute)|query|f(ield_info|etch_(object|assoc|row)|ree_(event_handler|query|result))|wait_event|a(dd_user|ffected_rows)|r(ollback(_ret)?|estore)|gen_id|m(odify_user|aintain_db)|b(lob_(c(lose|ancel|reate)|i(nfo|mport)|open|echo|add|get)|ackup))\b</string> | |
| 3371 | 					<key>name</key> | |
| 3372 | 					<string>support.function.interbase.php</string> | |
| 3373 | 				</dict> | |
| 3374 | 				<dict> | |
| 3375 | 					<key>match</key> | |
| 3376 | 					<string>(?i)\b(n(ormalizer_(normalize|is_normalized)|umfmt_(set_(symbol|text_attribute|pattern|attribute)|create|parse(_currency)?|format(_currency)?|get_(symbol|text_attribute|pattern|error_(code|message)|locale|attribute)))|collator_(s(ort(_with_sort_keys)?|et_(strength|attribute))|c(ompare|reate)|asort|get_(s(trength|ort_key)|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|i(ntl(cal_get_error_(code|message)|tz_get_error_(code|message)|_(is_failure|error_name|get_error_(code|message)))|dn_to_(utf8|ascii))|datefmt_(set_(calendar|timezone(_id)?|pattern|lenient)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|c(ompose|anonicalize)|parse|filter_matches|lookup|accept_from_http|get_(script|d(isplay_(script|name|variant|language|region)|efault)|primary_language|keywords|all_variants|region))|resourcebundle_(c(ount|reate)|locales|get(_error_(code|message))?)|grapheme_(s(tr(str|i(str|pos)|pos|len|r(ipos|pos))|ubstr)|extract)|msgfmt_(set_pattern|create|parse(_message)?|format(_message)?|get_(pattern|error_(code|message)|locale)))\b</string> | |
| 3377 | 					<key>name</key> | |
| 3378 | 					<string>support.function.intl.php</string> | |
| 3379 | 				</dict> | |
| 3380 | 				<dict> | |
| 3381 | 					<key>match</key> | |
| 3382 | 					<string>(?i)\bjson_(decode|encode|last_error(_msg)?)\b</string> | |
| 3383 | 					<key>name</key> | |
| 3384 | 					<string>support.function.json.php</string> | |
| 3385 | 				</dict> | |
| 3386 | 				<dict> | |
| 3387 | 					<key>match</key> | |
| 3388 | 					<string>(?i)\bldap_(s(tart_tls|ort|e(t_(option|rebind_proc)|arch)|asl_bind)|next_(entry|attribute|reference)|c(o(n(nect|trol_paged_result(_response)?)|unt_entries|mpare)|lose)|t61_to_8859|d(n2ufn|elete)|8859_to_t61|unbind|parse_re(sult|ference)|e(scape|rr(no|2str|or)|xplode_dn)|f(irst_(entry|attribute|reference)|ree_result)|list|add|re(name|ad)|get_(option|dn|entries|values(_len)?|attributes)|mod(ify(_batch)?|_(del|add|replace))|bind)\b</string> | |
| 3389 | 					<key>name</key> | |
| 3390 | 					<string>support.function.ldap.php</string> | |
| 3391 | 				</dict> | |
| 3392 | 				<dict> | |
| 3393 | 					<key>match</key> | |
| 3394 | 					<string>(?i)\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\b</string> | |
| 3395 | 					<key>name</key> | |
| 3396 | 					<string>support.function.libxml.php</string> | |
| 3397 | 				</dict> | |
| 3398 | 				<dict> | |
| 3399 | 					<key>match</key> | |
| 3400 | 					<string>(?i)\b(ezmlm_hash|mail)\b</string> | |
| 3401 | 					<key>name</key> | |
| 3402 | 					<string>support.function.mail.php</string> | |
| 3403 | 				</dict> | |
| 3404 | 				<dict> | |
| 3405 | 					<key>match</key> | |
| 3406 | 					<string>(?i)\b(s(in(h)?|qrt|rand)|h(ypot|exdec)|c(os(h)?|eil)|tan(h)?|i(s_(nan|infinite|finite)|ntdiv)|octdec|de(c(hex|oct|bin)|g2rad)|p(i|ow)|exp(m1)?|f(loor|mod)|l(cg_value|og(1(p|0))?)|a(sin(h)?|cos(h)?|tan(h|2)?|bs)|r(ound|a(nd|d2deg))|getrandmax|m(t_(srand|rand|getrandmax)|in|ax)|b(indec|ase_convert))\b</string> | |
| 3407 | 					<key>name</key> | |
| 3408 | 					<string>support.function.math.php</string> | |
| 3409 | 				</dict> | |
| 3410 | 				<dict> | |
| 3411 | 					<key>match</key> | |
| 3412 | 					<string>(?i)\bmb_(s(tr(str|cut|to(upper|lower)|i(str|pos|mwidth)|pos|width|len|r(chr|i(chr|pos)|pos))|ubst(itute_character|r(_count)?)|plit|end_mail)|http_(input|output)|c(heck_encoding|onvert_(case|encoding|variables|kana))|internal_encoding|output_handler|de(code_(numericentity|mimeheader)|tect_(order|encoding))|p(arse_str|referred_mime_name)|e(ncod(ing_aliases|e_(numericentity|mimeheader))|reg(i(_replace)?|_(search(_(setpos|init|pos|regs|get(pos|regs)))?|replace(_callback)?|match))?)|l(ist_encodings|anguage)|regex_(set_options|encoding)|get_info)\b</string> | |
| 3413 | 					<key>name</key> | |
| 3414 | 					<string>support.function.mbstring.php</string> | |
| 3415 | 				</dict> | |
| 3416 | 				<dict> | |
| 3417 | 					<key>match</key> | |
| 3418 | 					<string>(?i)\bm(crypt_(c(fb|reate_iv|bc)|ofb|decrypt|e(nc(_(self_test|is_block_(algorithm(_mode)?|mode)|get_(supported_key_sizes|iv_size|key_size|algorithms_name|modes_name|block_size))|rypt)|cb)|list_(algorithms|modes)|ge(neric(_(init|deinit|end))?|t_(cipher_name|iv_size|key_size|block_size))|module_(self_test|close|is_block_(algorithm(_mode)?|mode)|open|get_(supported_key_sizes|algo_(key_size|block_size))))|decrypt_generic)\b</string> | |
| 3419 | 					<key>name</key> | |
| 3420 | 					<string>support.function.mcrypt.php</string> | |
| 3421 | 				</dict> | |
| 3422 | 				<dict> | |
| 3423 | 					<key>match</key> | |
| 3424 | 					<string>(?i)\bmemcache_debug\b</string> | |
| 3425 | 					<key>name</key> | |
| 3426 | 					<string>support.function.memcache.php</string> | |
| 3427 | 				</dict> | |
| 3428 | 				<dict> | |
| 3429 | 					<key>match</key> | |
| 3430 | 					<string>(?i)\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\b</string> | |
| 3431 | 					<key>name</key> | |
| 3432 | 					<string>support.function.mhash.php</string> | |
| 3433 | 				</dict> | |
| 3434 | 				<dict> | |
| 3435 | 					<key>match</key> | |
| 3436 | 					<string>(?i)\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\b</string> | |
| 3437 | 					<key>name</key> | |
| 3438 | 					<string>support.function.mongo.php</string> | |
| 3439 | 				</dict> | |
| 3440 | 				<dict> | |
| 3441 | 					<key>match</key> | |
| 3442 | 					<string>(?i)\bmysql_(s(tat|e(t_charset|lect_db))|num_(fields|rows)|c(onnect|l(ient_encoding|ose)|reate_db)|t(hread_id|ablename)|in(sert_id|fo)|d(ata_seek|rop_db|b_(name|query))|unbuffered_query|p(connect|ing)|e(scape_string|rr(no|or))|query|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|lengths|a(ssoc|rray)|row)|ree_result)|list_(tables|dbs|processes|fields)|affected_rows|re(sult|al_escape_string)|get_(server_info|host_info|client_info|proto_info))\b</string> | |
| 3443 | 					<key>name</key> | |
| 3444 | 					<string>support.function.mysql.php</string> | |
| 3445 | 				</dict> | |
| 3446 | 				<dict> | |
| 3447 | 					<key>match</key> | |
| 3448 | 					<string>(?i)\bmysqli_(s(sl_set|t(ore_result|at|mt_(s(tore_result|end_long_data)|next_result|close|init|data_seek|prepare|execute|f(etch|ree_result)|attr_(set|get)|res(ult_metadata|et)|get_(warnings|result)|more_results|bind_(param|result)))|e(nd_(query|long_data)|t_(charset|opt|local_infile_(handler|default))|lect_db)|lave_query|avepoint)|next_result|c(ha(nge_user|racter_set_name)|o(nnect|mmit)|l(ient_encoding|ose))|thread_safe|init|options|d(isable_r(pl_parse|eads_from_master)|ump_debug_info|ebug|ata_seek)|use_result|p(ing|oll|aram_count|repare)|e(scape_string|nable_r(pl_parse|eads_from_master)|xecute|mbedded_server_(start|end))|kill|query|f(ield_seek|etch(_(object|field(s|_direct)?|a(ssoc|ll|rray)|row))?|ree_result)|autocommit|r(ollback|pl_(p(arse_enabled|robe)|query_type)|e(port|fresh|lease_savepoint|a(p_async_query|l_(connect|escape_string|query))))|get_(c(harset|onnection_stats|lient_(stats|info|version)|ache_stats)|warnings|links_stats|metadata)|m(ore_results|ulti_query|aster_query)|b(ind_(param|result)|egin_transaction))\b</string> | |
| 3449 | 					<key>name</key> | |
| 3450 | 					<string>support.function.mysqli.php</string> | |
| 3451 | 				</dict> | |
| 3452 | 				<dict> | |
| 3453 | 					<key>match</key> | |
| 3454 | 					<string>(?i)\bmysqlnd_memcache_(set|get_config)\b</string> | |
| 3455 | 					<key>name</key> | |
| 3456 | 					<string>support.function.mysqlnd-memcache.php</string> | |
| 3457 | 				</dict> | |
| 3458 | 				<dict> | |
| 3459 | 					<key>match</key> | |
| 3460 | 					<string>(?i)\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\b</string> | |
| 3461 | 					<key>name</key> | |
| 3462 | 					<string>support.function.mysqlnd-ms.php</string> | |
| 3463 | 				</dict> | |
| 3464 | 				<dict> | |
| 3465 | 					<key>match</key> | |
| 3466 | 					<string>(?i)\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|c(ore_stats|ache_info)|query_trace_log|available_handlers))\b</string> | |
| 3467 | 					<key>name</key> | |
| 3468 | 					<string>support.function.mysqlnd-qc.php</string> | |
| 3469 | 				</dict> | |
| 3470 | 				<dict> | |
| 3471 | 					<key>match</key> | |
| 3472 | 					<string>(?i)\bmysqlnd_uh_(set_(statement_proxy|connection_proxy)|convert_to_mysqlnd)\b</string> | |
| 3473 | 					<key>name</key> | |
| 3474 | 					<string>support.function.mysqlnd-uh.php</string> | |
| 3475 | 				</dict> | |
| 3476 | 				<dict> | |
| 3477 | 					<key>match</key> | |
| 3478 | 					<string>(?i)\b(s(yslog|ocket_(set_(timeout|blocking)|get_status)|et(cookie|rawcookie))|h(ttp_response_code|eader(s_(sent|list)|_re(gister_callback|move))?)|c(heckdnsrr|loselog)|i(net_(ntop|pton)|p2long)|openlog|d(ns_(check_record|get_(record|mx))|efine_syslog_variables)|pfsockopen|fsockopen|long2ip|get(servby(name|port)|host(name|by(name(l)?|addr))|protobyn(umber|ame)|mxrr))\b</string> | |
| 3479 | 					<key>name</key> | |
| 3480 | 					<string>support.function.network.php</string> | |
| 3481 | 				</dict> | |
| 3482 | 				<dict> | |
| 3483 | 					<key>match</key> | |
| 3484 | 					<string>(?i)\bnsapi_(virtual|re(sponse_headers|quest_headers))\b</string> | |
| 3485 | 					<key>name</key> | |
| 3486 | 					<string>support.function.nsapi.php</string> | |
| 3487 | 				</dict> | |
| 3488 | 				<dict> | |
| 3489 | 					<key>match</key> | |
| 3490 | 					<string>(?i)\boci(s(tatementtype|e(tprefetch|rverversion)|avelob(file)?)|n(umcols|ew(c(ollection|ursor)|descriptor)|logon)|c(o(l(umn(s(cale|ize)|name|type(raw)?|isnull|precision)|l(size|trim|a(ssign(elem)?|ppend)|getelem|max))|mmit)|loselob|ancel)|internaldebug|definebyname|_(s(tatement_type|e(t_(client_i(nfo|dentifier)|prefetch|edition|action|module_name)|rver_version))|n(um_(fields|rows)|ew_(c(o(nnect|llection)|ursor)|descriptor))|c(o(nnect|mmit)|l(ient_version|ose)|ancel)|internal_debug|d(isable_taf_callback|efine_by_name)|p(connect|a(ssword_change|rse))|e(rror|xecute)|f(ield_(s(cale|ize)|name|type(_raw)?|is_null|precision)|etch(_(object|a(ssoc|ll|rray)|row))?|ree_(statement|descriptor))|lob_(copy|is_equal)|r(ollback|e(sult|gister_taf_callback))|get_implicit_resultset|bind_(array_by_name|by_name))|p(logon|arse)|e(rror|xecute)|f(etch(statement|into)?|ree(statement|c(ollection|ursor)|desc))|write(temporarylob|lobtofile)|lo(adlob|go(n|ff))|r(o(wcount|llback)|esult)|bindbyname)\b</string> | |
| 3491 | 					<key>name</key> | |
| 3492 | 					<string>support.function.oci8.php</string> | |
| 3493 | 				</dict> | |
| 3494 | 				<dict> | |
| 3495 | 					<key>match</key> | |
| 3496 | 					<string>(?i)\bopcache_(compile_file|i(s_script_cached|nvalidate)|reset|get_(status|configuration))\b</string> | |
| 3497 | 					<key>name</key> | |
| 3498 | 					<string>support.function.opcache.php</string> | |
| 3499 | 				</dict> | |
| 3500 | 				<dict> | |
| 3501 | 					<key>match</key> | |
| 3502 | 					<string>(?i)\bopenssl_(s(ign|pki_(new|export(_challenge)?|verify)|eal)|c(sr_(sign|new|export(_to_file)?|get_(subject|public_key))|ipher_iv_length)|open|d(h_compute_key|igest|ecrypt)|p(ublic_(decrypt|encrypt)|k(cs(12_(export(_to_file)?|read)|7_(sign|decrypt|encrypt|verify))|ey_(new|export(_to_file)?|free|get_(details|p(ublic|rivate))))|rivate_(decrypt|encrypt)|bkdf2)|e(ncrypt|rror_string)|verify|free_key|random_pseudo_bytes|get_(c(ipher_methods|ert_locations)|p(ublickey|rivatekey)|md_methods)|x509_(check(_private_key|purpose)|parse|export(_to_file)?|f(ingerprint|ree)|read))\b</string> | |
| 3503 | 					<key>name</key> | |
| 3504 | 					<string>support.function.openssl.php</string> | |
| 3505 | 				</dict> | |
| 3506 | 				<dict> | |
| 3507 | 					<key>match</key> | |
| 3508 | 					<string>(?i)\b(o(utput_(add_rewrite_var|reset_rewrite_vars)|b_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|g(zhandler|et_(status|c(ontents|lean)|flush|le(ngth|vel)))))|flush)\b</string> | |
| 3509 | 					<key>name</key> | |
| 3510 | 					<string>support.function.output.php</string> | |
| 3511 | 				</dict> | |
| 3512 | 				<dict> | |
| 3513 | 					<key>match</key> | |
| 3514 | 					<string>(?i)\bpassword_(hash|needs_rehash|verify|get_info)\b</string> | |
| 3515 | 					<key>name</key> | |
| 3516 | 					<string>support.function.password.php</string> | |
| 3517 | 				</dict> | |
| 3518 | 				<dict> | |
| 3519 | 					<key>match</key> | |
| 3520 | 					<string>(?i)\bpcntl_(s(trerror|ig(nal(_(dispatch|get_handler))?|timedwait|procmask|waitinfo)|etpriority)|e(rrno|xec)|fork|w(stopsig|termsig|if(s(topped|ignaled)|exited)|exitstatus|ait(pid)?)|alarm|get(_last_error|priority))\b</string> | |
| 3521 | 					<key>name</key> | |
| 3522 | 					<string>support.function.pcntl.php</string> | |
| 3523 | 				</dict> | |
| 3524 | 				<dict> | |
| 3525 | 					<key>match</key> | |
| 3526 | 					<string>(?i)\bpg_(s(ocket|e(nd_(prepare|execute|query(_params)?)|t_(client_encoding|error_verbosity)|lect))|host|num_(fields|rows)|c(o(n(sume_input|nect(ion_(status|reset|busy)|_poll)?|vert)|py_(to|from))|l(ient_encoding|ose)|ancel_query)|t(ty|ra(nsaction_status|ce))|insert|options|d(elete|bname)|u(n(trace|escape_bytea)|pdate)|p(connect|ing|ort|ut_line|arameter_status|repare)|e(scape_(string|identifier|literal|bytea)|nd_copy|xecute)|version|query(_params)?|f(ield_(size|n(um|ame)|t(ype(_oid)?|able)|is_null|prtlen)|etch_(object|a(ssoc|ll(_columns)?|rray)|r(ow|esult))|lush|ree_result)|l(o_(seek|c(lose|reate)|t(ell|runcate)|import|open|unlink|export|write|read(_all)?)|ast_(notice|oid|error))|affected_rows|result_(s(tatus|eek)|error(_field)?)|get_(notify|pid|result)|meta_data)\b</string> | |
| 3527 | 					<key>name</key> | |
| 3528 | 					<string>support.function.pgsql.php</string> | |
| 3529 | 				</dict> | |
| 3530 | 				<dict> | |
| 3531 | 					<key>match</key> | |
| 3532 | 					<string>(?i)\b(virtual|apache_(setenv|note|child_terminate|lookup_uri|re(s(ponse_headers|et_timeout)|quest_headers)|get(_(version|modules)|env))|getallheaders)\b</string> | |
| 3533 | 					<key>name</key> | |
| 3534 | 					<string>support.function.php_apache.php</string> | |
| 3535 | 				</dict> | |
| 3536 | 				<dict> | |
| 3537 | 					<key>match</key> | |
| 3538 | 					<string>(?i)\bdom_import_simplexml\b</string> | |
| 3539 | 					<key>name</key> | |
| 3540 | 					<string>support.function.php_dom.php</string> | |
| 3541 | 				</dict> | |
| 3542 | 				<dict> | |
| 3543 | 					<key>match</key> | |
| 3544 | 					<string>(?i)\bftp_(s(sl_connect|ystype|i(te|ze)|et_option)|n(list|b_(continue|put|f(put|get)|get))|c(h(dir|mod)|onnect|dup|lose)|delete|p(ut|wd|asv)|exec|quit|f(put|get)|login|alloc|r(ename|aw(list)?|mdir)|get(_option)?|m(dtm|kdir))\b</string> | |
| 3545 | 					<key>name</key> | |
| 3546 | 					<string>support.function.php_ftp.php</string> | |
| 3547 | 				</dict> | |
| 3548 | 				<dict> | |
| 3549 | 					<key>match</key> | |
| 3550 | 					<string>(?i)\bimap_(s(can(mailbox)?|tatus|ort|ubscribe|e(t(_quota|flag_full|acl)|arch)|avebody)|header(s|info)?|num_(recent|msg)|c(heck|l(ose|earflag_full)|reate(mailbox)?)|t(hread|imeout)|open|delete(mailbox)?|8bit|u(n(subscribe|delete)|tf(7_(decode|encode)|8)|id)|ping|e(rrors|xpunge)|qprint|fetch(structure|header|text|_overview|mime|body)|l(sub|ist(s(can|ubscribed)|mailbox)?|ast_error)|a(ppend|lerts)|r(e(name(mailbox)?|open)|fc822_(parse_(headers|adrlist)|write_address))|g(c|et(subscribed|_quota(root)?|acl|mailboxes))|m(sgno|ime_header_decode|ail(_(co(py|mpose)|move)|boxmsginfo)?)|b(inary|ody(struct)?|ase64))\b</string> | |
| 3551 | 					<key>name</key> | |
| 3552 | 					<string>support.function.php_imap.php</string> | |
| 3553 | 				</dict> | |
| 3554 | 				<dict> | |
| 3555 | 					<key>match</key> | |
| 3556 | 					<string>(?i)\bmssql_(select_db|n(um_(fields|rows)|ext_result)|c(onnect|lose)|init|data_seek|pconnect|execute|query|f(ield_(seek|name|type|length)|etch_(object|field|a(ssoc|rray)|row|batch)|ree_(statement|result))|r(ows_affected|esult)|g(uid_string|et_last_message)|min_(error_severity|message_severity)|bind)\b</string> | |
| 3557 | 					<key>name</key> | |
| 3558 | 					<string>support.function.php_mssql.php</string> | |
| 3559 | 				</dict> | |
| 3560 | 				<dict> | |
| 3561 | 					<key>match</key> | |
| 3562 | 					<string>(?i)\bodbc_(s(tatistics|pecialcolumns|etoption)|n(um_(fields|rows)|ext_result)|c(o(nnect|lumn(s|privileges)|mmit)|ursor|lose(_all)?)|table(s|privileges)|d(o|ata_source)|p(connect|r(imarykeys|ocedure(s|columns)|epare))|e(rror(msg)?|xec(ute)?)|f(ield_(scale|n(um|ame)|type|precision|len)|oreignkeys|etch_(into|object|array|row)|ree_result)|longreadlen|autocommit|r(ollback|esult(_all)?)|gettypeinfo|binmode)\b</string> | |
| 3563 | 					<key>name</key> | |
| 3564 | 					<string>support.function.php_odbc.php</string> | |
| 3565 | 				</dict> | |
| 3566 | 				<dict> | |
| 3567 | 					<key>match</key> | |
| 3568 | 					<string>(?i)\bpreg_(split|quote|filter|last_error|replace(_callback(_array)?)?|grep|match(_all)?)\b</string> | |
| 3569 | 					<key>name</key> | |
| 3570 | 					<string>support.function.php_pcre.php</string> | |
| 3571 | 				</dict> | |
| 3572 | 				<dict> | |
| 3573 | 					<key>match</key> | |
| 3574 | 					<string>(?i)\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\b</string> | |
| 3575 | 					<key>name</key> | |
| 3576 | 					<string>support.function.php_spl.php</string> | |
| 3577 | 				</dict> | |
| 3578 | 				<dict> | |
| 3579 | 					<key>match</key> | |
| 3580 | 					<string>(?i)\bzip_(close|open|entry_(name|c(ompress(ionmethod|edsize)|lose)|open|filesize|read)|read)\b</string> | |
| 3581 | 					<key>name</key> | |
| 3582 | 					<string>support.function.php_zip.php</string> | |
| 3583 | 				</dict> | |
| 3584 | 				<dict> | |
| 3585 | 					<key>match</key> | |
| 3586 | 					<string>(?i)\bposix_(s(trerror|et(sid|uid|pgid|e(uid|gid)|rlimit|gid))|ctermid|t(tyname|imes)|i(satty|nitgroups)|uname|errno|kill|access|get(sid|cwd|uid|_last_error|p(id|pid|w(nam|uid)|g(id|rp))|e(uid|gid)|login|rlimit|g(id|r(nam|oups|gid)))|mk(nod|fifo))\b</string> | |
| 3587 | 					<key>name</key> | |
| 3588 | 					<string>support.function.posix.php</string> | |
| 3589 | 				</dict> | |
| 3590 | 				<dict> | |
| 3591 | 					<key>match</key> | |
| 3592 | 					<string>(?i)\bset(threadtitle|proctitle)\b</string> | |
| 3593 | 					<key>name</key> | |
| 3594 | 					<string>support.function.proctitle.php</string> | |
| 3595 | 				</dict> | |
| 3596 | 				<dict> | |
| 3597 | 					<key>match</key> | |
| 3598 | 					<string>(?i)\bpspell_(s(tore_replacement|uggest|ave_wordlist)|new(_(config|personal))?|c(heck|onfig_(save_repl|create|ignore|d(ict_dir|ata_dir)|personal|r(untogether|epl)|mode)|lear_session)|add_to_(session|personal))\b</string> | |
| 3599 | 					<key>name</key> | |
| 3600 | 					<string>support.function.pspell.php</string> | |
| 3601 | 				</dict> | |
| 3602 | 				<dict> | |
| 3603 | 					<key>match</key> | |
| 3604 | 					<string>(?i)\breadline(_(c(ompletion_function|lear_history|allback_(handler_(install|remove)|read_char))|info|on_new_line|write_history|list_history|add_history|re(display|ad_history)))?\b</string> | |
| 3605 | 					<key>name</key> | |
| 3606 | 					<string>support.function.readline.php</string> | |
| 3607 | 				</dict> | |
| 3608 | 				<dict> | |
| 3609 | 					<key>match</key> | |
| 3610 | 					<string>(?i)\brecode(_(string|file))?\b</string> | |
| 3611 | 					<key>name</key> | |
| 3612 | 					<string>support.function.recode.php</string> | |
| 3613 | 				</dict> | |
| 3614 | 				<dict> | |
| 3615 | 					<key>match</key> | |
| 3616 | 					<string>(?i)\brrd(c_disconnect|_(create|tune|info|update|error|version|f(irst|etch)|last(update)?|restore|graph|xport))\b</string> | |
| 3617 | 					<key>name</key> | |
| 3618 | 					<string>support.function.rrd.php</string> | |
| 3619 | 				</dict> | |
| 3620 | 				<dict> | |
| 3621 | 					<key>match</key> | |
| 3622 | 					<string>(?i)\b(s(hm_(has_var|detach|put_var|attach|remove(_var)?|get_var)|em_(acquire|re(lease|move)|get))|ftok|msg_(s(tat_queue|e(nd|t_queue))|queue_exists|re(ceive|move_queue)|get_queue))\b</string> | |
| 3623 | 					<key>name</key> | |
| 3624 | 					<string>support.function.sem.php</string> | |
| 3625 | 				</dict> | |
| 3626 | 				<dict> | |
| 3627 | 					<key>match</key> | |
| 3628 | 					<string>(?i)\bsession_(s(ta(tus|rt)|et_(save_handler|cookie_params)|ave_path)|name|c(ommit|ache_(expire|limiter)|reate_id)|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|abort|re(set|g(ister(_shutdown)?|enerate_id))|g(c|et_cookie_params)|module_name)\b</string> | |
| 3629 | 					<key>name</key> | |
| 3630 | 					<string>support.function.session.php</string> | |
| 3631 | 				</dict> | |
| 3632 | 				<dict> | |
| 3633 | 					<key>match</key> | |
| 3634 | 					<string>(?i)\bshmop_(size|close|open|delete|write|read)\b</string> | |
| 3635 | 					<key>name</key> | |
| 3636 | 					<string>support.function.shmop.php</string> | |
| 3637 | 				</dict> | |
| 3638 | 				<dict> | |
| 3639 | 					<key>match</key> | |
| 3640 | 					<string>(?i)\bsimplexml_(import_dom|load_(string|file))\b</string> | |
| 3641 | 					<key>name</key> | |
| 3642 | 					<string>support.function.simplexml.php</string> | |
| 3643 | 				</dict> | |
| 3644 | 				<dict> | |
| 3645 | 					<key>match</key> | |
| 3646 | 					<string>(?i)\bsnmp(set|2_(set|walk|real_walk|get(next)?)|_(set_(oid_(numeric_print|output_format)|enum_print|valueretrieval|quick_print)|read_mib|get_(valueretrieval|quick_print))|3_(set|walk|real_walk|get(next)?)|walk(oid)?|realwalk|get(next)?)\b</string> | |
| 3647 | 					<key>name</key> | |
| 3648 | 					<string>support.function.snmp.php</string> | |
| 3649 | 				</dict> | |
| 3650 | 				<dict> | |
| 3651 | 					<key>match</key> | |
| 3652 | 					<string>(?i)\b(is_soap_fault|use_soap_error_handler)\b</string> | |
| 3653 | 					<key>name</key> | |
| 3654 | 					<string>support.function.soap.php</string> | |
| 3655 | 				</dict> | |
| 3656 | 				<dict> | |
| 3657 | 					<key>match</key> | |
| 3658 | 					<string>(?i)\bsocket_(s(hutdown|trerror|e(nd(to|msg)?|t(opt|_(nonblock|option|block))|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?|msg_space)|import_stream|write|l(isten|ast_error)|accept|re(cv(from|msg)?|ad)|get(sockname|opt|_option|peername)|bind)\b</string> | |
| 3659 | 					<key>name</key> | |
| 3660 | 					<string>support.function.sockets.php</string> | |
| 3661 | 				</dict> | |
| 3662 | 				<dict> | |
| 3663 | 					<key>match</key> | |
| 3664 | 					<string>(?i)\bsqlite_(s(ingle_query|eek)|has_(prev|more)|n(um_(fields|rows)|ext)|c(hanges|olumn|urrent|lose|reate_(function|aggregate))|open|u(nbuffered_query|df_(decode_binary|encode_binary))|p(open|rev)|e(scape_string|rror_string|xec)|valid|key|query|f(ield_name|etch_(s(tring|ingle)|column_types|object|a(ll|rray))|actory)|l(ib(encoding|version)|ast_(insert_rowid|error))|array_query|rewind|busy_timeout)\b</string> | |
| 3665 | 					<key>name</key> | |
| 3666 | 					<string>support.function.sqlite.php</string> | |
| 3667 | 				</dict> | |
| 3668 | 				<dict> | |
| 3669 | 					<key>match</key> | |
| 3670 | 					<string>(?i)\bsqlsrv_(se(nd_stream_data|rver_info)|has_rows|n(um_(fields|rows)|ext_result)|c(o(n(nect|figure)|mmit)|l(ient_info|ose)|ancel)|prepare|e(rrors|xecute)|query|f(ield_metadata|etch(_(object|array))?|ree_stmt)|ro(ws_affected|llback)|get_(config|field)|begin_transaction)\b</string> | |
| 3671 | 					<key>name</key> | |
| 3672 | 					<string>support.function.sqlsrv.php</string> | |
| 3673 | 				</dict> | |
| 3674 | 				<dict> | |
| 3675 | 					<key>match</key> | |
| 3676 | 					<string>(?i)\bstats_(s(ta(ndard_deviation|t_(noncentral_t|correlation|in(nerproduct|dependent_t)|p(owersum|ercentile|aired_t)|gennch|binomial_coef))|kew)|harmonic_mean|c(ovariance|df_(n(oncentral_(chisquare|f)|egative_binomial)|c(hisquare|auchy)|t|uniform|poisson|exponential|f|weibull|l(ogistic|aplace)|gamma|b(inomial|eta)))|den(s_(n(ormal|egative_binomial)|c(hisquare|auchy)|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|weibull|l(ogistic|aplace)|gamma|beta)|_uniform)|variance|kurtosis|absolute_deviation|rand_(setall|phrase_to_seeds|ranf|ge(n_(no(ncen(tral_(t|f)|ral_chisquare)|rmal)|chisquare|t|i(nt|uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)|t_seeds)))\b</string> | |
| 3677 | 					<key>name</key> | |
| 3678 | 					<string>support.function.stats.php</string> | |
| 3679 | 				</dict> | |
| 3680 | 				<dict> | |
| 3681 | 					<key>match</key> | |
| 3682 | 					<string>(?i)\bs(tream_(s(ocket_(s(hutdown|e(ndto|rver))|client|pair|enable_crypto|accept|recvfrom|get_name)|upports_lock|e(t_(chunk_size|timeout|write_buffer|read_buffer|blocking)|lect))|notification_callback|co(ntext_(set_(option|default|params)|create|get_(options|default|params))|py_to_stream)|is_local|encoding|filter_(prepend|append|re(gister|move))|wrapper_(unregister|re(store|gister))|re(solve_include_path|gister_wrapper)|get_(contents|transports|filters|wrappers|line|meta_data)|bucket_(new|prepend|append|make_writeable))|et_socket_blocking)\b</string> | |
| 3683 | 					<key>name</key> | |
| 3684 | 					<string>support.function.streamsfuncs.php</string> | |
| 3685 | 				</dict> | |
| 3686 | 				<dict> | |
| 3687 | 					<key>match</key> | |
| 3688 | 					<string>(?i)\b(s(scanf|ha1(_file)?|tr(s(tr|pn)|n(c(asecmp|mp)|atc(asecmp|mp))|c(spn|hr|oll|asecmp|mp)|t(o(upper|k|lower)|r)|i(str|p(slashes|cslashes|os|_tags))|_(s(huffle|plit)|ireplace|pad|word_count|r(ot13|ep(eat|lace))|getcsv)|p(os|brk)|len|r(chr|ipos|pos|ev))|imilar_text|oundex|ubstr(_(co(unt|mpare)|replace))?|printf|etlocale)|h(tml(specialchars(_decode)?|_entity_decode|entities)|e(x2bin|brev(c)?))|n(umber_format|l(2br|_langinfo))|c(h(op|unk_split|r)|o(nvert_(cyr_string|uu(decode|encode))|unt_chars)|r(ypt|c32))|trim|implode|ord|uc(first|words)|join|p(arse_str|rint(f)?)|e(cho|xplode)|v(sprintf|printf|fprintf)|quote(d_printable_(decode|encode)|meta)|fprintf|wordwrap|l(cfirst|trim|ocaleconv|evenshtein)|add(slashes|cslashes)|rtrim|get_html_translation_table|m(oney_format|d5(_file)?|etaphone)|bin2hex)\b</string> | |
| 3689 | 					<key>name</key> | |
| 3690 | 					<string>support.function.string.php</string> | |
| 3691 | 				</dict> | |
| 3692 | 				<dict> | |
| 3693 | 					<key>match</key> | |
| 3694 | 					<string>(?i)\bsybase_(se(t_message_handler|lect_db)|num_(fields|rows)|c(onnect|lose)|d(eadlock_retry_count|ata_seek)|unbuffered_query|pconnect|query|f(ield_seek|etch_(object|field|a(ssoc|rray)|row)|ree_result)|affected_rows|result|get_last_message|min_(server_severity|client_severity|error_severity|message_severity))\b</string> | |
| 3695 | 					<key>name</key> | |
| 3696 | 					<string>support.function.sybase.php</string> | |
| 3697 | 				</dict> | |
| 3698 | 				<dict> | |
| 3699 | 					<key>match</key> | |
| 3700 | 					<string>(?i)\b(taint|is_tainted|untaint)\b</string> | |
| 3701 | 					<key>name</key> | |
| 3702 | 					<string>support.function.taint.php</string> | |
| 3703 | 				</dict> | |
| 3704 | 				<dict> | |
| 3705 | 					<key>match</key> | |
| 3706 | 					<string>(?i)\b(tidy_(s(et(opt|_encoding)|ave_config)|c(onfig_count|lean_repair)|is_x(html|ml)|diagnose|parse_(string|file)|error_count|warning_count|load_config|access_count|re(set_config|pair_(string|file))|get(opt|_(status|h(tml(_ver)?|ead)|config|o(utput|pt_doc)|r(oot|elease)|body)))|ob_tidyhandler)\b</string> | |
| 3707 | 					<key>name</key> | |
| 3708 | 					<string>support.function.tidy.php</string> | |
| 3709 | 				</dict> | |
| 3710 | 				<dict> | |
| 3711 | 					<key>match</key> | |
| 3712 | 					<string>(?i)\btoken_(name|get_all)\b</string> | |
| 3713 | 					<key>name</key> | |
| 3714 | 					<string>support.function.tokenizer.php</string> | |
| 3715 | 				</dict> | |
| 3716 | 				<dict> | |
| 3717 | 					<key>match</key> | |
| 3718 | 					<string>(?i)\btrader_(s(t(och(f|rsi)?|ddev)|in(h)?|u(m|b)|et_(compat|unstable_period)|qrt|ar(ext)?|ma)|ht_(sine|trend(line|mode)|dcp(hase|eriod)|phasor)|natr|c(ci|o(s(h)?|rrel)|dl(s(ho(otingstar|rtline)|t(icksandwich|alledpattern)|pinningtop|eparatinglines)|h(i(kkake(mod)?|ghwave)|omingpigeon|a(ngingman|rami(cross)?|mmer))|c(o(ncealbabyswall|unterattack)|losingmarubozu)|t(hrusting|a(sukigap|kuri)|ristar)|i(n(neck|vertedhammer)|dentical3crows)|2crows|onneck|d(oji(star)?|arkcloudcover|ragonflydoji)|u(nique3river|psidegap2crows)|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|piercing|e(ngulfing|vening(star|dojistar))|kicking(bylength)?|l(ongl(ine|eggeddoji)|adderbottom)|a(dvanceblock|bandonedbaby)|ri(sefall3methods|ckshawman)|g(apsidesidewhite|ravestonedoji)|xsidegap3methods|m(orning(star|dojistar)|a(t(hold|chinglow)|rubozu))|b(elthold|reakaway))|eil|mo)|t(sf|ypprice|3|ema|an(h)?|r(i(x|ma)|ange))|obv|d(iv|ema|x)|ultosc|p(po|lus_d(i|m))|e(rrno|xp|ma)|var|kama|floor|w(clprice|illr|ma)|l(n|inearreg(_(slope|intercept|angle))?|og10)|a(sin|cos|t(an|r)|d(osc|d|x(r)?)?|po|vgprice|roon(osc)?)|r(si|oc(p|r(100)?)?)|get_(compat|unstable_period)|m(i(n(index|us_d(i|m)|max(index)?)?|dp(oint|rice))|om|ult|edprice|fi|a(cd(ext|fix)?|vp|x(index)?|ma)?)|b(op|eta|bands))\b</string> | |
| 3719 | 					<key>name</key> | |
| 3720 | 					<string>support.function.trader.php</string> | |
| 3721 | 				</dict> | |
| 3722 | 				<dict> | |
| 3723 | 					<key>match</key> | |
| 3724 | 					<string>(?i)\bUI\\(Draw\\Text\\Font\\fontFamilies|quit|run)\b</string> | |
| 3725 | 					<key>name</key> | |
| 3726 | 					<string>support.function.ui.php</string> | |
| 3727 | 				</dict> | |
| 3728 | 				<dict> | |
| 3729 | 					<key>match</key> | |
| 3730 | 					<string>(?i)\buopz_(co(py|mpose)|implement|overload|delete|undefine|extend|f(unction|lags)|re(store|name|define)|backup)\b</string> | |
| 3731 | 					<key>name</key> | |
| 3732 | 					<string>support.function.uopz.php</string> | |
| 3733 | 				</dict> | |
| 3734 | 				<dict> | |
| 3735 | 					<key>match</key> | |
| 3736 | 					<string>(?i)\b(http_build_query|url(decode|encode)|parse_url|rawurl(decode|encode)|get_(headers|meta_tags)|base64_(decode|encode))\b</string> | |
| 3737 | 					<key>name</key> | |
| 3738 | 					<string>support.function.url.php</string> | |
| 3739 | 				</dict> | |
| 3740 | 				<dict> | |
| 3741 | 					<key>match</key> | |
| 3742 | 					<string>(?i)\b(s(trval|e(ttype|rialize))|i(s(set|_(s(calar|tring)|nu(ll|meric)|callable|i(nt(eger)?|terable)|object|double|float|long|array|re(source|al)|bool))|ntval|mport_request_variables)|d(oubleval|ebug_zval_dump)|unse(t|rialize)|print_r|empty|var_(dump|export)|floatval|get(type|_(defined_vars|resource_type))|boolval)\b</string> | |
| 3743 | 					<key>name</key> | |
| 3744 | 					<string>support.function.var.php</string> | |
| 3745 | 				</dict> | |
| 3746 | 				<dict> | |
| 3747 | 					<key>match</key> | |
| 3748 | 					<string>(?i)\bwddx_(serialize_va(lue|rs)|deserialize|packet_(start|end)|add_vars)\b</string> | |
| 3749 | 					<key>name</key> | |
| 3750 | 					<string>support.function.wddx.php</string> | |
| 3751 | 				</dict> | |
| 3752 | 				<dict> | |
| 3753 | 					<key>match</key> | |
| 3754 | 					<string>(?i)\bxhprof_(sample_(disable|enable)|disable|enable)\b</string> | |
| 3755 | 					<key>name</key> | |
| 3756 | 					<string>support.function.xhprof.php</string> | |
| 3757 | 				</dict> | |
| 3758 | 				<dict> | |
| 3759 | 					<key>match</key> | |
| 3760 | 					<string>(?i)\b(utf8_(decode|encode)|xml_(set_(start_namespace_decl_handler|notation_decl_handler|character_data_handler|object|default_handler|unparsed_entity_decl_handler|processing_instruction_handler|e(nd_namespace_decl_handler|lement_handler|xternal_entity_ref_handler))|parse(_into_struct|r_(set_option|create(_ns)?|free|get_option))?|error_string|get_(current_(column_number|line_number|byte_index)|error_code)))\b</string> | |
| 3761 | 					<key>name</key> | |
| 3762 | 					<string>support.function.xml.php</string> | |
| 3763 | 				</dict> | |
| 3764 | 				<dict> | |
| 3765 | 					<key>match</key> | |
| 3766 | 					<string>(?i)\bxmlrpc_(se(t_type|rver_(c(all_method|reate)|destroy|add_introspection_data|register_(introspection_callback|method)))|is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|get_type)\b</string> | |
| 3767 | 					<key>name</key> | |
| 3768 | 					<string>support.function.xmlrpc.php</string> | |
| 3769 | 				</dict> | |
| 3770 | 				<dict> | |
| 3771 | 					<key>match</key> | |
| 3772 | 					<string>(?i)\bxmlwriter_(s(tart_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element(_ns)?|attribute(_ns)?)|et_indent(_string)?)|text|o(utput_memory|pen_(uri|memory))|end_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element|attribute)|f(ull_end_element|lush)|write_(c(omment|data)|dtd(_(e(ntity|lement)|attlist))?|pi|element(_ns)?|attribute(_ns)?|raw))\b</string> | |
| 3773 | 					<key>name</key> | |
| 3774 | 					<string>support.function.xmlwriter.php</string> | |
| 3775 | 				</dict> | |
| 3776 | 				<dict> | |
| 3777 | 					<key>match</key> | |
| 3778 | 					<string>(?i)\b(inflate_(init|add)|zlib_(decode|encode|get_coding_type)|deflate_(init|add)|readgzfile|gz(seek|c(ompress|lose)|tell|inflate|open|de(code|flate)|uncompress|p(uts|assthru)|e(ncode|of)|file|write|re(wind|ad)|get(s(s)?|c)))\b</string> | |
| 3779 | 					<key>name</key> | |
| 3780 | 					<string>support.function.zlib.php</string> | |
| 3781 | 				</dict> | |
| 3782 | 				<dict> | |
| 3783 | 					<key>match</key> | |
| 3784 | 					<string>(?i)\bis_int(eger)?\b</string> | |
| 3785 | 					<key>name</key> | |
| 3786 | 					<string>support.function.alias.php</string> | |
| 3787 | 				</dict> | |
| 3788 | 			</array> | |
| 3789 | 		</dict> | |
| 3790 | 		<key>user-function-call</key> | |
| 3791 | 		<dict> | |
| 3792 | 			<key>begin</key> | |
| 3793 | 			<string>(?i)(?=[a-z_0-9\\]*[a-z_][a-z0-9_]*\s*\()</string> | |
| 3794 | 			<key>end</key> | |
| 3795 | 			<string>(?i)[a-z_][a-z_0-9]*(?=\s*\()</string> | |
| 3796 | 			<key>name</key> | |
| 3797 | 			<string>meta.function-call.php</string> | |
| 3798 | 			<key>patterns</key> | |
| 3799 | 			<array> | |
| 3800 | 				<dict> | |
| 3801 | 					<key>include</key> | |
| 3802 | 					<string>#namespace</string> | |
| 3803 | 				</dict> | |
| 3804 | 			</array> | |
| 3805 | 		</dict> | |
| 3806 | 		<key>var_basic</key> | |
| 3807 | 		<dict> | |
| 3808 | 			<key>patterns</key> | |
| 3809 | 			<array> | |
| 3810 | 				<dict> | |
| 3811 | 					<key>captures</key> | |
| 3812 | 					<dict> | |
| 3813 | 						<key>1</key> | |
| 3814 | 						<dict> | |
| 3815 | 							<key>name</key> | |
| 3816 | 							<string>punctuation.definition.variable.php</string> | |
| 3817 | 						</dict> | |
| 3818 | 					</dict> | |
| 3819 | 					<key>match</key> | |
| 3820 | 					<string>(?x) | |
| 3821 | 			 (\$+)[a-zA-Z_\x{7f}-\x{ff}] | |
| 3822 | 			 [a-zA-Z0-9_\x{7f}-\x{ff}]*?\b</string> | |
| 3823 | 					<key>name</key> | |
| 3824 | 					<string>variable.other.php</string> | |
| 3825 | 				</dict> | |
| 3826 | 			</array> | |
| 3827 | 		</dict> | |
| 3828 | 		<key>var_global</key> | |
| 3829 | 		<dict> | |
| 3830 | 			<key>captures</key> | |
| 3831 | 			<dict> | |
| 3832 | 				<key>1</key> | |
| 3833 | 				<dict> | |
| 3834 | 					<key>name</key> | |
| 3835 | 					<string>punctuation.definition.variable.php</string> | |
| 3836 | 				</dict> | |
| 3837 | 			</dict> | |
| 3838 | 			<key>match</key> | |
| 3839 | 			<string>(\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\b</string> | |
| 3840 | 			<key>name</key> | |
| 3841 | 			<string>variable.other.global.php</string> | |
| 3842 | 		</dict> | |
| 3843 | 		<key>var_global_safer</key> | |
| 3844 | 		<dict> | |
| 3845 | 			<key>captures</key> | |
| 3846 | 			<dict> | |
| 3847 | 				<key>1</key> | |
| 3848 | 				<dict> | |
| 3849 | 					<key>name</key> | |
| 3850 | 					<string>punctuation.definition.variable.php</string> | |
| 3851 | 				</dict> | |
| 3852 | 			</dict> | |
| 3853 | 			<key>match</key> | |
| 3854 | 			<string>(\$)((GLOBALS|_(ENV|SERVER|SESSION)))</string> | |
| 3855 | 			<key>name</key> | |
| 3856 | 			<string>variable.other.global.safer.php</string> | |
| 3857 | 		</dict> | |
| 3858 | 		<key>variable-name</key> | |
| 3859 | 		<dict> | |
| 3860 | 			<key>patterns</key> | |
| 3861 | 			<array> | |
| 3862 | 				<dict> | |
| 3863 | 					<key>include</key> | |
| 3864 | 					<string>#var_global</string> | |
| 3865 | 				</dict> | |
| 3866 | 				<dict> | |
| 3867 | 					<key>include</key> | |
| 3868 | 					<string>#var_global_safer</string> | |
| 3869 | 				</dict> | |
| 3870 | 				<dict> | |
| 3871 | 					<key>captures</key> | |
| 3872 | 					<dict> | |
| 3873 | 						<key>1</key> | |
| 3874 | 						<dict> | |
| 3875 | 							<key>name</key> | |
| 3876 | 							<string>variable.other.php</string> | |
| 3877 | 						</dict> | |
| 3878 | 						<key>10</key> | |
| 3879 | 						<dict> | |
| 3880 | 							<key>name</key> | |
| 3881 | 							<string>string.unquoted.index.php</string> | |
| 3882 | 						</dict> | |
| 3883 | 						<key>11</key> | |
| 3884 | 						<dict> | |
| 3885 | 							<key>name</key> | |
| 3886 | 							<string>punctuation.section.array.end.php</string> | |
| 3887 | 						</dict> | |
| 3888 | 						<key>2</key> | |
| 3889 | 						<dict> | |
| 3890 | 							<key>name</key> | |
| 3891 | 							<string>punctuation.definition.variable.php</string> | |
| 3892 | 						</dict> | |
| 3893 | 						<key>4</key> | |
| 3894 | 						<dict> | |
| 3895 | 							<key>name</key> | |
| 3896 | 							<string>keyword.operator.class.php</string> | |
| 3897 | 						</dict> | |
| 3898 | 						<key>5</key> | |
| 3899 | 						<dict> | |
| 3900 | 							<key>name</key> | |
| 3901 | 							<string>variable.other.property.php</string> | |
| 3902 | 						</dict> | |
| 3903 | 						<key>6</key> | |
| 3904 | 						<dict> | |
| 3905 | 							<key>name</key> | |
| 3906 | 							<string>punctuation.section.array.begin.php</string> | |
| 3907 | 						</dict> | |
| 3908 | 						<key>7</key> | |
| 3909 | 						<dict> | |
| 3910 | 							<key>name</key> | |
| 3911 | 							<string>constant.numeric.index.php</string> | |
| 3912 | 						</dict> | |
| 3913 | 						<key>8</key> | |
| 3914 | 						<dict> | |
| 3915 | 							<key>name</key> | |
| 3916 | 							<string>variable.other.index.php</string> | |
| 3917 | 						</dict> | |
| 3918 | 						<key>9</key> | |
| 3919 | 						<dict> | |
| 3920 | 							<key>name</key> | |
| 3921 | 							<string>punctuation.definition.variable.php</string> | |
| 3922 | 						</dict> | |
| 3923 | 					</dict> | |
| 3924 | 					<key>comment</key> | |
| 3925 | 					<string>Simple syntax: $foo, $foo[0], $foo[$bar], $foo-&gt;bar</string> | |
| 3926 | 					<key>match</key> | |
| 3927 | 					<string>(?x) | |
| 3928 | 						((\$)(?&lt;name&gt;[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)) | |
| 3929 | 						(?: | |
| 3930 | 							(-&gt;)(\g&lt;name&gt;) | |
| 3931 | 							| | |
| 3932 | 							(\[) | |
| 3933 | 								(?:(\d+)|((\$)\g&lt;name&gt;)|(\w+)) | |
| 3934 | 							(\]) | |
| 3935 | 						)? | |
| 3936 | 						</string> | |
| 3937 | 				</dict> | |
| 3938 | 				<dict> | |
| 3939 | 					<key>captures</key> | |
| 3940 | 					<dict> | |
| 3941 | 						<key>1</key> | |
| 3942 | 						<dict> | |
| 3943 | 							<key>name</key> | |
| 3944 | 							<string>variable.other.php</string> | |
| 3945 | 						</dict> | |
| 3946 | 						<key>2</key> | |
| 3947 | 						<dict> | |
| 3948 | 							<key>name</key> | |
| 3949 | 							<string>punctuation.definition.variable.php</string> | |
| 3950 | 						</dict> | |
| 3951 | 						<key>4</key> | |
| 3952 | 						<dict> | |
| 3953 | 							<key>name</key> | |
| 3954 | 							<string>punctuation.definition.variable.php</string> | |
| 3955 | 						</dict> | |
| 3956 | 					</dict> | |
| 3957 | 					<key>comment</key> | |
| 3958 | 					<string>Simple syntax with braces: "foo${bar}baz"</string> | |
| 3959 | 					<key>match</key> | |
| 3960 | 					<string>(?x) | |
| 3961 | 						((\$\{)(?&lt;name&gt;[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\})) | |
| 3962 | 						</string> | |
| 3963 | 				</dict> | |
| 3964 | 			</array> | |
| 3965 | 		</dict> | |
| 3966 | 		<key>variables</key> | |
| 3967 | 		<dict> | |
| 3968 | 			<key>patterns</key> | |
| 3969 | 			<array> | |
| 3970 | 				<dict> | |
| 3971 | 					<key>include</key> | |
| 3972 | 					<string>#var_global</string> | |
| 3973 | 				</dict> | |
| 3974 | 				<dict> | |
| 3975 | 					<key>include</key> | |
| 3976 | 					<string>#var_global_safer</string> | |
| 3977 | 				</dict> | |
| 3978 | 				<dict> | |
| 3979 | 					<key>include</key> | |
| 3980 | 					<string>#var_basic</string> | |
| 3981 | 				</dict> | |
| 3982 | 				<dict> | |
| 3983 | 					<key>begin</key> | |
| 3984 | 					<string>(\$\{)(?=.*?\})</string> | |
| 3985 | 					<key>beginCaptures</key> | |
| 3986 | 					<dict> | |
| 3987 | 						<key>1</key> | |
| 3988 | 						<dict> | |
| 3989 | 							<key>name</key> | |
| 3990 | 							<string>punctuation.definition.variable.php</string> | |
| 3991 | 						</dict> | |
| 3992 | 					</dict> | |
| 3993 | 					<key>end</key> | |
| 3994 | 					<string>(\})</string> | |
| 3995 | 					<key>endCaptures</key> | |
| 3996 | 					<dict> | |
| 3997 | 						<key>1</key> | |
| 3998 | 						<dict> | |
| 3999 | 							<key>name</key> | |
| 4000 | 							<string>punctuation.definition.variable.php</string> | |
| 4001 | 						</dict> | |
| 4002 | 					</dict> | |
| 4003 | 					<key>patterns</key> | |
| 4004 | 					<array> | |
| 4005 | 						<dict> | |
| 4006 | 							<key>include</key> | |
| 4007 | 							<string>#language</string> | |
| 4008 | 						</dict> | |
| 4009 | 					</array> | |
| 4010 | 				</dict> | |
| 4011 | 			</array> | |
| 4012 | 		</dict> | |
| 4013 | 	</dict> | |
| 4014 | 	<key>scopeName</key> | |
| 4015 | 	<string>text.html.php</string> | |
| 4016 | 	<key>uuid</key> | |
| 4017 | 	<string>22986475-8CA5-11D9-AEDD-000D93C8BE28</string> | |
| 4018 | </dict> | |
| 4019 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/powershell.plist created+1614| ... | ... | @@ -0,0 +1,1614 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>ps1</string> | |
| 8 | 		<string>psm1</string> | |
| 9 | 		<string>psd1</string> | |
| 10 | 	</array> | |
| 11 | 	<key>name</key> | |
| 12 | 	<string>PowerShell</string> | |
| 13 | 	<key>patterns</key> | |
| 14 | 	<array> | |
| 15 | 		<dict> | |
| 16 | 			<key>begin</key> | |
| 17 | 			<string>&lt;#</string> | |
| 18 | 			<key>beginCaptures</key> | |
| 19 | 			<dict> | |
| 20 | 				<key>0</key> | |
| 21 | 				<dict> | |
| 22 | 					<key>name</key> | |
| 23 | 					<string>punctuation.definition.comment.block.begin.powershell</string> | |
| 24 | 				</dict> | |
| 25 | 			</dict> | |
| 26 | 			<key>end</key> | |
| 27 | 			<string>#&gt;</string> | |
| 28 | 			<key>endCaptures</key> | |
| 29 | 			<dict> | |
| 30 | 				<key>0</key> | |
| 31 | 				<dict> | |
| 32 | 					<key>name</key> | |
| 33 | 					<string>punctuation.definition.comment.block.end.powershell</string> | |
| 34 | 				</dict> | |
| 35 | 			</dict> | |
| 36 | 			<key>name</key> | |
| 37 | 			<string>comment.block.powershell</string> | |
| 38 | 			<key>patterns</key> | |
| 39 | 			<array> | |
| 40 | 				<dict> | |
| 41 | 					<key>include</key> | |
| 42 | 					<string>#commentEmbeddedDocs</string> | |
| 43 | 				</dict> | |
| 44 | 			</array> | |
| 45 | 		</dict> | |
| 46 | 		<dict> | |
| 47 | 			<key>match</key> | |
| 48 | 			<string>[2-6]&gt;&amp;1|&gt;&gt;|&gt;|&lt;&lt;|&lt;|&gt;|&gt;\||[1-6]&gt;|[1-6]&gt;&gt;</string> | |
| 49 | 			<key>name</key> | |
| 50 | 			<string>keyword.operator.redirection.powershell</string> | |
| 51 | 		</dict> | |
| 52 | 		<dict> | |
| 53 | 			<key>include</key> | |
| 54 | 			<string>#commands</string> | |
| 55 | 		</dict> | |
| 56 | 		<dict> | |
| 57 | 			<key>include</key> | |
| 58 | 			<string>#commentLine</string> | |
| 59 | 		</dict> | |
| 60 | 		<dict> | |
| 61 | 			<key>include</key> | |
| 62 | 			<string>#variable</string> | |
| 63 | 		</dict> | |
| 64 | 		<dict> | |
| 65 | 			<key>include</key> | |
| 66 | 			<string>#subexpression</string> | |
| 67 | 		</dict> | |
| 68 | 		<dict> | |
| 69 | 			<key>include</key> | |
| 70 | 			<string>#function</string> | |
| 71 | 		</dict> | |
| 72 | 		<dict> | |
| 73 | 			<key>include</key> | |
| 74 | 			<string>#attribute</string> | |
| 75 | 		</dict> | |
| 76 | 		<dict> | |
| 77 | 			<key>include</key> | |
| 78 | 			<string>#UsingDirective</string> | |
| 79 | 		</dict> | |
| 80 | 		<dict> | |
| 81 | 			<key>include</key> | |
| 82 | 			<string>#type</string> | |
| 83 | 		</dict> | |
| 84 | 		<dict> | |
| 85 | 			<key>include</key> | |
| 86 | 			<string>#hashtable</string> | |
| 87 | 		</dict> | |
| 88 | 		<dict> | |
| 89 | 			<key>include</key> | |
| 90 | 			<string>#doubleQuotedString</string> | |
| 91 | 		</dict> | |
| 92 | 		<dict> | |
| 93 | 			<key>include</key> | |
| 94 | 			<string>#scriptblock</string> | |
| 95 | 		</dict> | |
| 96 | 		<dict> | |
| 97 | 			<key>comment</key> | |
| 98 | 			<string>Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)</string> | |
| 99 | 			<key>include</key> | |
| 100 | 			<string>#doubleQuotedStringEscapes</string> | |
| 101 | 		</dict> | |
| 102 | 		<dict> | |
| 103 | 			<key>begin</key> | |
| 104 | 			<string>['\x{2018}-\x{201B}]</string> | |
| 105 | 			<key>beginCaptures</key> | |
| 106 | 			<dict> | |
| 107 | 				<key>0</key> | |
| 108 | 				<dict> | |
| 109 | 					<key>name</key> | |
| 110 | 					<string>punctuation.definition.string.begin.powershell</string> | |
| 111 | 				</dict> | |
| 112 | 			</dict> | |
| 113 | 			<key>end</key> | |
| 114 | 			<string>['\x{2018}-\x{201B}]</string> | |
| 115 | 			<key>applyEndPatternLast</key> | |
| 116 | 			<true/> | |
| 117 | 			<key>endCaptures</key> | |
| 118 | 			<dict> | |
| 119 | 				<key>0</key> | |
| 120 | 				<dict> | |
| 121 | 					<key>name</key> | |
| 122 | 					<string>punctuation.definition.string.end.powershell</string> | |
| 123 | 				</dict> | |
| 124 | 			</dict> | |
| 125 | 			<key>name</key> | |
| 126 | 			<string>string.quoted.single.powershell</string> | |
| 127 | 			<key>patterns</key> | |
| 128 | 			<array> | |
| 129 | 				<dict> | |
| 130 | 					<key>match</key> | |
| 131 | 					<string>['\x{2018}-\x{201B}]{2}</string> | |
| 132 | 					<key>name</key> | |
| 133 | 					<string>constant.character.escape.powershell</string> | |
| 134 | 				</dict> | |
| 135 | 			</array> | |
| 136 | 		</dict> | |
| 137 | 		<dict> | |
| 138 | 			<key>begin</key> | |
| 139 | 			<string>(@["\x{201C}-\x{201E}])\s*$</string> | |
| 140 | 			<key>beginCaptures</key> | |
| 141 | 			<dict> | |
| 142 | 				<key>1</key> | |
| 143 | 				<dict> | |
| 144 | 					<key>name</key> | |
| 145 | 					<string>punctuation.definition.string.begin.powershell</string> | |
| 146 | 				</dict> | |
| 147 | 			</dict> | |
| 148 | 			<key>end</key> | |
| 149 | 			<string>^["\x{201C}-\x{201E}]@</string> | |
| 150 | 			<key>endCaptures</key> | |
| 151 | 			<dict> | |
| 152 | 				<key>0</key> | |
| 153 | 				<dict> | |
| 154 | 					<key>name</key> | |
| 155 | 					<string>punctuation.definition.string.end.powershell</string> | |
| 156 | 				</dict> | |
| 157 | 			</dict> | |
| 158 | 			<key>name</key> | |
| 159 | 			<string>string.quoted.double.heredoc.powershell</string> | |
| 160 | 			<key>patterns</key> | |
| 161 | 			<array> | |
| 162 | 				<dict> | |
| 163 | 					<key>include</key> | |
| 164 | 					<string>#variableNoProperty</string> | |
| 165 | 				</dict> | |
| 166 | 				<dict> | |
| 167 | 					<key>include</key> | |
| 168 | 					<string>#doubleQuotedStringEscapes</string> | |
| 169 | 				</dict> | |
| 170 | 				<dict> | |
| 171 | 					<key>include</key> | |
| 172 | 					<string>#interpolation</string> | |
| 173 | 				</dict> | |
| 174 | 			</array> | |
| 175 | 		</dict> | |
| 176 | 		<dict> | |
| 177 | 			<key>begin</key> | |
| 178 | 			<string>(@['\x{2018}-\x{201B}])\s*$</string> | |
| 179 | 			<key>beginCaptures</key> | |
| 180 | 			<dict> | |
| 181 | 				<key>1</key> | |
| 182 | 				<dict> | |
| 183 | 					<key>name</key> | |
| 184 | 					<string>punctuation.definition.string.begin.powershell</string> | |
| 185 | 				</dict> | |
| 186 | 			</dict> | |
| 187 | 			<key>end</key> | |
| 188 | 			<string>^['\x{2018}-\x{201B}]@</string> | |
| 189 | 			<key>endCaptures</key> | |
| 190 | 			<dict> | |
| 191 | 				<key>0</key> | |
| 192 | 				<dict> | |
| 193 | 					<key>name</key> | |
| 194 | 					<string>punctuation.definition.string.end.powershell</string> | |
| 195 | 				</dict> | |
| 196 | 			</dict> | |
| 197 | 			<key>name</key> | |
| 198 | 			<string>string.quoted.single.heredoc.powershell</string> | |
| 199 | 		</dict> | |
| 200 | 		<dict> | |
| 201 | 			<key>include</key> | |
| 202 | 			<string>#numericConstant</string> | |
| 203 | 		</dict> | |
| 204 | 		<dict> | |
| 205 | 			<key>begin</key> | |
| 206 | 			<string>(@)(\()</string> | |
| 207 | 			<key>beginCaptures</key> | |
| 208 | 			<dict> | |
| 209 | 				<key>1</key> | |
| 210 | 				<dict> | |
| 211 | 					<key>name</key> | |
| 212 | 					<string>keyword.other.array.begin.powershell</string> | |
| 213 | 				</dict> | |
| 214 | 				<key>2</key> | |
| 215 | 				<dict> | |
| 216 | 					<key>name</key> | |
| 217 | 					<string>punctuation.section.group.begin.powershell</string> | |
| 218 | 				</dict> | |
| 219 | 			</dict> | |
| 220 | 			<key>end</key> | |
| 221 | 			<string>\)</string> | |
| 222 | 			<key>endCaptures</key> | |
| 223 | 			<dict> | |
| 224 | 				<key>0</key> | |
| 225 | 				<dict> | |
| 226 | 					<key>name</key> | |
| 227 | 					<string>punctuation.section.group.end.powershell</string> | |
| 228 | 				</dict> | |
| 229 | 			</dict> | |
| 230 | 			<key>name</key> | |
| 231 | 			<string>meta.group.array-expression.powershell</string> | |
| 232 | 			<key>patterns</key> | |
| 233 | 			<array> | |
| 234 | 				<dict> | |
| 235 | 					<key>include</key> | |
| 236 | 					<string>$self</string> | |
| 237 | 				</dict> | |
| 238 | 			</array> | |
| 239 | 		</dict> | |
| 240 | 		<dict> | |
| 241 | 			<key>begin</key> | |
| 242 | 			<string>((\$))(\()</string> | |
| 243 | 			<key>beginCaptures</key> | |
| 244 | 			<dict> | |
| 245 | 				<key>1</key> | |
| 246 | 				<dict> | |
| 247 | 					<key>name</key> | |
| 248 | 					<string>keyword.other.substatement.powershell</string> | |
| 249 | 				</dict> | |
| 250 | 				<key>2</key> | |
| 251 | 				<dict> | |
| 252 | 					<key>name</key> | |
| 253 | 					<string>punctuation.definition.subexpression.powershell</string> | |
| 254 | 				</dict> | |
| 255 | 				<key>3</key> | |
| 256 | 				<dict> | |
| 257 | 					<key>name</key> | |
| 258 | 					<string>punctuation.section.group.begin.powershell</string> | |
| 259 | 				</dict> | |
| 260 | 			</dict> | |
| 261 | 			<key>comment</key> | |
| 262 | 			<string>TODO: move to repo; make recursive.</string> | |
| 263 | 			<key>end</key> | |
| 264 | 			<string>\)</string> | |
| 265 | 			<key>endCaptures</key> | |
| 266 | 			<dict> | |
| 267 | 				<key>0</key> | |
| 268 | 				<dict> | |
| 269 | 					<key>name</key> | |
| 270 | 					<string>punctuation.section.group.end.powershell</string> | |
| 271 | 				</dict> | |
| 272 | 			</dict> | |
| 273 | 			<key>name</key> | |
| 274 | 			<string>meta.group.complex.subexpression.powershell</string> | |
| 275 | 			<key>patterns</key> | |
| 276 | 			<array> | |
| 277 | 				<dict> | |
| 278 | 					<key>include</key> | |
| 279 | 					<string>$self</string> | |
| 280 | 				</dict> | |
| 281 | 			</array> | |
| 282 | 		</dict> | |
| 283 | 		<dict> | |
| 284 | 			<key>match</key> | |
| 285 | 			<string>(\b(([A-Za-z0-9\-_\.]+)\.(?i:exe|com|cmd|bat))\b)</string> | |
| 286 | 			<key>name</key> | |
| 287 | 			<string>support.function.powershell</string> | |
| 288 | 		</dict> | |
| 289 | 		<dict> | |
| 290 | 			<key>match</key> | |
| 291 | 			<string>(?&lt;!\w|-|\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\?)(?!\w)</string> | |
| 292 | 			<key>name</key> | |
| 293 | 			<string>keyword.control.powershell</string> | |
| 294 | 		</dict> | |
| 295 | 		<dict> | |
| 296 | 			<key>match</key> | |
| 297 | 			<string>(?&lt;!\w|-|[^\)]\.)((?i:(foreach|where)(?!-object))|%|\?)(?!\w)</string> | |
| 298 | 			<key>name</key> | |
| 299 | 			<string>keyword.control.powershell</string> | |
| 300 | 		</dict> | |
| 301 | 		<dict> | |
| 302 | 			<key>begin</key> | |
| 303 | 			<string>(?&lt;!\w)(--%)(?!\w)</string> | |
| 304 | 			<key>beginCaptures</key> | |
| 305 | 			<dict> | |
| 306 | 				<key>1</key> | |
| 307 | 				<dict> | |
| 308 | 					<key>name</key> | |
| 309 | 					<string>keyword.control.powershell</string> | |
| 310 | 				</dict> | |
| 311 | 			</dict> | |
| 312 | 			<key>end</key> | |
| 313 | 			<string>$</string> | |
| 314 | 			<key>patterns</key> | |
| 315 | 			<array> | |
| 316 | 				<dict> | |
| 317 | 					<key>match</key> | |
| 318 | 					<string>.+</string> | |
| 319 | 					<key>name</key> | |
| 320 | 					<string>string.unquoted.powershell</string> | |
| 321 | 				</dict> | |
| 322 | 			</array> | |
| 323 | 			<key>comment</key> | |
| 324 | 			<string>This should be moved to the repository at some point.</string> | |
| 325 | 		</dict> | |
| 326 | 		<dict> | |
| 327 | 			<key>comment</key> | |
| 328 | 			<string>This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.</string> | |
| 329 | 			<key>match</key> | |
| 330 | 			<string>(?&lt;!\w)((?i:hidden|static))(?!\w)</string> | |
| 331 | 			<key>name</key> | |
| 332 | 			<string>storage.modifier.powershell</string> | |
| 333 | 		</dict> | |
| 334 | 		<dict> | |
| 335 | 			<key>captures</key> | |
| 336 | 			<dict> | |
| 337 | 				<key>1</key> | |
| 338 | 				<dict> | |
| 339 | 					<key>name</key> | |
| 340 | 					<string>storage.type.powershell</string> | |
| 341 | 				</dict> | |
| 342 | 				<key>2</key> | |
| 343 | 				<dict> | |
| 344 | 					<key>name</key> | |
| 345 | 					<string>entity.name.function</string> | |
| 346 | 				</dict> | |
| 347 | 			</dict> | |
| 348 | 			<key>comment</key> | |
| 349 | 			<string>capture should be entity.name.type, but it doesn't provide a good color in the default schema.</string> | |
| 350 | 			<key>match</key> | |
| 351 | 			<string>(?&lt;!\w|-)((?i:class)|%|\?)(?:\s)+((?:\p{L}|\d|_|-|)+)\b</string> | |
| 352 | 		</dict> | |
| 353 | 		<dict> | |
| 354 | 			<key>match</key> | |
| 355 | 			<string>(?&lt;!\w)-(?i:is(?:not)?|as)\b</string> | |
| 356 | 			<key>name</key> | |
| 357 | 			<string>keyword.operator.comparison.powershell</string> | |
| 358 | 		</dict> | |
| 359 | 		<dict> | |
| 360 | 			<key>match</key> | |
| 361 | 			<string>(?&lt;!\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\p{L})</string> | |
| 362 | 			<key>name</key> | |
| 363 | 			<string>keyword.operator.comparison.powershell</string> | |
| 364 | 		</dict> | |
| 365 | 		<dict> | |
| 366 | 			<key>match</key> | |
| 367 | 			<string>(?&lt;!\w)-(?i:join|split)(?!\p{L})|!</string> | |
| 368 | 			<key>name</key> | |
| 369 | 			<string>keyword.operator.unary.powershell</string> | |
| 370 | 		</dict> | |
| 371 | 		<dict> | |
| 372 | 			<key>match</key> | |
| 373 | 			<string>(?&lt;!\w)-(?i:and|or|not|xor)(?!\p{L})|!</string> | |
| 374 | 			<key>name</key> | |
| 375 | 			<string>keyword.operator.logical.powershell</string> | |
| 376 | 		</dict> | |
| 377 | 		<dict> | |
| 378 | 			<key>match</key> | |
| 379 | 			<string>(?&lt;!\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\p{L})</string> | |
| 380 | 			<key>name</key> | |
| 381 | 			<string>keyword.operator.bitwise.powershell</string> | |
| 382 | 		</dict> | |
| 383 | 		<dict> | |
| 384 | 			<key>match</key> | |
| 385 | 			<string>(?&lt;!\w)-(?i:f)(?!\p{L})</string> | |
| 386 | 			<key>name</key> | |
| 387 | 			<string>keyword.operator.string-format.powershell</string> | |
| 388 | 		</dict> | |
| 389 | 		<dict> | |
| 390 | 			<key>match</key> | |
| 391 | 			<string>[+%*/-]?=|[+/*%-]</string> | |
| 392 | 			<key>name</key> | |
| 393 | 			<string>keyword.operator.assignment.powershell</string> | |
| 394 | 		</dict> | |
| 395 | 		<dict> | |
| 396 | 			<key>match</key> | |
| 397 | 			<string>\|{2}|&amp;{2}|;</string> | |
| 398 | 			<key>name</key> | |
| 399 | 			<string>punctuation.terminator.statement.powershell</string> | |
| 400 | 		</dict> | |
| 401 | 		<dict> | |
| 402 | 			<key>match</key> | |
| 403 | 			<string>&amp;|(?&lt;!\w)\.(?= )|`|,|\|</string> | |
| 404 | 			<key>name</key> | |
| 405 | 			<string>keyword.operator.other.powershell</string> | |
| 406 | 		</dict> | |
| 407 | 		<dict> | |
| 408 | 			<key>comment</key> | |
| 409 | 			<string>This is very imprecise, is there a syntax for 'must come after...' </string> | |
| 410 | 			<key>match</key> | |
| 411 | 			<string>(?&lt;!\s|^)\.\.(?=\-?\d|\(|\$)</string> | |
| 412 | 			<key>name</key> | |
| 413 | 			<string>keyword.operator.range.powershell</string> | |
| 414 | 		</dict> | |
| 415 | 	</array> | |
| 416 | 	<key>repository</key> | |
| 417 | 	<dict> | |
| 418 | 		<key>commentLine</key> | |
| 419 | 		<dict> | |
| 420 | 			<key>begin</key> | |
| 421 | 			<string>(?&lt;![`\\-])(#)#*</string> | |
| 422 | 			<key>captures</key> | |
| 423 | 			<dict> | |
| 424 | 				<key>1</key> | |
| 425 | 				<dict> | |
| 426 | 					<key>name</key> | |
| 427 | 					<string>punctuation.definition.comment.powershell</string> | |
| 428 | 				</dict> | |
| 429 | 			</dict> | |
| 430 | 			<key>end</key> | |
| 431 | 			<string>$\n?</string> | |
| 432 | 			<key>name</key> | |
| 433 | 			<string>comment.line.powershell</string> | |
| 434 | 			<key>patterns</key> | |
| 435 | 			<array> | |
| 436 | 				<dict> | |
| 437 | 					<key>include</key> | |
| 438 | 					<string>#commentEmbeddedDocs</string> | |
| 439 | 				</dict> | |
| 440 | 				<dict> | |
| 441 | 					<key>include</key> | |
| 442 | 					<string>#RequiresDirective</string> | |
| 443 | 				</dict> | |
| 444 | 			</array> | |
| 445 | 		</dict> | |
| 446 | 		<key>attribute</key> | |
| 447 | 		<dict> | |
| 448 | 			<key>begin</key> | |
| 449 | 			<string>(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\b</string> | |
| 450 | 			<key>beginCaptures</key> | |
| 451 | 			<dict> | |
| 452 | 				<key>1</key> | |
| 453 | 				<dict> | |
| 454 | 					<key>name</key> | |
| 455 | 					<string>punctuation.section.bracket.begin.powershell</string> | |
| 456 | 				</dict> | |
| 457 | 				<key>2</key> | |
| 458 | 				<dict> | |
| 459 | 					<key>name</key> | |
| 460 | 					<string>support.function.attribute.powershell</string> | |
| 461 | 				</dict> | |
| 462 | 			</dict> | |
| 463 | 			<key>end</key> | |
| 464 | 			<string>(\])</string> | |
| 465 | 			<key>endCaptures</key> | |
| 466 | 			<dict> | |
| 467 | 				<key>1</key> | |
| 468 | 				<dict> | |
| 469 | 					<key>name</key> | |
| 470 | 					<string>punctuation.section.bracket.end.powershell</string> | |
| 471 | 				</dict> | |
| 472 | 			</dict> | |
| 473 | 			<key>name</key> | |
| 474 | 			<string>meta.attribute.powershell</string> | |
| 475 | 			<key>patterns</key> | |
| 476 | 			<array> | |
| 477 | 				<dict> | |
| 478 | 					<key>begin</key> | |
| 479 | 					<string>\(</string> | |
| 480 | 					<key>beginCaptures</key> | |
| 481 | 					<dict> | |
| 482 | 						<key>0</key> | |
| 483 | 						<dict> | |
| 484 | 							<key>name</key> | |
| 485 | 							<string>punctuation.section.group.begin.powershell</string> | |
| 486 | 						</dict> | |
| 487 | 					</dict> | |
| 488 | 					<key>end</key> | |
| 489 | 					<string>\)</string> | |
| 490 | 					<key>endCaptures</key> | |
| 491 | 					<dict> | |
| 492 | 						<key>0</key> | |
| 493 | 						<dict> | |
| 494 | 							<key>name</key> | |
| 495 | 							<string>punctuation.section.group.end.powershell</string> | |
| 496 | 						</dict> | |
| 497 | 					</dict> | |
| 498 | 					<key>patterns</key> | |
| 499 | 					<array> | |
| 500 | 						<dict> | |
| 501 | 							<key>include</key> | |
| 502 | 							<string>$self</string> | |
| 503 | 						</dict> | |
| 504 | 						<dict> | |
| 505 | 							<key>match</key> | |
| 506 | 							<string>(?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?</string> | |
| 507 | 							<key>captures</key> | |
| 508 | 							<dict> | |
| 509 | 								<key>1</key> | |
| 510 | 								<dict> | |
| 511 | 									<key>name</key> | |
| 512 | 									<string>variable.parameter.attribute.powershell</string> | |
| 513 | 								</dict> | |
| 514 | 								<key>2</key> | |
| 515 | 								<dict> | |
| 516 | 									<key>name</key> | |
| 517 | 									<string>keyword.operator.assignment.powershell</string> | |
| 518 | 								</dict> | |
| 519 | 							</dict> | |
| 520 | 						</dict> | |
| 521 | 					</array> | |
| 522 | 				</dict> | |
| 523 | 			</array> | |
| 524 | 		</dict> | |
| 525 | 		<key>commands</key> | |
| 526 | 		<dict> | |
| 527 | 			<key>patterns</key> | |
| 528 | 			<array> | |
| 529 | 				<dict> | |
| 530 | 					<key>comment</key> | |
| 531 | 					<string>Verb-Noun pattern:</string> | |
| 532 | 					<key>match</key> | |
| 533 | 					<string>(?:(\p{L}|\d|_|-|\\|\:)*\\)?\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\-.+?(?:\.(?i:exe|cmd|bat|ps1))?\b</string> | |
| 534 | 					<key>name</key> | |
| 535 | 					<string>support.function.powershell</string> | |
| 536 | 				</dict> | |
| 537 | 				<dict> | |
| 538 | 					<key>comment</key> | |
| 539 | 					<string>Builtin cmdlets with reserved verbs</string> | |
| 540 | 					<key>match</key> | |
| 541 | 					<string>(?&lt;!\w)(?i:foreach-object)(?!\w)</string> | |
| 542 | 					<key>name</key> | |
| 543 | 					<string>support.function.powershell</string> | |
| 544 | 				</dict> | |
| 545 | 				<dict> | |
| 546 | 					<key>comment</key> | |
| 547 | 					<string>Builtin cmdlets with reserved verbs</string> | |
| 548 | 					<key>match</key> | |
| 549 | 					<string>(?&lt;!\w)(?i:where-object)(?!\w)</string> | |
| 550 | 					<key>name</key> | |
| 551 | 					<string>support.function.powershell</string> | |
| 552 | 				</dict> | |
| 553 | 				<dict> | |
| 554 | 					<key>comment</key> | |
| 555 | 					<string>Builtin cmdlets with reserved verbs</string> | |
| 556 | 					<key>match</key> | |
| 557 | 					<string>(?&lt;!\w)(?i:sort-object)(?!\w)</string> | |
| 558 | 					<key>name</key> | |
| 559 | 					<string>support.function.powershell</string> | |
| 560 | 				</dict> | |
| 561 | 				<dict> | |
| 562 | 					<key>comment</key> | |
| 563 | 					<string>Builtin cmdlets with reserved verbs</string> | |
| 564 | 					<key>match</key> | |
| 565 | 					<string>(?&lt;!\w)(?i:tee-object)(?!\w)</string> | |
| 566 | 					<key>name</key> | |
| 567 | 					<string>support.function.powershell</string> | |
| 568 | 				</dict> | |
| 569 | 			</array> | |
| 570 | 		</dict> | |
| 571 | 		<key>commentEmbeddedDocs</key> | |
| 572 | 		<dict> | |
| 573 | 			<key>patterns</key> | |
| 574 | 			<array> | |
| 575 | 				<dict> | |
| 576 | 					<key>captures</key> | |
| 577 | 					<dict> | |
| 578 | 						<key>1</key> | |
| 579 | 						<dict> | |
| 580 | 							<key>name</key> | |
| 581 | 							<string>constant.string.documentation.powershell</string> | |
| 582 | 						</dict> | |
| 583 | 						<key>2</key> | |
| 584 | 						<dict> | |
| 585 | 							<key>name</key> | |
| 586 | 							<string>keyword.operator.documentation.powershell</string> | |
| 587 | 						</dict> | |
| 588 | 					</dict> | |
| 589 | 					<key>comment</key> | |
| 590 | 					<string>these embedded doc keywords do not support arguments, must be the only thing on the line</string> | |
| 591 | 					<key>match</key> | |
| 592 | 					<string>(?:^|\G)(?i:\s*(\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\s*$</string> | |
| 593 | 					<key>name</key> | |
| 594 | 					<string>comment.documentation.embedded.powershell</string> | |
| 595 | 				</dict> | |
| 596 | 				<dict> | |
| 597 | 					<key>captures</key> | |
| 598 | 					<dict> | |
| 599 | 						<key>1</key> | |
| 600 | 						<dict> | |
| 601 | 							<key>name</key> | |
| 602 | 							<string>constant.string.documentation.powershell</string> | |
| 603 | 						</dict> | |
| 604 | 						<key>2</key> | |
| 605 | 						<dict> | |
| 606 | 							<key>name</key> | |
| 607 | 							<string>keyword.operator.documentation.powershell</string> | |
| 608 | 						</dict> | |
| 609 | 						<key>3</key> | |
| 610 | 						<dict> | |
| 611 | 							<key>name</key> | |
| 612 | 							<string>keyword.operator.documentation.powershell</string> | |
| 613 | 						</dict> | |
| 614 | 					</dict> | |
| 615 | 					<key>comment</key> | |
| 616 | 					<string>these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match</string> | |
| 617 | 					<key>match</key> | |
| 618 | 					<string>(?:^|\G)(?i:\s*(\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\s+(.+?)\s*$</string> | |
| 619 | 					<key>name</key> | |
| 620 | 					<string>comment.documentation.embedded.powershell</string> | |
| 621 | 				</dict> | |
| 622 | 			</array> | |
| 623 | 		</dict> | |
| 624 | 		<key>doubleQuotedStringEscapes</key> | |
| 625 | 		<dict> | |
| 626 | 			<key>patterns</key> | |
| 627 | 			<array> | |
| 628 | 				<dict> | |
| 629 | 					<key>match</key> | |
| 630 | 					<string>`[`0abefnrtv'"\x{2018}-\x{201E}$]</string> | |
| 631 | 					<key>name</key> | |
| 632 | 					<string>constant.character.escape.powershell</string> | |
| 633 | 				</dict> | |
| 634 | 				<dict> | |
| 635 | 					<key>include</key> | |
| 636 | 					<string>#unicodeEscape</string> | |
| 637 | 				</dict> | |
| 638 | 			</array> | |
| 639 | 		</dict> | |
| 640 | 		<key>unicodeEscape</key> | |
| 641 | 		<dict> | |
| 642 | 			<key>comment</key> | |
| 643 | 			<string>`u{xxxx} added in PowerShell 6.0</string> | |
| 644 | 			<key>patterns</key> | |
| 645 | 			<array> | |
| 646 | 				<dict> | |
| 647 | 					<key>match</key> | |
| 648 | 					<string>`u\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\g&lt;1&gt;{1,5})}</string> | |
| 649 | 					<key>name</key> | |
| 650 | 					<string>constant.character.escape.powershell</string> | |
| 651 | 				</dict> | |
| 652 | 				<dict> | |
| 653 | 					<key>match</key> | |
| 654 | 					<string>`u(?:\{[0-9a-fA-F]{,6}.)?</string> | |
| 655 | 					<key>name</key> | |
| 656 | 					<string>invalid.character.escape.powershell</string> | |
| 657 | 				</dict> | |
| 658 | 			</array> | |
| 659 | 		</dict> | |
| 660 | 		<key>function</key> | |
| 661 | 		<dict> | |
| 662 | 			<key>begin</key> | |
| 663 | 			<string>^(?:\s*+)(?i)(function|filter|configuration|workflow)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)</string> | |
| 664 | 			<key>beginCaptures</key> | |
| 665 | 			<dict> | |
| 666 | 				<key>0</key> | |
| 667 | 				<dict> | |
| 668 | 					<key>name</key> | |
| 669 | 					<string>meta.function.powershell</string> | |
| 670 | 				</dict> | |
| 671 | 				<key>1</key> | |
| 672 | 				<dict> | |
| 673 | 					<key>name</key> | |
| 674 | 					<string>storage.type.powershell</string> | |
| 675 | 				</dict> | |
| 676 | 				<key>2</key> | |
| 677 | 				<dict> | |
| 678 | 					<key>name</key> | |
| 679 | 					<string>storage.modifier.scope.powershell</string> | |
| 680 | 				</dict> | |
| 681 | 				<key>3</key> | |
| 682 | 				<dict> | |
| 683 | 					<key>name</key> | |
| 684 | 					<string>entity.name.function.powershell</string> | |
| 685 | 				</dict> | |
| 686 | 			</dict> | |
| 687 | 			<key>end</key> | |
| 688 | 			<string>(?=\{|\()</string> | |
| 689 | 			<key>patterns</key> | |
| 690 | 			<array> | |
| 691 | 				<dict> | |
| 692 | 					<key>include</key> | |
| 693 | 					<string>#commentLine</string> | |
| 694 | 				</dict> | |
| 695 | 			</array> | |
| 696 | 		</dict> | |
| 697 | 		<key>subexpression</key> | |
| 698 | 		<dict> | |
| 699 | 			<key>begin</key> | |
| 700 | 			<string>\(</string> | |
| 701 | 			<key>beginCaptures</key> | |
| 702 | 			<dict> | |
| 703 | 				<key>0</key> | |
| 704 | 				<dict> | |
| 705 | 					<key>name</key> | |
| 706 | 					<string>punctuation.section.group.begin.powershell</string> | |
| 707 | 				</dict> | |
| 708 | 			</dict> | |
| 709 | 			<key>end</key> | |
| 710 | 			<string>\)</string> | |
| 711 | 			<key>endCaptures</key> | |
| 712 | 			<dict> | |
| 713 | 				<key>0</key> | |
| 714 | 				<dict> | |
| 715 | 					<key>name</key> | |
| 716 | 					<string>punctuation.section.group.end.powershell</string> | |
| 717 | 				</dict> | |
| 718 | 			</dict> | |
| 719 | 			<key>name</key> | |
| 720 | 			<string>meta.group.simple.subexpression.powershell</string> | |
| 721 | 			<key>patterns</key> | |
| 722 | 			<array> | |
| 723 | 				<dict> | |
| 724 | 					<key>include</key> | |
| 725 | 					<string>$self</string> | |
| 726 | 				</dict> | |
| 727 | 			</array> | |
| 728 | 		</dict> | |
| 729 | 		<key>interpolation</key> | |
| 730 | 		<dict> | |
| 731 | 			<key>begin</key> | |
| 732 | 			<string>(((\$)))((\())</string> | |
| 733 | 			<key>beginCaptures</key> | |
| 734 | 			<dict> | |
| 735 | 				<key>1</key> | |
| 736 | 				<dict> | |
| 737 | 					<key>name</key> | |
| 738 | 					<string>keyword.other.substatement.powershell</string> | |
| 739 | 				</dict> | |
| 740 | 				<key>2</key> | |
| 741 | 				<dict> | |
| 742 | 					<key>name</key> | |
| 743 | 					<string>punctuation.definition.substatement.powershell</string> | |
| 744 | 				</dict> | |
| 745 | 				<key>3</key> | |
| 746 | 				<dict> | |
| 747 | 					<key>name</key> | |
| 748 | 					<string>punctuation.section.embedded.substatement.begin.powershell</string> | |
| 749 | 				</dict> | |
| 750 | 				<key>4</key> | |
| 751 | 				<dict> | |
| 752 | 					<key>name</key> | |
| 753 | 					<string>punctuation.section.group.begin.powershell</string> | |
| 754 | 				</dict> | |
| 755 | 				<key>5</key> | |
| 756 | 				<dict> | |
| 757 | 					<key>name</key> | |
| 758 | 					<string>punctuation.section.embedded.substatement.begin.powershell</string> | |
| 759 | 				</dict> | |
| 760 | 			</dict> | |
| 761 | 			<key>contentName</key> | |
| 762 | 			<string>interpolated.complex.source.powershell</string> | |
| 763 | 			<key>end</key> | |
| 764 | 			<string>(\))</string> | |
| 765 | 			<key>endCaptures</key> | |
| 766 | 			<dict> | |
| 767 | 				<key>0</key> | |
| 768 | 				<dict> | |
| 769 | 					<key>name</key> | |
| 770 | 					<string>punctuation.section.group.end.powershell</string> | |
| 771 | 				</dict> | |
| 772 | 				<key>1</key> | |
| 773 | 				<dict> | |
| 774 | 					<key>name</key> | |
| 775 | 					<string>punctuation.section.embedded.substatement.end.powershell</string> | |
| 776 | 				</dict> | |
| 777 | 			</dict> | |
| 778 | 			<key>name</key> | |
| 779 | 			<string>meta.embedded.substatement.powershell</string> | |
| 780 | 			<key>patterns</key> | |
| 781 | 			<array> | |
| 782 | 				<dict> | |
| 783 | 					<key>include</key> | |
| 784 | 					<string>$self</string> | |
| 785 | 				</dict> | |
| 786 | 			</array> | |
| 787 | 		</dict> | |
| 788 | 		<key>numericConstant</key> | |
| 789 | 		<dict> | |
| 790 | 			<key>patterns</key> | |
| 791 | 			<array> | |
| 792 | 				<dict> | |
| 793 | 					<key>captures</key> | |
| 794 | 					<dict> | |
| 795 | 						<key>1</key> | |
| 796 | 						<dict> | |
| 797 | 							<key>name</key> | |
| 798 | 							<string>constant.numeric.hex.powershell</string> | |
| 799 | 						</dict> | |
| 800 | 						<key>2</key> | |
| 801 | 						<dict> | |
| 802 | 							<key>name</key> | |
| 803 | 							<string>keyword.other.powershell</string> | |
| 804 | 						</dict> | |
| 805 | 					</dict> | |
| 806 | 					<key>match</key> | |
| 807 | 					<string>(?&lt;!\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string> | |
| 808 | 				</dict> | |
| 809 | 				<dict> | |
| 810 | 					<key>captures</key> | |
| 811 | 					<dict> | |
| 812 | 						<key>1</key> | |
| 813 | 						<dict> | |
| 814 | 							<key>name</key> | |
| 815 | 							<string>constant.numeric.integer.powershell</string> | |
| 816 | 						</dict> | |
| 817 | 						<key>2</key> | |
| 818 | 						<dict> | |
| 819 | 							<key>name</key> | |
| 820 | 							<string>keyword.other.powershell</string> | |
| 821 | 						</dict> | |
| 822 | 					</dict> | |
| 823 | 					<key>match</key> | |
| 824 | 					<string>(?&lt;!\w)([-+]?(?:[0-9_]+)?\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string> | |
| 825 | 				</dict> | |
| 826 | 				<dict> | |
| 827 | 					<key>captures</key> | |
| 828 | 					<dict> | |
| 829 | 						<key>1</key> | |
| 830 | 						<dict> | |
| 831 | 							<key>name</key> | |
| 832 | 							<string>constant.numeric.octal.powershell</string> | |
| 833 | 						</dict> | |
| 834 | 						<key>2</key> | |
| 835 | 						<dict> | |
| 836 | 							<key>name</key> | |
| 837 | 							<string>keyword.other.powershell</string> | |
| 838 | 						</dict> | |
| 839 | 					</dict> | |
| 840 | 					<key>match</key> | |
| 841 | 					<string>(?&lt;!\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string> | |
| 842 | 				</dict> | |
| 843 | 				<dict> | |
| 844 | 					<key>captures</key> | |
| 845 | 					<dict> | |
| 846 | 						<key>1</key> | |
| 847 | 						<dict> | |
| 848 | 							<key>name</key> | |
| 849 | 							<string>constant.numeric.integer.powershell</string> | |
| 850 | 						</dict> | |
| 851 | 						<key>2</key> | |
| 852 | 						<dict> | |
| 853 | 							<key>name</key> | |
| 854 | 							<string>keyword.other.powershell</string> | |
| 855 | 						</dict> | |
| 856 | 					</dict> | |
| 857 | 					<key>match</key> | |
| 858 | 					<string>(?&lt;!\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string> | |
| 859 | 				</dict> | |
| 860 | 				<dict> | |
| 861 | 					<key>captures</key> | |
| 862 | 					<dict> | |
| 863 | 						<key>1</key> | |
| 864 | 						<dict> | |
| 865 | 							<key>name</key> | |
| 866 | 							<string>constant.numeric.integer.powershell</string> | |
| 867 | 						</dict> | |
| 868 | 						<key>2</key> | |
| 869 | 						<dict> | |
| 870 | 							<key>name</key> | |
| 871 | 							<string>keyword.other.powershell</string> | |
| 872 | 						</dict> | |
| 873 | 					</dict> | |
| 874 | 					<key>match</key> | |
| 875 | 					<string>(?&lt;!\w)([-+]?[0-9_]+\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string> | |
| 876 | 				</dict> | |
| 877 | 				<dict> | |
| 878 | 					<key>captures</key> | |
| 879 | 					<dict> | |
| 880 | 						<key>1</key> | |
| 881 | 						<dict> | |
| 882 | 							<key>name</key> | |
| 883 | 							<string>constant.numeric.integer.powershell</string> | |
| 884 | 						</dict> | |
| 885 | 						<key>2</key> | |
| 886 | 						<dict> | |
| 887 | 							<key>name</key> | |
| 888 | 							<string>keyword.other.powershell</string> | |
| 889 | 						</dict> | |
| 890 | 					</dict> | |
| 891 | 					<key>match</key> | |
| 892 | 					<string>(?&lt;!\w)([-+]?[0-9_]+[\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\b</string> | |
| 893 | 				</dict> | |
| 894 | 				<dict> | |
| 895 | 					<key>captures</key> | |
| 896 | 					<dict> | |
| 897 | 						<key>1</key> | |
| 898 | 						<dict> | |
| 899 | 							<key>name</key> | |
| 900 | 							<string>constant.numeric.integer.powershell</string> | |
| 901 | 						</dict> | |
| 902 | 						<key>2</key> | |
| 903 | 						<dict> | |
| 904 | 							<key>name</key> | |
| 905 | 							<string>keyword.other.powershell</string> | |
| 906 | 						</dict> | |
| 907 | 					</dict> | |
| 908 | 					<key>match</key> | |
| 909 | 					<string>(?&lt;!\w)([-+]?[0-9_]+[\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string> | |
| 910 | 				</dict> | |
| 911 | 			</array> | |
| 912 | 		</dict> | |
| 913 | 		<key>scriptblock</key> | |
| 914 | 		<dict> | |
| 915 | 			<key>begin</key> | |
| 916 | 			<string>\{</string> | |
| 917 | 			<key>beginCaptures</key> | |
| 918 | 			<dict> | |
| 919 | 				<key>0</key> | |
| 920 | 				<dict> | |
| 921 | 					<key>name</key> | |
| 922 | 					<string>punctuation.section.braces.begin.powershell</string> | |
| 923 | 				</dict> | |
| 924 | 			</dict> | |
| 925 | 			<key>end</key> | |
| 926 | 			<string>\}</string> | |
| 927 | 			<key>endCaptures</key> | |
| 928 | 			<dict> | |
| 929 | 				<key>0</key> | |
| 930 | 				<dict> | |
| 931 | 					<key>name</key> | |
| 932 | 					<string>punctuation.section.braces.end.powershell</string> | |
| 933 | 				</dict> | |
| 934 | 			</dict> | |
| 935 | 			<key>name</key> | |
| 936 | 			<string>meta.scriptblock.powershell</string> | |
| 937 | 			<key>patterns</key> | |
| 938 | 			<array> | |
| 939 | 				<dict> | |
| 940 | 					<key>include</key> | |
| 941 | 					<string>$self</string> | |
| 942 | 				</dict> | |
| 943 | 			</array> | |
| 944 | 		</dict> | |
| 945 | 		<key>type</key> | |
| 946 | 		<dict> | |
| 947 | 			<key>begin</key> | |
| 948 | 			<string>\[</string> | |
| 949 | 			<key>beginCaptures</key> | |
| 950 | 			<dict> | |
| 951 | 				<key>0</key> | |
| 952 | 				<dict> | |
| 953 | 					<key>name</key> | |
| 954 | 					<string>punctuation.section.bracket.begin.powershell</string> | |
| 955 | 				</dict> | |
| 956 | 			</dict> | |
| 957 | 			<key>end</key> | |
| 958 | 			<string>\]</string> | |
| 959 | 			<key>endCaptures</key> | |
| 960 | 			<dict> | |
| 961 | 				<key>0</key> | |
| 962 | 				<dict> | |
| 963 | 					<key>name</key> | |
| 964 | 					<string>punctuation.section.bracket.end.powershell</string> | |
| 965 | 				</dict> | |
| 966 | 			</dict> | |
| 967 | 			<key>patterns</key> | |
| 968 | 			<array> | |
| 969 | 				<dict> | |
| 970 | 					<key>match</key> | |
| 971 | 					<string>(?!\d+|\.)(?:\p{L}|\p{N}|\.)+</string> | |
| 972 | 					<key>name</key> | |
| 973 | 					<string>storage.type.powershell</string> | |
| 974 | 				</dict> | |
| 975 | 				<dict> | |
| 976 | 					<key>include</key> | |
| 977 | 					<string>$self</string> | |
| 978 | 				</dict> | |
| 979 | 			</array> | |
| 980 | 		</dict> | |
| 981 | 		<key>variable</key> | |
| 982 | 		<dict> | |
| 983 | 			<key>patterns</key> | |
| 984 | 			<array> | |
| 985 | 				<dict> | |
| 986 | 					<key>captures</key> | |
| 987 | 					<dict> | |
| 988 | 						<key>0</key> | |
| 989 | 						<dict> | |
| 990 | 							<key>name</key> | |
| 991 | 							<string>constant.language.powershell</string> | |
| 992 | 						</dict> | |
| 993 | 						<key>1</key> | |
| 994 | 						<dict> | |
| 995 | 							<key>name</key> | |
| 996 | 							<string>punctuation.definition.variable.powershell</string> | |
| 997 | 						</dict> | |
| 998 | 					</dict> | |
| 999 | 					<key>comment</key> | |
| 1000 | 					<string>These are special constants.</string> | |
| 1001 | 					<key>match</key> | |
| 1002 | 					<string>(\$)(?i:(False|Null|True))\b</string> | |
| 1003 | 				</dict> | |
| 1004 | 				<dict> | |
| 1005 | 					<key>captures</key> | |
| 1006 | 					<dict> | |
| 1007 | 						<key>0</key> | |
| 1008 | 						<dict> | |
| 1009 | 							<key>name</key> | |
| 1010 | 							<string>support.constant.variable.powershell</string> | |
| 1011 | 						</dict> | |
| 1012 | 						<key>1</key> | |
| 1013 | 						<dict> | |
| 1014 | 							<key>name</key> | |
| 1015 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1016 | 						</dict> | |
| 1017 | 						<key>3</key> | |
| 1018 | 						<dict> | |
| 1019 | 							<key>name</key> | |
| 1020 | 							<string>variable.other.member.powershell</string> | |
| 1021 | 						</dict> | |
| 1022 | 					</dict> | |
| 1023 | 					<key>comment</key> | |
| 1024 | 					<string>These are the other built-in constants.</string> | |
| 1025 | 					<key>match</key> | |
| 1026 | 					<string>(\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\.(?:\p{L}|\d|_)+)*\b)?\b</string> | |
| 1027 | 				</dict> | |
| 1028 | 				<dict> | |
| 1029 | 					<key>captures</key> | |
| 1030 | 					<dict> | |
| 1031 | 						<key>0</key> | |
| 1032 | 						<dict> | |
| 1033 | 							<key>name</key> | |
| 1034 | 							<string>support.variable.automatic.powershell</string> | |
| 1035 | 						</dict> | |
| 1036 | 						<key>1</key> | |
| 1037 | 						<dict> | |
| 1038 | 							<key>name</key> | |
| 1039 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1040 | 						</dict> | |
| 1041 | 						<key>3</key> | |
| 1042 | 						<dict> | |
| 1043 | 							<key>name</key> | |
| 1044 | 							<string>variable.other.member.powershell</string> | |
| 1045 | 						</dict> | |
| 1046 | 					</dict> | |
| 1047 | 					<key>comment</key> | |
| 1048 | 					<string>Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.</string> | |
| 1049 | 					<key>match</key> | |
| 1050 | 					<string>(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)((?:\.(?:\p{L}|\d|_)+)*\b)?</string> | |
| 1051 | 				</dict> | |
| 1052 | 				<dict> | |
| 1053 | 					<key>captures</key> | |
| 1054 | 					<dict> | |
| 1055 | 						<key>0</key> | |
| 1056 | 						<dict> | |
| 1057 | 							<key>name</key> | |
| 1058 | 							<string>variable.language.powershell</string> | |
| 1059 | 						</dict> | |
| 1060 | 						<key>1</key> | |
| 1061 | 						<dict> | |
| 1062 | 							<key>name</key> | |
| 1063 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1064 | 						</dict> | |
| 1065 | 						<key>3</key> | |
| 1066 | 						<dict> | |
| 1067 | 							<key>name</key> | |
| 1068 | 							<string>variable.other.member.powershell</string> | |
| 1069 | 						</dict> | |
| 1070 | 					</dict> | |
| 1071 | 					<key>comment</key> | |
| 1072 | 					<string>Style preference variables as language variables so that they stand out.</string> | |
| 1073 | 					<key>match</key> | |
| 1074 | 					<string>(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\.(?:\p{L}|\d|_)+)*\b)?\b</string> | |
| 1075 | 				</dict> | |
| 1076 | 				<dict> | |
| 1077 | 					<key>captures</key> | |
| 1078 | 					<dict> | |
| 1079 | 						<key>0</key> | |
| 1080 | 						<dict> | |
| 1081 | 							<key>name</key> | |
| 1082 | 							<string>variable.other.readwrite.powershell</string> | |
| 1083 | 						</dict> | |
| 1084 | 						<key>1</key> | |
| 1085 | 						<dict> | |
| 1086 | 							<key>name</key> | |
| 1087 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1088 | 						</dict> | |
| 1089 | 						<key>2</key> | |
| 1090 | 						<dict> | |
| 1091 | 							<key>name</key> | |
| 1092 | 							<string>storage.modifier.scope.powershell</string> | |
| 1093 | 						</dict> | |
| 1094 | 						<key>4</key> | |
| 1095 | 						<dict> | |
| 1096 | 							<key>name</key> | |
| 1097 | 							<string>variable.other.member.powershell</string> | |
| 1098 | 						</dict> | |
| 1099 | 					</dict> | |
| 1100 | 					<key>match</key> | |
| 1101 | 					<string>(?i:(\$|@)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?</string> | |
| 1102 | 				</dict> | |
| 1103 | 				<dict> | |
| 1104 | 					<key>captures</key> | |
| 1105 | 					<dict> | |
| 1106 | 						<key>0</key> | |
| 1107 | 						<dict> | |
| 1108 | 							<key>name</key> | |
| 1109 | 							<string>variable.other.readwrite.powershell</string> | |
| 1110 | 						</dict> | |
| 1111 | 						<key>1</key> | |
| 1112 | 						<dict> | |
| 1113 | 							<key>name</key> | |
| 1114 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1115 | 						</dict> | |
| 1116 | 						<key>2</key> | |
| 1117 | 						<dict> | |
| 1118 | 							<key>name</key> | |
| 1119 | 							<string>punctuation.section.braces.begin.powershell</string> | |
| 1120 | 						</dict> | |
| 1121 | 						<key>3</key> | |
| 1122 | 						<dict> | |
| 1123 | 							<key>name</key> | |
| 1124 | 							<string>storage.modifier.scope.powershell</string> | |
| 1125 | 						</dict> | |
| 1126 | 						<key>5</key> | |
| 1127 | 						<dict> | |
| 1128 | 							<key>name</key> | |
| 1129 | 							<string>punctuation.section.braces.end.powershell</string> | |
| 1130 | 						</dict> | |
| 1131 | 						<key>6</key> | |
| 1132 | 						<dict> | |
| 1133 | 							<key>name</key> | |
| 1134 | 							<string>variable.other.member.powershell</string> | |
| 1135 | 						</dict> | |
| 1136 | 					</dict> | |
| 1137 | 					<key>match</key> | |
| 1138 | 					<string>(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?</string> | |
| 1139 | 				</dict> | |
| 1140 | 				<dict> | |
| 1141 | 					<key>captures</key> | |
| 1142 | 					<dict> | |
| 1143 | 						<key>0</key> | |
| 1144 | 						<dict> | |
| 1145 | 							<key>name</key> | |
| 1146 | 							<string>variable.other.readwrite.powershell</string> | |
| 1147 | 						</dict> | |
| 1148 | 						<key>1</key> | |
| 1149 | 						<dict> | |
| 1150 | 							<key>name</key> | |
| 1151 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1152 | 						</dict> | |
| 1153 | 						<key>2</key> | |
| 1154 | 						<dict> | |
| 1155 | 							<key>name</key> | |
| 1156 | 							<string>support.variable.drive.powershell</string> | |
| 1157 | 						</dict> | |
| 1158 | 						<key>4</key> | |
| 1159 | 						<dict> | |
| 1160 | 							<key>name</key> | |
| 1161 | 							<string>variable.other.member.powershell</string> | |
| 1162 | 						</dict> | |
| 1163 | 					</dict> | |
| 1164 | 					<key>match</key> | |
| 1165 | 					<string>(?i:(\$|@)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?</string> | |
| 1166 | 				</dict> | |
| 1167 | 				<dict> | |
| 1168 | 					<key>captures</key> | |
| 1169 | 					<dict> | |
| 1170 | 						<key>0</key> | |
| 1171 | 						<dict> | |
| 1172 | 							<key>name</key> | |
| 1173 | 							<string>variable.other.readwrite.powershell</string> | |
| 1174 | 						</dict> | |
| 1175 | 						<key>1</key> | |
| 1176 | 						<dict> | |
| 1177 | 							<key>name</key> | |
| 1178 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1179 | 						</dict> | |
| 1180 | 						<key>2</key> | |
| 1181 | 						<dict> | |
| 1182 | 							<key>name</key> | |
| 1183 | 							<string>punctuation.section.braces.begin.powershell</string> | |
| 1184 | 						</dict> | |
| 1185 | 						<key>3</key> | |
| 1186 | 						<dict> | |
| 1187 | 							<key>name</key> | |
| 1188 | 							<string>support.variable.drive.powershell</string> | |
| 1189 | 						</dict> | |
| 1190 | 						<key>5</key> | |
| 1191 | 						<dict> | |
| 1192 | 							<key>name</key> | |
| 1193 | 							<string>punctuation.section.braces.end.powershell</string> | |
| 1194 | 						</dict> | |
| 1195 | 						<key>6</key> | |
| 1196 | 						<dict> | |
| 1197 | 							<key>name</key> | |
| 1198 | 							<string>variable.other.member.powershell</string> | |
| 1199 | 						</dict> | |
| 1200 | 					</dict> | |
| 1201 | 					<key>match</key> | |
| 1202 | 					<string>(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?</string> | |
| 1203 | 				</dict> | |
| 1204 | 			</array> | |
| 1205 | 		</dict> | |
| 1206 | 		<key>UsingDirective</key> | |
| 1207 | 		<dict> | |
| 1208 | 			<key>match</key> | |
| 1209 | 			<string>(?&lt;!\w)(?i:(using))\s+(?i:(namespace|module))\s+(?i:((?:\w+(?:\.)?)+))</string> | |
| 1210 | 			<key>captures</key> | |
| 1211 | 			<dict> | |
| 1212 | 				<key>1</key> | |
| 1213 | 				<dict> | |
| 1214 | 					<key>name</key> | |
| 1215 | 					<string>keyword.control.using.powershell</string> | |
| 1216 | 				</dict> | |
| 1217 | 				<key>2</key> | |
| 1218 | 				<dict> | |
| 1219 | 					<key>name</key> | |
| 1220 | 					<string>keyword.other.powershell</string> | |
| 1221 | 				</dict> | |
| 1222 | 				<key>3</key> | |
| 1223 | 				<dict> | |
| 1224 | 					<key>name</key> | |
| 1225 | 					<string>variable.parameter.powershell</string> | |
| 1226 | 				</dict> | |
| 1227 | 			</dict> | |
| 1228 | 		</dict> | |
| 1229 | 		<key>RequiresDirective</key> | |
| 1230 | 		<dict> | |
| 1231 | 			<key>begin</key> | |
| 1232 | 			<string>(?&lt;=#)(?i:(requires))\s</string> | |
| 1233 | 			<key>beginCaptures</key> | |
| 1234 | 			<dict> | |
| 1235 | 				<key>0</key> | |
| 1236 | 				<dict> | |
| 1237 | 					<key>name</key> | |
| 1238 | 					<string>keyword.control.requires.powershell</string> | |
| 1239 | 				</dict> | |
| 1240 | 			</dict> | |
| 1241 | 			<key>end</key> | |
| 1242 | 			<string>$</string> | |
| 1243 | 			<key>name</key> | |
| 1244 | 			<string>meta.requires.powershell</string> | |
| 1245 | 			<key>patterns</key> | |
| 1246 | 			<array> | |
| 1247 | 				<dict> | |
| 1248 | 					<key>match</key> | |
| 1249 | 					<string>\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)</string> | |
| 1250 | 					<key>name</key> | |
| 1251 | 					<string>keyword.other.powershell</string> | |
| 1252 | 				</dict> | |
| 1253 | 				<dict> | |
| 1254 | 					<key>match</key> | |
| 1255 | 					<string>(?&lt;!-)\b\p{L}+|\d+(?:\.\d+)*</string> | |
| 1256 | 					<key>name</key> | |
| 1257 | 					<string>variable.parameter.powershell</string> | |
| 1258 | 				</dict> | |
| 1259 | 				<dict> | |
| 1260 | 					<key>include</key> | |
| 1261 | 					<string>#hashtable</string> | |
| 1262 | 				</dict> | |
| 1263 | 			</array> | |
| 1264 | 		</dict> | |
| 1265 | 		<key>variableNoProperty</key> | |
| 1266 | 		<dict> | |
| 1267 | 			<key>patterns</key> | |
| 1268 | 			<array> | |
| 1269 | 				<dict> | |
| 1270 | 					<key>captures</key> | |
| 1271 | 					<dict> | |
| 1272 | 						<key>0</key> | |
| 1273 | 						<dict> | |
| 1274 | 							<key>name</key> | |
| 1275 | 							<string>constant.language.powershell</string> | |
| 1276 | 						</dict> | |
| 1277 | 						<key>1</key> | |
| 1278 | 						<dict> | |
| 1279 | 							<key>name</key> | |
| 1280 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1281 | 						</dict> | |
| 1282 | 					</dict> | |
| 1283 | 					<key>comment</key> | |
| 1284 | 					<string>These are special constants.</string> | |
| 1285 | 					<key>match</key> | |
| 1286 | 					<string>(\$)(?i:(False|Null|True))\b</string> | |
| 1287 | 				</dict> | |
| 1288 | 				<dict> | |
| 1289 | 					<key>captures</key> | |
| 1290 | 					<dict> | |
| 1291 | 						<key>0</key> | |
| 1292 | 						<dict> | |
| 1293 | 							<key>name</key> | |
| 1294 | 							<string>support.constant.variable.powershell</string> | |
| 1295 | 						</dict> | |
| 1296 | 						<key>1</key> | |
| 1297 | 						<dict> | |
| 1298 | 							<key>name</key> | |
| 1299 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1300 | 						</dict> | |
| 1301 | 						<key>3</key> | |
| 1302 | 						<dict> | |
| 1303 | 							<key>name</key> | |
| 1304 | 							<string>variable.other.member.powershell</string> | |
| 1305 | 						</dict> | |
| 1306 | 					</dict> | |
| 1307 | 					<key>comment</key> | |
| 1308 | 					<string>These are the other built-in constants.</string> | |
| 1309 | 					<key>match</key> | |
| 1310 | 					<string>(\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\b</string> | |
| 1311 | 				</dict> | |
| 1312 | 				<dict> | |
| 1313 | 					<key>captures</key> | |
| 1314 | 					<dict> | |
| 1315 | 						<key>0</key> | |
| 1316 | 						<dict> | |
| 1317 | 							<key>name</key> | |
| 1318 | 							<string>support.variable.automatic.powershell</string> | |
| 1319 | 						</dict> | |
| 1320 | 						<key>1</key> | |
| 1321 | 						<dict> | |
| 1322 | 							<key>name</key> | |
| 1323 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1324 | 						</dict> | |
| 1325 | 						<key>3</key> | |
| 1326 | 						<dict> | |
| 1327 | 							<key>name</key> | |
| 1328 | 							<string>variable.other.member.powershell</string> | |
| 1329 | 						</dict> | |
| 1330 | 					</dict> | |
| 1331 | 					<key>comment</key> | |
| 1332 | 					<string>Automatic variables are not constants, but they are read-only...</string> | |
| 1333 | 					<key>match</key> | |
| 1334 | 					<string>(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)</string> | |
| 1335 | 				</dict> | |
| 1336 | 				<dict> | |
| 1337 | 					<key>captures</key> | |
| 1338 | 					<dict> | |
| 1339 | 						<key>0</key> | |
| 1340 | 						<dict> | |
| 1341 | 							<key>name</key> | |
| 1342 | 							<string>variable.language.powershell</string> | |
| 1343 | 						</dict> | |
| 1344 | 						<key>1</key> | |
| 1345 | 						<dict> | |
| 1346 | 							<key>name</key> | |
| 1347 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1348 | 						</dict> | |
| 1349 | 						<key>3</key> | |
| 1350 | 						<dict> | |
| 1351 | 							<key>name</key> | |
| 1352 | 							<string>variable.other.member.powershell</string> | |
| 1353 | 						</dict> | |
| 1354 | 					</dict> | |
| 1355 | 					<key>comment</key> | |
| 1356 | 					<string>Style preference variables as language variables so that they stand out.</string> | |
| 1357 | 					<key>match</key> | |
| 1358 | 					<string>(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\b</string> | |
| 1359 | 				</dict> | |
| 1360 | 				<dict> | |
| 1361 | 					<key>captures</key> | |
| 1362 | 					<dict> | |
| 1363 | 						<key>0</key> | |
| 1364 | 						<dict> | |
| 1365 | 							<key>name</key> | |
| 1366 | 							<string>variable.other.readwrite.powershell</string> | |
| 1367 | 						</dict> | |
| 1368 | 						<key>1</key> | |
| 1369 | 						<dict> | |
| 1370 | 							<key>name</key> | |
| 1371 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1372 | 						</dict> | |
| 1373 | 						<key>2</key> | |
| 1374 | 						<dict> | |
| 1375 | 							<key>name</key> | |
| 1376 | 							<string>storage.modifier.scope.powershell</string> | |
| 1377 | 						</dict> | |
| 1378 | 						<key>4</key> | |
| 1379 | 						<dict> | |
| 1380 | 							<key>name</key> | |
| 1381 | 							<string>variable.other.member.powershell</string> | |
| 1382 | 						</dict> | |
| 1383 | 					</dict> | |
| 1384 | 					<key>match</key> | |
| 1385 | 					<string>(?i:(\$)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))</string> | |
| 1386 | 				</dict> | |
| 1387 | 				<dict> | |
| 1388 | 					<key>captures</key> | |
| 1389 | 					<dict> | |
| 1390 | 						<key>0</key> | |
| 1391 | 						<dict> | |
| 1392 | 							<key>name</key> | |
| 1393 | 							<string>variable.other.readwrite.powershell</string> | |
| 1394 | 						</dict> | |
| 1395 | 						<key>1</key> | |
| 1396 | 						<dict> | |
| 1397 | 							<key>name</key> | |
| 1398 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1399 | 						</dict> | |
| 1400 | 						<key>2</key> | |
| 1401 | 						<dict> | |
| 1402 | 							<key>name</key> | |
| 1403 | 							<string>storage.modifier.scope.powershell</string> | |
| 1404 | 						</dict> | |
| 1405 | 						<key>4</key> | |
| 1406 | 						<dict> | |
| 1407 | 							<key>name</key> | |
| 1408 | 							<string>keyword.other.powershell</string> | |
| 1409 | 						</dict> | |
| 1410 | 						<key>5</key> | |
| 1411 | 						<dict> | |
| 1412 | 							<key>name</key> | |
| 1413 | 							<string>variable.other.member.powershell</string> | |
| 1414 | 						</dict> | |
| 1415 | 					</dict> | |
| 1416 | 					<key>match</key> | |
| 1417 | 					<string>(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))</string> | |
| 1418 | 				</dict> | |
| 1419 | 				<dict> | |
| 1420 | 					<key>captures</key> | |
| 1421 | 					<dict> | |
| 1422 | 						<key>0</key> | |
| 1423 | 						<dict> | |
| 1424 | 							<key>name</key> | |
| 1425 | 							<string>variable.other.readwrite.powershell</string> | |
| 1426 | 						</dict> | |
| 1427 | 						<key>1</key> | |
| 1428 | 						<dict> | |
| 1429 | 							<key>name</key> | |
| 1430 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1431 | 						</dict> | |
| 1432 | 						<key>2</key> | |
| 1433 | 						<dict> | |
| 1434 | 							<key>name</key> | |
| 1435 | 							<string>support.variable.drive.powershell</string> | |
| 1436 | 						</dict> | |
| 1437 | 						<key>4</key> | |
| 1438 | 						<dict> | |
| 1439 | 							<key>name</key> | |
| 1440 | 							<string>variable.other.member.powershell</string> | |
| 1441 | 						</dict> | |
| 1442 | 					</dict> | |
| 1443 | 					<key>match</key> | |
| 1444 | 					<string>(?i:(\$)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))</string> | |
| 1445 | 				</dict> | |
| 1446 | 				<dict> | |
| 1447 | 					<key>captures</key> | |
| 1448 | 					<dict> | |
| 1449 | 						<key>0</key> | |
| 1450 | 						<dict> | |
| 1451 | 							<key>name</key> | |
| 1452 | 							<string>variable.other.readwrite.powershell</string> | |
| 1453 | 						</dict> | |
| 1454 | 						<key>1</key> | |
| 1455 | 						<dict> | |
| 1456 | 							<key>name</key> | |
| 1457 | 							<string>punctuation.definition.variable.powershell</string> | |
| 1458 | 						</dict> | |
| 1459 | 						<key>2</key> | |
| 1460 | 						<dict> | |
| 1461 | 							<key>name</key> | |
| 1462 | 							<string>punctuation.section.braces.begin</string> | |
| 1463 | 						</dict> | |
| 1464 | 						<key>3</key> | |
| 1465 | 						<dict> | |
| 1466 | 							<key>name</key> | |
| 1467 | 							<string>support.variable.drive.powershell</string> | |
| 1468 | 						</dict> | |
| 1469 | 						<key>5</key> | |
| 1470 | 						<dict> | |
| 1471 | 							<key>name</key> | |
| 1472 | 							<string>punctuation.section.braces.end</string> | |
| 1473 | 						</dict> | |
| 1474 | 					</dict> | |
| 1475 | 					<key>match</key> | |
| 1476 | 					<string>(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))</string> | |
| 1477 | 				</dict> | |
| 1478 | 			</array> | |
| 1479 | 		</dict> | |
| 1480 | 		<key>hashtable</key> | |
| 1481 | 		<dict> | |
| 1482 | 			<key>begin</key> | |
| 1483 | 			<string>(@)(\{)</string> | |
| 1484 | 			<key>beginCaptures</key> | |
| 1485 | 			<dict> | |
| 1486 | 				<key>1</key> | |
| 1487 | 				<dict> | |
| 1488 | 					<key>name</key> | |
| 1489 | 					<string>keyword.other.hashtable.begin.powershell</string> | |
| 1490 | 				</dict> | |
| 1491 | 				<key>2</key> | |
| 1492 | 				<dict> | |
| 1493 | 					<key>name</key> | |
| 1494 | 					<string>punctuation.section.braces.begin.powershell</string> | |
| 1495 | 				</dict> | |
| 1496 | 			</dict> | |
| 1497 | 			<key>end</key> | |
| 1498 | 			<string>(\})</string> | |
| 1499 | 			<key>endCaptures</key> | |
| 1500 | 			<dict> | |
| 1501 | 				<key>1</key> | |
| 1502 | 				<dict> | |
| 1503 | 					<key>name</key> | |
| 1504 | 					<string>punctuation.section.braces.end.powershell</string> | |
| 1505 | 				</dict> | |
| 1506 | 			</dict> | |
| 1507 | 			<key>name</key> | |
| 1508 | 			<string>meta.hashtable.powershell</string> | |
| 1509 | 			<key>patterns</key> | |
| 1510 | 			<array> | |
| 1511 | 				<dict> | |
| 1512 | 					<key>captures</key> | |
| 1513 | 					<dict> | |
| 1514 | 						<key>1</key> | |
| 1515 | 						<dict> | |
| 1516 | 							<key>name</key> | |
| 1517 | 							<string>punctuation.definition.string.begin.powershell</string> | |
| 1518 | 						</dict> | |
| 1519 | 						<key>2</key> | |
| 1520 | 						<dict> | |
| 1521 | 							<key>name</key> | |
| 1522 | 							<string>variable.other.readwrite.powershell</string> | |
| 1523 | 						</dict> | |
| 1524 | 						<key>3</key> | |
| 1525 | 						<dict> | |
| 1526 | 							<key>name</key> | |
| 1527 | 							<string>punctuation.definition.string.end.powershell</string> | |
| 1528 | 						</dict> | |
| 1529 | 						<key>4</key> | |
| 1530 | 						<dict> | |
| 1531 | 							<key>name</key> | |
| 1532 | 							<string>keyword.operator.assignment.powershell</string> | |
| 1533 | 						</dict> | |
| 1534 | 					</dict> | |
| 1535 | 					<key>match</key> | |
| 1536 | 					<string>\b((?:\'|\")?)(\w+)((?:\'|\")?)(?:\s+)?(=)(?:\s+)?</string> | |
| 1537 | 					<key>name</key> | |
| 1538 | 					<string>meta.hashtable.assignment.powershell</string> | |
| 1539 | 				</dict> | |
| 1540 | 				<dict> | |
| 1541 | 					<key>include</key> | |
| 1542 | 					<string>#scriptblock</string> | |
| 1543 | 				</dict> | |
| 1544 | 				<dict> | |
| 1545 | 					<key>include</key> | |
| 1546 | 					<string>$self</string> | |
| 1547 | 				</dict> | |
| 1548 | 			</array> | |
| 1549 | 		</dict> | |
| 1550 | 		<key>doubleQuotedString</key> | |
| 1551 | 		<dict> | |
| 1552 | 			<key>begin</key> | |
| 1553 | 			<string>["\x{201C}-\x{201E}]</string> | |
| 1554 | 			<key>beginCaptures</key> | |
| 1555 | 			<dict> | |
| 1556 | 				<key>0</key> | |
| 1557 | 				<dict> | |
| 1558 | 					<key>name</key> | |
| 1559 | 					<string>punctuation.definition.string.begin.powershell</string> | |
| 1560 | 				</dict> | |
| 1561 | 			</dict> | |
| 1562 | 			<key>end</key> | |
| 1563 | 			<string>["\x{201C}-\x{201E}]</string> | |
| 1564 | 			<key>applyEndPatternLast</key> | |
| 1565 | 			<true/> | |
| 1566 | 			<key>endCaptures</key> | |
| 1567 | 			<dict> | |
| 1568 | 				<key>0</key> | |
| 1569 | 				<dict> | |
| 1570 | 					<key>name</key> | |
| 1571 | 					<string>punctuation.definition.string.end.powershell</string> | |
| 1572 | 				</dict> | |
| 1573 | 			</dict> | |
| 1574 | 			<key>name</key> | |
| 1575 | 			<string>string.quoted.double.powershell</string> | |
| 1576 | 			<key>patterns</key> | |
| 1577 | 			<array> | |
| 1578 | 				<dict> | |
| 1579 | 					<key>match</key> | |
| 1580 | 					<string>(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b</string> | |
| 1581 | 				</dict> | |
| 1582 | 				<dict> | |
| 1583 | 					<key>include</key> | |
| 1584 | 					<string>#variableNoProperty</string> | |
| 1585 | 				</dict> | |
| 1586 | 				<dict> | |
| 1587 | 					<key>include</key> | |
| 1588 | 					<string>#doubleQuotedStringEscapes</string> | |
| 1589 | 				</dict> | |
| 1590 | 				<dict> | |
| 1591 | 					<key>match</key> | |
| 1592 | 					<string>["\x{201C}-\x{201E}]{2}</string> | |
| 1593 | 					<key>name</key> | |
| 1594 | 					<string>constant.character.escape.powershell</string> | |
| 1595 | 				</dict> | |
| 1596 | 				<dict> | |
| 1597 | 					<key>include</key> | |
| 1598 | 					<string>#interpolation</string> | |
| 1599 | 				</dict> | |
| 1600 | 				<dict> | |
| 1601 | 					<key>match</key> | |
| 1602 | 					<string>`\s*$</string> | |
| 1603 | 					<key>name</key> | |
| 1604 | 					<string>keyword.other.powershell</string> | |
| 1605 | 				</dict> | |
| 1606 | 			</array> | |
| 1607 | 		</dict> | |
| 1608 | 	</dict> | |
| 1609 | 	<key>scopeName</key> | |
| 1610 | 	<string>source.powershell</string> | |
| 1611 | 	<key>uuid</key> | |
| 1612 | 	<string>f8f5ffb0-503e-11df-9879-0800200c9a66</string> | |
| 1613 | </dict> | |
| 1614 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/python.plist created+4009| ... | ... | @@ -0,0 +1,4009 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>py</string> | |
| 8 | 		<string>py3</string> | |
| 9 | 		<string>rpy</string> | |
| 10 | 		<string>pyw</string> | |
| 11 | 		<string>cpy</string> | |
| 12 | 		<string>SConstruct</string> | |
| 13 | 		<string>Sconstruct</string> | |
| 14 | 		<string>sconstruct</string> | |
| 15 | 		<string>SConscript</string> | |
| 16 | 		<string>gyp</string> | |
| 17 | 		<string>gypi</string> | |
| 18 | 	</array> | |
| 19 | 	<key>firstLineMatch</key> | |
| 20 | 	<string>^#!/.*\bpython[\d\.]*\b</string> | |
| 21 | 	<key>keyEquivalent</key> | |
| 22 | 	<string>^~P</string> | |
| 23 | 	<key>name</key> | |
| 24 | 	<string>Python</string> | |
| 25 | 	<key>patterns</key> | |
| 26 | 	<array> | |
| 27 | 		<dict> | |
| 28 | 			<key>match</key> | |
| 29 | 			<string>(?&lt;!^from\s|^import\s)(\.{3})</string> | |
| 30 | 			<key>name</key> | |
| 31 | 			<string>support.type.ellipsis.python</string> | |
| 32 | 		</dict> | |
| 33 | 		<dict> | |
| 34 | 			<key>include</key> | |
| 35 | 			<string>#comment</string> | |
| 36 | 		</dict> | |
| 37 | 		<dict> | |
| 38 | 			<key>comment</key> | |
| 39 | 			<string>Match identifiers in ALL_CAPS as constants, except when followed by `.`, `(`, `'`, or `"`.</string> | |
| 40 | 			<key>match</key> | |
| 41 | 			<string>\b([[:upper:]_][[:upper:][:digit:]_]*)\b(?![\.\(\'\"])</string> | |
| 42 | 			<key>name</key> | |
| 43 | 			<string>constant.other.allcaps.python</string> | |
| 44 | 		</dict> | |
| 45 | 		<dict> | |
| 46 | 			<key>match</key> | |
| 47 | 			<string>\b(?i:(0x\h+)L)</string> | |
| 48 | 			<key>name</key> | |
| 49 | 			<string>constant.numeric.integer.hexadecimal.long.python</string> | |
| 50 | 		</dict> | |
| 51 | 		<dict> | |
| 52 | 			<key>match</key> | |
| 53 | 			<string>\b(?i:(0x\h+))</string> | |
| 54 | 			<key>name</key> | |
| 55 | 			<string>constant.numeric.integer.hexadecimal.python</string> | |
| 56 | 		</dict> | |
| 57 | 		<dict> | |
| 58 | 			<key>match</key> | |
| 59 | 			<string>\b(?i:(0b[01]+)L)</string> | |
| 60 | 			<key>name</key> | |
| 61 | 			<string>constant.numeric.integer.binary.long.python</string> | |
| 62 | 		</dict> | |
| 63 | 		<dict> | |
| 64 | 			<key>match</key> | |
| 65 | 			<string>\b(?i:(0b[01]+))</string> | |
| 66 | 			<key>name</key> | |
| 67 | 			<string>constant.numeric.integer.binary.python</string> | |
| 68 | 		</dict> | |
| 69 | 		<dict> | |
| 70 | 			<key>match</key> | |
| 71 | 			<string>\b(?i:(0[o]?[0-7]+)L)</string> | |
| 72 | 			<key>name</key> | |
| 73 | 			<string>constant.numeric.integer.octal.long.python</string> | |
| 74 | 		</dict> | |
| 75 | 		<dict> | |
| 76 | 			<key>match</key> | |
| 77 | 			<string>\b(?i:(0[o]?[0-7]+))</string> | |
| 78 | 			<key>name</key> | |
| 79 | 			<string>constant.numeric.integer.octal.python</string> | |
| 80 | 		</dict> | |
| 81 | 		<dict> | |
| 82 | 			<key>match</key> | |
| 83 | 			<string>\b(?i:(((\d+(\.(?=[^[:alpha:]_])\d*)?|(?&lt;=[^[:alnum:]_])\.\d+)(e[\-\+]?\d+)?))J)</string> | |
| 84 | 			<key>name</key> | |
| 85 | 			<string>constant.numeric.complex.python</string> | |
| 86 | 		</dict> | |
| 87 | 		<dict> | |
| 88 | 			<key>match</key> | |
| 89 | 			<string>\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^[:alpha:]_])</string> | |
| 90 | 			<key>name</key> | |
| 91 | 			<string>constant.numeric.float.python</string> | |
| 92 | 		</dict> | |
| 93 | 		<dict> | |
| 94 | 			<key>match</key> | |
| 95 | 			<string>(?&lt;=[^[:alnum:]_])(?i:(\.\d+(e[\-\+]?\d+)?))</string> | |
| 96 | 			<key>name</key> | |
| 97 | 			<string>constant.numeric.float.python</string> | |
| 98 | 		</dict> | |
| 99 | 		<dict> | |
| 100 | 			<key>match</key> | |
| 101 | 			<string>\b(?i:(\d+e[\-\+]?\d+))</string> | |
| 102 | 			<key>name</key> | |
| 103 | 			<string>constant.numeric.float.python</string> | |
| 104 | 		</dict> | |
| 105 | 		<dict> | |
| 106 | 			<key>match</key> | |
| 107 | 			<string>\b(?i:([1-9]+[0-9]*|0)L)</string> | |
| 108 | 			<key>name</key> | |
| 109 | 			<string>constant.numeric.integer.decimal.long.python</string> | |
| 110 | 		</dict> | |
| 111 | 		<dict> | |
| 112 | 			<key>match</key> | |
| 113 | 			<string>\b([1-9]+[0-9]*|0)</string> | |
| 114 | 			<key>name</key> | |
| 115 | 			<string>constant.numeric.integer.decimal.python</string> | |
| 116 | 		</dict> | |
| 117 | 		<dict> | |
| 118 | 			<key>match</key> | |
| 119 | 			<string>\b(None|True|False|Ellipsis|NotImplemented|__debug__)\b</string> | |
| 120 | 			<key>name</key> | |
| 121 | 			<string>constant.language.python</string> | |
| 122 | 		</dict> | |
| 123 | 		<dict> | |
| 124 | 			<key>match</key> | |
| 125 | 			<string>\b(global|nonlocal)\b</string> | |
| 126 | 			<key>name</key> | |
| 127 | 			<string>storage.modifier.$1.python</string> | |
| 128 | 		</dict> | |
| 129 | 		<dict> | |
| 130 | 			<key>match</key> | |
| 131 | 			<string>\b(?:(import|from|as))\b</string> | |
| 132 | 			<key>name</key> | |
| 133 | 			<string>keyword.control.import.$1.python</string> | |
| 134 | 		</dict> | |
| 135 | 		<dict> | |
| 136 | 			<key>comment</key> | |
| 137 | 			<string>keyword operators that evaluate to True or False</string> | |
| 138 | 			<key>match</key> | |
| 139 | 			<string>\b(and|in|is|not|or)\b</string> | |
| 140 | 			<key>name</key> | |
| 141 | 			<string>keyword.operator.logical.python</string> | |
| 142 | 		</dict> | |
| 143 | 		<dict> | |
| 144 | 			<key>comment</key> | |
| 145 | 			<string>keywords that do not fit into other groups.</string> | |
| 146 | 			<key>match</key> | |
| 147 | 			<string>\b(assert|del)\b</string> | |
| 148 | 			<key>name</key> | |
| 149 | 			<string>keyword.other.python</string> | |
| 150 | 		</dict> | |
| 151 | 		<dict> | |
| 152 | 			<key>match</key> | |
| 153 | 			<string>&lt;&gt;</string> | |
| 154 | 			<key>name</key> | |
| 155 | 			<string>invalid.deprecated.operator.python</string> | |
| 156 | 		</dict> | |
| 157 | 		<dict> | |
| 158 | 			<key>match</key> | |
| 159 | 			<string>(?&lt;!\.)(apply|buffer|coerce|intern)\s*(?=\()</string> | |
| 160 | 			<key>name</key> | |
| 161 | 			<string>invalid.deprecated.function.python</string> | |
| 162 | 		</dict> | |
| 163 | 		<dict> | |
| 164 | 			<key>match</key> | |
| 165 | 			<string>&lt;\=|&gt;\=|\=\=|&lt;|&gt;|\!\=</string> | |
| 166 | 			<key>name</key> | |
| 167 | 			<string>keyword.operator.comparison.python</string> | |
| 168 | 		</dict> | |
| 169 | 		<dict> | |
| 170 | 			<key>match</key> | |
| 171 | 			<string>\+\=|-\=|\*\=|/\=|//\=|%\=|&amp;\=|\|\=|\^\=|&gt;&gt;\=|&lt;&lt;\=|\*\*\=|@\=</string> | |
| 172 | 			<key>name</key> | |
| 173 | 			<string>keyword.operator.assignment.augmented.python</string> | |
| 174 | 		</dict> | |
| 175 | 		<dict> | |
| 176 | 			<key>match</key> | |
| 177 | 			<string>\+|\-|\*|\*\*|/|//|%|&lt;&lt;|&gt;&gt;|&amp;|\||\^|~|(?!^)@</string> | |
| 178 | 			<key>name</key> | |
| 179 | 			<string>keyword.operator.arithmetic.python</string> | |
| 180 | 		</dict> | |
| 181 | 		<dict> | |
| 182 | 			<key>match</key> | |
| 183 | 			<string>\=</string> | |
| 184 | 			<key>name</key> | |
| 185 | 			<string>keyword.operator.assignment.python</string> | |
| 186 | 		</dict> | |
| 187 | 		<dict> | |
| 188 | 			<key>begin</key> | |
| 189 | 			<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\:)</string> | |
| 190 | 			<key>beginCaptures</key> | |
| 191 | 			<dict> | |
| 192 | 				<key>1</key> | |
| 193 | 				<dict> | |
| 194 | 					<key>name</key> | |
| 195 | 					<string>storage.type.class.python</string> | |
| 196 | 				</dict> | |
| 197 | 			</dict> | |
| 198 | 			<key>contentName</key> | |
| 199 | 			<string>entity.name.type.class.python</string> | |
| 200 | 			<key>end</key> | |
| 201 | 			<string>\s*(:)</string> | |
| 202 | 			<key>endCaptures</key> | |
| 203 | 			<dict> | |
| 204 | 				<key>1</key> | |
| 205 | 				<dict> | |
| 206 | 					<key>name</key> | |
| 207 | 					<string>punctuation.section.class.begin.python</string> | |
| 208 | 				</dict> | |
| 209 | 			</dict> | |
| 210 | 			<key>name</key> | |
| 211 | 			<string>meta.class.old-style.python</string> | |
| 212 | 			<key>patterns</key> | |
| 213 | 			<array> | |
| 214 | 				<dict> | |
| 215 | 					<key>include</key> | |
| 216 | 					<string>#entity_name_class</string> | |
| 217 | 				</dict> | |
| 218 | 			</array> | |
| 219 | 		</dict> | |
| 220 | 		<dict> | |
| 221 | 			<key>begin</key> | |
| 222 | 			<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\()</string> | |
| 223 | 			<key>beginCaptures</key> | |
| 224 | 			<dict> | |
| 225 | 				<key>1</key> | |
| 226 | 				<dict> | |
| 227 | 					<key>name</key> | |
| 228 | 					<string>storage.type.class.python</string> | |
| 229 | 				</dict> | |
| 230 | 			</dict> | |
| 231 | 			<key>end</key> | |
| 232 | 			<string>(\))\s*(?:(\:)|(.*$\n?))</string> | |
| 233 | 			<key>endCaptures</key> | |
| 234 | 			<dict> | |
| 235 | 				<key>1</key> | |
| 236 | 				<dict> | |
| 237 | 					<key>name</key> | |
| 238 | 					<string>punctuation.definition.inheritance.end.python</string> | |
| 239 | 				</dict> | |
| 240 | 				<key>2</key> | |
| 241 | 				<dict> | |
| 242 | 					<key>name</key> | |
| 243 | 					<string>punctuation.section.class.begin.python</string> | |
| 244 | 				</dict> | |
| 245 | 				<key>3</key> | |
| 246 | 				<dict> | |
| 247 | 					<key>name</key> | |
| 248 | 					<string>invalid.illegal.missing-section-begin.python</string> | |
| 249 | 				</dict> | |
| 250 | 			</dict> | |
| 251 | 			<key>name</key> | |
| 252 | 			<string>meta.class.python</string> | |
| 253 | 			<key>patterns</key> | |
| 254 | 			<array> | |
| 255 | 				<dict> | |
| 256 | 					<key>begin</key> | |
| 257 | 					<string>(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 258 | 					<key>contentName</key> | |
| 259 | 					<string>entity.name.type.class.python</string> | |
| 260 | 					<key>end</key> | |
| 261 | 					<string>(?![[:alnum:]_])</string> | |
| 262 | 					<key>patterns</key> | |
| 263 | 					<array> | |
| 264 | 						<dict> | |
| 265 | 							<key>include</key> | |
| 266 | 							<string>#entity_name_class</string> | |
| 267 | 						</dict> | |
| 268 | 					</array> | |
| 269 | 				</dict> | |
| 270 | 				<dict> | |
| 271 | 					<key>begin</key> | |
| 272 | 					<string>(\()</string> | |
| 273 | 					<key>beginCaptures</key> | |
| 274 | 					<dict> | |
| 275 | 						<key>1</key> | |
| 276 | 						<dict> | |
| 277 | 							<key>name</key> | |
| 278 | 							<string>punctuation.definition.inheritance.begin.python</string> | |
| 279 | 						</dict> | |
| 280 | 					</dict> | |
| 281 | 					<key>contentName</key> | |
| 282 | 					<string>meta.class.inheritance.python</string> | |
| 283 | 					<key>end</key> | |
| 284 | 					<string>(?=\)|:)</string> | |
| 285 | 					<key>patterns</key> | |
| 286 | 					<array> | |
| 287 | 						<dict> | |
| 288 | 							<key>begin</key> | |
| 289 | 							<string>(?&lt;=\(|,)\s*</string> | |
| 290 | 							<key>contentName</key> | |
| 291 | 							<string>entity.other.inherited-class.python</string> | |
| 292 | 							<key>end</key> | |
| 293 | 							<string>\s*(?:(,)|(?=\)))</string> | |
| 294 | 							<key>endCaptures</key> | |
| 295 | 							<dict> | |
| 296 | 								<key>1</key> | |
| 297 | 								<dict> | |
| 298 | 									<key>name</key> | |
| 299 | 									<string>punctuation.separator.inheritance.python</string> | |
| 300 | 								</dict> | |
| 301 | 							</dict> | |
| 302 | 							<key>patterns</key> | |
| 303 | 							<array> | |
| 304 | 								<dict> | |
| 305 | 									<key>include</key> | |
| 306 | 									<string>$self</string> | |
| 307 | 								</dict> | |
| 308 | 							</array> | |
| 309 | 						</dict> | |
| 310 | 					</array> | |
| 311 | 				</dict> | |
| 312 | 			</array> | |
| 313 | 		</dict> | |
| 314 | 		<dict> | |
| 315 | 			<key>begin</key> | |
| 316 | 			<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 317 | 			<key>beginCaptures</key> | |
| 318 | 			<dict> | |
| 319 | 				<key>1</key> | |
| 320 | 				<dict> | |
| 321 | 					<key>name</key> | |
| 322 | 					<string>storage.type.class.python</string> | |
| 323 | 				</dict> | |
| 324 | 			</dict> | |
| 325 | 			<key>end</key> | |
| 326 | 			<string>(\()|(\s*$\n?|#.*$\n?)</string> | |
| 327 | 			<key>endCaptures</key> | |
| 328 | 			<dict> | |
| 329 | 				<key>1</key> | |
| 330 | 				<dict> | |
| 331 | 					<key>name</key> | |
| 332 | 					<string>punctuation.definition.inheritance.begin.python</string> | |
| 333 | 				</dict> | |
| 334 | 				<key>2</key> | |
| 335 | 				<dict> | |
| 336 | 					<key>name</key> | |
| 337 | 					<string>invalid.illegal.missing-inheritance.python</string> | |
| 338 | 				</dict> | |
| 339 | 			</dict> | |
| 340 | 			<key>name</key> | |
| 341 | 			<string>meta.class.python</string> | |
| 342 | 			<key>patterns</key> | |
| 343 | 			<array> | |
| 344 | 				<dict> | |
| 345 | 					<key>begin</key> | |
| 346 | 					<string>(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 347 | 					<key>contentName</key> | |
| 348 | 					<string>entity.name.type.class.python</string> | |
| 349 | 					<key>end</key> | |
| 350 | 					<string>(?![[:alnum:]_])</string> | |
| 351 | 					<key>patterns</key> | |
| 352 | 					<array> | |
| 353 | 						<dict> | |
| 354 | 							<key>include</key> | |
| 355 | 							<string>#entity_name_function</string> | |
| 356 | 						</dict> | |
| 357 | 					</array> | |
| 358 | 				</dict> | |
| 359 | 			</array> | |
| 360 | 		</dict> | |
| 361 | 		<dict> | |
| 362 | 			<key>begin</key> | |
| 363 | 			<string>\s*(?:(async)\s+)?(def)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\()</string> | |
| 364 | 			<key>beginCaptures</key> | |
| 365 | 			<dict> | |
| 366 | 				<key>1</key> | |
| 367 | 				<dict> | |
| 368 | 					<key>name</key> | |
| 369 | 					<string>storage.modifier.async.python</string> | |
| 370 | 				</dict> | |
| 371 | 				<key>2</key> | |
| 372 | 				<dict> | |
| 373 | 					<key>name</key> | |
| 374 | 					<string>storage.type.function.python</string> | |
| 375 | 				</dict> | |
| 376 | 			</dict> | |
| 377 | 			<key>end</key> | |
| 378 | 			<string>(\:)</string> | |
| 379 | 			<key>endCaptures</key> | |
| 380 | 			<dict> | |
| 381 | 				<key>1</key> | |
| 382 | 				<dict> | |
| 383 | 					<key>name</key> | |
| 384 | 					<string>punctuation.section.function.begin.python</string> | |
| 385 | 				</dict> | |
| 386 | 			</dict> | |
| 387 | 			<key>name</key> | |
| 388 | 			<string>meta.function.python</string> | |
| 389 | 			<key>patterns</key> | |
| 390 | 			<array> | |
| 391 | 				<dict> | |
| 392 | 					<key>begin</key> | |
| 393 | 					<string>(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 394 | 					<key>contentName</key> | |
| 395 | 					<string>entity.name.function.python</string> | |
| 396 | 					<key>end</key> | |
| 397 | 					<string>(?![[:alnum:]_])</string> | |
| 398 | 					<key>patterns</key> | |
| 399 | 					<array> | |
| 400 | 						<dict> | |
| 401 | 							<key>include</key> | |
| 402 | 							<string>#entity_name_function</string> | |
| 403 | 						</dict> | |
| 404 | 					</array> | |
| 405 | 				</dict> | |
| 406 | 				<dict> | |
| 407 | 					<key>begin</key> | |
| 408 | 					<string>(\()</string> | |
| 409 | 					<key>beginCaptures</key> | |
| 410 | 					<dict> | |
| 411 | 						<key>1</key> | |
| 412 | 						<dict> | |
| 413 | 							<key>name</key> | |
| 414 | 							<string>punctuation.definition.parameters.begin.python</string> | |
| 415 | 						</dict> | |
| 416 | 					</dict> | |
| 417 | 					<key>contentName</key> | |
| 418 | 					<string>meta.function.parameters.python</string> | |
| 419 | 					<key>end</key> | |
| 420 | 					<string>(?=\)\s*(?:\:|-\&gt;))</string> | |
| 421 | 					<key>patterns</key> | |
| 422 | 					<array> | |
| 423 | 						<dict> | |
| 424 | 							<key>include</key> | |
| 425 | 							<string>#annotated_arguments</string> | |
| 426 | 						</dict> | |
| 427 | 						<dict> | |
| 428 | 							<key>include</key> | |
| 429 | 							<string>#keyword_arguments</string> | |
| 430 | 						</dict> | |
| 431 | 						<dict> | |
| 432 | 							<key>include</key> | |
| 433 | 							<string>#comment</string> | |
| 434 | 						</dict> | |
| 435 | 						<dict> | |
| 436 | 							<key>captures</key> | |
| 437 | 							<dict> | |
| 438 | 								<key>1</key> | |
| 439 | 								<dict> | |
| 440 | 									<key>name</key> | |
| 441 | 									<string>variable.parameter.function.language.python</string> | |
| 442 | 								</dict> | |
| 443 | 								<key>2</key> | |
| 444 | 								<dict> | |
| 445 | 									<key>name</key> | |
| 446 | 									<string>variable.parameter.function.python</string> | |
| 447 | 								</dict> | |
| 448 | 								<key>3</key> | |
| 449 | 								<dict> | |
| 450 | 									<key>name</key> | |
| 451 | 									<string>punctuation.separator.parameters.python</string> | |
| 452 | 								</dict> | |
| 453 | 							</dict> | |
| 454 | 							<key>match</key> | |
| 455 | 							<string>\b(?:(self|cls)|([[:alpha:]_][[:alnum:]_]*))\s*(?:(,)|(?=[\n\)]))</string> | |
| 456 | 						</dict> | |
| 457 | 					</array> | |
| 458 | 				</dict> | |
| 459 | 				<dict> | |
| 460 | 					<key>begin</key> | |
| 461 | 					<string>(\))\s*(\-&gt;)</string> | |
| 462 | 					<key>beginCaptures</key> | |
| 463 | 					<dict> | |
| 464 | 						<key>1</key> | |
| 465 | 						<dict> | |
| 466 | 							<key>name</key> | |
| 467 | 							<string>punctuation.definition.parameters.end.python</string> | |
| 468 | 						</dict> | |
| 469 | 						<key>2</key> | |
| 470 | 						<dict> | |
| 471 | 							<key>name</key> | |
| 472 | 							<string>punctuation.separator.annotation.result.python</string> | |
| 473 | 						</dict> | |
| 474 | 					</dict> | |
| 475 | 					<key>end</key> | |
| 476 | 					<string>(?=\:)</string> | |
| 477 | 					<key>patterns</key> | |
| 478 | 					<array> | |
| 479 | 						<dict> | |
| 480 | 							<key>include</key> | |
| 481 | 							<string>$self</string> | |
| 482 | 						</dict> | |
| 483 | 					</array> | |
| 484 | 				</dict> | |
| 485 | 			</array> | |
| 486 | 		</dict> | |
| 487 | 		<dict> | |
| 488 | 			<key>begin</key> | |
| 489 | 			<string>\s*(?:(async)\s+)?(def)\s+(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 490 | 			<key>beginCaptures</key> | |
| 491 | 			<dict> | |
| 492 | 				<key>1</key> | |
| 493 | 				<dict> | |
| 494 | 					<key>name</key> | |
| 495 | 					<string>storage.modifier.async.python</string> | |
| 496 | 				</dict> | |
| 497 | 				<key>2</key> | |
| 498 | 				<dict> | |
| 499 | 					<key>name</key> | |
| 500 | 					<string>storage.type.function.python</string> | |
| 501 | 				</dict> | |
| 502 | 			</dict> | |
| 503 | 			<key>end</key> | |
| 504 | 			<string>(\()|\s*($\n?|#.*$\n?)</string> | |
| 505 | 			<key>endCaptures</key> | |
| 506 | 			<dict> | |
| 507 | 				<key>1</key> | |
| 508 | 				<dict> | |
| 509 | 					<key>name</key> | |
| 510 | 					<string>punctuation.definition.parameters.begin.python</string> | |
| 511 | 				</dict> | |
| 512 | 				<key>2</key> | |
| 513 | 				<dict> | |
| 514 | 					<key>name</key> | |
| 515 | 					<string>invalid.illegal.missing-parameters.python</string> | |
| 516 | 				</dict> | |
| 517 | 			</dict> | |
| 518 | 			<key>name</key> | |
| 519 | 			<string>meta.function.python</string> | |
| 520 | 			<key>patterns</key> | |
| 521 | 			<array> | |
| 522 | 				<dict> | |
| 523 | 					<key>begin</key> | |
| 524 | 					<string>(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 525 | 					<key>contentName</key> | |
| 526 | 					<string>entity.name.function.python</string> | |
| 527 | 					<key>end</key> | |
| 528 | 					<string>(?![[:alnum:]_])</string> | |
| 529 | 					<key>patterns</key> | |
| 530 | 					<array> | |
| 531 | 						<dict> | |
| 532 | 							<key>include</key> | |
| 533 | 							<string>#entity_name_function</string> | |
| 534 | 						</dict> | |
| 535 | 					</array> | |
| 536 | 				</dict> | |
| 537 | 			</array> | |
| 538 | 		</dict> | |
| 539 | 		<dict> | |
| 540 | 			<key>captures</key> | |
| 541 | 			<dict> | |
| 542 | 				<key>1</key> | |
| 543 | 				<dict> | |
| 544 | 					<key>name</key> | |
| 545 | 					<string>storage.modifier.async.python</string> | |
| 546 | 				</dict> | |
| 547 | 				<key>2</key> | |
| 548 | 				<dict> | |
| 549 | 					<key>name</key> | |
| 550 | 					<string>storage.type.function.python</string> | |
| 551 | 				</dict> | |
| 552 | 				<key>3</key> | |
| 553 | 				<dict> | |
| 554 | 					<key>name</key> | |
| 555 | 					<string>storage.type.function.python</string> | |
| 556 | 				</dict> | |
| 557 | 			</dict> | |
| 558 | 			<key>match</key> | |
| 559 | 			<string>\b(?:(?:(async)\s+)?(def)|(lambda))\b</string> | |
| 560 | 		</dict> | |
| 561 | 		<dict> | |
| 562 | 			<key>comment</key> | |
| 563 | 			<string>Keywords that delimit flow blocks or alter flow from within a | |
| 564 | 					 block. | |
| 565 | ||
| 566 | 					 This block should be matched *after* meta.function.python to | |
| 567 | 					 let 'async def' be matched *first*. | |
| 568 | 					 </string> | |
| 569 | 			<key>match</key> | |
| 570 | 			<string>(?x) \b( | |
| 571 | 						async | await | break | continue | elif | else | except | finally | for | | |
| 572 | 						if | pass | raise | return | try | while | with | | |
| 573 | 						(yield(?:\s+from)?) | |
| 574 | 					)\b | |
| 575 | 					</string> | |
| 576 | 			<key>name</key> | |
| 577 | 			<string>keyword.control.flow.python</string> | |
| 578 | 		</dict> | |
| 579 | 		<dict> | |
| 580 | 			<key>begin</key> | |
| 581 | 			<string>(lambda)(?=\s+|:)</string> | |
| 582 | 			<key>beginCaptures</key> | |
| 583 | 			<dict> | |
| 584 | 				<key>1</key> | |
| 585 | 				<dict> | |
| 586 | 					<key>name</key> | |
| 587 | 					<string>storage.type.function.inline.python</string> | |
| 588 | 				</dict> | |
| 589 | 			</dict> | |
| 590 | 			<key>end</key> | |
| 591 | 			<string>(\:)</string> | |
| 592 | 			<key>endCaptures</key> | |
| 593 | 			<dict> | |
| 594 | 				<key>1</key> | |
| 595 | 				<dict> | |
| 596 | 					<key>name</key> | |
| 597 | 					<string>punctuation.definition.parameters.end.python</string> | |
| 598 | 				</dict> | |
| 599 | 				<key>2</key> | |
| 600 | 				<dict> | |
| 601 | 					<key>name</key> | |
| 602 | 					<string>punctuation.section.function.begin.python</string> | |
| 603 | 				</dict> | |
| 604 | 				<key>3</key> | |
| 605 | 				<dict> | |
| 606 | 					<key>name</key> | |
| 607 | 					<string>invalid.illegal.missing-section-begin.python</string> | |
| 608 | 				</dict> | |
| 609 | 			</dict> | |
| 610 | 			<key>name</key> | |
| 611 | 			<string>meta.function.inline.python</string> | |
| 612 | 			<key>patterns</key> | |
| 613 | 			<array> | |
| 614 | 				<dict> | |
| 615 | 					<key>begin</key> | |
| 616 | 					<string>\s+</string> | |
| 617 | 					<key>contentName</key> | |
| 618 | 					<string>meta.function.inline.parameters.python</string> | |
| 619 | 					<key>end</key> | |
| 620 | 					<string>(?=\:)</string> | |
| 621 | 					<key>patterns</key> | |
| 622 | 					<array> | |
| 623 | 						<dict> | |
| 624 | 							<key>include</key> | |
| 625 | 							<string>#keyword_arguments</string> | |
| 626 | 						</dict> | |
| 627 | 						<dict> | |
| 628 | 							<key>captures</key> | |
| 629 | 							<dict> | |
| 630 | 								<key>1</key> | |
| 631 | 								<dict> | |
| 632 | 									<key>name</key> | |
| 633 | 									<string>variable.parameter.function.python</string> | |
| 634 | 								</dict> | |
| 635 | 								<key>2</key> | |
| 636 | 								<dict> | |
| 637 | 									<key>name</key> | |
| 638 | 									<string>punctuation.separator.parameters.python</string> | |
| 639 | 								</dict> | |
| 640 | 							</dict> | |
| 641 | 							<key>match</key> | |
| 642 | 							<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(?:(,)|(?=[\n\)\:]))</string> | |
| 643 | 						</dict> | |
| 644 | 					</array> | |
| 645 | 				</dict> | |
| 646 | 			</array> | |
| 647 | 		</dict> | |
| 648 | 		<dict> | |
| 649 | 			<key>begin</key> | |
| 650 | 			<string>^\s*(?=@\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string> | |
| 651 | 			<key>comment</key> | |
| 652 | 			<string>a decorator may be a function call which returns a decorator.</string> | |
| 653 | 			<key>end</key> | |
| 654 | 			<string>(\))</string> | |
| 655 | 			<key>endCaptures</key> | |
| 656 | 			<dict> | |
| 657 | 				<key>1</key> | |
| 658 | 				<dict> | |
| 659 | 					<key>name</key> | |
| 660 | 					<string>punctuation.definition.arguments.end.python</string> | |
| 661 | 				</dict> | |
| 662 | 			</dict> | |
| 663 | 			<key>name</key> | |
| 664 | 			<string>meta.function.decorator.python</string> | |
| 665 | 			<key>patterns</key> | |
| 666 | 			<array> | |
| 667 | 				<dict> | |
| 668 | 					<key>begin</key> | |
| 669 | 					<string>(?=(@)\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string> | |
| 670 | 					<key>beginCaptures</key> | |
| 671 | 					<dict> | |
| 672 | 						<key>1</key> | |
| 673 | 						<dict> | |
| 674 | 							<key>name</key> | |
| 675 | 							<string>punctuation.definition.decorator.python</string> | |
| 676 | 						</dict> | |
| 677 | 					</dict> | |
| 678 | 					<key>contentName</key> | |
| 679 | 					<string>entity.name.function.decorator.python</string> | |
| 680 | 					<key>end</key> | |
| 681 | 					<string>(?=\s*\()</string> | |
| 682 | 					<key>patterns</key> | |
| 683 | 					<array> | |
| 684 | 						<dict> | |
| 685 | 							<key>include</key> | |
| 686 | 							<string>#dotted_name</string> | |
| 687 | 						</dict> | |
| 688 | 					</array> | |
| 689 | 				</dict> | |
| 690 | 				<dict> | |
| 691 | 					<key>begin</key> | |
| 692 | 					<string>(\()</string> | |
| 693 | 					<key>beginCaptures</key> | |
| 694 | 					<dict> | |
| 695 | 						<key>1</key> | |
| 696 | 						<dict> | |
| 697 | 							<key>name</key> | |
| 698 | 							<string>punctuation.definition.arguments.begin.python</string> | |
| 699 | 						</dict> | |
| 700 | 					</dict> | |
| 701 | 					<key>contentName</key> | |
| 702 | 					<string>meta.function.decorator.arguments.python</string> | |
| 703 | 					<key>end</key> | |
| 704 | 					<string>(?=\))</string> | |
| 705 | 					<key>patterns</key> | |
| 706 | 					<array> | |
| 707 | 						<dict> | |
| 708 | 							<key>include</key> | |
| 709 | 							<string>#keyword_arguments</string> | |
| 710 | 						</dict> | |
| 711 | 						<dict> | |
| 712 | 							<key>include</key> | |
| 713 | 							<string>$self</string> | |
| 714 | 						</dict> | |
| 715 | 					</array> | |
| 716 | 				</dict> | |
| 717 | 			</array> | |
| 718 | 		</dict> | |
| 719 | 		<dict> | |
| 720 | 			<key>begin</key> | |
| 721 | 			<string>^\s*(?=@\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string> | |
| 722 | 			<key>contentName</key> | |
| 723 | 			<string>entity.name.function.decorator.python</string> | |
| 724 | 			<key>end</key> | |
| 725 | 			<string>(?=\s|$\n?|#)</string> | |
| 726 | 			<key>name</key> | |
| 727 | 			<string>meta.function.decorator.python</string> | |
| 728 | 			<key>patterns</key> | |
| 729 | 			<array> | |
| 730 | 				<dict> | |
| 731 | 					<key>begin</key> | |
| 732 | 					<string>(?=(@)\s*[[:alpha:]_][[:alnum:]_]*(\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string> | |
| 733 | 					<key>beginCaptures</key> | |
| 734 | 					<dict> | |
| 735 | 						<key>1</key> | |
| 736 | 						<dict> | |
| 737 | 							<key>name</key> | |
| 738 | 							<string>punctuation.definition.decorator.python</string> | |
| 739 | 						</dict> | |
| 740 | 					</dict> | |
| 741 | 					<key>end</key> | |
| 742 | 					<string>(?=\s|$\n?|#)</string> | |
| 743 | 					<key>patterns</key> | |
| 744 | 					<array> | |
| 745 | 						<dict> | |
| 746 | 							<key>include</key> | |
| 747 | 							<string>#dotted_name</string> | |
| 748 | 						</dict> | |
| 749 | 					</array> | |
| 750 | 				</dict> | |
| 751 | 			</array> | |
| 752 | 		</dict> | |
| 753 | 		<dict> | |
| 754 | 			<key>begin</key> | |
| 755 | 			<string>(?&lt;=\)|\])\s*(\()</string> | |
| 756 | 			<key>beginCaptures</key> | |
| 757 | 			<dict> | |
| 758 | 				<key>1</key> | |
| 759 | 				<dict> | |
| 760 | 					<key>name</key> | |
| 761 | 					<string>punctuation.definition.arguments.begin.python</string> | |
| 762 | 				</dict> | |
| 763 | 			</dict> | |
| 764 | 			<key>contentName</key> | |
| 765 | 			<string>meta.function-call.arguments.python</string> | |
| 766 | 			<key>end</key> | |
| 767 | 			<string>(\))</string> | |
| 768 | 			<key>endCaptures</key> | |
| 769 | 			<dict> | |
| 770 | 				<key>1</key> | |
| 771 | 				<dict> | |
| 772 | 					<key>name</key> | |
| 773 | 					<string>punctuation.definition.arguments.end.python</string> | |
| 774 | 				</dict> | |
| 775 | 			</dict> | |
| 776 | 			<key>name</key> | |
| 777 | 			<string>meta.function-call.python</string> | |
| 778 | 			<key>patterns</key> | |
| 779 | 			<array> | |
| 780 | 				<dict> | |
| 781 | 					<key>include</key> | |
| 782 | 					<string>#keyword_arguments</string> | |
| 783 | 				</dict> | |
| 784 | 				<dict> | |
| 785 | 					<key>include</key> | |
| 786 | 					<string>$self</string> | |
| 787 | 				</dict> | |
| 788 | 			</array> | |
| 789 | 		</dict> | |
| 790 | 		<dict> | |
| 791 | 			<key>include</key> | |
| 792 | 			<string>#builtin_types</string> | |
| 793 | 		</dict> | |
| 794 | 		<dict> | |
| 795 | 			<key>include</key> | |
| 796 | 			<string>#builtin_functions_name</string> | |
| 797 | 		</dict> | |
| 798 | 		<dict> | |
| 799 | 			<key>include</key> | |
| 800 | 			<string>#builtin_functions_call</string> | |
| 801 | 		</dict> | |
| 802 | 		<dict> | |
| 803 | 			<key>include</key> | |
| 804 | 			<string>#errors_warnings_exceptions</string> | |
| 805 | 		</dict> | |
| 806 | 		<dict> | |
| 807 | 			<key>include</key> | |
| 808 | 			<string>#magic_function_names</string> | |
| 809 | 		</dict> | |
| 810 | 		<dict> | |
| 811 | 			<key>include</key> | |
| 812 | 			<string>#magic_function_calls</string> | |
| 813 | 		</dict> | |
| 814 | 		<dict> | |
| 815 | 			<key>include</key> | |
| 816 | 			<string>#docstrings</string> | |
| 817 | 		</dict> | |
| 818 | 		<dict> | |
| 819 | 			<key>include</key> | |
| 820 | 			<string>#magic_variable_names</string> | |
| 821 | 		</dict> | |
| 822 | 		<dict> | |
| 823 | 			<key>begin</key> | |
| 824 | 			<string>\b(self|cls)\b\s*(?=(\())</string> | |
| 825 | 			<key>beginCaptures</key> | |
| 826 | 			<dict> | |
| 827 | 				<key>1</key> | |
| 828 | 				<dict> | |
| 829 | 					<key>name</key> | |
| 830 | 					<string>variable.language.python</string> | |
| 831 | 				</dict> | |
| 832 | 				<key>2</key> | |
| 833 | 				<dict> | |
| 834 | 					<key>name</key> | |
| 835 | 					<string>punctuation.definition.arguments.begin.python</string> | |
| 836 | 				</dict> | |
| 837 | 			</dict> | |
| 838 | 			<key>end</key> | |
| 839 | 			<string>(\))</string> | |
| 840 | 			<key>endCaptures</key> | |
| 841 | 			<dict> | |
| 842 | 				<key>1</key> | |
| 843 | 				<dict> | |
| 844 | 					<key>name</key> | |
| 845 | 					<string>punctuation.definition.arguments.end.python</string> | |
| 846 | 				</dict> | |
| 847 | 			</dict> | |
| 848 | 			<key>name</key> | |
| 849 | 			<string>meta.function-call.python</string> | |
| 850 | 			<key>patterns</key> | |
| 851 | 			<array> | |
| 852 | 				<dict> | |
| 853 | 					<key>begin</key> | |
| 854 | 					<string>(\()</string> | |
| 855 | 					<key>beginCaptures</key> | |
| 856 | 					<dict> | |
| 857 | 						<key>1</key> | |
| 858 | 						<dict> | |
| 859 | 							<key>name</key> | |
| 860 | 							<string>punctuation.definition.arguments.begin.python</string> | |
| 861 | 						</dict> | |
| 862 | 					</dict> | |
| 863 | 					<key>contentName</key> | |
| 864 | 					<string>meta.function-call.arguments.python</string> | |
| 865 | 					<key>end</key> | |
| 866 | 					<string>(?=(\)))</string> | |
| 867 | 					<key>endCaptures</key> | |
| 868 | 					<dict> | |
| 869 | 						<key>1</key> | |
| 870 | 						<dict> | |
| 871 | 							<key>name</key> | |
| 872 | 							<string>punctuation.definition.arguments.end.python</string> | |
| 873 | 						</dict> | |
| 874 | 					</dict> | |
| 875 | 					<key>patterns</key> | |
| 876 | 					<array> | |
| 877 | 						<dict> | |
| 878 | 							<key>include</key> | |
| 879 | 							<string>#keyword_arguments</string> | |
| 880 | 						</dict> | |
| 881 | 						<dict> | |
| 882 | 							<key>include</key> | |
| 883 | 							<string>$self</string> | |
| 884 | 						</dict> | |
| 885 | 					</array> | |
| 886 | 				</dict> | |
| 887 | 			</array> | |
| 888 | 		</dict> | |
| 889 | 		<dict> | |
| 890 | 			<key>include</key> | |
| 891 | 			<string>#language_variables</string> | |
| 892 | 		</dict> | |
| 893 | 		<dict> | |
| 894 | 			<key>include</key> | |
| 895 | 			<string>#generic_object_names</string> | |
| 896 | 		</dict> | |
| 897 | 		<dict> | |
| 898 | 			<key>begin</key> | |
| 899 | 			<string>(?:\.)?([[:alpha:]_][[:alnum:]_]*)\s*(?=(\())</string> | |
| 900 | 			<key>beginCaptures</key> | |
| 901 | 			<dict> | |
| 902 | 				<key>1</key> | |
| 903 | 				<dict> | |
| 904 | 					<key>name</key> | |
| 905 | 					<string>meta.function-call.generic.python</string> | |
| 906 | 				</dict> | |
| 907 | 			</dict> | |
| 908 | 			<key>end</key> | |
| 909 | 			<string>(\))</string> | |
| 910 | 			<key>endCaptures</key> | |
| 911 | 			<dict> | |
| 912 | 				<key>1</key> | |
| 913 | 				<dict> | |
| 914 | 					<key>name</key> | |
| 915 | 					<string>punctuation.definition.arguments.end.python</string> | |
| 916 | 				</dict> | |
| 917 | 			</dict> | |
| 918 | 			<key>name</key> | |
| 919 | 			<string>meta.function-call.python</string> | |
| 920 | 			<key>patterns</key> | |
| 921 | 			<array> | |
| 922 | 				<dict> | |
| 923 | 					<key>begin</key> | |
| 924 | 					<string>(\()</string> | |
| 925 | 					<key>beginCaptures</key> | |
| 926 | 					<dict> | |
| 927 | 						<key>1</key> | |
| 928 | 						<dict> | |
| 929 | 							<key>name</key> | |
| 930 | 							<string>punctuation.definition.arguments.begin.python</string> | |
| 931 | 						</dict> | |
| 932 | 					</dict> | |
| 933 | 					<key>contentName</key> | |
| 934 | 					<string>meta.function-call.arguments.python</string> | |
| 935 | 					<key>end</key> | |
| 936 | 					<string>(?=\))</string> | |
| 937 | 					<key>patterns</key> | |
| 938 | 					<array> | |
| 939 | 						<dict> | |
| 940 | 							<key>include</key> | |
| 941 | 							<string>#keyword_arguments</string> | |
| 942 | 						</dict> | |
| 943 | 						<dict> | |
| 944 | 							<key>include</key> | |
| 945 | 							<string>$self</string> | |
| 946 | 						</dict> | |
| 947 | 					</array> | |
| 948 | 				</dict> | |
| 949 | 			</array> | |
| 950 | 		</dict> | |
| 951 | 		<dict> | |
| 952 | 			<key>comment</key> | |
| 953 | 			<string>Py2 print statement that should only be matched after function calls</string> | |
| 954 | 			<key>match</key> | |
| 955 | 			<string>(?&lt;!\.)\b(print)(?=\s|$)</string> | |
| 956 | 			<key>name</key> | |
| 957 | 			<string>keyword.other.print.python</string> | |
| 958 | 		</dict> | |
| 959 | 		<dict> | |
| 960 | 			<key>begin</key> | |
| 961 | 			<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\[)</string> | |
| 962 | 			<key>end</key> | |
| 963 | 			<string>(\])</string> | |
| 964 | 			<key>endCaptures</key> | |
| 965 | 			<dict> | |
| 966 | 				<key>1</key> | |
| 967 | 				<dict> | |
| 968 | 					<key>name</key> | |
| 969 | 					<string>punctuation.definition.arguments.end.python</string> | |
| 970 | 				</dict> | |
| 971 | 			</dict> | |
| 972 | 			<key>name</key> | |
| 973 | 			<string>meta.item-access.python</string> | |
| 974 | 			<key>patterns</key> | |
| 975 | 			<array> | |
| 976 | 				<dict> | |
| 977 | 					<key>begin</key> | |
| 978 | 					<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\[)</string> | |
| 979 | 					<key>end</key> | |
| 980 | 					<string>(?=\s*\[)</string> | |
| 981 | 					<key>patterns</key> | |
| 982 | 					<array> | |
| 983 | 						<dict> | |
| 984 | 							<key>include</key> | |
| 985 | 							<string>#dotted_name</string> | |
| 986 | 						</dict> | |
| 987 | 					</array> | |
| 988 | 				</dict> | |
| 989 | 				<dict> | |
| 990 | 					<key>begin</key> | |
| 991 | 					<string>(\[)</string> | |
| 992 | 					<key>beginCaptures</key> | |
| 993 | 					<dict> | |
| 994 | 						<key>1</key> | |
| 995 | 						<dict> | |
| 996 | 							<key>name</key> | |
| 997 | 							<string>punctuation.definition.arguments.begin.python</string> | |
| 998 | 						</dict> | |
| 999 | 					</dict> | |
| 1000 | 					<key>contentName</key> | |
| 1001 | 					<string>meta.item-access.arguments.python</string> | |
| 1002 | 					<key>end</key> | |
| 1003 | 					<string>(?=\])</string> | |
| 1004 | 					<key>patterns</key> | |
| 1005 | 					<array> | |
| 1006 | 						<dict> | |
| 1007 | 							<key>include</key> | |
| 1008 | 							<string>$self</string> | |
| 1009 | 						</dict> | |
| 1010 | 					</array> | |
| 1011 | 				</dict> | |
| 1012 | 				<dict> | |
| 1013 | 					<key>begin</key> | |
| 1014 | 					<string>\G</string> | |
| 1015 | 					<key>end</key> | |
| 1016 | 					<string>(?=\[)</string> | |
| 1017 | 					<key>patterns</key> | |
| 1018 | 					<array> | |
| 1019 | 						<dict> | |
| 1020 | 							<key>include</key> | |
| 1021 | 							<string>#dotted_name</string> | |
| 1022 | 						</dict> | |
| 1023 | 					</array> | |
| 1024 | 				</dict> | |
| 1025 | 			</array> | |
| 1026 | 		</dict> | |
| 1027 | 		<dict> | |
| 1028 | 			<key>captures</key> | |
| 1029 | 			<dict> | |
| 1030 | 				<key>1</key> | |
| 1031 | 				<dict> | |
| 1032 | 					<key>name</key> | |
| 1033 | 					<string>storage.type.class.python</string> | |
| 1034 | 				</dict> | |
| 1035 | 			</dict> | |
| 1036 | 			<key>match</key> | |
| 1037 | 			<string>\b(class)\b</string> | |
| 1038 | 		</dict> | |
| 1039 | 		<dict> | |
| 1040 | 			<key>include</key> | |
| 1041 | 			<string>#line_continuation</string> | |
| 1042 | 		</dict> | |
| 1043 | 		<dict> | |
| 1044 | 			<key>include</key> | |
| 1045 | 			<string>#string_quoted_single</string> | |
| 1046 | 		</dict> | |
| 1047 | 		<dict> | |
| 1048 | 			<key>include</key> | |
| 1049 | 			<string>#string_quoted_double</string> | |
| 1050 | 		</dict> | |
| 1051 | 		<dict> | |
| 1052 | 			<key>include</key> | |
| 1053 | 			<string>#dotted_name</string> | |
| 1054 | 		</dict> | |
| 1055 | 		<dict> | |
| 1056 | 			<key>begin</key> | |
| 1057 | 			<string>(\()</string> | |
| 1058 | 			<key>end</key> | |
| 1059 | 			<string>(\))</string> | |
| 1060 | 			<key>patterns</key> | |
| 1061 | 			<array> | |
| 1062 | 				<dict> | |
| 1063 | 					<key>include</key> | |
| 1064 | 					<string>$self</string> | |
| 1065 | 				</dict> | |
| 1066 | 			</array> | |
| 1067 | 		</dict> | |
| 1068 | 		<dict> | |
| 1069 | 			<key>captures</key> | |
| 1070 | 			<dict> | |
| 1071 | 				<key>1</key> | |
| 1072 | 				<dict> | |
| 1073 | 					<key>name</key> | |
| 1074 | 					<string>punctuation.definition.list.begin.python</string> | |
| 1075 | 				</dict> | |
| 1076 | 				<key>2</key> | |
| 1077 | 				<dict> | |
| 1078 | 					<key>name</key> | |
| 1079 | 					<string>meta.empty-list.python</string> | |
| 1080 | 				</dict> | |
| 1081 | 				<key>3</key> | |
| 1082 | 				<dict> | |
| 1083 | 					<key>name</key> | |
| 1084 | 					<string>punctuation.definition.list.end.python</string> | |
| 1085 | 				</dict> | |
| 1086 | 			</dict> | |
| 1087 | 			<key>match</key> | |
| 1088 | 			<string>(\[)(\s*(\]))\b</string> | |
| 1089 | 		</dict> | |
| 1090 | 		<dict> | |
| 1091 | 			<key>begin</key> | |
| 1092 | 			<string>(\[)</string> | |
| 1093 | 			<key>beginCaptures</key> | |
| 1094 | 			<dict> | |
| 1095 | 				<key>1</key> | |
| 1096 | 				<dict> | |
| 1097 | 					<key>name</key> | |
| 1098 | 					<string>punctuation.definition.list.begin.python</string> | |
| 1099 | 				</dict> | |
| 1100 | 			</dict> | |
| 1101 | 			<key>end</key> | |
| 1102 | 			<string>(\])</string> | |
| 1103 | 			<key>endCaptures</key> | |
| 1104 | 			<dict> | |
| 1105 | 				<key>1</key> | |
| 1106 | 				<dict> | |
| 1107 | 					<key>name</key> | |
| 1108 | 					<string>punctuation.definition.list.end.python</string> | |
| 1109 | 				</dict> | |
| 1110 | 			</dict> | |
| 1111 | 			<key>name</key> | |
| 1112 | 			<string>meta.structure.list.python</string> | |
| 1113 | 			<key>patterns</key> | |
| 1114 | 			<array> | |
| 1115 | 				<dict> | |
| 1116 | 					<key>begin</key> | |
| 1117 | 					<string>(?&lt;=\[|\,)\s*(?![\],])</string> | |
| 1118 | 					<key>contentName</key> | |
| 1119 | 					<string>meta.structure.list.item.python</string> | |
| 1120 | 					<key>end</key> | |
| 1121 | 					<string>\s*(?:(,)|(?=\]))</string> | |
| 1122 | 					<key>endCaptures</key> | |
| 1123 | 					<dict> | |
| 1124 | 						<key>1</key> | |
| 1125 | 						<dict> | |
| 1126 | 							<key>name</key> | |
| 1127 | 							<string>punctuation.separator.list.python</string> | |
| 1128 | 						</dict> | |
| 1129 | 					</dict> | |
| 1130 | 					<key>patterns</key> | |
| 1131 | 					<array> | |
| 1132 | 						<dict> | |
| 1133 | 							<key>include</key> | |
| 1134 | 							<string>$self</string> | |
| 1135 | 						</dict> | |
| 1136 | 					</array> | |
| 1137 | 				</dict> | |
| 1138 | 			</array> | |
| 1139 | 		</dict> | |
| 1140 | 		<dict> | |
| 1141 | 			<key>captures</key> | |
| 1142 | 			<dict> | |
| 1143 | 				<key>1</key> | |
| 1144 | 				<dict> | |
| 1145 | 					<key>name</key> | |
| 1146 | 					<string>punctuation.definition.tuple.begin.python</string> | |
| 1147 | 				</dict> | |
| 1148 | 				<key>2</key> | |
| 1149 | 				<dict> | |
| 1150 | 					<key>name</key> | |
| 1151 | 					<string>meta.empty-tuple.python</string> | |
| 1152 | 				</dict> | |
| 1153 | 				<key>3</key> | |
| 1154 | 				<dict> | |
| 1155 | 					<key>name</key> | |
| 1156 | 					<string>punctuation.definition.tuple.end.python</string> | |
| 1157 | 				</dict> | |
| 1158 | 			</dict> | |
| 1159 | 			<key>match</key> | |
| 1160 | 			<string>(\()(\s*(\)))</string> | |
| 1161 | 			<key>name</key> | |
| 1162 | 			<string>meta.structure.tuple.python</string> | |
| 1163 | 		</dict> | |
| 1164 | 		<dict> | |
| 1165 | 			<key>captures</key> | |
| 1166 | 			<dict> | |
| 1167 | 				<key>1</key> | |
| 1168 | 				<dict> | |
| 1169 | 					<key>name</key> | |
| 1170 | 					<string>punctuation.definition.dictionary.begin.python</string> | |
| 1171 | 				</dict> | |
| 1172 | 				<key>2</key> | |
| 1173 | 				<dict> | |
| 1174 | 					<key>name</key> | |
| 1175 | 					<string>meta.empty-dictionary.python</string> | |
| 1176 | 				</dict> | |
| 1177 | 				<key>3</key> | |
| 1178 | 				<dict> | |
| 1179 | 					<key>name</key> | |
| 1180 | 					<string>punctuation.definition.dictionary.end.python</string> | |
| 1181 | 				</dict> | |
| 1182 | 			</dict> | |
| 1183 | 			<key>match</key> | |
| 1184 | 			<string>(\{)(\s*(\}))</string> | |
| 1185 | 			<key>name</key> | |
| 1186 | 			<string>meta.structure.dictionary.python</string> | |
| 1187 | 		</dict> | |
| 1188 | 		<dict> | |
| 1189 | 			<key>begin</key> | |
| 1190 | 			<string>(\{)</string> | |
| 1191 | 			<key>beginCaptures</key> | |
| 1192 | 			<dict> | |
| 1193 | 				<key>1</key> | |
| 1194 | 				<dict> | |
| 1195 | 					<key>name</key> | |
| 1196 | 					<string>punctuation.definition.dictionary.begin.python</string> | |
| 1197 | 				</dict> | |
| 1198 | 			</dict> | |
| 1199 | 			<key>end</key> | |
| 1200 | 			<string>(\})</string> | |
| 1201 | 			<key>endCaptures</key> | |
| 1202 | 			<dict> | |
| 1203 | 				<key>1</key> | |
| 1204 | 				<dict> | |
| 1205 | 					<key>name</key> | |
| 1206 | 					<string>punctuation.definition.dictionary.end.python</string> | |
| 1207 | 				</dict> | |
| 1208 | 			</dict> | |
| 1209 | 			<key>name</key> | |
| 1210 | 			<string>meta.structure.dictionary.python</string> | |
| 1211 | 			<key>patterns</key> | |
| 1212 | 			<array> | |
| 1213 | 				<dict> | |
| 1214 | 					<key>begin</key> | |
| 1215 | 					<string>(?&lt;=\{|\,|^)\s*(?![\},])</string> | |
| 1216 | 					<key>contentName</key> | |
| 1217 | 					<string>meta.structure.dictionary.key.python</string> | |
| 1218 | 					<key>end</key> | |
| 1219 | 					<string>\s*(?:(?=\})|(\:))</string> | |
| 1220 | 					<key>endCaptures</key> | |
| 1221 | 					<dict> | |
| 1222 | 						<key>1</key> | |
| 1223 | 						<dict> | |
| 1224 | 							<key>name</key> | |
| 1225 | 							<string>punctuation.separator.valuepair.dictionary.python</string> | |
| 1226 | 						</dict> | |
| 1227 | 					</dict> | |
| 1228 | 					<key>patterns</key> | |
| 1229 | 					<array> | |
| 1230 | 						<dict> | |
| 1231 | 							<key>include</key> | |
| 1232 | 							<string>$self</string> | |
| 1233 | 						</dict> | |
| 1234 | 					</array> | |
| 1235 | 				</dict> | |
| 1236 | 				<dict> | |
| 1237 | 					<key>begin</key> | |
| 1238 | 					<string>(?&lt;=\:|^)\s*</string> | |
| 1239 | 					<key>contentName</key> | |
| 1240 | 					<string>meta.structure.dictionary.value.python</string> | |
| 1241 | 					<key>end</key> | |
| 1242 | 					<string>\s*(?:(?=\})|(,))</string> | |
| 1243 | 					<key>endCaptures</key> | |
| 1244 | 					<dict> | |
| 1245 | 						<key>1</key> | |
| 1246 | 						<dict> | |
| 1247 | 							<key>name</key> | |
| 1248 | 							<string>punctuation.separator.dictionary.python</string> | |
| 1249 | 						</dict> | |
| 1250 | 					</dict> | |
| 1251 | 					<key>patterns</key> | |
| 1252 | 					<array> | |
| 1253 | 						<dict> | |
| 1254 | 							<key>include</key> | |
| 1255 | 							<string>$self</string> | |
| 1256 | 						</dict> | |
| 1257 | 					</array> | |
| 1258 | 				</dict> | |
| 1259 | 			</array> | |
| 1260 | 		</dict> | |
| 1261 | 	</array> | |
| 1262 | 	<key>repository</key> | |
| 1263 | 	<dict> | |
| 1264 | 		<key>annotated_arguments</key> | |
| 1265 | 		<dict> | |
| 1266 | 			<key>begin</key> | |
| 1267 | 			<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(:)|(?=\()</string> | |
| 1268 | 			<key>beginCaptures</key> | |
| 1269 | 			<dict> | |
| 1270 | 				<key>1</key> | |
| 1271 | 				<dict> | |
| 1272 | 					<key>name</key> | |
| 1273 | 					<string>variable.parameter.function.python</string> | |
| 1274 | 				</dict> | |
| 1275 | 				<key>2</key> | |
| 1276 | 				<dict> | |
| 1277 | 					<key>name</key> | |
| 1278 | 					<string>punctuation.separator.annotation.python</string> | |
| 1279 | 				</dict> | |
| 1280 | 			</dict> | |
| 1281 | 			<key>end</key> | |
| 1282 | 			<string>\s*(?:(,)|(?=$\n?|[\)\:]))</string> | |
| 1283 | 			<key>endCaptures</key> | |
| 1284 | 			<dict> | |
| 1285 | 				<key>1</key> | |
| 1286 | 				<dict> | |
| 1287 | 					<key>name</key> | |
| 1288 | 					<string>punctuation.separator.parameters.python</string> | |
| 1289 | 				</dict> | |
| 1290 | 			</dict> | |
| 1291 | 			<key>patterns</key> | |
| 1292 | 			<array> | |
| 1293 | 				<dict> | |
| 1294 | 					<key>include</key> | |
| 1295 | 					<string>#annotated_group</string> | |
| 1296 | 				</dict> | |
| 1297 | 				<dict> | |
| 1298 | 					<key>match</key> | |
| 1299 | 					<string>=</string> | |
| 1300 | 					<key>name</key> | |
| 1301 | 					<string>keyword.operator.assignment.python</string> | |
| 1302 | 				</dict> | |
| 1303 | 				<dict> | |
| 1304 | 					<key>include</key> | |
| 1305 | 					<string>$self</string> | |
| 1306 | 				</dict> | |
| 1307 | 			</array> | |
| 1308 | 		</dict> | |
| 1309 | 		<key>annotated_group</key> | |
| 1310 | 		<dict> | |
| 1311 | 			<key>begin</key> | |
| 1312 | 			<string>(\()</string> | |
| 1313 | 			<key>beginCaptures</key> | |
| 1314 | 			<dict> | |
| 1315 | 				<key>1</key> | |
| 1316 | 				<dict> | |
| 1317 | 					<key>name</key> | |
| 1318 | 					<string>punctuation.definition.parameters-group.begin.python</string> | |
| 1319 | 				</dict> | |
| 1320 | 			</dict> | |
| 1321 | 			<key>end</key> | |
| 1322 | 			<string>(\))</string> | |
| 1323 | 			<key>endCaptures</key> | |
| 1324 | 			<dict> | |
| 1325 | 				<key>1</key> | |
| 1326 | 				<dict> | |
| 1327 | 					<key>name</key> | |
| 1328 | 					<string>punctuation.definition.parameters-group.end.python</string> | |
| 1329 | 				</dict> | |
| 1330 | 			</dict> | |
| 1331 | 			<key>patterns</key> | |
| 1332 | 			<array> | |
| 1333 | 				<dict> | |
| 1334 | 					<key>begin</key> | |
| 1335 | 					<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(:)</string> | |
| 1336 | 					<key>beginCaptures</key> | |
| 1337 | 					<dict> | |
| 1338 | 						<key>1</key> | |
| 1339 | 						<dict> | |
| 1340 | 							<key>name</key> | |
| 1341 | 							<string>variable.parameter.function.python</string> | |
| 1342 | 						</dict> | |
| 1343 | 						<key>2</key> | |
| 1344 | 						<dict> | |
| 1345 | 							<key>name</key> | |
| 1346 | 							<string>punctuation.separator.annotation.python</string> | |
| 1347 | 						</dict> | |
| 1348 | 					</dict> | |
| 1349 | 					<key>end</key> | |
| 1350 | 					<string>\s*(?:(,)|(?=$\n?|\)))</string> | |
| 1351 | 					<key>endCaptures</key> | |
| 1352 | 					<dict> | |
| 1353 | 						<key>1</key> | |
| 1354 | 						<dict> | |
| 1355 | 							<key>name</key> | |
| 1356 | 							<string>punctuation.separator.parameters.python</string> | |
| 1357 | 						</dict> | |
| 1358 | 					</dict> | |
| 1359 | 					<key>patterns</key> | |
| 1360 | 					<array> | |
| 1361 | 						<dict> | |
| 1362 | 							<key>include</key> | |
| 1363 | 							<string>$self</string> | |
| 1364 | 						</dict> | |
| 1365 | 					</array> | |
| 1366 | 				</dict> | |
| 1367 | 				<dict> | |
| 1368 | 					<key>begin</key> | |
| 1369 | 					<string>\b([[:alpha:]_][[:alnum:]_]*)</string> | |
| 1370 | 					<key>beginCaptures</key> | |
| 1371 | 					<dict> | |
| 1372 | 						<key>1</key> | |
| 1373 | 						<dict> | |
| 1374 | 							<key>name</key> | |
| 1375 | 							<string>variable.parameter.function.python</string> | |
| 1376 | 						</dict> | |
| 1377 | 					</dict> | |
| 1378 | 					<key>end</key> | |
| 1379 | 					<string>\s*(?:(,)|(?=$\n?|\)))</string> | |
| 1380 | 					<key>endCaptures</key> | |
| 1381 | 					<dict> | |
| 1382 | 						<key>1</key> | |
| 1383 | 						<dict> | |
| 1384 | 							<key>name</key> | |
| 1385 | 							<string>punctuation.separator.parameters.python</string> | |
| 1386 | 						</dict> | |
| 1387 | 					</dict> | |
| 1388 | 				</dict> | |
| 1389 | 				<dict> | |
| 1390 | 					<key>include</key> | |
| 1391 | 					<string>#comment</string> | |
| 1392 | 				</dict> | |
| 1393 | 			</array> | |
| 1394 | 		</dict> | |
| 1395 | 		<key>builtin_functions_call</key> | |
| 1396 | 		<dict> | |
| 1397 | 			<key>patterns</key> | |
| 1398 | 			<array> | |
| 1399 | 				<dict> | |
| 1400 | 					<key>begin</key> | |
| 1401 | 					<string>(?x) | |
| 1402 | 							(?&lt;!\.)\b( | |
| 1403 | 								__import__ | abs | all | any | ascii | basestring | bin | bool | | |
| 1404 | 								bytearray | bytes | callable | chr | classmethod | cmp | compile | | |
| 1405 | 								complex | delattr | dict | dir | divmod | enumerate | eval | exec | | |
| 1406 | 								execfile | file | filter | float | format | frozenset | getattr | | |
| 1407 | 								globals | hasattr | hash | help | hex | id | input | int | | |
| 1408 | 								isinstance | issubclass | iter | len | list | locals | long | map | | |
| 1409 | 								max | memoryview | min | next | object | oct | open | ord | pow | | |
| 1410 | 								print | property | range | raw_input | reduce | reload | repr | | |
| 1411 | 								reversed | round | set | setattr | slice | sorted | staticmethod | | |
| 1412 | 								str | sum | super | tuple | type | unichr | unicode | vars | | |
| 1413 | 								xrange | zip) | |
| 1414 | 							\b\s*(?=\() | |
| 1415 | 							</string> | |
| 1416 | 					<key>beginCaptures</key> | |
| 1417 | 					<dict> | |
| 1418 | 						<key>1</key> | |
| 1419 | 						<dict> | |
| 1420 | 							<key>name</key> | |
| 1421 | 							<string>support.function.builtin.call.python</string> | |
| 1422 | 						</dict> | |
| 1423 | 					</dict> | |
| 1424 | 					<key>end</key> | |
| 1425 | 					<string>(\))</string> | |
| 1426 | 					<key>endCaptures</key> | |
| 1427 | 					<dict> | |
| 1428 | 						<key>1</key> | |
| 1429 | 						<dict> | |
| 1430 | 							<key>name</key> | |
| 1431 | 							<string>punctuation.definition.arguments.end.python</string> | |
| 1432 | 						</dict> | |
| 1433 | 					</dict> | |
| 1434 | 					<key>name</key> | |
| 1435 | 					<string>meta.function-call.python</string> | |
| 1436 | 					<key>patterns</key> | |
| 1437 | 					<array> | |
| 1438 | 						<dict> | |
| 1439 | 							<key>begin</key> | |
| 1440 | 							<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string> | |
| 1441 | 							<key>end</key> | |
| 1442 | 							<string>(?=\s*\()</string> | |
| 1443 | 							<key>patterns</key> | |
| 1444 | 							<array> | |
| 1445 | 								<dict> | |
| 1446 | 									<key>include</key> | |
| 1447 | 									<string>#dotted_name</string> | |
| 1448 | 								</dict> | |
| 1449 | 							</array> | |
| 1450 | 						</dict> | |
| 1451 | 						<dict> | |
| 1452 | 							<key>begin</key> | |
| 1453 | 							<string>(\()</string> | |
| 1454 | 							<key>beginCaptures</key> | |
| 1455 | 							<dict> | |
| 1456 | 								<key>1</key> | |
| 1457 | 								<dict> | |
| 1458 | 									<key>name</key> | |
| 1459 | 									<string>punctuation.definition.arguments.begin.python</string> | |
| 1460 | 								</dict> | |
| 1461 | 							</dict> | |
| 1462 | 							<key>contentName</key> | |
| 1463 | 							<string>meta.function-call.arguments.python</string> | |
| 1464 | 							<key>end</key> | |
| 1465 | 							<string>(?=\))</string> | |
| 1466 | 							<key>patterns</key> | |
| 1467 | 							<array> | |
| 1468 | 								<dict> | |
| 1469 | 									<key>include</key> | |
| 1470 | 									<string>#keyword_arguments</string> | |
| 1471 | 								</dict> | |
| 1472 | 								<dict> | |
| 1473 | 									<key>include</key> | |
| 1474 | 									<string>$self</string> | |
| 1475 | 								</dict> | |
| 1476 | 							</array> | |
| 1477 | 						</dict> | |
| 1478 | 					</array> | |
| 1479 | 				</dict> | |
| 1480 | 			</array> | |
| 1481 | 		</dict> | |
| 1482 | 		<key>builtin_functions_name</key> | |
| 1483 | 		<dict> | |
| 1484 | 			<key>match</key> | |
| 1485 | 			<string>(?x) | |
| 1486 | 					(?&lt;!\.|@) | |
| 1487 | 			 \b( | |
| 1488 | 						__import__ | abs | all | any | ascii | basestring | bin | bool | | |
| 1489 | 						bytearray | bytes | callable | chr | classmethod | cmp | compile | | |
| 1490 | 						complex | delattr | dict | dir | divmod | enumerate | eval | exec | | |
| 1491 | 						execfile | file | filter | float | format | frozenset | getattr | | |
| 1492 | 						globals | hasattr | hash | help | hex | id | input | int | | |
| 1493 | 						isinstance | issubclass | iter | len | list | locals | long | map | | |
| 1494 | 						max | memoryview | min | next | object | oct | open | ord | pow | | |
| 1495 | 						property | range | raw_input | reduce | reload | repr | | |
| 1496 | 						reversed | round | set | setattr | slice | sorted | staticmethod | | |
| 1497 | 						str | sum | super | tuple | type | unichr | unicode | vars | | |
| 1498 | 						xrange | zip) | |
| 1499 | 					\b\s*(?!(\())</string> | |
| 1500 | 			<key>name</key> | |
| 1501 | 			<string>support.function.builtin.name.python</string> | |
| 1502 | 		</dict> | |
| 1503 | 		<key>builtin_types</key> | |
| 1504 | 		<dict> | |
| 1505 | 			<key>comment</key> | |
| 1506 | 			<string>These are from https://docs.python.org/X/library/stdtypes.html | |
| 1507 | 	 				where X is 2.7 or 3.5.</string> | |
| 1508 | 			<key>match</key> | |
| 1509 | 			<string>(?x) | |
| 1510 | 						(?&lt;!\.) | |
| 1511 | 						\b( | |
| 1512 | 							bool | buffer | bytearray | bytes | complex | dict | float | | |
| 1513 | 							frozenset | int | list | long | memoryview | object | property | | |
| 1514 | 							range | set | slice | str | tuple | type | unicode | xrange) | |
| 1515 | 						\b(?!(\s*\())</string> | |
| 1516 | 			<key>name</key> | |
| 1517 | 			<string>support.type.python</string> | |
| 1518 | 		</dict> | |
| 1519 | 		<key>comment</key> | |
| 1520 | 		<dict> | |
| 1521 | 			<key>begin</key> | |
| 1522 | 			<string>(^[ \t]+)?(?=#)</string> | |
| 1523 | 			<key>beginCaptures</key> | |
| 1524 | 			<dict> | |
| 1525 | 				<key>1</key> | |
| 1526 | 				<dict> | |
| 1527 | 					<key>name</key> | |
| 1528 | 					<string>punctuation.whitespace.comment.leading.python</string> | |
| 1529 | 				</dict> | |
| 1530 | 			</dict> | |
| 1531 | 			<key>end</key> | |
| 1532 | 			<string>(?!\G)</string> | |
| 1533 | 			<key>patterns</key> | |
| 1534 | 			<array> | |
| 1535 | 				<dict> | |
| 1536 | 					<key>begin</key> | |
| 1537 | 					<string>#</string> | |
| 1538 | 					<key>beginCaptures</key> | |
| 1539 | 					<dict> | |
| 1540 | 						<key>0</key> | |
| 1541 | 						<dict> | |
| 1542 | 							<key>name</key> | |
| 1543 | 							<string>punctuation.definition.comment.python</string> | |
| 1544 | 						</dict> | |
| 1545 | 					</dict> | |
| 1546 | 					<key>end</key> | |
| 1547 | 					<string>\n</string> | |
| 1548 | 					<key>name</key> | |
| 1549 | 					<string>comment.line.number-sign.python</string> | |
| 1550 | 				</dict> | |
| 1551 | 			</array> | |
| 1552 | 		</dict> | |
| 1553 | 		<key>constant_placeholder</key> | |
| 1554 | 		<dict> | |
| 1555 | 			<key>match</key> | |
| 1556 | 			<string>(?i:(%(\([[:lower:]_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[[:lower:]%])|(\{([!\[\].:\w ]+)?\}))</string> | |
| 1557 | 			<key>name</key> | |
| 1558 | 			<string>constant.other.placeholder.python</string> | |
| 1559 | 		</dict> | |
| 1560 | 		<key>docstrings</key> | |
| 1561 | 		<dict> | |
| 1562 | 			<key>patterns</key> | |
| 1563 | 			<array> | |
| 1564 | 				<dict> | |
| 1565 | 					<key>begin</key> | |
| 1566 | 					<string>^\s*(?=[uU]?[rR]?""")</string> | |
| 1567 | 					<key>end</key> | |
| 1568 | 					<string>(?&lt;=""")</string> | |
| 1569 | 					<key>name</key> | |
| 1570 | 					<string>comment.block.python</string> | |
| 1571 | 					<key>patterns</key> | |
| 1572 | 					<array> | |
| 1573 | 						<dict> | |
| 1574 | 							<key>include</key> | |
| 1575 | 							<string>#string_quoted_double</string> | |
| 1576 | 						</dict> | |
| 1577 | 					</array> | |
| 1578 | 				</dict> | |
| 1579 | 				<dict> | |
| 1580 | 					<key>begin</key> | |
| 1581 | 					<string>^\s*(?=[uU]?[rR]?''')</string> | |
| 1582 | 					<key>end</key> | |
| 1583 | 					<string>(?&lt;=''')</string> | |
| 1584 | 					<key>name</key> | |
| 1585 | 					<string>comment.block.python</string> | |
| 1586 | 					<key>patterns</key> | |
| 1587 | 					<array> | |
| 1588 | 						<dict> | |
| 1589 | 							<key>include</key> | |
| 1590 | 							<string>#string_quoted_single</string> | |
| 1591 | 						</dict> | |
| 1592 | 					</array> | |
| 1593 | 				</dict> | |
| 1594 | 			</array> | |
| 1595 | 		</dict> | |
| 1596 | 		<key>dotted_name</key> | |
| 1597 | 		<dict> | |
| 1598 | 			<key>begin</key> | |
| 1599 | 			<string>(?=(?:\.(?!\s+import)\s*)?[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string> | |
| 1600 | 			<key>end</key> | |
| 1601 | 			<string>(?![[:alnum:]_\.\s])|(?=(?&lt;!\.)\s+[^.])|$</string> | |
| 1602 | 			<key>patterns</key> | |
| 1603 | 			<array> | |
| 1604 | 				<dict> | |
| 1605 | 					<key>begin</key> | |
| 1606 | 					<string>(\.)(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 1607 | 					<key>beginCaptures</key> | |
| 1608 | 					<dict> | |
| 1609 | 						<key>1</key> | |
| 1610 | 						<dict> | |
| 1611 | 							<key>name</key> | |
| 1612 | 							<string>meta.dot.python</string> | |
| 1613 | 						</dict> | |
| 1614 | 					</dict> | |
| 1615 | 					<key>end</key> | |
| 1616 | 					<string>(?![[:alnum:]_])</string> | |
| 1617 | 					<key>patterns</key> | |
| 1618 | 					<array> | |
| 1619 | 						<dict> | |
| 1620 | 							<key>include</key> | |
| 1621 | 							<string>#builtin_functions_name</string> | |
| 1622 | 						</dict> | |
| 1623 | 						<dict> | |
| 1624 | 							<key>include</key> | |
| 1625 | 							<string>#magic_function_names</string> | |
| 1626 | 						</dict> | |
| 1627 | 						<dict> | |
| 1628 | 							<key>include</key> | |
| 1629 | 							<string>#magic_variable_names</string> | |
| 1630 | 						</dict> | |
| 1631 | 						<dict> | |
| 1632 | 							<key>include</key> | |
| 1633 | 							<string>#generic_names</string> | |
| 1634 | 						</dict> | |
| 1635 | 						<dict> | |
| 1636 | 							<key>include</key> | |
| 1637 | 							<string>#illegal_names</string> | |
| 1638 | 						</dict> | |
| 1639 | 					</array> | |
| 1640 | 				</dict> | |
| 1641 | 				<dict> | |
| 1642 | 					<key>begin</key> | |
| 1643 | 					<string>(?&lt;!\.)(?=[[:alpha:]_][[:alnum:]_]*)</string> | |
| 1644 | 					<key>end</key> | |
| 1645 | 					<string>(?![[:alnum:]_])</string> | |
| 1646 | 					<key>patterns</key> | |
| 1647 | 					<array> | |
| 1648 | 						<dict> | |
| 1649 | 							<key>include</key> | |
| 1650 | 							<string>#builtin_types</string> | |
| 1651 | 						</dict> | |
| 1652 | 						<dict> | |
| 1653 | 							<key>include</key> | |
| 1654 | 							<string>#builtin_functions_name</string> | |
| 1655 | 						</dict> | |
| 1656 | 						<dict> | |
| 1657 | 							<key>include</key> | |
| 1658 | 							<string>#builtin_functions_call</string> | |
| 1659 | 						</dict> | |
| 1660 | 						<dict> | |
| 1661 | 							<key>include</key> | |
| 1662 | 							<string>#errors_warnings_exceptions</string> | |
| 1663 | 						</dict> | |
| 1664 | 						<dict> | |
| 1665 | 							<key>include</key> | |
| 1666 | 							<string>#magic_function_names</string> | |
| 1667 | 						</dict> | |
| 1668 | 						<dict> | |
| 1669 | 							<key>include</key> | |
| 1670 | 							<string>#magic_function_calls</string> | |
| 1671 | 						</dict> | |
| 1672 | 						<dict> | |
| 1673 | 							<key>include</key> | |
| 1674 | 							<string>#magic_variable_names</string> | |
| 1675 | 						</dict> | |
| 1676 | 						<dict> | |
| 1677 | 							<key>include</key> | |
| 1678 | 							<string>#language_variables</string> | |
| 1679 | 						</dict> | |
| 1680 | 						<dict> | |
| 1681 | 							<key>include</key> | |
| 1682 | 							<string>#generic_names</string> | |
| 1683 | 						</dict> | |
| 1684 | 						<dict> | |
| 1685 | 							<key>include</key> | |
| 1686 | 							<string>#illegal_names</string> | |
| 1687 | 						</dict> | |
| 1688 | 					</array> | |
| 1689 | 				</dict> | |
| 1690 | 			</array> | |
| 1691 | 		</dict> | |
| 1692 | 		<key>entity_name_class</key> | |
| 1693 | 		<dict> | |
| 1694 | 			<key>patterns</key> | |
| 1695 | 			<array> | |
| 1696 | 				<dict> | |
| 1697 | 					<key>include</key> | |
| 1698 | 					<string>#generic_names</string> | |
| 1699 | 				</dict> | |
| 1700 | 				<dict> | |
| 1701 | 					<key>include</key> | |
| 1702 | 					<string>#illegal_names</string> | |
| 1703 | 				</dict> | |
| 1704 | 			</array> | |
| 1705 | 		</dict> | |
| 1706 | 		<key>entity_name_function</key> | |
| 1707 | 		<dict> | |
| 1708 | 			<key>patterns</key> | |
| 1709 | 			<array> | |
| 1710 | 				<dict> | |
| 1711 | 					<key>include</key> | |
| 1712 | 					<string>#builtin_functions_name</string> | |
| 1713 | 				</dict> | |
| 1714 | 				<dict> | |
| 1715 | 					<key>include</key> | |
| 1716 | 					<string>#magic_function_names</string> | |
| 1717 | 				</dict> | |
| 1718 | 				<dict> | |
| 1719 | 					<key>include</key> | |
| 1720 | 					<string>#illegal_names</string> | |
| 1721 | 				</dict> | |
| 1722 | 			</array> | |
| 1723 | 		</dict> | |
| 1724 | 		<key>errors_warnings_exceptions</key> | |
| 1725 | 		<dict> | |
| 1726 | 			<key>match</key> | |
| 1727 | 			<string>(?x) | |
| 1728 | 						\b( | |
| 1729 | 							( | |
| 1730 | 								Arithmetic | Assertion | Attribute | Buffer | BlockingIO | | |
| 1731 | 								BrokenPipe | ChildProcess | (Connection(Aborted | Refused | Reset)?) | | |
| 1732 | 								EOF | Environment | FileExists | FileNotFound | FloatingPoint | IO | | |
| 1733 | 								Import | Indentation | Index | Interrupted | IsADirectory | | |
| 1734 | 								NotADirectory | Permission | ProcessLookup | Timeout | Key | Lookup | | |
| 1735 | 								Memory | Name | NotImplemented | OS | Overflow | Reference | Runtime | | |
| 1736 | 								Recursion | Standard | Syntax | System | Tab | Type | UnboundLocal | | |
| 1737 | 								Unicode(Encode | Decode | Translate)? | Value | VMS | Windows | | |
| 1738 | 								ZeroDivision | ([[:alpha:]_][[:alnum:]_]*)) | |
| 1739 | 							?Error | |
| 1740 | 							| | |
| 1741 | 							( | |
| 1742 | 								(Pending)?Deprecation | Bytes | Future | Import | Resource | | |
| 1743 | 								Runtime | Syntax | Unicode | User | [[:alpha:]_][[:alnum:]_]*) | |
| 1744 | 							?Warning | |
| 1745 | 							| | |
| 1746 | 							SystemExit | Stop(Async)?Iteration | NotImplemented | | |
| 1747 | 							KeyboardInterrupt | GeneratorExit | |
| 1748 | 							| | |
| 1749 | 							([[:alpha:]_][[:alnum:]_]*) | |
| 1750 | 							?Exception | |
| 1751 | 						) | |
| 1752 | 						\b</string> | |
| 1753 | 			<key>name</key> | |
| 1754 | 			<string>support.type.exception.python</string> | |
| 1755 | 		</dict> | |
| 1756 | 		<key>escaped_char</key> | |
| 1757 | 		<dict> | |
| 1758 | 			<key>captures</key> | |
| 1759 | 			<dict> | |
| 1760 | 				<key>1</key> | |
| 1761 | 				<dict> | |
| 1762 | 					<key>name</key> | |
| 1763 | 					<string>constant.character.escape.hex.python</string> | |
| 1764 | 				</dict> | |
| 1765 | 				<key>10</key> | |
| 1766 | 				<dict> | |
| 1767 | 					<key>name</key> | |
| 1768 | 					<string>constant.character.escape.linefeed.python</string> | |
| 1769 | 				</dict> | |
| 1770 | 				<key>11</key> | |
| 1771 | 				<dict> | |
| 1772 | 					<key>name</key> | |
| 1773 | 					<string>constant.character.escape.return.python</string> | |
| 1774 | 				</dict> | |
| 1775 | 				<key>12</key> | |
| 1776 | 				<dict> | |
| 1777 | 					<key>name</key> | |
| 1778 | 					<string>constant.character.escape.tab.python</string> | |
| 1779 | 				</dict> | |
| 1780 | 				<key>13</key> | |
| 1781 | 				<dict> | |
| 1782 | 					<key>name</key> | |
| 1783 | 					<string>constant.character.escape.vertical-tab.python</string> | |
| 1784 | 				</dict> | |
| 1785 | 				<key>2</key> | |
| 1786 | 				<dict> | |
| 1787 | 					<key>name</key> | |
| 1788 | 					<string>constant.character.escape.octal.python</string> | |
| 1789 | 				</dict> | |
| 1790 | 				<key>3</key> | |
| 1791 | 				<dict> | |
| 1792 | 					<key>name</key> | |
| 1793 | 					<string>constant.character.escape.newline.python</string> | |
| 1794 | 				</dict> | |
| 1795 | 				<key>4</key> | |
| 1796 | 				<dict> | |
| 1797 | 					<key>name</key> | |
| 1798 | 					<string>constant.character.escape.backslash.python</string> | |
| 1799 | 				</dict> | |
| 1800 | 				<key>5</key> | |
| 1801 | 				<dict> | |
| 1802 | 					<key>name</key> | |
| 1803 | 					<string>constant.character.escape.double-quote.python</string> | |
| 1804 | 				</dict> | |
| 1805 | 				<key>6</key> | |
| 1806 | 				<dict> | |
| 1807 | 					<key>name</key> | |
| 1808 | 					<string>constant.character.escape.single-quote.python</string> | |
| 1809 | 				</dict> | |
| 1810 | 				<key>7</key> | |
| 1811 | 				<dict> | |
| 1812 | 					<key>name</key> | |
| 1813 | 					<string>constant.character.escape.bell.python</string> | |
| 1814 | 				</dict> | |
| 1815 | 				<key>8</key> | |
| 1816 | 				<dict> | |
| 1817 | 					<key>name</key> | |
| 1818 | 					<string>constant.character.escape.backspace.python</string> | |
| 1819 | 				</dict> | |
| 1820 | 				<key>9</key> | |
| 1821 | 				<dict> | |
| 1822 | 					<key>name</key> | |
| 1823 | 					<string>constant.character.escape.formfeed.python</string> | |
| 1824 | 				</dict> | |
| 1825 | 			</dict> | |
| 1826 | 			<key>match</key> | |
| 1827 | 			<string>(\\x[\h]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)</string> | |
| 1828 | 		</dict> | |
| 1829 | 		<key>escaped_char_raw_double</key> | |
| 1830 | 		<dict> | |
| 1831 | 			<key>match</key> | |
| 1832 | 			<string>\\"</string> | |
| 1833 | 			<key>name</key> | |
| 1834 | 			<string>constant.character.escape.quote.python</string> | |
| 1835 | 		</dict> | |
| 1836 | 		<key>escaped_char_raw_single</key> | |
| 1837 | 		<dict> | |
| 1838 | 			<key>match</key> | |
| 1839 | 			<string>\\'</string> | |
| 1840 | 			<key>name</key> | |
| 1841 | 			<string>constant.character.escape.quote.python</string> | |
| 1842 | 		</dict> | |
| 1843 | 		<key>escaped_unicode_char</key> | |
| 1844 | 		<dict> | |
| 1845 | 			<key>captures</key> | |
| 1846 | 			<dict> | |
| 1847 | 				<key>1</key> | |
| 1848 | 				<dict> | |
| 1849 | 					<key>name</key> | |
| 1850 | 					<string>constant.character.escape.unicode.32-bit-hex.python</string> | |
| 1851 | 				</dict> | |
| 1852 | 				<key>2</key> | |
| 1853 | 				<dict> | |
| 1854 | 					<key>name</key> | |
| 1855 | 					<string>constant.character.escape.unicode.16-bit-hex.python</string> | |
| 1856 | 				</dict> | |
| 1857 | 				<key>3</key> | |
| 1858 | 				<dict> | |
| 1859 | 					<key>name</key> | |
| 1860 | 					<string>constant.character.escape.unicode.name.python</string> | |
| 1861 | 				</dict> | |
| 1862 | 			</dict> | |
| 1863 | 			<key>match</key> | |
| 1864 | 			<string>(\\U[\h]{8})|(\\u[\h]{4})|(\\N\{[a-zA-Z0-9\, ]+\})</string> | |
| 1865 | 		</dict> | |
| 1866 | 		<key>generic_names</key> | |
| 1867 | 		<dict> | |
| 1868 | 			<key>match</key> | |
| 1869 | 			<string>[[:alpha:]_][[:alnum:]_]*</string> | |
| 1870 | 			<key>name</key> | |
| 1871 | 			<string>meta.identifier.python</string> | |
| 1872 | 		</dict> | |
| 1873 | 		<key>generic_object_names</key> | |
| 1874 | 		<dict> | |
| 1875 | 			<key>match</key> | |
| 1876 | 			<string>(\.\b([[:alpha:]_][[:alnum:]_]*)\b(?!\(|\[)|\b([[:alpha:]_][[:alnum:]_]*)\b\.)</string> | |
| 1877 | 		</dict> | |
| 1878 | 		<key>illegal_names</key> | |
| 1879 | 		<dict> | |
| 1880 | 			<key>comment</key> | |
| 1881 | 			<string>from Lib/keyword.py, in kwlist. `async` and `await` not keywords until Python 3.7 (according to PEP-0492)</string> | |
| 1882 | 			<key>match</key> | |
| 1883 | 			<string>(?x) | |
| 1884 | 				 \b ( | |
| 1885 | 				 False | None | True | and | as | assert | break | class | continue | def | | |
| 1886 | 				 del | elif | else | except | exec | finally | for | from | global | if | | |
| 1887 | 				 import | in | is | lambda | nonlocal | not | or | pass | print | raise | | |
| 1888 | 				 return | try | while | with | yield | __debug__ ) | |
| 1889 | 				 \b</string> | |
| 1890 | 			<key>name</key> | |
| 1891 | 			<string>invalid.illegal.name.python</string> | |
| 1892 | 		</dict> | |
| 1893 | 		<key>keyword_arguments</key> | |
| 1894 | 		<dict> | |
| 1895 | 			<key>begin</key> | |
| 1896 | 			<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(=)(?!=)</string> | |
| 1897 | 			<key>beginCaptures</key> | |
| 1898 | 			<dict> | |
| 1899 | 				<key>1</key> | |
| 1900 | 				<dict> | |
| 1901 | 					<key>name</key> | |
| 1902 | 					<string>variable.parameter.function.keyword.python</string> | |
| 1903 | 				</dict> | |
| 1904 | 				<key>2</key> | |
| 1905 | 				<dict> | |
| 1906 | 					<key>name</key> | |
| 1907 | 					<string>keyword.operator.assignment.python</string> | |
| 1908 | 				</dict> | |
| 1909 | 			</dict> | |
| 1910 | 			<key>end</key> | |
| 1911 | 			<string>\s*(?:(,)|(?=[\)\:]))</string> | |
| 1912 | 			<key>endCaptures</key> | |
| 1913 | 			<dict> | |
| 1914 | 				<key>1</key> | |
| 1915 | 				<dict> | |
| 1916 | 					<key>name</key> | |
| 1917 | 					<string>punctuation.separator.parameters.python</string> | |
| 1918 | 				</dict> | |
| 1919 | 			</dict> | |
| 1920 | 			<key>patterns</key> | |
| 1921 | 			<array> | |
| 1922 | 				<dict> | |
| 1923 | 					<key>include</key> | |
| 1924 | 					<string>$self</string> | |
| 1925 | 				</dict> | |
| 1926 | 			</array> | |
| 1927 | 		</dict> | |
| 1928 | 		<key>language_variables</key> | |
| 1929 | 		<dict> | |
| 1930 | 			<key>captures</key> | |
| 1931 | 			<dict> | |
| 1932 | 				<key>1</key> | |
| 1933 | 				<dict> | |
| 1934 | 					<key>name</key> | |
| 1935 | 					<string>variable.language.python</string> | |
| 1936 | 				</dict> | |
| 1937 | 			</dict> | |
| 1938 | 			<key>match</key> | |
| 1939 | 			<string>(?&lt;!\.)\b(self|cls)\b(?:\.|\()?</string> | |
| 1940 | 		</dict> | |
| 1941 | 		<key>line_continuation</key> | |
| 1942 | 		<dict> | |
| 1943 | 			<key>captures</key> | |
| 1944 | 			<dict> | |
| 1945 | 				<key>1</key> | |
| 1946 | 				<dict> | |
| 1947 | 					<key>name</key> | |
| 1948 | 					<string>punctuation.separator.continuation.line.python</string> | |
| 1949 | 				</dict> | |
| 1950 | 				<key>2</key> | |
| 1951 | 				<dict> | |
| 1952 | 					<key>name</key> | |
| 1953 | 					<string>invalid.illegal.unexpected-text.python</string> | |
| 1954 | 				</dict> | |
| 1955 | 			</dict> | |
| 1956 | 			<key>match</key> | |
| 1957 | 			<string>(\\)(.*)$\n?</string> | |
| 1958 | 		</dict> | |
| 1959 | 		<key>magic_function_calls</key> | |
| 1960 | 		<dict> | |
| 1961 | 			<key>patterns</key> | |
| 1962 | 			<array> | |
| 1963 | 				<dict> | |
| 1964 | 					<key>begin</key> | |
| 1965 | 					<string>(?x) | |
| 1966 | 								(\.)? | |
| 1967 | 								\b( | |
| 1968 | 									__(?: | |
| 1969 | 									abs | add | aenter | aexit | aiter | and | anext | await | bool | | |
| 1970 | 									bytes | call | ceil | cmp | class_getitem | coerce | complex | contains | | |
| 1971 | 									copy | deepcopy | del | delattr | delete | delitem | delslice | dir | div | | |
| 1972 | 									divmod | enter | eq | execute | exit | float | floor | floordiv | format | | |
| 1973 | 									fspath | ge | get | getattr | getattribute | getinitargs | getitem | | |
| 1974 | 									getnewargs | getnewargs_ex | getslice | getstate | gt | hash | hex | iadd | | |
| 1975 | 									iand | idiv | idivmod | ifloordiv | ilshift | imatmul | imod | imul | index | | |
| 1976 | 									init | init_subclass | instancecheck | int | invert | iop | ior | ipow | | |
| 1977 | 									irshift | isub | iter | itruediv | ixor | le | len | length_hint | long | | |
| 1978 | 									lshift | lt | main | matmul | missing | mod | mro_entries | mul | ne | neg | | |
| 1979 | 									new | next | nonzero | oct | op | or | pos | pow | prepare | radd | rand | | |
| 1980 | 									rcmp | rdiv | rdivmod | reduce | reduce_ex | repr | reversed | rfloordiv | | |
| 1981 | 									rlshift | rmatmul | rmod | rmul | rop | ror | round | rpow | rrshift | | |
| 1982 | 									rshift | rsub | rtruediv | rxor | set | set_name | setattr | setitem | | |
| 1983 | 									setslice | setstate | sizeof | str | sub | subclasscheck | subclasshook | | |
| 1984 | 									truediv | trunc | unicode | xor) | |
| 1985 | 								__) | |
| 1986 | 								\s*(?=(\())</string> | |
| 1987 | 					<key>beginCaptures</key> | |
| 1988 | 					<dict> | |
| 1989 | 						<key>2</key> | |
| 1990 | 						<dict> | |
| 1991 | 							<key>name</key> | |
| 1992 | 							<string>support.function.magic.call.python</string> | |
| 1993 | 						</dict> | |
| 1994 | 						<key>4</key> | |
| 1995 | 						<dict> | |
| 1996 | 							<key>name</key> | |
| 1997 | 							<string>punctuation.definition.arguments.begin.python</string> | |
| 1998 | 						</dict> | |
| 1999 | 					</dict> | |
| 2000 | 					<key>end</key> | |
| 2001 | 					<string>(\))</string> | |
| 2002 | 					<key>endCaptures</key> | |
| 2003 | 					<dict> | |
| 2004 | 						<key>1</key> | |
| 2005 | 						<dict> | |
| 2006 | 							<key>name</key> | |
| 2007 | 							<string>punctuation.definition.arguments.end.python</string> | |
| 2008 | 						</dict> | |
| 2009 | 					</dict> | |
| 2010 | 					<key>name</key> | |
| 2011 | 					<string>meta.function-call.python</string> | |
| 2012 | 					<key>patterns</key> | |
| 2013 | 					<array> | |
| 2014 | 						<dict> | |
| 2015 | 							<key>begin</key> | |
| 2016 | 							<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string> | |
| 2017 | 							<key>end</key> | |
| 2018 | 							<string>(?=\s*\()</string> | |
| 2019 | 							<key>patterns</key> | |
| 2020 | 							<array> | |
| 2021 | 								<dict> | |
| 2022 | 									<key>include</key> | |
| 2023 | 									<string>#dotted_name</string> | |
| 2024 | 								</dict> | |
| 2025 | 							</array> | |
| 2026 | 						</dict> | |
| 2027 | 						<dict> | |
| 2028 | 							<key>begin</key> | |
| 2029 | 							<string>(\()</string> | |
| 2030 | 							<key>beginCaptures</key> | |
| 2031 | 							<dict> | |
| 2032 | 								<key>1</key> | |
| 2033 | 								<dict> | |
| 2034 | 									<key>name</key> | |
| 2035 | 									<string>punctuation.definition.arguments.begin.python</string> | |
| 2036 | 								</dict> | |
| 2037 | 							</dict> | |
| 2038 | 							<key>contentName</key> | |
| 2039 | 							<string>meta.function-call.arguments.python</string> | |
| 2040 | 							<key>end</key> | |
| 2041 | 							<string>(?=\))</string> | |
| 2042 | 							<key>patterns</key> | |
| 2043 | 							<array> | |
| 2044 | 								<dict> | |
| 2045 | 									<key>include</key> | |
| 2046 | 									<string>#keyword_arguments</string> | |
| 2047 | 								</dict> | |
| 2048 | 								<dict> | |
| 2049 | 									<key>include</key> | |
| 2050 | 									<string>$self</string> | |
| 2051 | 								</dict> | |
| 2052 | 							</array> | |
| 2053 | 						</dict> | |
| 2054 | 					</array> | |
| 2055 | 				</dict> | |
| 2056 | 			</array> | |
| 2057 | 		</dict> | |
| 2058 | 		<key>magic_function_names</key> | |
| 2059 | 		<dict> | |
| 2060 | 			<key>captures</key> | |
| 2061 | 			<dict> | |
| 2062 | 				<key>2</key> | |
| 2063 | 				<dict> | |
| 2064 | 					<key>name</key> | |
| 2065 | 					<string>support.function.magic.name.python</string> | |
| 2066 | 				</dict> | |
| 2067 | 			</dict> | |
| 2068 | 			<key>comment</key> | |
| 2069 | 			<string>These methods have magic interpretation by python and are generally | |
| 2070 | 					 called indirectly through syntactic constructs. Names are from | |
| 2071 | 					 https://docs.python.org/X/reference/datamodel.html where X is 2.7 and 3.5 | |
| 2072 | 					 See also http://www.rafekettler.com/magicmethods.html</string> | |
| 2073 | 			<key>match</key> | |
| 2074 | 			<string>(?x) | |
| 2075 | 						(def|\.)? | |
| 2076 | 						\s*\b( | |
| 2077 | 							__(?: | |
| 2078 | 							abs | add | aenter | aexit | aiter | and | anext | await | bool | | |
| 2079 | 							bytes | call | ceil | cmp | class_getitem | coerce | complex | contains | | |
| 2080 | 							copy | deepcopy | del | delattr | delete | delitem | delslice | dir | div | | |
| 2081 | 							divmod | enter | eq | execute | exit | float | floor | floordiv | format | | |
| 2082 | 							fspath | ge | get | getattr | getattribute | getinitargs | getitem | | |
| 2083 | 							getnewargs | getnewargs_ex | getslice | getstate | gt | hash | hex | iadd | | |
| 2084 | 							iand | idiv | idivmod | ifloordiv | ilshift | imatmul | imod | imul | index | | |
| 2085 | 							init | init_subclass | instancecheck | int | invert | iop | ior | ipow | | |
| 2086 | 							irshift | isub | iter | itruediv | ixor | le | len | length_hint | long | | |
| 2087 | 							lshift | lt | main | matmul | missing | mod | mro_entries | mul | ne | neg | | |
| 2088 | 							new | next | nonzero | oct | op | or | pos | pow | prepare | radd | rand | | |
| 2089 | 							rcmp | rdiv | rdivmod | reduce | reduce_ex | repr | reversed | rfloordiv | | |
| 2090 | 							rlshift | rmatmul | rmod | rmul | rop | ror | round | rpow | rrshift | | |
| 2091 | 							rshift | rsub | rtruediv | rxor | set | set_name | setattr | setitem | | |
| 2092 | 							setslice | setstate | sizeof | str | sub | subclasscheck | subclasshook | | |
| 2093 | 							truediv | trunc | unicode | xor) | |
| 2094 | 						__) | |
| 2095 | 						\b</string> | |
| 2096 | 		</dict> | |
| 2097 | 		<key>magic_variable_names</key> | |
| 2098 | 		<dict> | |
| 2099 | 			<key>captures</key> | |
| 2100 | 			<dict> | |
| 2101 | 				<key>2</key> | |
| 2102 | 				<dict> | |
| 2103 | 					<key>name</key> | |
| 2104 | 					<string>support.variable.magic.python</string> | |
| 2105 | 				</dict> | |
| 2106 | 			</dict> | |
| 2107 | 			<key>comment</key> | |
| 2108 | 			<string>magic attributes which a class/module may have.</string> | |
| 2109 | 			<key>match</key> | |
| 2110 | 			<string>(?x) | |
| 2111 | 						(\.)? | |
| 2112 | 						\b( | |
| 2113 | 							__(?: | |
| 2114 | 							all | annotations | bases | cached | class | closure | code | debug | | |
| 2115 | 							defaults | dict | doc | file | func | future | globals | kwdefaults | | |
| 2116 | 							loader | members | metaclass | methods | module | mro | name | origin | | |
| 2117 | 							package | path | qualname | self | slots | spec | subclasses | version | | |
| 2118 | 							weakref | wrapped) | |
| 2119 | 						__) \b</string> | |
| 2120 | 		</dict> | |
| 2121 | 		<key>regular_expressions</key> | |
| 2122 | 		<dict> | |
| 2123 | 			<key>comment</key> | |
| 2124 | 			<string>Changed disabled to 1 to turn off syntax highlighting in “r” strings.</string> | |
| 2125 | 			<key>disabled</key> | |
| 2126 | 			<integer>0</integer> | |
| 2127 | 			<key>patterns</key> | |
| 2128 | 			<array> | |
| 2129 | 				<dict> | |
| 2130 | 					<key>include</key> | |
| 2131 | 					<string>source.regexp.python</string> | |
| 2132 | 				</dict> | |
| 2133 | 			</array> | |
| 2134 | 		</dict> | |
| 2135 | 		<key>string_quoted_double</key> | |
| 2136 | 		<dict> | |
| 2137 | 			<key>patterns</key> | |
| 2138 | 			<array> | |
| 2139 | 				<dict> | |
| 2140 | 					<key>begin</key> | |
| 2141 | 					<string>([uU]r)(""")</string> | |
| 2142 | 					<key>beginCaptures</key> | |
| 2143 | 					<dict> | |
| 2144 | 						<key>1</key> | |
| 2145 | 						<dict> | |
| 2146 | 							<key>name</key> | |
| 2147 | 							<string>storage.type.string.python</string> | |
| 2148 | 						</dict> | |
| 2149 | 						<key>2</key> | |
| 2150 | 						<dict> | |
| 2151 | 							<key>name</key> | |
| 2152 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2153 | 						</dict> | |
| 2154 | 					</dict> | |
| 2155 | 					<key>comment</key> | |
| 2156 | 					<string>single quoted unicode-raw string</string> | |
| 2157 | 					<key>end</key> | |
| 2158 | 					<string>"""</string> | |
| 2159 | 					<key>endCaptures</key> | |
| 2160 | 					<dict> | |
| 2161 | 						<key>0</key> | |
| 2162 | 						<dict> | |
| 2163 | 							<key>name</key> | |
| 2164 | 							<string>punctuation.definition.string.end.python</string> | |
| 2165 | 						</dict> | |
| 2166 | 					</dict> | |
| 2167 | 					<key>name</key> | |
| 2168 | 					<string>string.quoted.double.block.unicode-raw-regex.python</string> | |
| 2169 | 					<key>patterns</key> | |
| 2170 | 					<array> | |
| 2171 | 						<dict> | |
| 2172 | 							<key>include</key> | |
| 2173 | 							<string>#constant_placeholder</string> | |
| 2174 | 						</dict> | |
| 2175 | 						<dict> | |
| 2176 | 							<key>include</key> | |
| 2177 | 							<string>#escaped_char_raw_double</string> | |
| 2178 | 						</dict> | |
| 2179 | 						<dict> | |
| 2180 | 							<key>include</key> | |
| 2181 | 							<string>#regular_expressions</string> | |
| 2182 | 						</dict> | |
| 2183 | 					</array> | |
| 2184 | 				</dict> | |
| 2185 | 				<dict> | |
| 2186 | 					<key>begin</key> | |
| 2187 | 					<string>([uU]R)(""")</string> | |
| 2188 | 					<key>beginCaptures</key> | |
| 2189 | 					<dict> | |
| 2190 | 						<key>1</key> | |
| 2191 | 						<dict> | |
| 2192 | 							<key>name</key> | |
| 2193 | 							<string>storage.type.string.python</string> | |
| 2194 | 						</dict> | |
| 2195 | 						<key>2</key> | |
| 2196 | 						<dict> | |
| 2197 | 							<key>name</key> | |
| 2198 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2199 | 						</dict> | |
| 2200 | 					</dict> | |
| 2201 | 					<key>comment</key> | |
| 2202 | 					<string>single quoted unicode-raw string without regular expression highlighting</string> | |
| 2203 | 					<key>end</key> | |
| 2204 | 					<string>"""</string> | |
| 2205 | 					<key>endCaptures</key> | |
| 2206 | 					<dict> | |
| 2207 | 						<key>0</key> | |
| 2208 | 						<dict> | |
| 2209 | 							<key>name</key> | |
| 2210 | 							<string>punctuation.definition.string.end.python</string> | |
| 2211 | 						</dict> | |
| 2212 | 					</dict> | |
| 2213 | 					<key>name</key> | |
| 2214 | 					<string>string.quoted.double.block.unicode-raw.python</string> | |
| 2215 | 					<key>patterns</key> | |
| 2216 | 					<array> | |
| 2217 | 						<dict> | |
| 2218 | 							<key>include</key> | |
| 2219 | 							<string>#constant_placeholder</string> | |
| 2220 | 						</dict> | |
| 2221 | 						<dict> | |
| 2222 | 							<key>include</key> | |
| 2223 | 							<string>#escaped_char_raw_double</string> | |
| 2224 | 						</dict> | |
| 2225 | 					</array> | |
| 2226 | 				</dict> | |
| 2227 | 				<dict> | |
| 2228 | 					<key>begin</key> | |
| 2229 | 					<string>([bB]r)(""")</string> | |
| 2230 | 					<key>beginCaptures</key> | |
| 2231 | 					<dict> | |
| 2232 | 						<key>1</key> | |
| 2233 | 						<dict> | |
| 2234 | 							<key>name</key> | |
| 2235 | 							<string>storage.type.string.python</string> | |
| 2236 | 						</dict> | |
| 2237 | 						<key>2</key> | |
| 2238 | 						<dict> | |
| 2239 | 							<key>name</key> | |
| 2240 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2241 | 						</dict> | |
| 2242 | 					</dict> | |
| 2243 | 					<key>comment</key> | |
| 2244 | 					<string>single quoted bytes-raw string</string> | |
| 2245 | 					<key>end</key> | |
| 2246 | 					<string>"""</string> | |
| 2247 | 					<key>endCaptures</key> | |
| 2248 | 					<dict> | |
| 2249 | 						<key>0</key> | |
| 2250 | 						<dict> | |
| 2251 | 							<key>name</key> | |
| 2252 | 							<string>punctuation.definition.string.end.python</string> | |
| 2253 | 						</dict> | |
| 2254 | 					</dict> | |
| 2255 | 					<key>name</key> | |
| 2256 | 					<string>string.quoted.double.block.bytes-raw-regex.python</string> | |
| 2257 | 					<key>patterns</key> | |
| 2258 | 					<array> | |
| 2259 | 						<dict> | |
| 2260 | 							<key>include</key> | |
| 2261 | 							<string>#constant_placeholder</string> | |
| 2262 | 						</dict> | |
| 2263 | 						<dict> | |
| 2264 | 							<key>include</key> | |
| 2265 | 							<string>#escaped_char_raw_double</string> | |
| 2266 | 						</dict> | |
| 2267 | 						<dict> | |
| 2268 | 							<key>include</key> | |
| 2269 | 							<string>#regular_expressions</string> | |
| 2270 | 						</dict> | |
| 2271 | 					</array> | |
| 2272 | 				</dict> | |
| 2273 | 				<dict> | |
| 2274 | 					<key>begin</key> | |
| 2275 | 					<string>([bB]R)(""")</string> | |
| 2276 | 					<key>beginCaptures</key> | |
| 2277 | 					<dict> | |
| 2278 | 						<key>1</key> | |
| 2279 | 						<dict> | |
| 2280 | 							<key>name</key> | |
| 2281 | 							<string>storage.type.string.python</string> | |
| 2282 | 						</dict> | |
| 2283 | 						<key>2</key> | |
| 2284 | 						<dict> | |
| 2285 | 							<key>name</key> | |
| 2286 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2287 | 						</dict> | |
| 2288 | 					</dict> | |
| 2289 | 					<key>comment</key> | |
| 2290 | 					<string>single quoted bytes-raw string without regular expression highlighting</string> | |
| 2291 | 					<key>end</key> | |
| 2292 | 					<string>"""</string> | |
| 2293 | 					<key>endCaptures</key> | |
| 2294 | 					<dict> | |
| 2295 | 						<key>0</key> | |
| 2296 | 						<dict> | |
| 2297 | 							<key>name</key> | |
| 2298 | 							<string>punctuation.definition.string.end.python</string> | |
| 2299 | 						</dict> | |
| 2300 | 					</dict> | |
| 2301 | 					<key>name</key> | |
| 2302 | 					<string>string.quoted.double.block.bytes-raw.python</string> | |
| 2303 | 					<key>patterns</key> | |
| 2304 | 					<array> | |
| 2305 | 						<dict> | |
| 2306 | 							<key>include</key> | |
| 2307 | 							<string>#constant_placeholder</string> | |
| 2308 | 						</dict> | |
| 2309 | 						<dict> | |
| 2310 | 							<key>include</key> | |
| 2311 | 							<string>#escaped_char_raw_double</string> | |
| 2312 | 						</dict> | |
| 2313 | 					</array> | |
| 2314 | 				</dict> | |
| 2315 | 				<dict> | |
| 2316 | 					<key>begin</key> | |
| 2317 | 					<string>(r)(""")</string> | |
| 2318 | 					<key>beginCaptures</key> | |
| 2319 | 					<dict> | |
| 2320 | 						<key>1</key> | |
| 2321 | 						<dict> | |
| 2322 | 							<key>name</key> | |
| 2323 | 							<string>storage.type.string.python</string> | |
| 2324 | 						</dict> | |
| 2325 | 						<key>2</key> | |
| 2326 | 						<dict> | |
| 2327 | 							<key>name</key> | |
| 2328 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2329 | 						</dict> | |
| 2330 | 					</dict> | |
| 2331 | 					<key>comment</key> | |
| 2332 | 					<string>double quoted raw string</string> | |
| 2333 | 					<key>end</key> | |
| 2334 | 					<string>"""</string> | |
| 2335 | 					<key>endCaptures</key> | |
| 2336 | 					<dict> | |
| 2337 | 						<key>0</key> | |
| 2338 | 						<dict> | |
| 2339 | 							<key>name</key> | |
| 2340 | 							<string>punctuation.definition.string.end.python</string> | |
| 2341 | 						</dict> | |
| 2342 | 					</dict> | |
| 2343 | 					<key>name</key> | |
| 2344 | 					<string>string.quoted.double.block.raw-regex.python</string> | |
| 2345 | 					<key>patterns</key> | |
| 2346 | 					<array> | |
| 2347 | 						<dict> | |
| 2348 | 							<key>include</key> | |
| 2349 | 							<string>#constant_placeholder</string> | |
| 2350 | 						</dict> | |
| 2351 | 						<dict> | |
| 2352 | 							<key>include</key> | |
| 2353 | 							<string>#escaped_char_raw_double</string> | |
| 2354 | 						</dict> | |
| 2355 | 						<dict> | |
| 2356 | 							<key>include</key> | |
| 2357 | 							<string>#regular_expressions</string> | |
| 2358 | 						</dict> | |
| 2359 | 					</array> | |
| 2360 | 				</dict> | |
| 2361 | 				<dict> | |
| 2362 | 					<key>begin</key> | |
| 2363 | 					<string>(R)(""")</string> | |
| 2364 | 					<key>beginCaptures</key> | |
| 2365 | 					<dict> | |
| 2366 | 						<key>1</key> | |
| 2367 | 						<dict> | |
| 2368 | 							<key>name</key> | |
| 2369 | 							<string>storage.type.string.python</string> | |
| 2370 | 						</dict> | |
| 2371 | 						<key>2</key> | |
| 2372 | 						<dict> | |
| 2373 | 							<key>name</key> | |
| 2374 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2375 | 						</dict> | |
| 2376 | 					</dict> | |
| 2377 | 					<key>comment</key> | |
| 2378 | 					<string>double quoted raw string</string> | |
| 2379 | 					<key>end</key> | |
| 2380 | 					<string>"""</string> | |
| 2381 | 					<key>endCaptures</key> | |
| 2382 | 					<dict> | |
| 2383 | 						<key>0</key> | |
| 2384 | 						<dict> | |
| 2385 | 							<key>name</key> | |
| 2386 | 							<string>punctuation.definition.string.end.python</string> | |
| 2387 | 						</dict> | |
| 2388 | 					</dict> | |
| 2389 | 					<key>name</key> | |
| 2390 | 					<string>string.quoted.double.block.raw.python</string> | |
| 2391 | 					<key>patterns</key> | |
| 2392 | 					<array> | |
| 2393 | 						<dict> | |
| 2394 | 							<key>include</key> | |
| 2395 | 							<string>#constant_placeholder</string> | |
| 2396 | 						</dict> | |
| 2397 | 						<dict> | |
| 2398 | 							<key>include</key> | |
| 2399 | 							<string>#escaped_char_raw_double</string> | |
| 2400 | 						</dict> | |
| 2401 | 					</array> | |
| 2402 | 				</dict> | |
| 2403 | 				<dict> | |
| 2404 | 					<key>begin</key> | |
| 2405 | 					<string>([uU])(""")</string> | |
| 2406 | 					<key>beginCaptures</key> | |
| 2407 | 					<dict> | |
| 2408 | 						<key>1</key> | |
| 2409 | 						<dict> | |
| 2410 | 							<key>name</key> | |
| 2411 | 							<string>storage.type.string.python</string> | |
| 2412 | 						</dict> | |
| 2413 | 						<key>2</key> | |
| 2414 | 						<dict> | |
| 2415 | 							<key>name</key> | |
| 2416 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2417 | 						</dict> | |
| 2418 | 					</dict> | |
| 2419 | 					<key>comment</key> | |
| 2420 | 					<string>double quoted unicode string</string> | |
| 2421 | 					<key>end</key> | |
| 2422 | 					<string>"""</string> | |
| 2423 | 					<key>endCaptures</key> | |
| 2424 | 					<dict> | |
| 2425 | 						<key>0</key> | |
| 2426 | 						<dict> | |
| 2427 | 							<key>name</key> | |
| 2428 | 							<string>punctuation.definition.string.end.python</string> | |
| 2429 | 						</dict> | |
| 2430 | 					</dict> | |
| 2431 | 					<key>name</key> | |
| 2432 | 					<string>string.quoted.double.block.unicode.python</string> | |
| 2433 | 					<key>patterns</key> | |
| 2434 | 					<array> | |
| 2435 | 						<dict> | |
| 2436 | 							<key>include</key> | |
| 2437 | 							<string>#constant_placeholder</string> | |
| 2438 | 						</dict> | |
| 2439 | 						<dict> | |
| 2440 | 							<key>include</key> | |
| 2441 | 							<string>#escaped_unicode_char</string> | |
| 2442 | 						</dict> | |
| 2443 | 						<dict> | |
| 2444 | 							<key>include</key> | |
| 2445 | 							<string>#escaped_char</string> | |
| 2446 | 						</dict> | |
| 2447 | 					</array> | |
| 2448 | 				</dict> | |
| 2449 | 				<dict> | |
| 2450 | 					<key>begin</key> | |
| 2451 | 					<string>([bB])(""")</string> | |
| 2452 | 					<key>beginCaptures</key> | |
| 2453 | 					<dict> | |
| 2454 | 						<key>1</key> | |
| 2455 | 						<dict> | |
| 2456 | 							<key>name</key> | |
| 2457 | 							<string>storage.type.string.python</string> | |
| 2458 | 						</dict> | |
| 2459 | 						<key>2</key> | |
| 2460 | 						<dict> | |
| 2461 | 							<key>name</key> | |
| 2462 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2463 | 						</dict> | |
| 2464 | 					</dict> | |
| 2465 | 					<key>comment</key> | |
| 2466 | 					<string>double quoted bytes string</string> | |
| 2467 | 					<key>end</key> | |
| 2468 | 					<string>"""</string> | |
| 2469 | 					<key>endCaptures</key> | |
| 2470 | 					<dict> | |
| 2471 | 						<key>0</key> | |
| 2472 | 						<dict> | |
| 2473 | 							<key>name</key> | |
| 2474 | 							<string>punctuation.definition.string.end.python</string> | |
| 2475 | 						</dict> | |
| 2476 | 					</dict> | |
| 2477 | 					<key>name</key> | |
| 2478 | 					<string>string.quoted.double.block.bytes.python</string> | |
| 2479 | 					<key>patterns</key> | |
| 2480 | 					<array> | |
| 2481 | 						<dict> | |
| 2482 | 							<key>include</key> | |
| 2483 | 							<string>#constant_placeholder</string> | |
| 2484 | 						</dict> | |
| 2485 | 						<dict> | |
| 2486 | 							<key>include</key> | |
| 2487 | 							<string>#escaped_unicode_char</string> | |
| 2488 | 						</dict> | |
| 2489 | 						<dict> | |
| 2490 | 							<key>include</key> | |
| 2491 | 							<string>#escaped_char</string> | |
| 2492 | 						</dict> | |
| 2493 | 					</array> | |
| 2494 | 				</dict> | |
| 2495 | 				<dict> | |
| 2496 | 					<key>captures</key> | |
| 2497 | 					<dict> | |
| 2498 | 						<key>1</key> | |
| 2499 | 						<dict> | |
| 2500 | 							<key>name</key> | |
| 2501 | 							<string>storage.type.string.python</string> | |
| 2502 | 						</dict> | |
| 2503 | 						<key>2</key> | |
| 2504 | 						<dict> | |
| 2505 | 							<key>name</key> | |
| 2506 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2507 | 						</dict> | |
| 2508 | 						<key>3</key> | |
| 2509 | 						<dict> | |
| 2510 | 							<key>patterns</key> | |
| 2511 | 							<array> | |
| 2512 | 								<dict> | |
| 2513 | 									<key>include</key> | |
| 2514 | 									<string>#constant_placeholder</string> | |
| 2515 | 								</dict> | |
| 2516 | 								<dict> | |
| 2517 | 									<key>include</key> | |
| 2518 | 									<string>#escaped_char_raw_double</string> | |
| 2519 | 								</dict> | |
| 2520 | 								<dict> | |
| 2521 | 									<key>include</key> | |
| 2522 | 									<string>#regular_expressions</string> | |
| 2523 | 								</dict> | |
| 2524 | 							</array> | |
| 2525 | 						</dict> | |
| 2526 | 						<key>4</key> | |
| 2527 | 						<dict> | |
| 2528 | 							<key>name</key> | |
| 2529 | 							<string>punctuation.definition.string.end.python</string> | |
| 2530 | 						</dict> | |
| 2531 | 					</dict> | |
| 2532 | 					<key>comment</key> | |
| 2533 | 					<string>double-quoted raw string</string> | |
| 2534 | 					<key>match</key> | |
| 2535 | 					<string>([uU]r)(")((?:[^"\\]|\\.)*)(")</string> | |
| 2536 | 					<key>name</key> | |
| 2537 | 					<string>string.quoted.double.single-line.unicode-raw-regex.python</string> | |
| 2538 | 				</dict> | |
| 2539 | 				<dict> | |
| 2540 | 					<key>begin</key> | |
| 2541 | 					<string>([uU]R)(")</string> | |
| 2542 | 					<key>beginCaptures</key> | |
| 2543 | 					<dict> | |
| 2544 | 						<key>1</key> | |
| 2545 | 						<dict> | |
| 2546 | 							<key>name</key> | |
| 2547 | 							<string>storage.type.string.python</string> | |
| 2548 | 						</dict> | |
| 2549 | 						<key>2</key> | |
| 2550 | 						<dict> | |
| 2551 | 							<key>name</key> | |
| 2552 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2553 | 						</dict> | |
| 2554 | 					</dict> | |
| 2555 | 					<key>comment</key> | |
| 2556 | 					<string>double-quoted raw string</string> | |
| 2557 | 					<key>end</key> | |
| 2558 | 					<string>(")|(\n)</string> | |
| 2559 | 					<key>endCaptures</key> | |
| 2560 | 					<dict> | |
| 2561 | 						<key>1</key> | |
| 2562 | 						<dict> | |
| 2563 | 							<key>name</key> | |
| 2564 | 							<string>punctuation.definition.string.end.python</string> | |
| 2565 | 						</dict> | |
| 2566 | 						<key>2</key> | |
| 2567 | 						<dict> | |
| 2568 | 							<key>name</key> | |
| 2569 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2570 | 						</dict> | |
| 2571 | 					</dict> | |
| 2572 | 					<key>name</key> | |
| 2573 | 					<string>string.quoted.double.single-line.unicode-raw.python</string> | |
| 2574 | 					<key>patterns</key> | |
| 2575 | 					<array> | |
| 2576 | 						<dict> | |
| 2577 | 							<key>include</key> | |
| 2578 | 							<string>#constant_placeholder</string> | |
| 2579 | 						</dict> | |
| 2580 | 						<dict> | |
| 2581 | 							<key>include</key> | |
| 2582 | 							<string>#escaped_char_raw_double</string> | |
| 2583 | 						</dict> | |
| 2584 | 					</array> | |
| 2585 | 				</dict> | |
| 2586 | 				<dict> | |
| 2587 | 					<key>begin</key> | |
| 2588 | 					<string>([bB]r)(")</string> | |
| 2589 | 					<key>beginCaptures</key> | |
| 2590 | 					<dict> | |
| 2591 | 						<key>1</key> | |
| 2592 | 						<dict> | |
| 2593 | 							<key>name</key> | |
| 2594 | 							<string>storage.type.string.python</string> | |
| 2595 | 						</dict> | |
| 2596 | 						<key>2</key> | |
| 2597 | 						<dict> | |
| 2598 | 							<key>name</key> | |
| 2599 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2600 | 						</dict> | |
| 2601 | 					</dict> | |
| 2602 | 					<key>comment</key> | |
| 2603 | 					<string>double-quoted raw string</string> | |
| 2604 | 					<key>end</key> | |
| 2605 | 					<string>(")|(\n)</string> | |
| 2606 | 					<key>endCaptures</key> | |
| 2607 | 					<dict> | |
| 2608 | 						<key>1</key> | |
| 2609 | 						<dict> | |
| 2610 | 							<key>name</key> | |
| 2611 | 							<string>punctuation.definition.string.end.python</string> | |
| 2612 | 						</dict> | |
| 2613 | 						<key>2</key> | |
| 2614 | 						<dict> | |
| 2615 | 							<key>name</key> | |
| 2616 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2617 | 						</dict> | |
| 2618 | 					</dict> | |
| 2619 | 					<key>name</key> | |
| 2620 | 					<string>string.quoted.double.single-line.bytes-raw-regex.python</string> | |
| 2621 | 					<key>patterns</key> | |
| 2622 | 					<array> | |
| 2623 | 						<dict> | |
| 2624 | 							<key>include</key> | |
| 2625 | 							<string>#constant_placeholder</string> | |
| 2626 | 						</dict> | |
| 2627 | 						<dict> | |
| 2628 | 							<key>include</key> | |
| 2629 | 							<string>#escaped_char_raw_double</string> | |
| 2630 | 						</dict> | |
| 2631 | 						<dict> | |
| 2632 | 							<key>include</key> | |
| 2633 | 							<string>#regular_expressions</string> | |
| 2634 | 						</dict> | |
| 2635 | 					</array> | |
| 2636 | 				</dict> | |
| 2637 | 				<dict> | |
| 2638 | 					<key>begin</key> | |
| 2639 | 					<string>([bB]R)(")</string> | |
| 2640 | 					<key>beginCaptures</key> | |
| 2641 | 					<dict> | |
| 2642 | 						<key>1</key> | |
| 2643 | 						<dict> | |
| 2644 | 							<key>name</key> | |
| 2645 | 							<string>storage.type.string.python</string> | |
| 2646 | 						</dict> | |
| 2647 | 						<key>2</key> | |
| 2648 | 						<dict> | |
| 2649 | 							<key>name</key> | |
| 2650 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2651 | 						</dict> | |
| 2652 | 					</dict> | |
| 2653 | 					<key>comment</key> | |
| 2654 | 					<string>double-quoted raw string</string> | |
| 2655 | 					<key>end</key> | |
| 2656 | 					<string>(")|(\n)</string> | |
| 2657 | 					<key>endCaptures</key> | |
| 2658 | 					<dict> | |
| 2659 | 						<key>1</key> | |
| 2660 | 						<dict> | |
| 2661 | 							<key>name</key> | |
| 2662 | 							<string>punctuation.definition.string.end.python</string> | |
| 2663 | 						</dict> | |
| 2664 | 						<key>2</key> | |
| 2665 | 						<dict> | |
| 2666 | 							<key>name</key> | |
| 2667 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2668 | 						</dict> | |
| 2669 | 					</dict> | |
| 2670 | 					<key>name</key> | |
| 2671 | 					<string>string.quoted.double.single-line.bytes-raw.python</string> | |
| 2672 | 					<key>patterns</key> | |
| 2673 | 					<array> | |
| 2674 | 						<dict> | |
| 2675 | 							<key>include</key> | |
| 2676 | 							<string>#constant_placeholder</string> | |
| 2677 | 						</dict> | |
| 2678 | 						<dict> | |
| 2679 | 							<key>include</key> | |
| 2680 | 							<string>#escaped_char_raw_double</string> | |
| 2681 | 						</dict> | |
| 2682 | 					</array> | |
| 2683 | 				</dict> | |
| 2684 | 				<dict> | |
| 2685 | 					<key>captures</key> | |
| 2686 | 					<dict> | |
| 2687 | 						<key>1</key> | |
| 2688 | 						<dict> | |
| 2689 | 							<key>name</key> | |
| 2690 | 							<string>storage.type.string.python</string> | |
| 2691 | 						</dict> | |
| 2692 | 						<key>2</key> | |
| 2693 | 						<dict> | |
| 2694 | 							<key>name</key> | |
| 2695 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2696 | 						</dict> | |
| 2697 | 						<key>3</key> | |
| 2698 | 						<dict> | |
| 2699 | 							<key>patterns</key> | |
| 2700 | 							<array> | |
| 2701 | 								<dict> | |
| 2702 | 									<key>include</key> | |
| 2703 | 									<string>#constant_placeholder</string> | |
| 2704 | 								</dict> | |
| 2705 | 								<dict> | |
| 2706 | 									<key>include</key> | |
| 2707 | 									<string>#escaped_char_raw_double</string> | |
| 2708 | 								</dict> | |
| 2709 | 								<dict> | |
| 2710 | 									<key>include</key> | |
| 2711 | 									<string>#regular_expressions</string> | |
| 2712 | 								</dict> | |
| 2713 | 							</array> | |
| 2714 | 						</dict> | |
| 2715 | 						<key>4</key> | |
| 2716 | 						<dict> | |
| 2717 | 							<key>name</key> | |
| 2718 | 							<string>punctuation.definition.string.end.python</string> | |
| 2719 | 						</dict> | |
| 2720 | 					</dict> | |
| 2721 | 					<key>comment</key> | |
| 2722 | 					<string>double-quoted raw string</string> | |
| 2723 | 					<key>match</key> | |
| 2724 | 					<string>(r)(")((?:[^"\\]|\\.)*)(")</string> | |
| 2725 | 					<key>name</key> | |
| 2726 | 					<string>string.quoted.double.single-line.raw-regex.python</string> | |
| 2727 | 				</dict> | |
| 2728 | 				<dict> | |
| 2729 | 					<key>begin</key> | |
| 2730 | 					<string>(R)(")</string> | |
| 2731 | 					<key>beginCaptures</key> | |
| 2732 | 					<dict> | |
| 2733 | 						<key>1</key> | |
| 2734 | 						<dict> | |
| 2735 | 							<key>name</key> | |
| 2736 | 							<string>storage.type.string.python</string> | |
| 2737 | 						</dict> | |
| 2738 | 						<key>2</key> | |
| 2739 | 						<dict> | |
| 2740 | 							<key>name</key> | |
| 2741 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2742 | 						</dict> | |
| 2743 | 					</dict> | |
| 2744 | 					<key>comment</key> | |
| 2745 | 					<string>double-quoted raw string</string> | |
| 2746 | 					<key>end</key> | |
| 2747 | 					<string>(")|(\n)</string> | |
| 2748 | 					<key>endCaptures</key> | |
| 2749 | 					<dict> | |
| 2750 | 						<key>1</key> | |
| 2751 | 						<dict> | |
| 2752 | 							<key>name</key> | |
| 2753 | 							<string>punctuation.definition.string.end.python</string> | |
| 2754 | 						</dict> | |
| 2755 | 						<key>2</key> | |
| 2756 | 						<dict> | |
| 2757 | 							<key>name</key> | |
| 2758 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2759 | 						</dict> | |
| 2760 | 					</dict> | |
| 2761 | 					<key>name</key> | |
| 2762 | 					<string>string.quoted.double.single-line.raw.python</string> | |
| 2763 | 					<key>patterns</key> | |
| 2764 | 					<array> | |
| 2765 | 						<dict> | |
| 2766 | 							<key>include</key> | |
| 2767 | 							<string>#constant_placeholder</string> | |
| 2768 | 						</dict> | |
| 2769 | 						<dict> | |
| 2770 | 							<key>include</key> | |
| 2771 | 							<string>#escaped_char_raw_double</string> | |
| 2772 | 						</dict> | |
| 2773 | 					</array> | |
| 2774 | 				</dict> | |
| 2775 | 				<dict> | |
| 2776 | 					<key>begin</key> | |
| 2777 | 					<string>([uU])(")</string> | |
| 2778 | 					<key>beginCaptures</key> | |
| 2779 | 					<dict> | |
| 2780 | 						<key>1</key> | |
| 2781 | 						<dict> | |
| 2782 | 							<key>name</key> | |
| 2783 | 							<string>storage.type.string.python</string> | |
| 2784 | 						</dict> | |
| 2785 | 						<key>2</key> | |
| 2786 | 						<dict> | |
| 2787 | 							<key>name</key> | |
| 2788 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2789 | 						</dict> | |
| 2790 | 					</dict> | |
| 2791 | 					<key>comment</key> | |
| 2792 | 					<string>double quoted unicode string</string> | |
| 2793 | 					<key>end</key> | |
| 2794 | 					<string>(")|(\n)</string> | |
| 2795 | 					<key>endCaptures</key> | |
| 2796 | 					<dict> | |
| 2797 | 						<key>1</key> | |
| 2798 | 						<dict> | |
| 2799 | 							<key>name</key> | |
| 2800 | 							<string>punctuation.definition.string.end.python</string> | |
| 2801 | 						</dict> | |
| 2802 | 						<key>2</key> | |
| 2803 | 						<dict> | |
| 2804 | 							<key>name</key> | |
| 2805 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2806 | 						</dict> | |
| 2807 | 					</dict> | |
| 2808 | 					<key>name</key> | |
| 2809 | 					<string>string.quoted.double.single-line.unicode.python</string> | |
| 2810 | 					<key>patterns</key> | |
| 2811 | 					<array> | |
| 2812 | 						<dict> | |
| 2813 | 							<key>include</key> | |
| 2814 | 							<string>#constant_placeholder</string> | |
| 2815 | 						</dict> | |
| 2816 | 						<dict> | |
| 2817 | 							<key>include</key> | |
| 2818 | 							<string>#escaped_unicode_char</string> | |
| 2819 | 						</dict> | |
| 2820 | 						<dict> | |
| 2821 | 							<key>include</key> | |
| 2822 | 							<string>#escaped_char</string> | |
| 2823 | 						</dict> | |
| 2824 | 					</array> | |
| 2825 | 				</dict> | |
| 2826 | 				<dict> | |
| 2827 | 					<key>begin</key> | |
| 2828 | 					<string>([bB])(")</string> | |
| 2829 | 					<key>beginCaptures</key> | |
| 2830 | 					<dict> | |
| 2831 | 						<key>1</key> | |
| 2832 | 						<dict> | |
| 2833 | 							<key>name</key> | |
| 2834 | 							<string>storage.type.string.python</string> | |
| 2835 | 						</dict> | |
| 2836 | 						<key>2</key> | |
| 2837 | 						<dict> | |
| 2838 | 							<key>name</key> | |
| 2839 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2840 | 						</dict> | |
| 2841 | 					</dict> | |
| 2842 | 					<key>comment</key> | |
| 2843 | 					<string>double quoted bytes string</string> | |
| 2844 | 					<key>end</key> | |
| 2845 | 					<string>(")|(\n)</string> | |
| 2846 | 					<key>endCaptures</key> | |
| 2847 | 					<dict> | |
| 2848 | 						<key>1</key> | |
| 2849 | 						<dict> | |
| 2850 | 							<key>name</key> | |
| 2851 | 							<string>punctuation.definition.string.end.python</string> | |
| 2852 | 						</dict> | |
| 2853 | 						<key>2</key> | |
| 2854 | 						<dict> | |
| 2855 | 							<key>name</key> | |
| 2856 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2857 | 						</dict> | |
| 2858 | 					</dict> | |
| 2859 | 					<key>name</key> | |
| 2860 | 					<string>string.quoted.double.single-line.bytes.python</string> | |
| 2861 | 					<key>patterns</key> | |
| 2862 | 					<array> | |
| 2863 | 						<dict> | |
| 2864 | 							<key>include</key> | |
| 2865 | 							<string>#constant_placeholder</string> | |
| 2866 | 						</dict> | |
| 2867 | 						<dict> | |
| 2868 | 							<key>include</key> | |
| 2869 | 							<string>#escaped_unicode_char</string> | |
| 2870 | 						</dict> | |
| 2871 | 						<dict> | |
| 2872 | 							<key>include</key> | |
| 2873 | 							<string>#escaped_char</string> | |
| 2874 | 						</dict> | |
| 2875 | 					</array> | |
| 2876 | 				</dict> | |
| 2877 | 				<dict> | |
| 2878 | 					<key>begin</key> | |
| 2879 | 					<string>(")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string> | |
| 2880 | 					<key>beginCaptures</key> | |
| 2881 | 					<dict> | |
| 2882 | 						<key>1</key> | |
| 2883 | 						<dict> | |
| 2884 | 							<key>name</key> | |
| 2885 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2886 | 						</dict> | |
| 2887 | 					</dict> | |
| 2888 | 					<key>comment</key> | |
| 2889 | 					<string>double quoted string</string> | |
| 2890 | 					<key>end</key> | |
| 2891 | 					<string>(")|(\n)</string> | |
| 2892 | 					<key>endCaptures</key> | |
| 2893 | 					<dict> | |
| 2894 | 						<key>1</key> | |
| 2895 | 						<dict> | |
| 2896 | 							<key>name</key> | |
| 2897 | 							<string>punctuation.definition.string.end.python</string> | |
| 2898 | 						</dict> | |
| 2899 | 						<key>2</key> | |
| 2900 | 						<dict> | |
| 2901 | 							<key>name</key> | |
| 2902 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 2903 | 						</dict> | |
| 2904 | 					</dict> | |
| 2905 | 					<key>name</key> | |
| 2906 | 					<string>string.quoted.double.single-line.sql.python</string> | |
| 2907 | 					<key>patterns</key> | |
| 2908 | 					<array> | |
| 2909 | 						<dict> | |
| 2910 | 							<key>captures</key> | |
| 2911 | 							<dict> | |
| 2912 | 								<key>0</key> | |
| 2913 | 								<dict> | |
| 2914 | 									<key>patterns</key> | |
| 2915 | 									<array> | |
| 2916 | 										<dict> | |
| 2917 | 											<key>include</key> | |
| 2918 | 											<string>#constant_placeholder</string> | |
| 2919 | 										</dict> | |
| 2920 | 										<dict> | |
| 2921 | 											<key>include</key> | |
| 2922 | 											<string>#escaped_unicode_char</string> | |
| 2923 | 										</dict> | |
| 2924 | 										<dict> | |
| 2925 | 											<key>include</key> | |
| 2926 | 											<string>#escaped_char</string> | |
| 2927 | 										</dict> | |
| 2928 | 										<dict> | |
| 2929 | 											<key>include</key> | |
| 2930 | 											<string>source.sql</string> | |
| 2931 | 										</dict> | |
| 2932 | 									</array> | |
| 2933 | 								</dict> | |
| 2934 | 							</dict> | |
| 2935 | 							<key>match</key> | |
| 2936 | 							<string>(\G|^)([^"\\]|\\(.|\n))*(?="|$)</string> | |
| 2937 | 						</dict> | |
| 2938 | 					</array> | |
| 2939 | 				</dict> | |
| 2940 | 				<dict> | |
| 2941 | 					<key>begin</key> | |
| 2942 | 					<string>(""")</string> | |
| 2943 | 					<key>beginCaptures</key> | |
| 2944 | 					<dict> | |
| 2945 | 						<key>1</key> | |
| 2946 | 						<dict> | |
| 2947 | 							<key>name</key> | |
| 2948 | 							<string>punctuation.definition.string.begin.python</string> | |
| 2949 | 						</dict> | |
| 2950 | 					</dict> | |
| 2951 | 					<key>comment</key> | |
| 2952 | 					<string>double quoted string</string> | |
| 2953 | 					<key>end</key> | |
| 2954 | 					<string>"""</string> | |
| 2955 | 					<key>endCaptures</key> | |
| 2956 | 					<dict> | |
| 2957 | 						<key>0</key> | |
| 2958 | 						<dict> | |
| 2959 | 							<key>name</key> | |
| 2960 | 							<string>punctuation.definition.string.end.python</string> | |
| 2961 | 						</dict> | |
| 2962 | 					</dict> | |
| 2963 | 					<key>name</key> | |
| 2964 | 					<string>string.quoted.double.block.python</string> | |
| 2965 | 					<key>patterns</key> | |
| 2966 | 					<array> | |
| 2967 | 						<dict> | |
| 2968 | 							<key>begin</key> | |
| 2969 | 							<string>(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string> | |
| 2970 | 							<key>end</key> | |
| 2971 | 							<string>(?=""")</string> | |
| 2972 | 							<key>patterns</key> | |
| 2973 | 							<array> | |
| 2974 | 								<dict> | |
| 2975 | 									<key>include</key> | |
| 2976 | 									<string>#constant_placeholder</string> | |
| 2977 | 								</dict> | |
| 2978 | 								<dict> | |
| 2979 | 									<key>include</key> | |
| 2980 | 									<string>#escaped_unicode_char</string> | |
| 2981 | 								</dict> | |
| 2982 | 								<dict> | |
| 2983 | 									<key>include</key> | |
| 2984 | 									<string>#escaped_char</string> | |
| 2985 | 								</dict> | |
| 2986 | 								<dict> | |
| 2987 | 									<key>include</key> | |
| 2988 | 									<string>source.sql</string> | |
| 2989 | 								</dict> | |
| 2990 | 							</array> | |
| 2991 | 						</dict> | |
| 2992 | 						<dict> | |
| 2993 | 							<key>begin</key> | |
| 2994 | 							<string>(?=\S)</string> | |
| 2995 | 							<key>end</key> | |
| 2996 | 							<string>(?=""")</string> | |
| 2997 | 							<key>patterns</key> | |
| 2998 | 							<array> | |
| 2999 | 								<dict> | |
| 3000 | 									<key>include</key> | |
| 3001 | 									<string>#constant_placeholder</string> | |
| 3002 | 								</dict> | |
| 3003 | 								<dict> | |
| 3004 | 									<key>include</key> | |
| 3005 | 									<string>#escaped_unicode_char</string> | |
| 3006 | 								</dict> | |
| 3007 | 								<dict> | |
| 3008 | 									<key>include</key> | |
| 3009 | 									<string>#escaped_char</string> | |
| 3010 | 								</dict> | |
| 3011 | 							</array> | |
| 3012 | 						</dict> | |
| 3013 | 					</array> | |
| 3014 | 				</dict> | |
| 3015 | 				<dict> | |
| 3016 | 					<key>begin</key> | |
| 3017 | 					<string>(")</string> | |
| 3018 | 					<key>beginCaptures</key> | |
| 3019 | 					<dict> | |
| 3020 | 						<key>1</key> | |
| 3021 | 						<dict> | |
| 3022 | 							<key>name</key> | |
| 3023 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3024 | 						</dict> | |
| 3025 | 					</dict> | |
| 3026 | 					<key>comment</key> | |
| 3027 | 					<string>double quoted string</string> | |
| 3028 | 					<key>end</key> | |
| 3029 | 					<string>(")|(\n)</string> | |
| 3030 | 					<key>endCaptures</key> | |
| 3031 | 					<dict> | |
| 3032 | 						<key>1</key> | |
| 3033 | 						<dict> | |
| 3034 | 							<key>name</key> | |
| 3035 | 							<string>punctuation.definition.string.end.python</string> | |
| 3036 | 						</dict> | |
| 3037 | 						<key>2</key> | |
| 3038 | 						<dict> | |
| 3039 | 							<key>name</key> | |
| 3040 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3041 | 						</dict> | |
| 3042 | 					</dict> | |
| 3043 | 					<key>name</key> | |
| 3044 | 					<string>string.quoted.double.single-line.python</string> | |
| 3045 | 					<key>patterns</key> | |
| 3046 | 					<array> | |
| 3047 | 						<dict> | |
| 3048 | 							<key>include</key> | |
| 3049 | 							<string>#constant_placeholder</string> | |
| 3050 | 						</dict> | |
| 3051 | 						<dict> | |
| 3052 | 							<key>include</key> | |
| 3053 | 							<string>#escaped_unicode_char</string> | |
| 3054 | 						</dict> | |
| 3055 | 						<dict> | |
| 3056 | 							<key>include</key> | |
| 3057 | 							<string>#escaped_char</string> | |
| 3058 | 						</dict> | |
| 3059 | 					</array> | |
| 3060 | 				</dict> | |
| 3061 | 			</array> | |
| 3062 | 		</dict> | |
| 3063 | 		<key>string_quoted_single</key> | |
| 3064 | 		<dict> | |
| 3065 | 			<key>patterns</key> | |
| 3066 | 			<array> | |
| 3067 | 				<dict> | |
| 3068 | 					<key>begin</key> | |
| 3069 | 					<string>([uU]r)(''')</string> | |
| 3070 | 					<key>beginCaptures</key> | |
| 3071 | 					<dict> | |
| 3072 | 						<key>1</key> | |
| 3073 | 						<dict> | |
| 3074 | 							<key>name</key> | |
| 3075 | 							<string>storage.type.string.python</string> | |
| 3076 | 						</dict> | |
| 3077 | 						<key>2</key> | |
| 3078 | 						<dict> | |
| 3079 | 							<key>name</key> | |
| 3080 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3081 | 						</dict> | |
| 3082 | 					</dict> | |
| 3083 | 					<key>comment</key> | |
| 3084 | 					<string>single quoted unicode-raw string</string> | |
| 3085 | 					<key>end</key> | |
| 3086 | 					<string>'''</string> | |
| 3087 | 					<key>endCaptures</key> | |
| 3088 | 					<dict> | |
| 3089 | 						<key>0</key> | |
| 3090 | 						<dict> | |
| 3091 | 							<key>name</key> | |
| 3092 | 							<string>punctuation.definition.string.end.python</string> | |
| 3093 | 						</dict> | |
| 3094 | 					</dict> | |
| 3095 | 					<key>name</key> | |
| 3096 | 					<string>string.quoted.single.block.unicode-raw-regex.python</string> | |
| 3097 | 					<key>patterns</key> | |
| 3098 | 					<array> | |
| 3099 | 						<dict> | |
| 3100 | 							<key>include</key> | |
| 3101 | 							<string>#constant_placeholder</string> | |
| 3102 | 						</dict> | |
| 3103 | 						<dict> | |
| 3104 | 							<key>include</key> | |
| 3105 | 							<string>#escaped_char_raw_single</string> | |
| 3106 | 						</dict> | |
| 3107 | 						<dict> | |
| 3108 | 							<key>include</key> | |
| 3109 | 							<string>#regular_expressions</string> | |
| 3110 | 						</dict> | |
| 3111 | 					</array> | |
| 3112 | 				</dict> | |
| 3113 | 				<dict> | |
| 3114 | 					<key>begin</key> | |
| 3115 | 					<string>([uU]R)(''')</string> | |
| 3116 | 					<key>beginCaptures</key> | |
| 3117 | 					<dict> | |
| 3118 | 						<key>1</key> | |
| 3119 | 						<dict> | |
| 3120 | 							<key>name</key> | |
| 3121 | 							<string>storage.type.string.python</string> | |
| 3122 | 						</dict> | |
| 3123 | 						<key>2</key> | |
| 3124 | 						<dict> | |
| 3125 | 							<key>name</key> | |
| 3126 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3127 | 						</dict> | |
| 3128 | 					</dict> | |
| 3129 | 					<key>comment</key> | |
| 3130 | 					<string>single quoted unicode-raw string</string> | |
| 3131 | 					<key>end</key> | |
| 3132 | 					<string>'''</string> | |
| 3133 | 					<key>endCaptures</key> | |
| 3134 | 					<dict> | |
| 3135 | 						<key>0</key> | |
| 3136 | 						<dict> | |
| 3137 | 							<key>name</key> | |
| 3138 | 							<string>punctuation.definition.string.end.python</string> | |
| 3139 | 						</dict> | |
| 3140 | 					</dict> | |
| 3141 | 					<key>name</key> | |
| 3142 | 					<string>string.quoted.single.block.unicode-raw.python</string> | |
| 3143 | 					<key>patterns</key> | |
| 3144 | 					<array> | |
| 3145 | 						<dict> | |
| 3146 | 							<key>include</key> | |
| 3147 | 							<string>#constant_placeholder</string> | |
| 3148 | 						</dict> | |
| 3149 | 						<dict> | |
| 3150 | 							<key>include</key> | |
| 3151 | 							<string>#escaped_char_raw_single</string> | |
| 3152 | 						</dict> | |
| 3153 | 					</array> | |
| 3154 | 				</dict> | |
| 3155 | 				<dict> | |
| 3156 | 					<key>begin</key> | |
| 3157 | 					<string>([bB]r)(''')</string> | |
| 3158 | 					<key>beginCaptures</key> | |
| 3159 | 					<dict> | |
| 3160 | 						<key>1</key> | |
| 3161 | 						<dict> | |
| 3162 | 							<key>name</key> | |
| 3163 | 							<string>storage.type.string.python</string> | |
| 3164 | 						</dict> | |
| 3165 | 						<key>2</key> | |
| 3166 | 						<dict> | |
| 3167 | 							<key>name</key> | |
| 3168 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3169 | 						</dict> | |
| 3170 | 					</dict> | |
| 3171 | 					<key>comment</key> | |
| 3172 | 					<string>single quoted bytes-raw string</string> | |
| 3173 | 					<key>end</key> | |
| 3174 | 					<string>'''</string> | |
| 3175 | 					<key>endCaptures</key> | |
| 3176 | 					<dict> | |
| 3177 | 						<key>0</key> | |
| 3178 | 						<dict> | |
| 3179 | 							<key>name</key> | |
| 3180 | 							<string>punctuation.definition.string.end.python</string> | |
| 3181 | 						</dict> | |
| 3182 | 					</dict> | |
| 3183 | 					<key>name</key> | |
| 3184 | 					<string>string.quoted.single.block.bytes-raw-regex.python</string> | |
| 3185 | 					<key>patterns</key> | |
| 3186 | 					<array> | |
| 3187 | 						<dict> | |
| 3188 | 							<key>include</key> | |
| 3189 | 							<string>#constant_placeholder</string> | |
| 3190 | 						</dict> | |
| 3191 | 						<dict> | |
| 3192 | 							<key>include</key> | |
| 3193 | 							<string>#escaped_char_raw_single</string> | |
| 3194 | 						</dict> | |
| 3195 | 						<dict> | |
| 3196 | 							<key>include</key> | |
| 3197 | 							<string>#regular_expressions</string> | |
| 3198 | 						</dict> | |
| 3199 | 					</array> | |
| 3200 | 				</dict> | |
| 3201 | 				<dict> | |
| 3202 | 					<key>begin</key> | |
| 3203 | 					<string>([bB]R)(''')</string> | |
| 3204 | 					<key>beginCaptures</key> | |
| 3205 | 					<dict> | |
| 3206 | 						<key>1</key> | |
| 3207 | 						<dict> | |
| 3208 | 							<key>name</key> | |
| 3209 | 							<string>storage.type.string.python</string> | |
| 3210 | 						</dict> | |
| 3211 | 						<key>2</key> | |
| 3212 | 						<dict> | |
| 3213 | 							<key>name</key> | |
| 3214 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3215 | 						</dict> | |
| 3216 | 					</dict> | |
| 3217 | 					<key>comment</key> | |
| 3218 | 					<string>single quoted bytes-raw string</string> | |
| 3219 | 					<key>end</key> | |
| 3220 | 					<string>'''</string> | |
| 3221 | 					<key>endCaptures</key> | |
| 3222 | 					<dict> | |
| 3223 | 						<key>0</key> | |
| 3224 | 						<dict> | |
| 3225 | 							<key>name</key> | |
| 3226 | 							<string>punctuation.definition.string.end.python</string> | |
| 3227 | 						</dict> | |
| 3228 | 					</dict> | |
| 3229 | 					<key>name</key> | |
| 3230 | 					<string>string.quoted.single.block.bytes-raw.python</string> | |
| 3231 | 					<key>patterns</key> | |
| 3232 | 					<array> | |
| 3233 | 						<dict> | |
| 3234 | 							<key>include</key> | |
| 3235 | 							<string>#constant_placeholder</string> | |
| 3236 | 						</dict> | |
| 3237 | 						<dict> | |
| 3238 | 							<key>include</key> | |
| 3239 | 							<string>#escaped_char_raw_single</string> | |
| 3240 | 						</dict> | |
| 3241 | 					</array> | |
| 3242 | 				</dict> | |
| 3243 | 				<dict> | |
| 3244 | 					<key>begin</key> | |
| 3245 | 					<string>(r)(''')</string> | |
| 3246 | 					<key>beginCaptures</key> | |
| 3247 | 					<dict> | |
| 3248 | 						<key>1</key> | |
| 3249 | 						<dict> | |
| 3250 | 							<key>name</key> | |
| 3251 | 							<string>storage.type.string.python</string> | |
| 3252 | 						</dict> | |
| 3253 | 						<key>2</key> | |
| 3254 | 						<dict> | |
| 3255 | 							<key>name</key> | |
| 3256 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3257 | 						</dict> | |
| 3258 | 					</dict> | |
| 3259 | 					<key>comment</key> | |
| 3260 | 					<string>single quoted raw string</string> | |
| 3261 | 					<key>end</key> | |
| 3262 | 					<string>'''</string> | |
| 3263 | 					<key>endCaptures</key> | |
| 3264 | 					<dict> | |
| 3265 | 						<key>0</key> | |
| 3266 | 						<dict> | |
| 3267 | 							<key>name</key> | |
| 3268 | 							<string>punctuation.definition.string.end.python</string> | |
| 3269 | 						</dict> | |
| 3270 | 					</dict> | |
| 3271 | 					<key>name</key> | |
| 3272 | 					<string>string.quoted.single.block.raw-regex.python</string> | |
| 3273 | 					<key>patterns</key> | |
| 3274 | 					<array> | |
| 3275 | 						<dict> | |
| 3276 | 							<key>include</key> | |
| 3277 | 							<string>#constant_placeholder</string> | |
| 3278 | 						</dict> | |
| 3279 | 						<dict> | |
| 3280 | 							<key>include</key> | |
| 3281 | 							<string>#escaped_char_raw_single</string> | |
| 3282 | 						</dict> | |
| 3283 | 						<dict> | |
| 3284 | 							<key>include</key> | |
| 3285 | 							<string>#regular_expressions</string> | |
| 3286 | 						</dict> | |
| 3287 | 					</array> | |
| 3288 | 				</dict> | |
| 3289 | 				<dict> | |
| 3290 | 					<key>begin</key> | |
| 3291 | 					<string>(R)(''')</string> | |
| 3292 | 					<key>beginCaptures</key> | |
| 3293 | 					<dict> | |
| 3294 | 						<key>1</key> | |
| 3295 | 						<dict> | |
| 3296 | 							<key>name</key> | |
| 3297 | 							<string>storage.type.string.python</string> | |
| 3298 | 						</dict> | |
| 3299 | 						<key>2</key> | |
| 3300 | 						<dict> | |
| 3301 | 							<key>name</key> | |
| 3302 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3303 | 						</dict> | |
| 3304 | 					</dict> | |
| 3305 | 					<key>comment</key> | |
| 3306 | 					<string>single quoted raw string</string> | |
| 3307 | 					<key>end</key> | |
| 3308 | 					<string>'''</string> | |
| 3309 | 					<key>endCaptures</key> | |
| 3310 | 					<dict> | |
| 3311 | 						<key>0</key> | |
| 3312 | 						<dict> | |
| 3313 | 							<key>name</key> | |
| 3314 | 							<string>punctuation.definition.string.end.python</string> | |
| 3315 | 						</dict> | |
| 3316 | 					</dict> | |
| 3317 | 					<key>name</key> | |
| 3318 | 					<string>string.quoted.single.block.raw.python</string> | |
| 3319 | 					<key>patterns</key> | |
| 3320 | 					<array> | |
| 3321 | 						<dict> | |
| 3322 | 							<key>include</key> | |
| 3323 | 							<string>#constant_placeholder</string> | |
| 3324 | 						</dict> | |
| 3325 | 						<dict> | |
| 3326 | 							<key>include</key> | |
| 3327 | 							<string>#escaped_char_raw_single</string> | |
| 3328 | 						</dict> | |
| 3329 | 					</array> | |
| 3330 | 				</dict> | |
| 3331 | 				<dict> | |
| 3332 | 					<key>begin</key> | |
| 3333 | 					<string>([uU])(''')</string> | |
| 3334 | 					<key>beginCaptures</key> | |
| 3335 | 					<dict> | |
| 3336 | 						<key>1</key> | |
| 3337 | 						<dict> | |
| 3338 | 							<key>name</key> | |
| 3339 | 							<string>storage.type.string.python</string> | |
| 3340 | 						</dict> | |
| 3341 | 						<key>2</key> | |
| 3342 | 						<dict> | |
| 3343 | 							<key>name</key> | |
| 3344 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3345 | 						</dict> | |
| 3346 | 					</dict> | |
| 3347 | 					<key>comment</key> | |
| 3348 | 					<string>single quoted unicode string</string> | |
| 3349 | 					<key>end</key> | |
| 3350 | 					<string>'''</string> | |
| 3351 | 					<key>endCaptures</key> | |
| 3352 | 					<dict> | |
| 3353 | 						<key>0</key> | |
| 3354 | 						<dict> | |
| 3355 | 							<key>name</key> | |
| 3356 | 							<string>punctuation.definition.string.end.python</string> | |
| 3357 | 						</dict> | |
| 3358 | 					</dict> | |
| 3359 | 					<key>name</key> | |
| 3360 | 					<string>string.quoted.single.block.unicode.python</string> | |
| 3361 | 					<key>patterns</key> | |
| 3362 | 					<array> | |
| 3363 | 						<dict> | |
| 3364 | 							<key>include</key> | |
| 3365 | 							<string>#constant_placeholder</string> | |
| 3366 | 						</dict> | |
| 3367 | 						<dict> | |
| 3368 | 							<key>include</key> | |
| 3369 | 							<string>#escaped_unicode_char</string> | |
| 3370 | 						</dict> | |
| 3371 | 						<dict> | |
| 3372 | 							<key>include</key> | |
| 3373 | 							<string>#escaped_char</string> | |
| 3374 | 						</dict> | |
| 3375 | 					</array> | |
| 3376 | 				</dict> | |
| 3377 | 				<dict> | |
| 3378 | 					<key>begin</key> | |
| 3379 | 					<string>([bB])(''')</string> | |
| 3380 | 					<key>beginCaptures</key> | |
| 3381 | 					<dict> | |
| 3382 | 						<key>1</key> | |
| 3383 | 						<dict> | |
| 3384 | 							<key>name</key> | |
| 3385 | 							<string>storage.type.string.python</string> | |
| 3386 | 						</dict> | |
| 3387 | 						<key>2</key> | |
| 3388 | 						<dict> | |
| 3389 | 							<key>name</key> | |
| 3390 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3391 | 						</dict> | |
| 3392 | 					</dict> | |
| 3393 | 					<key>comment</key> | |
| 3394 | 					<string>single quoted bytes string</string> | |
| 3395 | 					<key>end</key> | |
| 3396 | 					<string>'''</string> | |
| 3397 | 					<key>endCaptures</key> | |
| 3398 | 					<dict> | |
| 3399 | 						<key>0</key> | |
| 3400 | 						<dict> | |
| 3401 | 							<key>name</key> | |
| 3402 | 							<string>punctuation.definition.string.end.python</string> | |
| 3403 | 						</dict> | |
| 3404 | 					</dict> | |
| 3405 | 					<key>name</key> | |
| 3406 | 					<string>string.quoted.single.block.bytes.python</string> | |
| 3407 | 					<key>patterns</key> | |
| 3408 | 					<array> | |
| 3409 | 						<dict> | |
| 3410 | 							<key>include</key> | |
| 3411 | 							<string>#constant_placeholder</string> | |
| 3412 | 						</dict> | |
| 3413 | 						<dict> | |
| 3414 | 							<key>include</key> | |
| 3415 | 							<string>#escaped_unicode_char</string> | |
| 3416 | 						</dict> | |
| 3417 | 						<dict> | |
| 3418 | 							<key>include</key> | |
| 3419 | 							<string>#escaped_char</string> | |
| 3420 | 						</dict> | |
| 3421 | 					</array> | |
| 3422 | 				</dict> | |
| 3423 | 				<dict> | |
| 3424 | 					<key>captures</key> | |
| 3425 | 					<dict> | |
| 3426 | 						<key>1</key> | |
| 3427 | 						<dict> | |
| 3428 | 							<key>name</key> | |
| 3429 | 							<string>storage.type.string.python</string> | |
| 3430 | 						</dict> | |
| 3431 | 						<key>2</key> | |
| 3432 | 						<dict> | |
| 3433 | 							<key>name</key> | |
| 3434 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3435 | 						</dict> | |
| 3436 | 						<key>3</key> | |
| 3437 | 						<dict> | |
| 3438 | 							<key>patterns</key> | |
| 3439 | 							<array> | |
| 3440 | 								<dict> | |
| 3441 | 									<key>include</key> | |
| 3442 | 									<string>#constant_placeholder</string> | |
| 3443 | 								</dict> | |
| 3444 | 								<dict> | |
| 3445 | 									<key>include</key> | |
| 3446 | 									<string>#escaped_char_raw_single</string> | |
| 3447 | 								</dict> | |
| 3448 | 								<dict> | |
| 3449 | 									<key>include</key> | |
| 3450 | 									<string>#regular_expressions</string> | |
| 3451 | 								</dict> | |
| 3452 | 							</array> | |
| 3453 | 						</dict> | |
| 3454 | 						<key>4</key> | |
| 3455 | 						<dict> | |
| 3456 | 							<key>name</key> | |
| 3457 | 							<string>punctuation.definition.string.end.python</string> | |
| 3458 | 						</dict> | |
| 3459 | 					</dict> | |
| 3460 | 					<key>comment</key> | |
| 3461 | 					<string>single quoted raw string</string> | |
| 3462 | 					<key>match</key> | |
| 3463 | 					<string>([uU]r)(')((?:[^'\\]|\\.)*)(')</string> | |
| 3464 | 					<key>name</key> | |
| 3465 | 					<string>string.quoted.single.single-line.unicode-raw-regex.python</string> | |
| 3466 | 				</dict> | |
| 3467 | 				<dict> | |
| 3468 | 					<key>begin</key> | |
| 3469 | 					<string>([uU]R)(')</string> | |
| 3470 | 					<key>beginCaptures</key> | |
| 3471 | 					<dict> | |
| 3472 | 						<key>1</key> | |
| 3473 | 						<dict> | |
| 3474 | 							<key>name</key> | |
| 3475 | 							<string>storage.type.string.python</string> | |
| 3476 | 						</dict> | |
| 3477 | 						<key>2</key> | |
| 3478 | 						<dict> | |
| 3479 | 							<key>name</key> | |
| 3480 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3481 | 						</dict> | |
| 3482 | 					</dict> | |
| 3483 | 					<key>comment</key> | |
| 3484 | 					<string>single quoted unicode-raw string</string> | |
| 3485 | 					<key>end</key> | |
| 3486 | 					<string>(')|(\n)</string> | |
| 3487 | 					<key>endCaptures</key> | |
| 3488 | 					<dict> | |
| 3489 | 						<key>1</key> | |
| 3490 | 						<dict> | |
| 3491 | 							<key>name</key> | |
| 3492 | 							<string>punctuation.definition.string.end.python</string> | |
| 3493 | 						</dict> | |
| 3494 | 						<key>2</key> | |
| 3495 | 						<dict> | |
| 3496 | 							<key>name</key> | |
| 3497 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3498 | 						</dict> | |
| 3499 | 					</dict> | |
| 3500 | 					<key>name</key> | |
| 3501 | 					<string>string.quoted.single.single-line.unicode-raw.python</string> | |
| 3502 | 					<key>patterns</key> | |
| 3503 | 					<array> | |
| 3504 | 						<dict> | |
| 3505 | 							<key>include</key> | |
| 3506 | 							<string>#constant_placeholder</string> | |
| 3507 | 						</dict> | |
| 3508 | 						<dict> | |
| 3509 | 							<key>include</key> | |
| 3510 | 							<string>#escaped_char_raw_single</string> | |
| 3511 | 						</dict> | |
| 3512 | 					</array> | |
| 3513 | 				</dict> | |
| 3514 | 				<dict> | |
| 3515 | 					<key>begin</key> | |
| 3516 | 					<string>([bB]r)(')</string> | |
| 3517 | 					<key>beginCaptures</key> | |
| 3518 | 					<dict> | |
| 3519 | 						<key>1</key> | |
| 3520 | 						<dict> | |
| 3521 | 							<key>name</key> | |
| 3522 | 							<string>storage.type.string.python</string> | |
| 3523 | 						</dict> | |
| 3524 | 						<key>2</key> | |
| 3525 | 						<dict> | |
| 3526 | 							<key>name</key> | |
| 3527 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3528 | 						</dict> | |
| 3529 | 					</dict> | |
| 3530 | 					<key>comment</key> | |
| 3531 | 					<string>single quoted bytes-raw string</string> | |
| 3532 | 					<key>end</key> | |
| 3533 | 					<string>(')|(\n)</string> | |
| 3534 | 					<key>endCaptures</key> | |
| 3535 | 					<dict> | |
| 3536 | 						<key>1</key> | |
| 3537 | 						<dict> | |
| 3538 | 							<key>name</key> | |
| 3539 | 							<string>punctuation.definition.string.end.python</string> | |
| 3540 | 						</dict> | |
| 3541 | 						<key>2</key> | |
| 3542 | 						<dict> | |
| 3543 | 							<key>name</key> | |
| 3544 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3545 | 						</dict> | |
| 3546 | 					</dict> | |
| 3547 | 					<key>name</key> | |
| 3548 | 					<string>string.quoted.single.single-line.bytes-raw-regex.python</string> | |
| 3549 | 					<key>patterns</key> | |
| 3550 | 					<array> | |
| 3551 | 						<dict> | |
| 3552 | 							<key>include</key> | |
| 3553 | 							<string>#constant_placeholder</string> | |
| 3554 | 						</dict> | |
| 3555 | 						<dict> | |
| 3556 | 							<key>include</key> | |
| 3557 | 							<string>#escaped_char_raw_single</string> | |
| 3558 | 						</dict> | |
| 3559 | 						<dict> | |
| 3560 | 							<key>include</key> | |
| 3561 | 							<string>#regular_expressions</string> | |
| 3562 | 						</dict> | |
| 3563 | 					</array> | |
| 3564 | 				</dict> | |
| 3565 | 				<dict> | |
| 3566 | 					<key>begin</key> | |
| 3567 | 					<string>([bB]R)(')</string> | |
| 3568 | 					<key>beginCaptures</key> | |
| 3569 | 					<dict> | |
| 3570 | 						<key>1</key> | |
| 3571 | 						<dict> | |
| 3572 | 							<key>name</key> | |
| 3573 | 							<string>storage.type.string.python</string> | |
| 3574 | 						</dict> | |
| 3575 | 						<key>2</key> | |
| 3576 | 						<dict> | |
| 3577 | 							<key>name</key> | |
| 3578 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3579 | 						</dict> | |
| 3580 | 					</dict> | |
| 3581 | 					<key>comment</key> | |
| 3582 | 					<string>single quoted bytes-raw string</string> | |
| 3583 | 					<key>end</key> | |
| 3584 | 					<string>(')|(\n)</string> | |
| 3585 | 					<key>endCaptures</key> | |
| 3586 | 					<dict> | |
| 3587 | 						<key>1</key> | |
| 3588 | 						<dict> | |
| 3589 | 							<key>name</key> | |
| 3590 | 							<string>punctuation.definition.string.end.python</string> | |
| 3591 | 						</dict> | |
| 3592 | 						<key>2</key> | |
| 3593 | 						<dict> | |
| 3594 | 							<key>name</key> | |
| 3595 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3596 | 						</dict> | |
| 3597 | 					</dict> | |
| 3598 | 					<key>name</key> | |
| 3599 | 					<string>string.quoted.single.single-line.bytes-raw.python</string> | |
| 3600 | 					<key>patterns</key> | |
| 3601 | 					<array> | |
| 3602 | 						<dict> | |
| 3603 | 							<key>include</key> | |
| 3604 | 							<string>#constant_placeholder</string> | |
| 3605 | 						</dict> | |
| 3606 | 						<dict> | |
| 3607 | 							<key>include</key> | |
| 3608 | 							<string>#escaped_char_raw_single</string> | |
| 3609 | 						</dict> | |
| 3610 | 					</array> | |
| 3611 | 				</dict> | |
| 3612 | 				<dict> | |
| 3613 | 					<key>captures</key> | |
| 3614 | 					<dict> | |
| 3615 | 						<key>1</key> | |
| 3616 | 						<dict> | |
| 3617 | 							<key>name</key> | |
| 3618 | 							<string>storage.type.string.python</string> | |
| 3619 | 						</dict> | |
| 3620 | 						<key>2</key> | |
| 3621 | 						<dict> | |
| 3622 | 							<key>name</key> | |
| 3623 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3624 | 						</dict> | |
| 3625 | 						<key>3</key> | |
| 3626 | 						<dict> | |
| 3627 | 							<key>patterns</key> | |
| 3628 | 							<array> | |
| 3629 | 								<dict> | |
| 3630 | 									<key>include</key> | |
| 3631 | 									<string>#constant_placeholder</string> | |
| 3632 | 								</dict> | |
| 3633 | 								<dict> | |
| 3634 | 									<key>include</key> | |
| 3635 | 									<string>#escaped_char_raw_single</string> | |
| 3636 | 								</dict> | |
| 3637 | 								<dict> | |
| 3638 | 									<key>include</key> | |
| 3639 | 									<string>#regular_expressions</string> | |
| 3640 | 								</dict> | |
| 3641 | 							</array> | |
| 3642 | 						</dict> | |
| 3643 | 						<key>4</key> | |
| 3644 | 						<dict> | |
| 3645 | 							<key>name</key> | |
| 3646 | 							<string>punctuation.definition.string.end.python</string> | |
| 3647 | 						</dict> | |
| 3648 | 					</dict> | |
| 3649 | 					<key>match</key> | |
| 3650 | 					<string>(r)(')((?:[^'\\]|\\.)*)(')</string> | |
| 3651 | 					<key>name</key> | |
| 3652 | 					<string>string.quoted.single.single-line.raw-regex.python</string> | |
| 3653 | 				</dict> | |
| 3654 | 				<dict> | |
| 3655 | 					<key>begin</key> | |
| 3656 | 					<string>(R)(')</string> | |
| 3657 | 					<key>beginCaptures</key> | |
| 3658 | 					<dict> | |
| 3659 | 						<key>1</key> | |
| 3660 | 						<dict> | |
| 3661 | 							<key>name</key> | |
| 3662 | 							<string>storage.type.string.python</string> | |
| 3663 | 						</dict> | |
| 3664 | 						<key>2</key> | |
| 3665 | 						<dict> | |
| 3666 | 							<key>name</key> | |
| 3667 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3668 | 						</dict> | |
| 3669 | 					</dict> | |
| 3670 | 					<key>comment</key> | |
| 3671 | 					<string>single quoted raw string</string> | |
| 3672 | 					<key>end</key> | |
| 3673 | 					<string>(')|(\n)</string> | |
| 3674 | 					<key>endCaptures</key> | |
| 3675 | 					<dict> | |
| 3676 | 						<key>1</key> | |
| 3677 | 						<dict> | |
| 3678 | 							<key>name</key> | |
| 3679 | 							<string>punctuation.definition.string.end.python</string> | |
| 3680 | 						</dict> | |
| 3681 | 						<key>2</key> | |
| 3682 | 						<dict> | |
| 3683 | 							<key>name</key> | |
| 3684 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3685 | 						</dict> | |
| 3686 | 					</dict> | |
| 3687 | 					<key>name</key> | |
| 3688 | 					<string>string.quoted.single.single-line.raw.python</string> | |
| 3689 | 					<key>patterns</key> | |
| 3690 | 					<array> | |
| 3691 | 						<dict> | |
| 3692 | 							<key>include</key> | |
| 3693 | 							<string>#constant_placeholder</string> | |
| 3694 | 						</dict> | |
| 3695 | 						<dict> | |
| 3696 | 							<key>include</key> | |
| 3697 | 							<string>#escaped_char_raw_single</string> | |
| 3698 | 						</dict> | |
| 3699 | 					</array> | |
| 3700 | 				</dict> | |
| 3701 | 				<dict> | |
| 3702 | 					<key>begin</key> | |
| 3703 | 					<string>([uU])(')</string> | |
| 3704 | 					<key>beginCaptures</key> | |
| 3705 | 					<dict> | |
| 3706 | 						<key>1</key> | |
| 3707 | 						<dict> | |
| 3708 | 							<key>name</key> | |
| 3709 | 							<string>storage.type.string.python</string> | |
| 3710 | 						</dict> | |
| 3711 | 						<key>2</key> | |
| 3712 | 						<dict> | |
| 3713 | 							<key>name</key> | |
| 3714 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3715 | 						</dict> | |
| 3716 | 					</dict> | |
| 3717 | 					<key>comment</key> | |
| 3718 | 					<string>single quoted unicode string</string> | |
| 3719 | 					<key>end</key> | |
| 3720 | 					<string>(')|(\n)</string> | |
| 3721 | 					<key>endCaptures</key> | |
| 3722 | 					<dict> | |
| 3723 | 						<key>1</key> | |
| 3724 | 						<dict> | |
| 3725 | 							<key>name</key> | |
| 3726 | 							<string>punctuation.definition.string.end.python</string> | |
| 3727 | 						</dict> | |
| 3728 | 						<key>2</key> | |
| 3729 | 						<dict> | |
| 3730 | 							<key>name</key> | |
| 3731 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3732 | 						</dict> | |
| 3733 | 					</dict> | |
| 3734 | 					<key>name</key> | |
| 3735 | 					<string>string.quoted.single.single-line.unicode.python</string> | |
| 3736 | 					<key>patterns</key> | |
| 3737 | 					<array> | |
| 3738 | 						<dict> | |
| 3739 | 							<key>include</key> | |
| 3740 | 							<string>#constant_placeholder</string> | |
| 3741 | 						</dict> | |
| 3742 | 						<dict> | |
| 3743 | 							<key>include</key> | |
| 3744 | 							<string>#escaped_unicode_char</string> | |
| 3745 | 						</dict> | |
| 3746 | 						<dict> | |
| 3747 | 							<key>include</key> | |
| 3748 | 							<string>#escaped_char</string> | |
| 3749 | 						</dict> | |
| 3750 | 					</array> | |
| 3751 | 				</dict> | |
| 3752 | 				<dict> | |
| 3753 | 					<key>begin</key> | |
| 3754 | 					<string>([bB])(')</string> | |
| 3755 | 					<key>beginCaptures</key> | |
| 3756 | 					<dict> | |
| 3757 | 						<key>1</key> | |
| 3758 | 						<dict> | |
| 3759 | 							<key>name</key> | |
| 3760 | 							<string>storage.type.string.python</string> | |
| 3761 | 						</dict> | |
| 3762 | 						<key>2</key> | |
| 3763 | 						<dict> | |
| 3764 | 							<key>name</key> | |
| 3765 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3766 | 						</dict> | |
| 3767 | 					</dict> | |
| 3768 | 					<key>comment</key> | |
| 3769 | 					<string>single quoted bytes string</string> | |
| 3770 | 					<key>end</key> | |
| 3771 | 					<string>(')|(\n)</string> | |
| 3772 | 					<key>endCaptures</key> | |
| 3773 | 					<dict> | |
| 3774 | 						<key>1</key> | |
| 3775 | 						<dict> | |
| 3776 | 							<key>name</key> | |
| 3777 | 							<string>punctuation.definition.string.end.python</string> | |
| 3778 | 						</dict> | |
| 3779 | 						<key>2</key> | |
| 3780 | 						<dict> | |
| 3781 | 							<key>name</key> | |
| 3782 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3783 | 						</dict> | |
| 3784 | 					</dict> | |
| 3785 | 					<key>name</key> | |
| 3786 | 					<string>string.quoted.single.single-line.bytes.python</string> | |
| 3787 | 					<key>patterns</key> | |
| 3788 | 					<array> | |
| 3789 | 						<dict> | |
| 3790 | 							<key>include</key> | |
| 3791 | 							<string>#constant_placeholder</string> | |
| 3792 | 						</dict> | |
| 3793 | 						<dict> | |
| 3794 | 							<key>include</key> | |
| 3795 | 							<string>#escaped_unicode_char</string> | |
| 3796 | 						</dict> | |
| 3797 | 						<dict> | |
| 3798 | 							<key>include</key> | |
| 3799 | 							<string>#escaped_char</string> | |
| 3800 | 						</dict> | |
| 3801 | 					</array> | |
| 3802 | 				</dict> | |
| 3803 | 				<dict> | |
| 3804 | 					<key>begin</key> | |
| 3805 | 					<string>(')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string> | |
| 3806 | 					<key>beginCaptures</key> | |
| 3807 | 					<dict> | |
| 3808 | 						<key>1</key> | |
| 3809 | 						<dict> | |
| 3810 | 							<key>name</key> | |
| 3811 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3812 | 						</dict> | |
| 3813 | 					</dict> | |
| 3814 | 					<key>comment</key> | |
| 3815 | 					<string>single quoted string</string> | |
| 3816 | 					<key>end</key> | |
| 3817 | 					<string>(')|(\n)</string> | |
| 3818 | 					<key>endCaptures</key> | |
| 3819 | 					<dict> | |
| 3820 | 						<key>1</key> | |
| 3821 | 						<dict> | |
| 3822 | 							<key>name</key> | |
| 3823 | 							<string>punctuation.definition.string.end.python</string> | |
| 3824 | 						</dict> | |
| 3825 | 						<key>2</key> | |
| 3826 | 						<dict> | |
| 3827 | 							<key>name</key> | |
| 3828 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3829 | 						</dict> | |
| 3830 | 					</dict> | |
| 3831 | 					<key>name</key> | |
| 3832 | 					<string>string.quoted.single.single-line.python</string> | |
| 3833 | 					<key>patterns</key> | |
| 3834 | 					<array> | |
| 3835 | 						<dict> | |
| 3836 | 							<key>captures</key> | |
| 3837 | 							<dict> | |
| 3838 | 								<key>0</key> | |
| 3839 | 								<dict> | |
| 3840 | 									<key>patterns</key> | |
| 3841 | 									<array> | |
| 3842 | 										<dict> | |
| 3843 | 											<key>include</key> | |
| 3844 | 											<string>#constant_placeholder</string> | |
| 3845 | 										</dict> | |
| 3846 | 										<dict> | |
| 3847 | 											<key>include</key> | |
| 3848 | 											<string>#escaped_unicode_char</string> | |
| 3849 | 										</dict> | |
| 3850 | 										<dict> | |
| 3851 | 											<key>include</key> | |
| 3852 | 											<string>#escaped_char</string> | |
| 3853 | 										</dict> | |
| 3854 | 										<dict> | |
| 3855 | 											<key>include</key> | |
| 3856 | 											<string>source.sql</string> | |
| 3857 | 										</dict> | |
| 3858 | 									</array> | |
| 3859 | 								</dict> | |
| 3860 | 							</dict> | |
| 3861 | 							<key>match</key> | |
| 3862 | 							<string>(\G|^)([^'\\]|\\(.|\n))*(?='|$)</string> | |
| 3863 | 						</dict> | |
| 3864 | 					</array> | |
| 3865 | 				</dict> | |
| 3866 | 				<dict> | |
| 3867 | 					<key>begin</key> | |
| 3868 | 					<string>(''')</string> | |
| 3869 | 					<key>beginCaptures</key> | |
| 3870 | 					<dict> | |
| 3871 | 						<key>1</key> | |
| 3872 | 						<dict> | |
| 3873 | 							<key>name</key> | |
| 3874 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3875 | 						</dict> | |
| 3876 | 					</dict> | |
| 3877 | 					<key>comment</key> | |
| 3878 | 					<string>single quoted string</string> | |
| 3879 | 					<key>end</key> | |
| 3880 | 					<string>'''</string> | |
| 3881 | 					<key>endCaptures</key> | |
| 3882 | 					<dict> | |
| 3883 | 						<key>0</key> | |
| 3884 | 						<dict> | |
| 3885 | 							<key>name</key> | |
| 3886 | 							<string>punctuation.definition.string.end.python</string> | |
| 3887 | 						</dict> | |
| 3888 | 					</dict> | |
| 3889 | 					<key>name</key> | |
| 3890 | 					<string>string.quoted.single.block.python</string> | |
| 3891 | 					<key>patterns</key> | |
| 3892 | 					<array> | |
| 3893 | 						<dict> | |
| 3894 | 							<key>begin</key> | |
| 3895 | 							<string>(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string> | |
| 3896 | 							<key>end</key> | |
| 3897 | 							<string>(?=''')</string> | |
| 3898 | 							<key>patterns</key> | |
| 3899 | 							<array> | |
| 3900 | 								<dict> | |
| 3901 | 									<key>include</key> | |
| 3902 | 									<string>#constant_placeholder</string> | |
| 3903 | 								</dict> | |
| 3904 | 								<dict> | |
| 3905 | 									<key>include</key> | |
| 3906 | 									<string>#escaped_unicode_char</string> | |
| 3907 | 								</dict> | |
| 3908 | 								<dict> | |
| 3909 | 									<key>include</key> | |
| 3910 | 									<string>#escaped_char</string> | |
| 3911 | 								</dict> | |
| 3912 | 								<dict> | |
| 3913 | 									<key>include</key> | |
| 3914 | 									<string>source.sql</string> | |
| 3915 | 								</dict> | |
| 3916 | 							</array> | |
| 3917 | 						</dict> | |
| 3918 | 						<dict> | |
| 3919 | 							<key>begin</key> | |
| 3920 | 							<string>(?=\S)</string> | |
| 3921 | 							<key>end</key> | |
| 3922 | 							<string>(?=''')</string> | |
| 3923 | 							<key>patterns</key> | |
| 3924 | 							<array> | |
| 3925 | 								<dict> | |
| 3926 | 									<key>include</key> | |
| 3927 | 									<string>#constant_placeholder</string> | |
| 3928 | 								</dict> | |
| 3929 | 								<dict> | |
| 3930 | 									<key>include</key> | |
| 3931 | 									<string>#escaped_unicode_char</string> | |
| 3932 | 								</dict> | |
| 3933 | 								<dict> | |
| 3934 | 									<key>include</key> | |
| 3935 | 									<string>#escaped_char</string> | |
| 3936 | 								</dict> | |
| 3937 | 							</array> | |
| 3938 | 						</dict> | |
| 3939 | 					</array> | |
| 3940 | 				</dict> | |
| 3941 | 				<dict> | |
| 3942 | 					<key>begin</key> | |
| 3943 | 					<string>(')</string> | |
| 3944 | 					<key>beginCaptures</key> | |
| 3945 | 					<dict> | |
| 3946 | 						<key>1</key> | |
| 3947 | 						<dict> | |
| 3948 | 							<key>name</key> | |
| 3949 | 							<string>punctuation.definition.string.begin.python</string> | |
| 3950 | 						</dict> | |
| 3951 | 					</dict> | |
| 3952 | 					<key>comment</key> | |
| 3953 | 					<string>single quoted string</string> | |
| 3954 | 					<key>end</key> | |
| 3955 | 					<string>(')|(\n)</string> | |
| 3956 | 					<key>endCaptures</key> | |
| 3957 | 					<dict> | |
| 3958 | 						<key>1</key> | |
| 3959 | 						<dict> | |
| 3960 | 							<key>name</key> | |
| 3961 | 							<string>punctuation.definition.string.end.python</string> | |
| 3962 | 						</dict> | |
| 3963 | 						<key>2</key> | |
| 3964 | 						<dict> | |
| 3965 | 							<key>name</key> | |
| 3966 | 							<string>invalid.illegal.unclosed-string.python</string> | |
| 3967 | 						</dict> | |
| 3968 | 					</dict> | |
| 3969 | 					<key>name</key> | |
| 3970 | 					<string>string.quoted.single.single-line.python</string> | |
| 3971 | 					<key>patterns</key> | |
| 3972 | 					<array> | |
| 3973 | 						<dict> | |
| 3974 | 							<key>include</key> | |
| 3975 | 							<string>#constant_placeholder</string> | |
| 3976 | 						</dict> | |
| 3977 | 						<dict> | |
| 3978 | 							<key>include</key> | |
| 3979 | 							<string>#escaped_unicode_char</string> | |
| 3980 | 						</dict> | |
| 3981 | 						<dict> | |
| 3982 | 							<key>include</key> | |
| 3983 | 							<string>#escaped_char</string> | |
| 3984 | 						</dict> | |
| 3985 | 					</array> | |
| 3986 | 				</dict> | |
| 3987 | 			</array> | |
| 3988 | 		</dict> | |
| 3989 | 		<key>strings</key> | |
| 3990 | 		<dict> | |
| 3991 | 			<key>patterns</key> | |
| 3992 | 			<array> | |
| 3993 | 				<dict> | |
| 3994 | 					<key>include</key> | |
| 3995 | 					<string>#string_quoted_double</string> | |
| 3996 | 				</dict> | |
| 3997 | 				<dict> | |
| 3998 | 					<key>include</key> | |
| 3999 | 					<string>#string_quoted_single</string> | |
| 4000 | 				</dict> | |
| 4001 | 			</array> | |
| 4002 | 		</dict> | |
| 4003 | 	</dict> | |
| 4004 | 	<key>scopeName</key> | |
| 4005 | 	<string>source.python</string> | |
| 4006 | 	<key>uuid</key> | |
| 4007 | 	<string>F23DB5B2-7D08-11D9-A709-000D93B6E43C</string> | |
| 4008 | </dict> | |
| 4009 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/shell.plist created+1889| ... | ... | @@ -0,0 +1,1889 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>sh</string> | |
| 8 | 		<string>bash</string> | |
| 9 | 		<string>zsh</string> | |
| 10 | 		<string>bashrc</string> | |
| 11 | 		<string>bash_profile</string> | |
| 12 | 		<string>bash_login</string> | |
| 13 | 		<string>profile</string> | |
| 14 | 		<string>bash_logout</string> | |
| 15 | 		<string>.textmate_init</string> | |
| 16 | 	</array> | |
| 17 | 	<key>firstLineMatch</key> | |
| 18 | 	<string>^#!.*\b(bash|zsh|sh|tcsh)|^#.*-\*-.*\bshell-script\b.*-\*-</string> | |
| 19 | 	<key>keyEquivalent</key> | |
| 20 | 	<string>^~S</string> | |
| 21 | 	<key>name</key> | |
| 22 | 	<string>Shell Script (Bash)</string> | |
| 23 | 	<key>patterns</key> | |
| 24 | 	<array> | |
| 25 | 		<dict> | |
| 26 | 			<key>include</key> | |
| 27 | 			<string>#comment</string> | |
| 28 | 		</dict> | |
| 29 | 		<dict> | |
| 30 | 			<key>include</key> | |
| 31 | 			<string>#pipeline</string> | |
| 32 | 		</dict> | |
| 33 | 		<dict> | |
| 34 | 			<key>include</key> | |
| 35 | 			<string>#list</string> | |
| 36 | 		</dict> | |
| 37 | 		<dict> | |
| 38 | 			<key>include</key> | |
| 39 | 			<string>#compound-command</string> | |
| 40 | 		</dict> | |
| 41 | 		<dict> | |
| 42 | 			<key>include</key> | |
| 43 | 			<string>#loop</string> | |
| 44 | 		</dict> | |
| 45 | 		<dict> | |
| 46 | 			<key>include</key> | |
| 47 | 			<string>#string</string> | |
| 48 | 		</dict> | |
| 49 | 		<dict> | |
| 50 | 			<key>include</key> | |
| 51 | 			<string>#function-definition</string> | |
| 52 | 		</dict> | |
| 53 | 		<dict> | |
| 54 | 			<key>include</key> | |
| 55 | 			<string>#variable</string> | |
| 56 | 		</dict> | |
| 57 | 		<dict> | |
| 58 | 			<key>include</key> | |
| 59 | 			<string>#interpolation</string> | |
| 60 | 		</dict> | |
| 61 | 		<dict> | |
| 62 | 			<key>include</key> | |
| 63 | 			<string>#heredoc</string> | |
| 64 | 		</dict> | |
| 65 | 		<dict> | |
| 66 | 			<key>include</key> | |
| 67 | 			<string>#herestring</string> | |
| 68 | 		</dict> | |
| 69 | 		<dict> | |
| 70 | 			<key>include</key> | |
| 71 | 			<string>#redirection</string> | |
| 72 | 		</dict> | |
| 73 | 		<dict> | |
| 74 | 			<key>include</key> | |
| 75 | 			<string>#pathname</string> | |
| 76 | 		</dict> | |
| 77 | 		<dict> | |
| 78 | 			<key>include</key> | |
| 79 | 			<string>#keyword</string> | |
| 80 | 		</dict> | |
| 81 | 		<dict> | |
| 82 | 			<key>include</key> | |
| 83 | 			<string>#support</string> | |
| 84 | 		</dict> | |
| 85 | 		<dict> | |
| 86 | 			<key>include</key> | |
| 87 | 			<string>#lines</string> | |
| 88 | 		</dict> | |
| 89 | 	</array> | |
| 90 | 	<key>repository</key> | |
| 91 | 	<dict> | |
| 92 | 		<key>case-clause</key> | |
| 93 | 		<dict> | |
| 94 | 			<key>patterns</key> | |
| 95 | 			<array> | |
| 96 | 				<dict> | |
| 97 | 					<key>begin</key> | |
| 98 | 					<string>(?=\S)</string> | |
| 99 | 					<key>end</key> | |
| 100 | 					<string>;;</string> | |
| 101 | 					<key>endCaptures</key> | |
| 102 | 					<dict> | |
| 103 | 						<key>0</key> | |
| 104 | 						<dict> | |
| 105 | 							<key>name</key> | |
| 106 | 							<string>punctuation.terminator.case-clause.shell</string> | |
| 107 | 						</dict> | |
| 108 | 					</dict> | |
| 109 | 					<key>name</key> | |
| 110 | 					<string>meta.scope.case-clause.shell</string> | |
| 111 | 					<key>patterns</key> | |
| 112 | 					<array> | |
| 113 | 						<dict> | |
| 114 | 							<key>begin</key> | |
| 115 | 							<string>(\(|(?=\S))</string> | |
| 116 | 							<key>captures</key> | |
| 117 | 							<dict> | |
| 118 | 								<key>0</key> | |
| 119 | 								<dict> | |
| 120 | 									<key>name</key> | |
| 121 | 									<string>punctuation.definition.case-pattern.shell</string> | |
| 122 | 								</dict> | |
| 123 | 							</dict> | |
| 124 | 							<key>end</key> | |
| 125 | 							<string>\)</string> | |
| 126 | 							<key>name</key> | |
| 127 | 							<string>meta.scope.case-pattern.shell</string> | |
| 128 | 							<key>patterns</key> | |
| 129 | 							<array> | |
| 130 | 								<dict> | |
| 131 | 									<key>match</key> | |
| 132 | 									<string>\|</string> | |
| 133 | 									<key>name</key> | |
| 134 | 									<string>punctuation.separator.pipe-sign.shell</string> | |
| 135 | 								</dict> | |
| 136 | 								<dict> | |
| 137 | 									<key>include</key> | |
| 138 | 									<string>#string</string> | |
| 139 | 								</dict> | |
| 140 | 								<dict> | |
| 141 | 									<key>include</key> | |
| 142 | 									<string>#variable</string> | |
| 143 | 								</dict> | |
| 144 | 								<dict> | |
| 145 | 									<key>include</key> | |
| 146 | 									<string>#interpolation</string> | |
| 147 | 								</dict> | |
| 148 | 								<dict> | |
| 149 | 									<key>include</key> | |
| 150 | 									<string>#pathname</string> | |
| 151 | 								</dict> | |
| 152 | 							</array> | |
| 153 | 						</dict> | |
| 154 | 						<dict> | |
| 155 | 							<key>begin</key> | |
| 156 | 							<string>(?&lt;=\))</string> | |
| 157 | 							<key>end</key> | |
| 158 | 							<string>(?=;;)</string> | |
| 159 | 							<key>name</key> | |
| 160 | 							<string>meta.scope.case-clause-body.shell</string> | |
| 161 | 							<key>patterns</key> | |
| 162 | 							<array> | |
| 163 | 								<dict> | |
| 164 | 									<key>include</key> | |
| 165 | 									<string>$self</string> | |
| 166 | 								</dict> | |
| 167 | 							</array> | |
| 168 | 						</dict> | |
| 169 | 					</array> | |
| 170 | 				</dict> | |
| 171 | 			</array> | |
| 172 | 		</dict> | |
| 173 | 		<key>comment</key> | |
| 174 | 		<dict> | |
| 175 | 			<key>begin</key> | |
| 176 | 			<string>(^[ \t]+)?(?&lt;!\S)(?=#)(?!#\{)</string> | |
| 177 | 			<key>beginCaptures</key> | |
| 178 | 			<dict> | |
| 179 | 				<key>1</key> | |
| 180 | 				<dict> | |
| 181 | 					<key>name</key> | |
| 182 | 					<string>punctuation.whitespace.comment.leading.shell</string> | |
| 183 | 				</dict> | |
| 184 | 			</dict> | |
| 185 | 			<key>end</key> | |
| 186 | 			<string>(?!\G)</string> | |
| 187 | 			<key>patterns</key> | |
| 188 | 			<array> | |
| 189 | 				<dict> | |
| 190 | 					<key>begin</key> | |
| 191 | 					<string>^(#!)</string> | |
| 192 | 					<key>beginCaptures</key> | |
| 193 | 					<dict> | |
| 194 | 						<key>1</key> | |
| 195 | 						<dict> | |
| 196 | 							<key>name</key> | |
| 197 | 							<string>punctuation.definition.comment.line.shebang.shell</string> | |
| 198 | 						</dict> | |
| 199 | 					</dict> | |
| 200 | 					<key>end</key> | |
| 201 | 					<string>\n</string> | |
| 202 | 					<key>name</key> | |
| 203 | 					<string>comment.line.shebang.shell</string> | |
| 204 | 				</dict> | |
| 205 | 				<dict> | |
| 206 | 					<key>begin</key> | |
| 207 | 					<string>#</string> | |
| 208 | 					<key>beginCaptures</key> | |
| 209 | 					<dict> | |
| 210 | 						<key>0</key> | |
| 211 | 						<dict> | |
| 212 | 							<key>name</key> | |
| 213 | 							<string>punctuation.definition.comment.shell</string> | |
| 214 | 						</dict> | |
| 215 | 					</dict> | |
| 216 | 					<key>end</key> | |
| 217 | 					<string>\n</string> | |
| 218 | 					<key>name</key> | |
| 219 | 					<string>comment.line.number-sign.shell</string> | |
| 220 | 				</dict> | |
| 221 | 			</array> | |
| 222 | 		</dict> | |
| 223 | 		<key>compound-command</key> | |
| 224 | 		<dict> | |
| 225 | 			<key>patterns</key> | |
| 226 | 			<array> | |
| 227 | 				<dict> | |
| 228 | 					<key>begin</key> | |
| 229 | 					<string>(\[{2})</string> | |
| 230 | 					<key>captures</key> | |
| 231 | 					<dict> | |
| 232 | 						<key>1</key> | |
| 233 | 						<dict> | |
| 234 | 							<key>name</key> | |
| 235 | 							<string>punctuation.definition.logical-expression.shell</string> | |
| 236 | 						</dict> | |
| 237 | 					</dict> | |
| 238 | 					<key>end</key> | |
| 239 | 					<string>(\]{2})</string> | |
| 240 | 					<key>name</key> | |
| 241 | 					<string>meta.scope.logical-expression.shell</string> | |
| 242 | 					<key>patterns</key> | |
| 243 | 					<array> | |
| 244 | 						<dict> | |
| 245 | 							<key>include</key> | |
| 246 | 							<string>#logical-expression</string> | |
| 247 | 						</dict> | |
| 248 | 						<dict> | |
| 249 | 							<key>include</key> | |
| 250 | 							<string>$self</string> | |
| 251 | 						</dict> | |
| 252 | 					</array> | |
| 253 | 				</dict> | |
| 254 | 				<dict> | |
| 255 | 					<key>begin</key> | |
| 256 | 					<string>(\({2})</string> | |
| 257 | 					<key>beginCaptures</key> | |
| 258 | 					<dict> | |
| 259 | 						<key>0</key> | |
| 260 | 						<dict> | |
| 261 | 							<key>name</key> | |
| 262 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 263 | 						</dict> | |
| 264 | 					</dict> | |
| 265 | 					<key>end</key> | |
| 266 | 					<string>(\){2})</string> | |
| 267 | 					<key>endCaptures</key> | |
| 268 | 					<dict> | |
| 269 | 						<key>0</key> | |
| 270 | 						<dict> | |
| 271 | 							<key>name</key> | |
| 272 | 							<string>punctuation.definition.string.end.shell</string> | |
| 273 | 						</dict> | |
| 274 | 					</dict> | |
| 275 | 					<key>name</key> | |
| 276 | 					<string>string.other.math.shell</string> | |
| 277 | 					<key>patterns</key> | |
| 278 | 					<array> | |
| 279 | 						<dict> | |
| 280 | 							<key>include</key> | |
| 281 | 							<string>#math</string> | |
| 282 | 						</dict> | |
| 283 | 					</array> | |
| 284 | 				</dict> | |
| 285 | 				<dict> | |
| 286 | 					<key>begin</key> | |
| 287 | 					<string>(\()</string> | |
| 288 | 					<key>captures</key> | |
| 289 | 					<dict> | |
| 290 | 						<key>1</key> | |
| 291 | 						<dict> | |
| 292 | 							<key>name</key> | |
| 293 | 							<string>punctuation.definition.subshell.shell</string> | |
| 294 | 						</dict> | |
| 295 | 					</dict> | |
| 296 | 					<key>end</key> | |
| 297 | 					<string>(\))</string> | |
| 298 | 					<key>name</key> | |
| 299 | 					<string>meta.scope.subshell.shell</string> | |
| 300 | 					<key>patterns</key> | |
| 301 | 					<array> | |
| 302 | 						<dict> | |
| 303 | 							<key>include</key> | |
| 304 | 							<string>$self</string> | |
| 305 | 						</dict> | |
| 306 | 					</array> | |
| 307 | 				</dict> | |
| 308 | 				<dict> | |
| 309 | 					<key>begin</key> | |
| 310 | 					<string>(?&lt;=\s|^)(\{)(?=\s|$)</string> | |
| 311 | 					<key>captures</key> | |
| 312 | 					<dict> | |
| 313 | 						<key>1</key> | |
| 314 | 						<dict> | |
| 315 | 							<key>name</key> | |
| 316 | 							<string>punctuation.definition.group.shell</string> | |
| 317 | 						</dict> | |
| 318 | 					</dict> | |
| 319 | 					<key>end</key> | |
| 320 | 					<string>(?&lt;=^|;)\s*(\})</string> | |
| 321 | 					<key>name</key> | |
| 322 | 					<string>meta.scope.group.shell</string> | |
| 323 | 					<key>patterns</key> | |
| 324 | 					<array> | |
| 325 | 						<dict> | |
| 326 | 							<key>include</key> | |
| 327 | 							<string>$self</string> | |
| 328 | 						</dict> | |
| 329 | 					</array> | |
| 330 | 				</dict> | |
| 331 | 			</array> | |
| 332 | 		</dict> | |
| 333 | 		<key>function-definition</key> | |
| 334 | 		<dict> | |
| 335 | 			<key>patterns</key> | |
| 336 | 			<array> | |
| 337 | 				<dict> | |
| 338 | 					<key>begin</key> | |
| 339 | 					<string>(?&lt;=^|;|&amp;)\s*(function)\s+([^\s&lt;&gt;;'"\\|$&amp;()]+)(?:\s*(\(\)))?</string> | |
| 340 | 					<key>beginCaptures</key> | |
| 341 | 					<dict> | |
| 342 | 						<key>1</key> | |
| 343 | 						<dict> | |
| 344 | 							<key>name</key> | |
| 345 | 							<string>storage.type.function.shell</string> | |
| 346 | 						</dict> | |
| 347 | 						<key>2</key> | |
| 348 | 						<dict> | |
| 349 | 							<key>name</key> | |
| 350 | 							<string>entity.name.function.shell</string> | |
| 351 | 						</dict> | |
| 352 | 						<key>3</key> | |
| 353 | 						<dict> | |
| 354 | 							<key>name</key> | |
| 355 | 							<string>punctuation.definition.arguments.shell</string> | |
| 356 | 						</dict> | |
| 357 | 					</dict> | |
| 358 | 					<key>end</key> | |
| 359 | 					<string>;|&amp;|\n</string> | |
| 360 | 					<key>endCaptures</key> | |
| 361 | 					<dict> | |
| 362 | 						<key>0</key> | |
| 363 | 						<dict> | |
| 364 | 							<key>name</key> | |
| 365 | 							<string>punctuation.definition.function.shell</string> | |
| 366 | 						</dict> | |
| 367 | 					</dict> | |
| 368 | 					<key>name</key> | |
| 369 | 					<string>meta.function.shell</string> | |
| 370 | 					<key>patterns</key> | |
| 371 | 					<array> | |
| 372 | 						<dict> | |
| 373 | 							<key>include</key> | |
| 374 | 							<string>$self</string> | |
| 375 | 						</dict> | |
| 376 | 					</array> | |
| 377 | 				</dict> | |
| 378 | 				<dict> | |
| 379 | 					<key>begin</key> | |
| 380 | 					<string>(?&lt;=^|;|&amp;)\s*([^\s&lt;&gt;;'"\\|$&amp;()]+)\s*(\(\))</string> | |
| 381 | 					<key>beginCaptures</key> | |
| 382 | 					<dict> | |
| 383 | 						<key>1</key> | |
| 384 | 						<dict> | |
| 385 | 							<key>name</key> | |
| 386 | 							<string>entity.name.function.shell</string> | |
| 387 | 						</dict> | |
| 388 | 						<key>2</key> | |
| 389 | 						<dict> | |
| 390 | 							<key>name</key> | |
| 391 | 							<string>punctuation.definition.arguments.shell</string> | |
| 392 | 						</dict> | |
| 393 | 					</dict> | |
| 394 | 					<key>end</key> | |
| 395 | 					<string>;|&amp;|\n</string> | |
| 396 | 					<key>endCaptures</key> | |
| 397 | 					<dict> | |
| 398 | 						<key>0</key> | |
| 399 | 						<dict> | |
| 400 | 							<key>name</key> | |
| 401 | 							<string>punctuation.definition.function.shell</string> | |
| 402 | 						</dict> | |
| 403 | 					</dict> | |
| 404 | 					<key>name</key> | |
| 405 | 					<string>meta.function.shell</string> | |
| 406 | 					<key>patterns</key> | |
| 407 | 					<array> | |
| 408 | 						<dict> | |
| 409 | 							<key>include</key> | |
| 410 | 							<string>$self</string> | |
| 411 | 						</dict> | |
| 412 | 					</array> | |
| 413 | 				</dict> | |
| 414 | 			</array> | |
| 415 | 		</dict> | |
| 416 | 		<key>heredoc</key> | |
| 417 | 		<dict> | |
| 418 | 			<key>patterns</key> | |
| 419 | 			<array> | |
| 420 | 				<dict> | |
| 421 | 					<key>begin</key> | |
| 422 | 					<string>(&lt;&lt;)-\s*("|'|)(RUBY)\2</string> | |
| 423 | 					<key>beginCaptures</key> | |
| 424 | 					<dict> | |
| 425 | 						<key>1</key> | |
| 426 | 						<dict> | |
| 427 | 							<key>name</key> | |
| 428 | 							<string>keyword.operator.heredoc.shell</string> | |
| 429 | 						</dict> | |
| 430 | 						<key>3</key> | |
| 431 | 						<dict> | |
| 432 | 							<key>name</key> | |
| 433 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 434 | 						</dict> | |
| 435 | 					</dict> | |
| 436 | 					<key>captures</key> | |
| 437 | 					<dict> | |
| 438 | 						<key>0</key> | |
| 439 | 						<dict> | |
| 440 | 							<key>name</key> | |
| 441 | 							<string>punctuation.definition.string.shell</string> | |
| 442 | 						</dict> | |
| 443 | 					</dict> | |
| 444 | 					<key>contentName</key> | |
| 445 | 					<string>source.ruby.embedded.shell</string> | |
| 446 | 					<key>end</key> | |
| 447 | 					<string>^\t*(RUBY)(?=\s|;|&amp;|$)</string> | |
| 448 | 					<key>endCaptures</key> | |
| 449 | 					<dict> | |
| 450 | 						<key>1</key> | |
| 451 | 						<dict> | |
| 452 | 							<key>name</key> | |
| 453 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 454 | 						</dict> | |
| 455 | 					</dict> | |
| 456 | 					<key>name</key> | |
| 457 | 					<string>string.unquoted.heredoc.no-indent.ruby.shell</string> | |
| 458 | 					<key>patterns</key> | |
| 459 | 					<array> | |
| 460 | 						<dict> | |
| 461 | 							<key>include</key> | |
| 462 | 							<string>source.ruby</string> | |
| 463 | 						</dict> | |
| 464 | 					</array> | |
| 465 | 				</dict> | |
| 466 | 				<dict> | |
| 467 | 					<key>begin</key> | |
| 468 | 					<string>(&lt;&lt;)\s*("|'|)(RUBY)\2</string> | |
| 469 | 					<key>beginCaptures</key> | |
| 470 | 					<dict> | |
| 471 | 						<key>1</key> | |
| 472 | 						<dict> | |
| 473 | 							<key>name</key> | |
| 474 | 							<string>keyword.operator.heredoc.shell</string> | |
| 475 | 						</dict> | |
| 476 | 						<key>3</key> | |
| 477 | 						<dict> | |
| 478 | 							<key>name</key> | |
| 479 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 480 | 						</dict> | |
| 481 | 					</dict> | |
| 482 | 					<key>captures</key> | |
| 483 | 					<dict> | |
| 484 | 						<key>0</key> | |
| 485 | 						<dict> | |
| 486 | 							<key>name</key> | |
| 487 | 							<string>punctuation.definition.string.shell</string> | |
| 488 | 						</dict> | |
| 489 | 					</dict> | |
| 490 | 					<key>contentName</key> | |
| 491 | 					<string>source.ruby.embedded.shell</string> | |
| 492 | 					<key>end</key> | |
| 493 | 					<string>^(RUBY)(?=\s|;|&amp;|$)</string> | |
| 494 | 					<key>endCaptures</key> | |
| 495 | 					<dict> | |
| 496 | 						<key>1</key> | |
| 497 | 						<dict> | |
| 498 | 							<key>name</key> | |
| 499 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 500 | 						</dict> | |
| 501 | 					</dict> | |
| 502 | 					<key>name</key> | |
| 503 | 					<string>string.unquoted.heredoc.ruby.shell</string> | |
| 504 | 					<key>patterns</key> | |
| 505 | 					<array> | |
| 506 | 						<dict> | |
| 507 | 							<key>include</key> | |
| 508 | 							<string>source.ruby</string> | |
| 509 | 						</dict> | |
| 510 | 					</array> | |
| 511 | 				</dict> | |
| 512 | 				<dict> | |
| 513 | 					<key>begin</key> | |
| 514 | 					<string>(&lt;&lt;)-\s*("|'|)(PYTHON)\2</string> | |
| 515 | 					<key>beginCaptures</key> | |
| 516 | 					<dict> | |
| 517 | 						<key>1</key> | |
| 518 | 						<dict> | |
| 519 | 							<key>name</key> | |
| 520 | 							<string>keyword.operator.heredoc.shell</string> | |
| 521 | 						</dict> | |
| 522 | 						<key>3</key> | |
| 523 | 						<dict> | |
| 524 | 							<key>name</key> | |
| 525 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 526 | 						</dict> | |
| 527 | 					</dict> | |
| 528 | 					<key>captures</key> | |
| 529 | 					<dict> | |
| 530 | 						<key>0</key> | |
| 531 | 						<dict> | |
| 532 | 							<key>name</key> | |
| 533 | 							<string>punctuation.definition.string.shell</string> | |
| 534 | 						</dict> | |
| 535 | 					</dict> | |
| 536 | 					<key>contentName</key> | |
| 537 | 					<string>source.python.embedded.shell</string> | |
| 538 | 					<key>end</key> | |
| 539 | 					<string>^\t*(PYTHON)(?=\s|;|&amp;|$)</string> | |
| 540 | 					<key>endCaptures</key> | |
| 541 | 					<dict> | |
| 542 | 						<key>1</key> | |
| 543 | 						<dict> | |
| 544 | 							<key>name</key> | |
| 545 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 546 | 						</dict> | |
| 547 | 					</dict> | |
| 548 | 					<key>name</key> | |
| 549 | 					<string>string.unquoted.heredoc.no-indent.python.shell</string> | |
| 550 | 					<key>patterns</key> | |
| 551 | 					<array> | |
| 552 | 						<dict> | |
| 553 | 							<key>include</key> | |
| 554 | 							<string>source.python</string> | |
| 555 | 						</dict> | |
| 556 | 					</array> | |
| 557 | 				</dict> | |
| 558 | 				<dict> | |
| 559 | 					<key>begin</key> | |
| 560 | 					<string>(&lt;&lt;)\s*("|'|)(PYTHON)\2</string> | |
| 561 | 					<key>beginCaptures</key> | |
| 562 | 					<dict> | |
| 563 | 						<key>1</key> | |
| 564 | 						<dict> | |
| 565 | 							<key>name</key> | |
| 566 | 							<string>keyword.operator.heredoc.shell</string> | |
| 567 | 						</dict> | |
| 568 | 						<key>3</key> | |
| 569 | 						<dict> | |
| 570 | 							<key>name</key> | |
| 571 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 572 | 						</dict> | |
| 573 | 					</dict> | |
| 574 | 					<key>captures</key> | |
| 575 | 					<dict> | |
| 576 | 						<key>0</key> | |
| 577 | 						<dict> | |
| 578 | 							<key>name</key> | |
| 579 | 							<string>punctuation.definition.string.shell</string> | |
| 580 | 						</dict> | |
| 581 | 					</dict> | |
| 582 | 					<key>contentName</key> | |
| 583 | 					<string>source.python.embedded.shell</string> | |
| 584 | 					<key>end</key> | |
| 585 | 					<string>^(PYTHON)(?=\s|;|&amp;|$)</string> | |
| 586 | 					<key>endCaptures</key> | |
| 587 | 					<dict> | |
| 588 | 						<key>1</key> | |
| 589 | 						<dict> | |
| 590 | 							<key>name</key> | |
| 591 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 592 | 						</dict> | |
| 593 | 					</dict> | |
| 594 | 					<key>name</key> | |
| 595 | 					<string>string.unquoted.heredoc.python.shell</string> | |
| 596 | 					<key>patterns</key> | |
| 597 | 					<array> | |
| 598 | 						<dict> | |
| 599 | 							<key>include</key> | |
| 600 | 							<string>source.python</string> | |
| 601 | 						</dict> | |
| 602 | 					</array> | |
| 603 | 				</dict> | |
| 604 | 				<dict> | |
| 605 | 					<key>begin</key> | |
| 606 | 					<string>(&lt;&lt;)-\s*("|'|)(APPLESCRIPT)\2</string> | |
| 607 | 					<key>beginCaptures</key> | |
| 608 | 					<dict> | |
| 609 | 						<key>1</key> | |
| 610 | 						<dict> | |
| 611 | 							<key>name</key> | |
| 612 | 							<string>keyword.operator.heredoc.shell</string> | |
| 613 | 						</dict> | |
| 614 | 						<key>3</key> | |
| 615 | 						<dict> | |
| 616 | 							<key>name</key> | |
| 617 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 618 | 						</dict> | |
| 619 | 					</dict> | |
| 620 | 					<key>captures</key> | |
| 621 | 					<dict> | |
| 622 | 						<key>0</key> | |
| 623 | 						<dict> | |
| 624 | 							<key>name</key> | |
| 625 | 							<string>punctuation.definition.string.shell</string> | |
| 626 | 						</dict> | |
| 627 | 					</dict> | |
| 628 | 					<key>contentName</key> | |
| 629 | 					<string>source.applescript.embedded.shell</string> | |
| 630 | 					<key>end</key> | |
| 631 | 					<string>^\t*(APPLESCRIPT)(?=\s|;|&amp;|$)</string> | |
| 632 | 					<key>endCaptures</key> | |
| 633 | 					<dict> | |
| 634 | 						<key>1</key> | |
| 635 | 						<dict> | |
| 636 | 							<key>name</key> | |
| 637 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 638 | 						</dict> | |
| 639 | 					</dict> | |
| 640 | 					<key>name</key> | |
| 641 | 					<string>string.unquoted.heredoc.no-indent.applescript.shell</string> | |
| 642 | 					<key>patterns</key> | |
| 643 | 					<array> | |
| 644 | 						<dict> | |
| 645 | 							<key>include</key> | |
| 646 | 							<string>source.applescript</string> | |
| 647 | 						</dict> | |
| 648 | 					</array> | |
| 649 | 				</dict> | |
| 650 | 				<dict> | |
| 651 | 					<key>begin</key> | |
| 652 | 					<string>(&lt;&lt;)\s*("|'|)(APPLESCRIPT)\2</string> | |
| 653 | 					<key>beginCaptures</key> | |
| 654 | 					<dict> | |
| 655 | 						<key>1</key> | |
| 656 | 						<dict> | |
| 657 | 							<key>name</key> | |
| 658 | 							<string>keyword.operator.heredoc.shell</string> | |
| 659 | 						</dict> | |
| 660 | 						<key>3</key> | |
| 661 | 						<dict> | |
| 662 | 							<key>name</key> | |
| 663 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 664 | 						</dict> | |
| 665 | 					</dict> | |
| 666 | 					<key>captures</key> | |
| 667 | 					<dict> | |
| 668 | 						<key>0</key> | |
| 669 | 						<dict> | |
| 670 | 							<key>name</key> | |
| 671 | 							<string>punctuation.definition.string.shell</string> | |
| 672 | 						</dict> | |
| 673 | 					</dict> | |
| 674 | 					<key>contentName</key> | |
| 675 | 					<string>source.applescript.embedded.shell</string> | |
| 676 | 					<key>end</key> | |
| 677 | 					<string>^(APPLESCRIPT)(?=\s|;|&amp;|$)</string> | |
| 678 | 					<key>endCaptures</key> | |
| 679 | 					<dict> | |
| 680 | 						<key>1</key> | |
| 681 | 						<dict> | |
| 682 | 							<key>name</key> | |
| 683 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 684 | 						</dict> | |
| 685 | 					</dict> | |
| 686 | 					<key>name</key> | |
| 687 | 					<string>string.unquoted.heredoc.applescript.shell</string> | |
| 688 | 					<key>patterns</key> | |
| 689 | 					<array> | |
| 690 | 						<dict> | |
| 691 | 							<key>include</key> | |
| 692 | 							<string>source.applescript</string> | |
| 693 | 						</dict> | |
| 694 | 					</array> | |
| 695 | 				</dict> | |
| 696 | 				<dict> | |
| 697 | 					<key>begin</key> | |
| 698 | 					<string>(&lt;&lt;)-\s*("|'|)(HTML)\2</string> | |
| 699 | 					<key>beginCaptures</key> | |
| 700 | 					<dict> | |
| 701 | 						<key>1</key> | |
| 702 | 						<dict> | |
| 703 | 							<key>name</key> | |
| 704 | 							<string>keyword.operator.heredoc.shell</string> | |
| 705 | 						</dict> | |
| 706 | 						<key>3</key> | |
| 707 | 						<dict> | |
| 708 | 							<key>name</key> | |
| 709 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 710 | 						</dict> | |
| 711 | 					</dict> | |
| 712 | 					<key>captures</key> | |
| 713 | 					<dict> | |
| 714 | 						<key>0</key> | |
| 715 | 						<dict> | |
| 716 | 							<key>name</key> | |
| 717 | 							<string>punctuation.definition.string.shell</string> | |
| 718 | 						</dict> | |
| 719 | 					</dict> | |
| 720 | 					<key>contentName</key> | |
| 721 | 					<string>text.html.embedded.shell</string> | |
| 722 | 					<key>end</key> | |
| 723 | 					<string>^\t*(HTML)(?=\s|;|&amp;|$)</string> | |
| 724 | 					<key>endCaptures</key> | |
| 725 | 					<dict> | |
| 726 | 						<key>1</key> | |
| 727 | 						<dict> | |
| 728 | 							<key>name</key> | |
| 729 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 730 | 						</dict> | |
| 731 | 					</dict> | |
| 732 | 					<key>name</key> | |
| 733 | 					<string>string.unquoted.heredoc.no-indent.html.shell</string> | |
| 734 | 					<key>patterns</key> | |
| 735 | 					<array> | |
| 736 | 						<dict> | |
| 737 | 							<key>include</key> | |
| 738 | 							<string>text.html.basic</string> | |
| 739 | 						</dict> | |
| 740 | 					</array> | |
| 741 | 				</dict> | |
| 742 | 				<dict> | |
| 743 | 					<key>begin</key> | |
| 744 | 					<string>(&lt;&lt;)\s*("|'|)(HTML)\2</string> | |
| 745 | 					<key>beginCaptures</key> | |
| 746 | 					<dict> | |
| 747 | 						<key>1</key> | |
| 748 | 						<dict> | |
| 749 | 							<key>name</key> | |
| 750 | 							<string>keyword.operator.heredoc.shell</string> | |
| 751 | 						</dict> | |
| 752 | 						<key>3</key> | |
| 753 | 						<dict> | |
| 754 | 							<key>name</key> | |
| 755 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 756 | 						</dict> | |
| 757 | 					</dict> | |
| 758 | 					<key>captures</key> | |
| 759 | 					<dict> | |
| 760 | 						<key>0</key> | |
| 761 | 						<dict> | |
| 762 | 							<key>name</key> | |
| 763 | 							<string>punctuation.definition.string.shell</string> | |
| 764 | 						</dict> | |
| 765 | 					</dict> | |
| 766 | 					<key>contentName</key> | |
| 767 | 					<string>text.html.embedded.shell</string> | |
| 768 | 					<key>end</key> | |
| 769 | 					<string>^(HTML)(?=\s|;|&amp;|$)</string> | |
| 770 | 					<key>endCaptures</key> | |
| 771 | 					<dict> | |
| 772 | 						<key>1</key> | |
| 773 | 						<dict> | |
| 774 | 							<key>name</key> | |
| 775 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 776 | 						</dict> | |
| 777 | 					</dict> | |
| 778 | 					<key>name</key> | |
| 779 | 					<string>string.unquoted.heredoc.html.shell</string> | |
| 780 | 					<key>patterns</key> | |
| 781 | 					<array> | |
| 782 | 						<dict> | |
| 783 | 							<key>include</key> | |
| 784 | 							<string>text.html.basic</string> | |
| 785 | 						</dict> | |
| 786 | 					</array> | |
| 787 | 				</dict> | |
| 788 | 				<dict> | |
| 789 | 					<key>begin</key> | |
| 790 | 					<string>(&lt;&lt;)-\s*("|'|)(MARKDOWN)\2</string> | |
| 791 | 					<key>beginCaptures</key> | |
| 792 | 					<dict> | |
| 793 | 						<key>1</key> | |
| 794 | 						<dict> | |
| 795 | 							<key>name</key> | |
| 796 | 							<string>keyword.operator.heredoc.shell</string> | |
| 797 | 						</dict> | |
| 798 | 						<key>3</key> | |
| 799 | 						<dict> | |
| 800 | 							<key>name</key> | |
| 801 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 802 | 						</dict> | |
| 803 | 					</dict> | |
| 804 | 					<key>captures</key> | |
| 805 | 					<dict> | |
| 806 | 						<key>0</key> | |
| 807 | 						<dict> | |
| 808 | 							<key>name</key> | |
| 809 | 							<string>punctuation.definition.string.shell</string> | |
| 810 | 						</dict> | |
| 811 | 					</dict> | |
| 812 | 					<key>contentName</key> | |
| 813 | 					<string>text.html.markdown.embedded.shell</string> | |
| 814 | 					<key>end</key> | |
| 815 | 					<string>^\t*(MARKDOWN)(?=\s|;|&amp;|$)</string> | |
| 816 | 					<key>endCaptures</key> | |
| 817 | 					<dict> | |
| 818 | 						<key>1</key> | |
| 819 | 						<dict> | |
| 820 | 							<key>name</key> | |
| 821 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 822 | 						</dict> | |
| 823 | 					</dict> | |
| 824 | 					<key>name</key> | |
| 825 | 					<string>string.unquoted.heredoc.no-indent.markdown.shell</string> | |
| 826 | 					<key>patterns</key> | |
| 827 | 					<array> | |
| 828 | 						<dict> | |
| 829 | 							<key>include</key> | |
| 830 | 							<string>text.html.markdown</string> | |
| 831 | 						</dict> | |
| 832 | 					</array> | |
| 833 | 				</dict> | |
| 834 | 				<dict> | |
| 835 | 					<key>begin</key> | |
| 836 | 					<string>(&lt;&lt;)\s*("|'|)(MARKDOWN)\2</string> | |
| 837 | 					<key>beginCaptures</key> | |
| 838 | 					<dict> | |
| 839 | 						<key>1</key> | |
| 840 | 						<dict> | |
| 841 | 							<key>name</key> | |
| 842 | 							<string>keyword.operator.heredoc.shell</string> | |
| 843 | 						</dict> | |
| 844 | 						<key>3</key> | |
| 845 | 						<dict> | |
| 846 | 							<key>name</key> | |
| 847 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 848 | 						</dict> | |
| 849 | 					</dict> | |
| 850 | 					<key>captures</key> | |
| 851 | 					<dict> | |
| 852 | 						<key>0</key> | |
| 853 | 						<dict> | |
| 854 | 							<key>name</key> | |
| 855 | 							<string>punctuation.definition.string.shell</string> | |
| 856 | 						</dict> | |
| 857 | 					</dict> | |
| 858 | 					<key>contentName</key> | |
| 859 | 					<string>text.html.markdown.embedded.shell</string> | |
| 860 | 					<key>end</key> | |
| 861 | 					<string>^(MARKDOWN)(?=\s|;|&amp;|$)</string> | |
| 862 | 					<key>endCaptures</key> | |
| 863 | 					<dict> | |
| 864 | 						<key>1</key> | |
| 865 | 						<dict> | |
| 866 | 							<key>name</key> | |
| 867 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 868 | 						</dict> | |
| 869 | 					</dict> | |
| 870 | 					<key>name</key> | |
| 871 | 					<string>string.unquoted.heredoc.markdown.shell</string> | |
| 872 | 					<key>patterns</key> | |
| 873 | 					<array> | |
| 874 | 						<dict> | |
| 875 | 							<key>include</key> | |
| 876 | 							<string>text.html.markdown</string> | |
| 877 | 						</dict> | |
| 878 | 					</array> | |
| 879 | 				</dict> | |
| 880 | 				<dict> | |
| 881 | 					<key>begin</key> | |
| 882 | 					<string>(&lt;&lt;)-\s*("|'|)(TEXTILE)\2</string> | |
| 883 | 					<key>beginCaptures</key> | |
| 884 | 					<dict> | |
| 885 | 						<key>1</key> | |
| 886 | 						<dict> | |
| 887 | 							<key>name</key> | |
| 888 | 							<string>keyword.operator.heredoc.shell</string> | |
| 889 | 						</dict> | |
| 890 | 						<key>3</key> | |
| 891 | 						<dict> | |
| 892 | 							<key>name</key> | |
| 893 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 894 | 						</dict> | |
| 895 | 					</dict> | |
| 896 | 					<key>captures</key> | |
| 897 | 					<dict> | |
| 898 | 						<key>0</key> | |
| 899 | 						<dict> | |
| 900 | 							<key>name</key> | |
| 901 | 							<string>punctuation.definition.string.shell</string> | |
| 902 | 						</dict> | |
| 903 | 					</dict> | |
| 904 | 					<key>contentName</key> | |
| 905 | 					<string>text.html.textile.embedded.shell</string> | |
| 906 | 					<key>end</key> | |
| 907 | 					<string>^\t*(TEXTILE)(?=\s|;|&amp;|$)</string> | |
| 908 | 					<key>endCaptures</key> | |
| 909 | 					<dict> | |
| 910 | 						<key>1</key> | |
| 911 | 						<dict> | |
| 912 | 							<key>name</key> | |
| 913 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 914 | 						</dict> | |
| 915 | 					</dict> | |
| 916 | 					<key>name</key> | |
| 917 | 					<string>string.unquoted.heredoc.no-indent.textile.shell</string> | |
| 918 | 					<key>patterns</key> | |
| 919 | 					<array> | |
| 920 | 						<dict> | |
| 921 | 							<key>include</key> | |
| 922 | 							<string>text.html.textile</string> | |
| 923 | 						</dict> | |
| 924 | 					</array> | |
| 925 | 				</dict> | |
| 926 | 				<dict> | |
| 927 | 					<key>begin</key> | |
| 928 | 					<string>(&lt;&lt;)\s*("|'|)(TEXTILE)\2</string> | |
| 929 | 					<key>beginCaptures</key> | |
| 930 | 					<dict> | |
| 931 | 						<key>1</key> | |
| 932 | 						<dict> | |
| 933 | 							<key>name</key> | |
| 934 | 							<string>keyword.operator.heredoc.shell</string> | |
| 935 | 						</dict> | |
| 936 | 						<key>3</key> | |
| 937 | 						<dict> | |
| 938 | 							<key>name</key> | |
| 939 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 940 | 						</dict> | |
| 941 | 					</dict> | |
| 942 | 					<key>captures</key> | |
| 943 | 					<dict> | |
| 944 | 						<key>0</key> | |
| 945 | 						<dict> | |
| 946 | 							<key>name</key> | |
| 947 | 							<string>punctuation.definition.string.shell</string> | |
| 948 | 						</dict> | |
| 949 | 					</dict> | |
| 950 | 					<key>contentName</key> | |
| 951 | 					<string>text.html.textile.embedded.shell</string> | |
| 952 | 					<key>end</key> | |
| 953 | 					<string>^(TEXTILE)(?=\s|;|&amp;|$)</string> | |
| 954 | 					<key>endCaptures</key> | |
| 955 | 					<dict> | |
| 956 | 						<key>1</key> | |
| 957 | 						<dict> | |
| 958 | 							<key>name</key> | |
| 959 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 960 | 						</dict> | |
| 961 | 					</dict> | |
| 962 | 					<key>name</key> | |
| 963 | 					<string>string.unquoted.heredoc.textile.shell</string> | |
| 964 | 					<key>patterns</key> | |
| 965 | 					<array> | |
| 966 | 						<dict> | |
| 967 | 							<key>include</key> | |
| 968 | 							<string>text.html.textile</string> | |
| 969 | 						</dict> | |
| 970 | 					</array> | |
| 971 | 				</dict> | |
| 972 | 				<dict> | |
| 973 | 					<key>begin</key> | |
| 974 | 					<string>(&lt;&lt;)-\s*("|'|)\\?(\w+)\2</string> | |
| 975 | 					<key>beginCaptures</key> | |
| 976 | 					<dict> | |
| 977 | 						<key>1</key> | |
| 978 | 						<dict> | |
| 979 | 							<key>name</key> | |
| 980 | 							<string>keyword.operator.heredoc.shell</string> | |
| 981 | 						</dict> | |
| 982 | 						<key>3</key> | |
| 983 | 						<dict> | |
| 984 | 							<key>name</key> | |
| 985 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 986 | 						</dict> | |
| 987 | 					</dict> | |
| 988 | 					<key>captures</key> | |
| 989 | 					<dict> | |
| 990 | 						<key>0</key> | |
| 991 | 						<dict> | |
| 992 | 							<key>name</key> | |
| 993 | 							<string>punctuation.definition.string.shell</string> | |
| 994 | 						</dict> | |
| 995 | 					</dict> | |
| 996 | 					<key>end</key> | |
| 997 | 					<string>^\t*(\3)(?=\s|;|&amp;|$)</string> | |
| 998 | 					<key>endCaptures</key> | |
| 999 | 					<dict> | |
| 1000 | 						<key>1</key> | |
| 1001 | 						<dict> | |
| 1002 | 							<key>name</key> | |
| 1003 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 1004 | 						</dict> | |
| 1005 | 					</dict> | |
| 1006 | 					<key>name</key> | |
| 1007 | 					<string>string.unquoted.heredoc.no-indent.shell</string> | |
| 1008 | 				</dict> | |
| 1009 | 				<dict> | |
| 1010 | 					<key>begin</key> | |
| 1011 | 					<string>(&lt;&lt;)\s*("|'|)\\?(\w+)\2</string> | |
| 1012 | 					<key>beginCaptures</key> | |
| 1013 | 					<dict> | |
| 1014 | 						<key>1</key> | |
| 1015 | 						<dict> | |
| 1016 | 							<key>name</key> | |
| 1017 | 							<string>keyword.operator.heredoc.shell</string> | |
| 1018 | 						</dict> | |
| 1019 | 						<key>3</key> | |
| 1020 | 						<dict> | |
| 1021 | 							<key>name</key> | |
| 1022 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 1023 | 						</dict> | |
| 1024 | 					</dict> | |
| 1025 | 					<key>captures</key> | |
| 1026 | 					<dict> | |
| 1027 | 						<key>0</key> | |
| 1028 | 						<dict> | |
| 1029 | 							<key>name</key> | |
| 1030 | 							<string>punctuation.definition.string.shell</string> | |
| 1031 | 						</dict> | |
| 1032 | 					</dict> | |
| 1033 | 					<key>end</key> | |
| 1034 | 					<string>^(\3)(?=\s|;|&amp;|$)</string> | |
| 1035 | 					<key>endCaptures</key> | |
| 1036 | 					<dict> | |
| 1037 | 						<key>1</key> | |
| 1038 | 						<dict> | |
| 1039 | 							<key>name</key> | |
| 1040 | 							<string>keyword.control.heredoc-token.shell</string> | |
| 1041 | 						</dict> | |
| 1042 | 					</dict> | |
| 1043 | 					<key>name</key> | |
| 1044 | 					<string>string.unquoted.heredoc.shell</string> | |
| 1045 | 				</dict> | |
| 1046 | 			</array> | |
| 1047 | 		</dict> | |
| 1048 | 		<key>herestring</key> | |
| 1049 | 		<dict> | |
| 1050 | 			<key>patterns</key> | |
| 1051 | 			<array> | |
| 1052 | 				<dict> | |
| 1053 | 					<key>captures</key> | |
| 1054 | 					<dict> | |
| 1055 | 						<key>1</key> | |
| 1056 | 						<dict> | |
| 1057 | 							<key>name</key> | |
| 1058 | 							<string>keyword.operator.herestring.shell</string> | |
| 1059 | 						</dict> | |
| 1060 | 					</dict> | |
| 1061 | 					<key>match</key> | |
| 1062 | 					<string>(&lt;&lt;&lt;)</string> | |
| 1063 | 					<key>name</key> | |
| 1064 | 					<string>meta.herestring.shell</string> | |
| 1065 | 				</dict> | |
| 1066 | 			</array> | |
| 1067 | 		</dict> | |
| 1068 | 		<key>interpolation</key> | |
| 1069 | 		<dict> | |
| 1070 | 			<key>patterns</key> | |
| 1071 | 			<array> | |
| 1072 | 				<dict> | |
| 1073 | 					<key>begin</key> | |
| 1074 | 					<string>\$\({2}</string> | |
| 1075 | 					<key>beginCaptures</key> | |
| 1076 | 					<dict> | |
| 1077 | 						<key>0</key> | |
| 1078 | 						<dict> | |
| 1079 | 							<key>name</key> | |
| 1080 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1081 | 						</dict> | |
| 1082 | 					</dict> | |
| 1083 | 					<key>end</key> | |
| 1084 | 					<string>\){2}</string> | |
| 1085 | 					<key>endCaptures</key> | |
| 1086 | 					<dict> | |
| 1087 | 						<key>0</key> | |
| 1088 | 						<dict> | |
| 1089 | 							<key>name</key> | |
| 1090 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1091 | 						</dict> | |
| 1092 | 					</dict> | |
| 1093 | 					<key>name</key> | |
| 1094 | 					<string>string.other.math.shell</string> | |
| 1095 | 					<key>patterns</key> | |
| 1096 | 					<array> | |
| 1097 | 						<dict> | |
| 1098 | 							<key>include</key> | |
| 1099 | 							<string>#math</string> | |
| 1100 | 						</dict> | |
| 1101 | 					</array> | |
| 1102 | 				</dict> | |
| 1103 | 				<dict> | |
| 1104 | 					<key>begin</key> | |
| 1105 | 					<string>`</string> | |
| 1106 | 					<key>beginCaptures</key> | |
| 1107 | 					<dict> | |
| 1108 | 						<key>0</key> | |
| 1109 | 						<dict> | |
| 1110 | 							<key>name</key> | |
| 1111 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1112 | 						</dict> | |
| 1113 | 					</dict> | |
| 1114 | 					<key>end</key> | |
| 1115 | 					<string>`</string> | |
| 1116 | 					<key>endCaptures</key> | |
| 1117 | 					<dict> | |
| 1118 | 						<key>0</key> | |
| 1119 | 						<dict> | |
| 1120 | 							<key>name</key> | |
| 1121 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1122 | 						</dict> | |
| 1123 | 					</dict> | |
| 1124 | 					<key>name</key> | |
| 1125 | 					<string>string.interpolated.backtick.shell</string> | |
| 1126 | 					<key>patterns</key> | |
| 1127 | 					<array> | |
| 1128 | 						<dict> | |
| 1129 | 							<key>match</key> | |
| 1130 | 							<string>\\[`\\$]</string> | |
| 1131 | 							<key>name</key> | |
| 1132 | 							<string>constant.character.escape.shell</string> | |
| 1133 | 						</dict> | |
| 1134 | 						<dict> | |
| 1135 | 							<key>begin</key> | |
| 1136 | 							<string>(?&lt;=^|;|&amp;|\s|`)(#)(?!\{)</string> | |
| 1137 | 							<key>beginCaptures</key> | |
| 1138 | 							<dict> | |
| 1139 | 								<key>1</key> | |
| 1140 | 								<dict> | |
| 1141 | 									<key>name</key> | |
| 1142 | 									<string>punctuation.definition.comment.shell</string> | |
| 1143 | 								</dict> | |
| 1144 | 							</dict> | |
| 1145 | 							<key>end</key> | |
| 1146 | 							<string>(?=`)|\n</string> | |
| 1147 | 							<key>name</key> | |
| 1148 | 							<string>comment.line.number-sign.shell</string> | |
| 1149 | 						</dict> | |
| 1150 | 						<dict> | |
| 1151 | 							<key>include</key> | |
| 1152 | 							<string>$self</string> | |
| 1153 | 						</dict> | |
| 1154 | 					</array> | |
| 1155 | 				</dict> | |
| 1156 | 				<dict> | |
| 1157 | 					<key>begin</key> | |
| 1158 | 					<string>\$\(</string> | |
| 1159 | 					<key>beginCaptures</key> | |
| 1160 | 					<dict> | |
| 1161 | 						<key>0</key> | |
| 1162 | 						<dict> | |
| 1163 | 							<key>name</key> | |
| 1164 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1165 | 						</dict> | |
| 1166 | 					</dict> | |
| 1167 | 					<key>end</key> | |
| 1168 | 					<string>\)</string> | |
| 1169 | 					<key>endCaptures</key> | |
| 1170 | 					<dict> | |
| 1171 | 						<key>0</key> | |
| 1172 | 						<dict> | |
| 1173 | 							<key>name</key> | |
| 1174 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1175 | 						</dict> | |
| 1176 | 					</dict> | |
| 1177 | 					<key>name</key> | |
| 1178 | 					<string>string.interpolated.dollar.shell</string> | |
| 1179 | 					<key>patterns</key> | |
| 1180 | 					<array> | |
| 1181 | 						<dict> | |
| 1182 | 							<key>begin</key> | |
| 1183 | 							<string>(?&lt;=^|;|&amp;|\s|\()(#)(?!\{)</string> | |
| 1184 | 							<key>beginCaptures</key> | |
| 1185 | 							<dict> | |
| 1186 | 								<key>1</key> | |
| 1187 | 								<dict> | |
| 1188 | 									<key>name</key> | |
| 1189 | 									<string>punctuation.definition.comment.shell</string> | |
| 1190 | 								</dict> | |
| 1191 | 							</dict> | |
| 1192 | 							<key>end</key> | |
| 1193 | 							<string>(?=\))|\n</string> | |
| 1194 | 							<key>name</key> | |
| 1195 | 							<string>comment.line.number-sign.shell</string> | |
| 1196 | 						</dict> | |
| 1197 | 						<dict> | |
| 1198 | 							<key>include</key> | |
| 1199 | 							<string>$self</string> | |
| 1200 | 						</dict> | |
| 1201 | 					</array> | |
| 1202 | 				</dict> | |
| 1203 | 			</array> | |
| 1204 | 		</dict> | |
| 1205 | 		<key>keyword</key> | |
| 1206 | 		<dict> | |
| 1207 | 			<key>patterns</key> | |
| 1208 | 			<array> | |
| 1209 | 				<dict> | |
| 1210 | 					<key>match</key> | |
| 1211 | 					<string>(?&lt;=^|;|&amp;|\s)(?:if|then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return|coproc)(?=\s|;|&amp;|$)</string> | |
| 1212 | 					<key>name</key> | |
| 1213 | 					<string>keyword.control.shell</string> | |
| 1214 | 				</dict> | |
| 1215 | 				<dict> | |
| 1216 | 					<key>match</key> | |
| 1217 | 					<string>(?&lt;=^|;|&amp;|\s)(?:export|declare|typeset|local|readonly)(?=\s|;|&amp;|$)</string> | |
| 1218 | 					<key>name</key> | |
| 1219 | 					<string>storage.modifier.shell</string> | |
| 1220 | 				</dict> | |
| 1221 | 			</array> | |
| 1222 | 		</dict> | |
| 1223 | 		<key>lines</key> | |
| 1224 | 		<dict> | |
| 1225 | 			<key>patterns</key> | |
| 1226 | 			<array> | |
| 1227 | 				<dict> | |
| 1228 | 					<key>match</key> | |
| 1229 | 					<string>\\\n</string> | |
| 1230 | 					<key>name</key> | |
| 1231 | 					<string>constant.character.escape.newline.shell</string> | |
| 1232 | 				</dict> | |
| 1233 | 			</array> | |
| 1234 | 		</dict> | |
| 1235 | 		<key>list</key> | |
| 1236 | 		<dict> | |
| 1237 | 			<key>patterns</key> | |
| 1238 | 			<array> | |
| 1239 | 				<dict> | |
| 1240 | 					<key>match</key> | |
| 1241 | 					<string>;|&amp;&amp;|&amp;|\|\|</string> | |
| 1242 | 					<key>name</key> | |
| 1243 | 					<string>keyword.operator.list.shell</string> | |
| 1244 | 				</dict> | |
| 1245 | 			</array> | |
| 1246 | 		</dict> | |
| 1247 | 		<key>logical-expression</key> | |
| 1248 | 		<dict> | |
| 1249 | 			<key>patterns</key> | |
| 1250 | 			<array> | |
| 1251 | 				<dict> | |
| 1252 | 					<key>comment</key> | |
| 1253 | 					<string>do we want a special rule for ( expr )?</string> | |
| 1254 | 					<key>match</key> | |
| 1255 | 					<string>=[=~]?|!=?|&lt;|&gt;|&amp;&amp;|\|\|</string> | |
| 1256 | 					<key>name</key> | |
| 1257 | 					<string>keyword.operator.logical.shell</string> | |
| 1258 | 				</dict> | |
| 1259 | 				<dict> | |
| 1260 | 					<key>match</key> | |
| 1261 | 					<string>(?&lt;!\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])</string> | |
| 1262 | 					<key>name</key> | |
| 1263 | 					<string>keyword.operator.logical.shell</string> | |
| 1264 | 				</dict> | |
| 1265 | 			</array> | |
| 1266 | 		</dict> | |
| 1267 | 		<key>loop</key> | |
| 1268 | 		<dict> | |
| 1269 | 			<key>patterns</key> | |
| 1270 | 			<array> | |
| 1271 | 				<dict> | |
| 1272 | 					<key>begin</key> | |
| 1273 | 					<string>(?&lt;=^|;|&amp;|\s)(for)\s+(?=\({2})</string> | |
| 1274 | 					<key>captures</key> | |
| 1275 | 					<dict> | |
| 1276 | 						<key>1</key> | |
| 1277 | 						<dict> | |
| 1278 | 							<key>name</key> | |
| 1279 | 							<string>keyword.control.shell</string> | |
| 1280 | 						</dict> | |
| 1281 | 					</dict> | |
| 1282 | 					<key>end</key> | |
| 1283 | 					<string>(?&lt;=^|;|&amp;|\s)(done)(?=\s|;|&amp;|$|\))</string> | |
| 1284 | 					<key>name</key> | |
| 1285 | 					<string>meta.scope.for-loop.shell</string> | |
| 1286 | 					<key>patterns</key> | |
| 1287 | 					<array> | |
| 1288 | 						<dict> | |
| 1289 | 							<key>include</key> | |
| 1290 | 							<string>$self</string> | |
| 1291 | 						</dict> | |
| 1292 | 					</array> | |
| 1293 | 				</dict> | |
| 1294 | 				<dict> | |
| 1295 | 					<key>begin</key> | |
| 1296 | 					<string>(?&lt;=^|;|&amp;|\s)(for)\s+([^\s\\]+)(?=\s|;|&amp;|$)</string> | |
| 1297 | 					<key>beginCaptures</key> | |
| 1298 | 					<dict> | |
| 1299 | 						<key>1</key> | |
| 1300 | 						<dict> | |
| 1301 | 							<key>name</key> | |
| 1302 | 							<string>keyword.control.shell</string> | |
| 1303 | 						</dict> | |
| 1304 | 						<key>2</key> | |
| 1305 | 						<dict> | |
| 1306 | 							<key>name</key> | |
| 1307 | 							<string>variable.other.loop.shell</string> | |
| 1308 | 						</dict> | |
| 1309 | 					</dict> | |
| 1310 | 					<key>end</key> | |
| 1311 | 					<string>(?&lt;=^|;|&amp;|\s)(done)(?=\s|;|&amp;|$|\))</string> | |
| 1312 | 					<key>endCaptures</key> | |
| 1313 | 					<dict> | |
| 1314 | 						<key>1</key> | |
| 1315 | 						<dict> | |
| 1316 | 							<key>name</key> | |
| 1317 | 							<string>keyword.control.shell</string> | |
| 1318 | 						</dict> | |
| 1319 | 					</dict> | |
| 1320 | 					<key>name</key> | |
| 1321 | 					<string>meta.scope.for-in-loop.shell</string> | |
| 1322 | 					<key>patterns</key> | |
| 1323 | 					<array> | |
| 1324 | 						<dict> | |
| 1325 | 							<key>include</key> | |
| 1326 | 							<string>$self</string> | |
| 1327 | 						</dict> | |
| 1328 | 					</array> | |
| 1329 | 				</dict> | |
| 1330 | 				<dict> | |
| 1331 | 					<key>begin</key> | |
| 1332 | 					<string>(?&lt;=^|;|&amp;|\s)(while|until)(?=\s|;|&amp;|$)</string> | |
| 1333 | 					<key>captures</key> | |
| 1334 | 					<dict> | |
| 1335 | 						<key>1</key> | |
| 1336 | 						<dict> | |
| 1337 | 							<key>name</key> | |
| 1338 | 							<string>keyword.control.shell</string> | |
| 1339 | 						</dict> | |
| 1340 | 					</dict> | |
| 1341 | 					<key>end</key> | |
| 1342 | 					<string>(?&lt;=^|;|&amp;|\s)(done)(?=\s|;|&amp;|$|\))</string> | |
| 1343 | 					<key>name</key> | |
| 1344 | 					<string>meta.scope.while-loop.shell</string> | |
| 1345 | 					<key>patterns</key> | |
| 1346 | 					<array> | |
| 1347 | 						<dict> | |
| 1348 | 							<key>include</key> | |
| 1349 | 							<string>$self</string> | |
| 1350 | 						</dict> | |
| 1351 | 					</array> | |
| 1352 | 				</dict> | |
| 1353 | 				<dict> | |
| 1354 | 					<key>begin</key> | |
| 1355 | 					<string>(?&lt;=^|;|&amp;|\s)(select)\s+([^\s\\]+)(?=\s|;|&amp;|$)</string> | |
| 1356 | 					<key>beginCaptures</key> | |
| 1357 | 					<dict> | |
| 1358 | 						<key>1</key> | |
| 1359 | 						<dict> | |
| 1360 | 							<key>name</key> | |
| 1361 | 							<string>keyword.control.shell</string> | |
| 1362 | 						</dict> | |
| 1363 | 						<key>2</key> | |
| 1364 | 						<dict> | |
| 1365 | 							<key>name</key> | |
| 1366 | 							<string>variable.other.loop.shell</string> | |
| 1367 | 						</dict> | |
| 1368 | 					</dict> | |
| 1369 | 					<key>end</key> | |
| 1370 | 					<string>(?&lt;=^|;|&amp;|\s)(done)(?=\s|;|&amp;|$|\))</string> | |
| 1371 | 					<key>endCaptures</key> | |
| 1372 | 					<dict> | |
| 1373 | 						<key>1</key> | |
| 1374 | 						<dict> | |
| 1375 | 							<key>name</key> | |
| 1376 | 							<string>keyword.control.shell</string> | |
| 1377 | 						</dict> | |
| 1378 | 					</dict> | |
| 1379 | 					<key>name</key> | |
| 1380 | 					<string>meta.scope.select-block.shell</string> | |
| 1381 | 					<key>patterns</key> | |
| 1382 | 					<array> | |
| 1383 | 						<dict> | |
| 1384 | 							<key>include</key> | |
| 1385 | 							<string>$self</string> | |
| 1386 | 						</dict> | |
| 1387 | 					</array> | |
| 1388 | 				</dict> | |
| 1389 | 				<dict> | |
| 1390 | 					<key>begin</key> | |
| 1391 | 					<string>(?&lt;=^|;|&amp;|\s)(case)(?=\s|;|&amp;|$)</string> | |
| 1392 | 					<key>captures</key> | |
| 1393 | 					<dict> | |
| 1394 | 						<key>1</key> | |
| 1395 | 						<dict> | |
| 1396 | 							<key>name</key> | |
| 1397 | 							<string>keyword.control.shell</string> | |
| 1398 | 						</dict> | |
| 1399 | 					</dict> | |
| 1400 | 					<key>end</key> | |
| 1401 | 					<string>(?&lt;=^|;|&amp;|\s)(esac)(?=\s|;|&amp;|$|\))</string> | |
| 1402 | 					<key>name</key> | |
| 1403 | 					<string>meta.scope.case-block.shell</string> | |
| 1404 | 					<key>patterns</key> | |
| 1405 | 					<array> | |
| 1406 | 						<dict> | |
| 1407 | 							<key>begin</key> | |
| 1408 | 							<string>(?&lt;=^|;|&amp;|\s)(?:in)(?=\s|;|&amp;|$)</string> | |
| 1409 | 							<key>beginCaptures</key> | |
| 1410 | 							<dict> | |
| 1411 | 								<key>1</key> | |
| 1412 | 								<dict> | |
| 1413 | 									<key>name</key> | |
| 1414 | 									<string>keyword.control.shell</string> | |
| 1415 | 								</dict> | |
| 1416 | 							</dict> | |
| 1417 | 							<key>end</key> | |
| 1418 | 							<string>(?&lt;=^|;|&amp;|\s)(?=(?:esac)(?:\s|;|&amp;|$|\)))</string> | |
| 1419 | 							<key>name</key> | |
| 1420 | 							<string>meta.scope.case-body.shell</string> | |
| 1421 | 							<key>patterns</key> | |
| 1422 | 							<array> | |
| 1423 | 								<dict> | |
| 1424 | 									<key>include</key> | |
| 1425 | 									<string>#comment</string> | |
| 1426 | 								</dict> | |
| 1427 | 								<dict> | |
| 1428 | 									<key>include</key> | |
| 1429 | 									<string>#case-clause</string> | |
| 1430 | 								</dict> | |
| 1431 | 								<dict> | |
| 1432 | 									<key>include</key> | |
| 1433 | 									<string>$self</string> | |
| 1434 | 								</dict> | |
| 1435 | 							</array> | |
| 1436 | 						</dict> | |
| 1437 | 						<dict> | |
| 1438 | 							<key>include</key> | |
| 1439 | 							<string>$self</string> | |
| 1440 | 						</dict> | |
| 1441 | 					</array> | |
| 1442 | 				</dict> | |
| 1443 | 				<dict> | |
| 1444 | 					<key>begin</key> | |
| 1445 | 					<string>(^|(?&lt;=[&amp;;|]))\s*(if)(?=\s|;|&amp;|$)</string> | |
| 1446 | 					<key>beginCaptures</key> | |
| 1447 | 					<dict> | |
| 1448 | 						<key>2</key> | |
| 1449 | 						<dict> | |
| 1450 | 							<key>name</key> | |
| 1451 | 							<string>keyword.control.shell</string> | |
| 1452 | 						</dict> | |
| 1453 | 					</dict> | |
| 1454 | 					<key>comment</key> | |
| 1455 | 					<string>Restrict match to avoid matching in lines like `dd if=/dev/sda1 …`</string> | |
| 1456 | 					<key>end</key> | |
| 1457 | 					<string>(?&lt;=^|;|&amp;|\s)(fi)(?=\s|;|&amp;|$|\))</string> | |
| 1458 | 					<key>endCaptures</key> | |
| 1459 | 					<dict> | |
| 1460 | 						<key>1</key> | |
| 1461 | 						<dict> | |
| 1462 | 							<key>name</key> | |
| 1463 | 							<string>keyword.control.shell</string> | |
| 1464 | 						</dict> | |
| 1465 | 					</dict> | |
| 1466 | 					<key>name</key> | |
| 1467 | 					<string>meta.scope.if-block.shell</string> | |
| 1468 | 					<key>patterns</key> | |
| 1469 | 					<array> | |
| 1470 | 						<dict> | |
| 1471 | 							<key>include</key> | |
| 1472 | 							<string>$self</string> | |
| 1473 | 						</dict> | |
| 1474 | 					</array> | |
| 1475 | 				</dict> | |
| 1476 | 			</array> | |
| 1477 | 		</dict> | |
| 1478 | 		<key>math</key> | |
| 1479 | 		<dict> | |
| 1480 | 			<key>patterns</key> | |
| 1481 | 			<array> | |
| 1482 | 				<dict> | |
| 1483 | 					<key>include</key> | |
| 1484 | 					<string>#variable</string> | |
| 1485 | 				</dict> | |
| 1486 | 				<dict> | |
| 1487 | 					<key>match</key> | |
| 1488 | 					<string>\+{1,2}|-{1,2}|!|~|\*{1,2}|/|%|&lt;[&lt;=]?|&gt;[&gt;=]?|==|!=|\^|\|{1,2}|&amp;{1,2}|\?|\:|,|=|[*/%+\-&amp;^|]=|&lt;&lt;=|&gt;&gt;=</string> | |
| 1489 | 					<key>name</key> | |
| 1490 | 					<string>keyword.operator.arithmetic.shell</string> | |
| 1491 | 				</dict> | |
| 1492 | 				<dict> | |
| 1493 | 					<key>match</key> | |
| 1494 | 					<string>0[xX]\h+</string> | |
| 1495 | 					<key>name</key> | |
| 1496 | 					<string>constant.numeric.hex.shell</string> | |
| 1497 | 				</dict> | |
| 1498 | 				<dict> | |
| 1499 | 					<key>match</key> | |
| 1500 | 					<string>0\d+</string> | |
| 1501 | 					<key>name</key> | |
| 1502 | 					<string>constant.numeric.octal.shell</string> | |
| 1503 | 				</dict> | |
| 1504 | 				<dict> | |
| 1505 | 					<key>match</key> | |
| 1506 | 					<string>\d{1,2}#[0-9a-zA-Z@_]+</string> | |
| 1507 | 					<key>name</key> | |
| 1508 | 					<string>constant.numeric.other.shell</string> | |
| 1509 | 				</dict> | |
| 1510 | 				<dict> | |
| 1511 | 					<key>match</key> | |
| 1512 | 					<string>\d+</string> | |
| 1513 | 					<key>name</key> | |
| 1514 | 					<string>constant.numeric.integer.shell</string> | |
| 1515 | 				</dict> | |
| 1516 | 			</array> | |
| 1517 | 		</dict> | |
| 1518 | 		<key>pathname</key> | |
| 1519 | 		<dict> | |
| 1520 | 			<key>patterns</key> | |
| 1521 | 			<array> | |
| 1522 | 				<dict> | |
| 1523 | 					<key>match</key> | |
| 1524 | 					<string>(?&lt;=\s|:|=|^)~</string> | |
| 1525 | 					<key>name</key> | |
| 1526 | 					<string>keyword.operator.tilde.shell</string> | |
| 1527 | 				</dict> | |
| 1528 | 				<dict> | |
| 1529 | 					<key>match</key> | |
| 1530 | 					<string>\*|\?</string> | |
| 1531 | 					<key>name</key> | |
| 1532 | 					<string>keyword.operator.glob.shell</string> | |
| 1533 | 				</dict> | |
| 1534 | 				<dict> | |
| 1535 | 					<key>begin</key> | |
| 1536 | 					<string>([?*+@!])(\()</string> | |
| 1537 | 					<key>beginCaptures</key> | |
| 1538 | 					<dict> | |
| 1539 | 						<key>1</key> | |
| 1540 | 						<dict> | |
| 1541 | 							<key>name</key> | |
| 1542 | 							<string>keyword.operator.extglob.shell</string> | |
| 1543 | 						</dict> | |
| 1544 | 						<key>2</key> | |
| 1545 | 						<dict> | |
| 1546 | 							<key>name</key> | |
| 1547 | 							<string>punctuation.definition.extglob.shell</string> | |
| 1548 | 						</dict> | |
| 1549 | 					</dict> | |
| 1550 | 					<key>end</key> | |
| 1551 | 					<string>(\))</string> | |
| 1552 | 					<key>endCaptures</key> | |
| 1553 | 					<dict> | |
| 1554 | 						<key>1</key> | |
| 1555 | 						<dict> | |
| 1556 | 							<key>name</key> | |
| 1557 | 							<string>punctuation.definition.extglob.shell</string> | |
| 1558 | 						</dict> | |
| 1559 | 					</dict> | |
| 1560 | 					<key>name</key> | |
| 1561 | 					<string>meta.structure.extglob.shell</string> | |
| 1562 | 					<key>patterns</key> | |
| 1563 | 					<array> | |
| 1564 | 						<dict> | |
| 1565 | 							<key>include</key> | |
| 1566 | 							<string>$self</string> | |
| 1567 | 						</dict> | |
| 1568 | 					</array> | |
| 1569 | 				</dict> | |
| 1570 | 			</array> | |
| 1571 | 		</dict> | |
| 1572 | 		<key>pipeline</key> | |
| 1573 | 		<dict> | |
| 1574 | 			<key>patterns</key> | |
| 1575 | 			<array> | |
| 1576 | 				<dict> | |
| 1577 | 					<key>match</key> | |
| 1578 | 					<string>(?&lt;=^|;|&amp;|\s)(time)(?=\s|;|&amp;|$)</string> | |
| 1579 | 					<key>name</key> | |
| 1580 | 					<string>keyword.other.shell</string> | |
| 1581 | 				</dict> | |
| 1582 | 				<dict> | |
| 1583 | 					<key>match</key> | |
| 1584 | 					<string>[|!]</string> | |
| 1585 | 					<key>name</key> | |
| 1586 | 					<string>keyword.operator.pipe.shell</string> | |
| 1587 | 				</dict> | |
| 1588 | 			</array> | |
| 1589 | 		</dict> | |
| 1590 | 		<key>redirection</key> | |
| 1591 | 		<dict> | |
| 1592 | 			<key>patterns</key> | |
| 1593 | 			<array> | |
| 1594 | 				<dict> | |
| 1595 | 					<key>begin</key> | |
| 1596 | 					<string>[&gt;&lt;]\(</string> | |
| 1597 | 					<key>beginCaptures</key> | |
| 1598 | 					<dict> | |
| 1599 | 						<key>0</key> | |
| 1600 | 						<dict> | |
| 1601 | 							<key>name</key> | |
| 1602 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1603 | 						</dict> | |
| 1604 | 					</dict> | |
| 1605 | 					<key>end</key> | |
| 1606 | 					<string>\)</string> | |
| 1607 | 					<key>endCaptures</key> | |
| 1608 | 					<dict> | |
| 1609 | 						<key>0</key> | |
| 1610 | 						<dict> | |
| 1611 | 							<key>name</key> | |
| 1612 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1613 | 						</dict> | |
| 1614 | 					</dict> | |
| 1615 | 					<key>name</key> | |
| 1616 | 					<string>string.interpolated.process-substitution.shell</string> | |
| 1617 | 					<key>patterns</key> | |
| 1618 | 					<array> | |
| 1619 | 						<dict> | |
| 1620 | 							<key>include</key> | |
| 1621 | 							<string>$self</string> | |
| 1622 | 						</dict> | |
| 1623 | 					</array> | |
| 1624 | 				</dict> | |
| 1625 | 				<dict> | |
| 1626 | 					<key>comment</key> | |
| 1627 | 					<string>valid: &amp;&gt;word &gt;&amp;word &gt;word [n]&gt;&amp;[n] [n]&lt;word [n]&gt;word [n]&gt;&gt;word [n]&lt;&amp;word (last one is duplicate)</string> | |
| 1628 | 					<key>match</key> | |
| 1629 | 					<string>&amp;&gt;|\d*&gt;&amp;\d*|\d*(&gt;&gt;|&gt;|&lt;)|\d*&lt;&amp;|\d*&lt;&gt;</string> | |
| 1630 | 					<key>name</key> | |
| 1631 | 					<string>keyword.operator.redirect.shell</string> | |
| 1632 | 				</dict> | |
| 1633 | 			</array> | |
| 1634 | 		</dict> | |
| 1635 | 		<key>string</key> | |
| 1636 | 		<dict> | |
| 1637 | 			<key>patterns</key> | |
| 1638 | 			<array> | |
| 1639 | 				<dict> | |
| 1640 | 					<key>match</key> | |
| 1641 | 					<string>\\.</string> | |
| 1642 | 					<key>name</key> | |
| 1643 | 					<string>constant.character.escape.shell</string> | |
| 1644 | 				</dict> | |
| 1645 | 				<dict> | |
| 1646 | 					<key>begin</key> | |
| 1647 | 					<string>'</string> | |
| 1648 | 					<key>beginCaptures</key> | |
| 1649 | 					<dict> | |
| 1650 | 						<key>0</key> | |
| 1651 | 						<dict> | |
| 1652 | 							<key>name</key> | |
| 1653 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1654 | 						</dict> | |
| 1655 | 					</dict> | |
| 1656 | 					<key>end</key> | |
| 1657 | 					<string>'</string> | |
| 1658 | 					<key>endCaptures</key> | |
| 1659 | 					<dict> | |
| 1660 | 						<key>0</key> | |
| 1661 | 						<dict> | |
| 1662 | 							<key>name</key> | |
| 1663 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1664 | 						</dict> | |
| 1665 | 					</dict> | |
| 1666 | 					<key>name</key> | |
| 1667 | 					<string>string.quoted.single.shell</string> | |
| 1668 | 				</dict> | |
| 1669 | 				<dict> | |
| 1670 | 					<key>begin</key> | |
| 1671 | 					<string>\$?"</string> | |
| 1672 | 					<key>beginCaptures</key> | |
| 1673 | 					<dict> | |
| 1674 | 						<key>0</key> | |
| 1675 | 						<dict> | |
| 1676 | 							<key>name</key> | |
| 1677 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1678 | 						</dict> | |
| 1679 | 					</dict> | |
| 1680 | 					<key>end</key> | |
| 1681 | 					<string>"</string> | |
| 1682 | 					<key>endCaptures</key> | |
| 1683 | 					<dict> | |
| 1684 | 						<key>0</key> | |
| 1685 | 						<dict> | |
| 1686 | 							<key>name</key> | |
| 1687 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1688 | 						</dict> | |
| 1689 | 					</dict> | |
| 1690 | 					<key>name</key> | |
| 1691 | 					<string>string.quoted.double.shell</string> | |
| 1692 | 					<key>patterns</key> | |
| 1693 | 					<array> | |
| 1694 | 						<dict> | |
| 1695 | 							<key>match</key> | |
| 1696 | 							<string>\\[\$`"\\\n]</string> | |
| 1697 | 							<key>name</key> | |
| 1698 | 							<string>constant.character.escape.shell</string> | |
| 1699 | 						</dict> | |
| 1700 | 						<dict> | |
| 1701 | 							<key>include</key> | |
| 1702 | 							<string>#variable</string> | |
| 1703 | 						</dict> | |
| 1704 | 						<dict> | |
| 1705 | 							<key>include</key> | |
| 1706 | 							<string>#interpolation</string> | |
| 1707 | 						</dict> | |
| 1708 | 					</array> | |
| 1709 | 				</dict> | |
| 1710 | 				<dict> | |
| 1711 | 					<key>begin</key> | |
| 1712 | 					<string>\$'</string> | |
| 1713 | 					<key>beginCaptures</key> | |
| 1714 | 					<dict> | |
| 1715 | 						<key>0</key> | |
| 1716 | 						<dict> | |
| 1717 | 							<key>name</key> | |
| 1718 | 							<string>punctuation.definition.string.begin.shell</string> | |
| 1719 | 						</dict> | |
| 1720 | 					</dict> | |
| 1721 | 					<key>end</key> | |
| 1722 | 					<string>'</string> | |
| 1723 | 					<key>endCaptures</key> | |
| 1724 | 					<dict> | |
| 1725 | 						<key>0</key> | |
| 1726 | 						<dict> | |
| 1727 | 							<key>name</key> | |
| 1728 | 							<string>punctuation.definition.string.end.shell</string> | |
| 1729 | 						</dict> | |
| 1730 | 					</dict> | |
| 1731 | 					<key>name</key> | |
| 1732 | 					<string>string.quoted.single.dollar.shell</string> | |
| 1733 | 					<key>patterns</key> | |
| 1734 | 					<array> | |
| 1735 | 						<dict> | |
| 1736 | 							<key>match</key> | |
| 1737 | 							<string>\\(a|b|e|f|n|r|t|v|\\|')</string> | |
| 1738 | 							<key>name</key> | |
| 1739 | 							<string>constant.character.escape.ansi-c.shell</string> | |
| 1740 | 						</dict> | |
| 1741 | 						<dict> | |
| 1742 | 							<key>match</key> | |
| 1743 | 							<string>\\[0-9]{3}</string> | |
| 1744 | 							<key>name</key> | |
| 1745 | 							<string>constant.character.escape.octal.shell</string> | |
| 1746 | 						</dict> | |
| 1747 | 						<dict> | |
| 1748 | 							<key>match</key> | |
| 1749 | 							<string>\\x[0-9a-fA-F]{2}</string> | |
| 1750 | 							<key>name</key> | |
| 1751 | 							<string>constant.character.escape.hex.shell</string> | |
| 1752 | 						</dict> | |
| 1753 | 						<dict> | |
| 1754 | 							<key>match</key> | |
| 1755 | 							<string>\\c.</string> | |
| 1756 | 							<key>name</key> | |
| 1757 | 							<string>constant.character.escape.control-char.shell</string> | |
| 1758 | 						</dict> | |
| 1759 | 					</array> | |
| 1760 | 				</dict> | |
| 1761 | 			</array> | |
| 1762 | 		</dict> | |
| 1763 | 		<key>support</key> | |
| 1764 | 		<dict> | |
| 1765 | 			<key>patterns</key> | |
| 1766 | 			<array> | |
| 1767 | 				<dict> | |
| 1768 | 					<key>match</key> | |
| 1769 | 					<string>(?&lt;=^|;|&amp;|\s)(?::|\.)(?=\s|;|&amp;|$)</string> | |
| 1770 | 					<key>name</key> | |
| 1771 | 					<string>support.function.builtin.shell</string> | |
| 1772 | 				</dict> | |
| 1773 | 				<dict> | |
| 1774 | 					<key>match</key> | |
| 1775 | 					<string>(?&lt;=^|;|&amp;|\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|mapfile|popd|printf|pushd|pwd|read(array)?|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\s|;|&amp;|$)</string> | |
| 1776 | 					<key>name</key> | |
| 1777 | 					<string>support.function.builtin.shell</string> | |
| 1778 | 				</dict> | |
| 1779 | 			</array> | |
| 1780 | 		</dict> | |
| 1781 | 		<key>variable</key> | |
| 1782 | 		<dict> | |
| 1783 | 			<key>patterns</key> | |
| 1784 | 			<array> | |
| 1785 | 				<dict> | |
| 1786 | 					<key>captures</key> | |
| 1787 | 					<dict> | |
| 1788 | 						<key>1</key> | |
| 1789 | 						<dict> | |
| 1790 | 							<key>name</key> | |
| 1791 | 							<string>punctuation.definition.variable.shell</string> | |
| 1792 | 						</dict> | |
| 1793 | 					</dict> | |
| 1794 | 					<key>match</key> | |
| 1795 | 					<string>(\$)[a-zA-Z_][a-zA-Z0-9_]*</string> | |
| 1796 | 					<key>name</key> | |
| 1797 | 					<string>variable.other.normal.shell</string> | |
| 1798 | 				</dict> | |
| 1799 | 				<dict> | |
| 1800 | 					<key>captures</key> | |
| 1801 | 					<dict> | |
| 1802 | 						<key>1</key> | |
| 1803 | 						<dict> | |
| 1804 | 							<key>name</key> | |
| 1805 | 							<string>punctuation.definition.variable.shell</string> | |
| 1806 | 						</dict> | |
| 1807 | 					</dict> | |
| 1808 | 					<key>match</key> | |
| 1809 | 					<string>(\$)[-*@#?$!0_]</string> | |
| 1810 | 					<key>name</key> | |
| 1811 | 					<string>variable.other.special.shell</string> | |
| 1812 | 				</dict> | |
| 1813 | 				<dict> | |
| 1814 | 					<key>captures</key> | |
| 1815 | 					<dict> | |
| 1816 | 						<key>1</key> | |
| 1817 | 						<dict> | |
| 1818 | 							<key>name</key> | |
| 1819 | 							<string>punctuation.definition.variable.shell</string> | |
| 1820 | 						</dict> | |
| 1821 | 					</dict> | |
| 1822 | 					<key>match</key> | |
| 1823 | 					<string>(\$)[1-9]</string> | |
| 1824 | 					<key>name</key> | |
| 1825 | 					<string>variable.other.positional.shell</string> | |
| 1826 | 				</dict> | |
| 1827 | 				<dict> | |
| 1828 | 					<key>begin</key> | |
| 1829 | 					<string>\$\{</string> | |
| 1830 | 					<key>captures</key> | |
| 1831 | 					<dict> | |
| 1832 | 						<key>0</key> | |
| 1833 | 						<dict> | |
| 1834 | 							<key>name</key> | |
| 1835 | 							<string>punctuation.definition.variable.shell</string> | |
| 1836 | 						</dict> | |
| 1837 | 					</dict> | |
| 1838 | 					<key>end</key> | |
| 1839 | 					<string>\}</string> | |
| 1840 | 					<key>name</key> | |
| 1841 | 					<string>variable.other.bracket.shell</string> | |
| 1842 | 					<key>patterns</key> | |
| 1843 | 					<array> | |
| 1844 | 						<dict> | |
| 1845 | 							<key>match</key> | |
| 1846 | 							<string>!|:[-=?+]?|\*|@|#{1,2}|%{1,2}|/</string> | |
| 1847 | 							<key>name</key> | |
| 1848 | 							<string>keyword.operator.expansion.shell</string> | |
| 1849 | 						</dict> | |
| 1850 | 						<dict> | |
| 1851 | 							<key>captures</key> | |
| 1852 | 							<dict> | |
| 1853 | 								<key>1</key> | |
| 1854 | 								<dict> | |
| 1855 | 									<key>name</key> | |
| 1856 | 									<string>punctuation.section.array.shell</string> | |
| 1857 | 								</dict> | |
| 1858 | 								<key>3</key> | |
| 1859 | 								<dict> | |
| 1860 | 									<key>name</key> | |
| 1861 | 									<string>punctuation.section.array.shell</string> | |
| 1862 | 								</dict> | |
| 1863 | 							</dict> | |
| 1864 | 							<key>match</key> | |
| 1865 | 							<string>(\[)([^\]]+)(\])</string> | |
| 1866 | 						</dict> | |
| 1867 | 						<dict> | |
| 1868 | 							<key>include</key> | |
| 1869 | 							<string>#string</string> | |
| 1870 | 						</dict> | |
| 1871 | 						<dict> | |
| 1872 | 							<key>include</key> | |
| 1873 | 							<string>#variable</string> | |
| 1874 | 						</dict> | |
| 1875 | 						<dict> | |
| 1876 | 							<key>include</key> | |
| 1877 | 							<string>#interpolation</string> | |
| 1878 | 						</dict> | |
| 1879 | 					</array> | |
| 1880 | 				</dict> | |
| 1881 | 			</array> | |
| 1882 | 		</dict> | |
| 1883 | 	</dict> | |
| 1884 | 	<key>scopeName</key> | |
| 1885 | 	<string>source.shell</string> | |
| 1886 | 	<key>uuid</key> | |
| 1887 | 	<string>DDEEA3ED-6B1C-11D9-8B10-000D93589AF6</string> | |
| 1888 | </dict> | |
| 1889 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/toml.plist created+736| ... | ... | @@ -0,0 +1,736 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>toml</string> | |
| 8 | 	</array> | |
| 9 | 	<key>keyEquivalent</key> | |
| 10 | 	<string>^~T</string> | |
| 11 | 	<key>name</key> | |
| 12 | 	<string>TOML</string> | |
| 13 | 	<key>patterns</key> | |
| 14 | 	<array> | |
| 15 | 		<dict> | |
| 16 | 			<key>include</key> | |
| 17 | 			<string>#comments</string> | |
| 18 | 		</dict> | |
| 19 | 		<dict> | |
| 20 | 			<key>include</key> | |
| 21 | 			<string>#groups</string> | |
| 22 | 		</dict> | |
| 23 | 		<dict> | |
| 24 | 			<key>include</key> | |
| 25 | 			<string>#key_pair</string> | |
| 26 | 		</dict> | |
| 27 | 		<dict> | |
| 28 | 			<key>include</key> | |
| 29 | 			<string>#invalid</string> | |
| 30 | 		</dict> | |
| 31 | 	</array> | |
| 32 | 	<key>repository</key> | |
| 33 | 	<dict> | |
| 34 | 		<key>comments</key> | |
| 35 | 		<dict> | |
| 36 | 			<key>begin</key> | |
| 37 | 			<string>(^[ \t]+)?(?=#)</string> | |
| 38 | 			<key>beginCaptures</key> | |
| 39 | 			<dict> | |
| 40 | 				<key>1</key> | |
| 41 | 				<dict> | |
| 42 | 					<key>name</key> | |
| 43 | 					<string>punctuation.whitespace.comment.leading.toml</string> | |
| 44 | 				</dict> | |
| 45 | 			</dict> | |
| 46 | 			<key>end</key> | |
| 47 | 			<string>(?!\G)</string> | |
| 48 | 			<key>patterns</key> | |
| 49 | 			<array> | |
| 50 | 				<dict> | |
| 51 | 					<key>begin</key> | |
| 52 | 					<string>#</string> | |
| 53 | 					<key>beginCaptures</key> | |
| 54 | 					<dict> | |
| 55 | 						<key>0</key> | |
| 56 | 						<dict> | |
| 57 | 							<key>name</key> | |
| 58 | 							<string>punctuation.definition.comment.toml</string> | |
| 59 | 						</dict> | |
| 60 | 					</dict> | |
| 61 | 					<key>end</key> | |
| 62 | 					<string>\n</string> | |
| 63 | 					<key>name</key> | |
| 64 | 					<string>comment.line.number-sign.toml</string> | |
| 65 | 				</dict> | |
| 66 | 			</array> | |
| 67 | 		</dict> | |
| 68 | 		<key>groups</key> | |
| 69 | 		<dict> | |
| 70 | 			<key>patterns</key> | |
| 71 | 			<array> | |
| 72 | 				<dict> | |
| 73 | 					<key>captures</key> | |
| 74 | 					<dict> | |
| 75 | 						<key>1</key> | |
| 76 | 						<dict> | |
| 77 | 							<key>name</key> | |
| 78 | 							<string>punctuation.definition.section.begin.toml</string> | |
| 79 | 						</dict> | |
| 80 | 						<key>2</key> | |
| 81 | 						<dict> | |
| 82 | 							<key>patterns</key> | |
| 83 | 							<array> | |
| 84 | 								<dict> | |
| 85 | 									<key>match</key> | |
| 86 | 									<string>[^\s.]+</string> | |
| 87 | 									<key>name</key> | |
| 88 | 									<string>entity.name.section.toml</string> | |
| 89 | 								</dict> | |
| 90 | 							</array> | |
| 91 | 						</dict> | |
| 92 | 						<key>3</key> | |
| 93 | 						<dict> | |
| 94 | 							<key>name</key> | |
| 95 | 							<string>punctuation.definition.section.begin.toml</string> | |
| 96 | 						</dict> | |
| 97 | 					</dict> | |
| 98 | 					<key>match</key> | |
| 99 | 					<string>^\s*(\[)([^\[\]]*)(\])</string> | |
| 100 | 					<key>name</key> | |
| 101 | 					<string>meta.group.toml</string> | |
| 102 | 				</dict> | |
| 103 | 				<dict> | |
| 104 | 					<key>captures</key> | |
| 105 | 					<dict> | |
| 106 | 						<key>1</key> | |
| 107 | 						<dict> | |
| 108 | 							<key>name</key> | |
| 109 | 							<string>punctuation.definition.section.begin.toml</string> | |
| 110 | 						</dict> | |
| 111 | 						<key>2</key> | |
| 112 | 						<dict> | |
| 113 | 							<key>patterns</key> | |
| 114 | 							<array> | |
| 115 | 								<dict> | |
| 116 | 									<key>match</key> | |
| 117 | 									<string>[^\s.]+</string> | |
| 118 | 									<key>name</key> | |
| 119 | 									<string>entity.name.section.toml</string> | |
| 120 | 								</dict> | |
| 121 | 							</array> | |
| 122 | 						</dict> | |
| 123 | 						<key>3</key> | |
| 124 | 						<dict> | |
| 125 | 							<key>name</key> | |
| 126 | 							<string>punctuation.definition.section.begin.toml</string> | |
| 127 | 						</dict> | |
| 128 | 					</dict> | |
| 129 | 					<key>match</key> | |
| 130 | 					<string>^\s*(\[\[)([^\[\]]*)(\]\])</string> | |
| 131 | 					<key>name</key> | |
| 132 | 					<string>meta.group.double.toml</string> | |
| 133 | 				</dict> | |
| 134 | 			</array> | |
| 135 | 		</dict> | |
| 136 | 		<key>invalid</key> | |
| 137 | 		<dict> | |
| 138 | 			<key>match</key> | |
| 139 | 			<string>\S+(\s*(?=\S))?</string> | |
| 140 | 			<key>name</key> | |
| 141 | 			<string>invalid.illegal.not-allowed-here.toml</string> | |
| 142 | 		</dict> | |
| 143 | 		<key>key_pair</key> | |
| 144 | 		<dict> | |
| 145 | 			<key>patterns</key> | |
| 146 | 			<array> | |
| 147 | 				<dict> | |
| 148 | 					<key>begin</key> | |
| 149 | 					<string>([A-Za-z0-9_-]+)\s*(=)\s*</string> | |
| 150 | 					<key>captures</key> | |
| 151 | 					<dict> | |
| 152 | 						<key>1</key> | |
| 153 | 						<dict> | |
| 154 | 							<key>name</key> | |
| 155 | 							<string>variable.other.key.toml</string> | |
| 156 | 						</dict> | |
| 157 | 						<key>2</key> | |
| 158 | 						<dict> | |
| 159 | 							<key>name</key> | |
| 160 | 							<string>punctuation.separator.key-value.toml</string> | |
| 161 | 						</dict> | |
| 162 | 					</dict> | |
| 163 | 					<key>end</key> | |
| 164 | 					<string>(?&lt;=\S)(?&lt;!=)|$</string> | |
| 165 | 					<key>patterns</key> | |
| 166 | 					<array> | |
| 167 | 						<dict> | |
| 168 | 							<key>include</key> | |
| 169 | 							<string>#primatives</string> | |
| 170 | 						</dict> | |
| 171 | 					</array> | |
| 172 | 				</dict> | |
| 173 | 				<dict> | |
| 174 | 					<key>begin</key> | |
| 175 | 					<string>((")(.*?)("))\s*(=)\s*</string> | |
| 176 | 					<key>captures</key> | |
| 177 | 					<dict> | |
| 178 | 						<key>1</key> | |
| 179 | 						<dict> | |
| 180 | 							<key>name</key> | |
| 181 | 							<string>variable.other.key.toml</string> | |
| 182 | 						</dict> | |
| 183 | 						<key>2</key> | |
| 184 | 						<dict> | |
| 185 | 							<key>name</key> | |
| 186 | 							<string>punctuation.definition.variable.begin.toml</string> | |
| 187 | 						</dict> | |
| 188 | 						<key>3</key> | |
| 189 | 						<dict> | |
| 190 | 							<key>patterns</key> | |
| 191 | 							<array> | |
| 192 | 								<dict> | |
| 193 | 									<key>match</key> | |
| 194 | 									<string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string> | |
| 195 | 									<key>name</key> | |
| 196 | 									<string>constant.character.escape.toml</string> | |
| 197 | 								</dict> | |
| 198 | 								<dict> | |
| 199 | 									<key>match</key> | |
| 200 | 									<string>\\[^btnfr"\\]</string> | |
| 201 | 									<key>name</key> | |
| 202 | 									<string>invalid.illegal.escape.toml</string> | |
| 203 | 								</dict> | |
| 204 | 								<dict> | |
| 205 | 									<key>match</key> | |
| 206 | 									<string>"</string> | |
| 207 | 									<key>name</key> | |
| 208 | 									<string>invalid.illegal.not-allowed-here.toml</string> | |
| 209 | 								</dict> | |
| 210 | 							</array> | |
| 211 | 						</dict> | |
| 212 | 						<key>4</key> | |
| 213 | 						<dict> | |
| 214 | 							<key>name</key> | |
| 215 | 							<string>punctuation.definition.variable.end.toml</string> | |
| 216 | 						</dict> | |
| 217 | 						<key>5</key> | |
| 218 | 						<dict> | |
| 219 | 							<key>name</key> | |
| 220 | 							<string>punctuation.separator.key-value.toml</string> | |
| 221 | 						</dict> | |
| 222 | 					</dict> | |
| 223 | 					<key>end</key> | |
| 224 | 					<string>(?&lt;=\S)(?&lt;!=)|$</string> | |
| 225 | 					<key>patterns</key> | |
| 226 | 					<array> | |
| 227 | 						<dict> | |
| 228 | 							<key>include</key> | |
| 229 | 							<string>#primatives</string> | |
| 230 | 						</dict> | |
| 231 | 					</array> | |
| 232 | 				</dict> | |
| 233 | 				<dict> | |
| 234 | 					<key>begin</key> | |
| 235 | 					<string>((')([^']*)('))\s*(=)\s*</string> | |
| 236 | 					<key>captures</key> | |
| 237 | 					<dict> | |
| 238 | 						<key>1</key> | |
| 239 | 						<dict> | |
| 240 | 							<key>name</key> | |
| 241 | 							<string>variable.other.key.toml</string> | |
| 242 | 						</dict> | |
| 243 | 						<key>2</key> | |
| 244 | 						<dict> | |
| 245 | 							<key>name</key> | |
| 246 | 							<string>punctuation.definition.variable.begin.toml</string> | |
| 247 | 						</dict> | |
| 248 | 						<key>4</key> | |
| 249 | 						<dict> | |
| 250 | 							<key>name</key> | |
| 251 | 							<string>punctuation.definition.variable.end.toml</string> | |
| 252 | 						</dict> | |
| 253 | 						<key>5</key> | |
| 254 | 						<dict> | |
| 255 | 							<key>name</key> | |
| 256 | 							<string>punctuation.separator.key-value.toml</string> | |
| 257 | 						</dict> | |
| 258 | 					</dict> | |
| 259 | 					<key>end</key> | |
| 260 | 					<string>(?&lt;=\S)(?&lt;!=)|$</string> | |
| 261 | 					<key>patterns</key> | |
| 262 | 					<array> | |
| 263 | 						<dict> | |
| 264 | 							<key>include</key> | |
| 265 | 							<string>#primatives</string> | |
| 266 | 						</dict> | |
| 267 | 					</array> | |
| 268 | 				</dict> | |
| 269 | 				<dict> | |
| 270 | 					<key>begin</key> | |
| 271 | 					<string>(?x) | |
| 272 | 						( | |
| 273 | 							( | |
| 274 | 								(?: | |
| 275 | 									[A-Za-z0-9_-]+				# Bare key | |
| 276 | 								 | " (?:[^"\\]|\\.)* "		# Double quoted key | |
| 277 | 								 | ' [^']* '		# Sindle quoted key | |
| 278 | 								) | |
| 279 | 								(?: | |
| 280 | 									\s* \. \s*					# Dot | |
| 281 | 								 | (?= \s* =)					# or look-ahead for equals | |
| 282 | 								) | |
| 283 | 							){2,}								# Ensure at least one dot | |
| 284 | 						) | |
| 285 | 						\s*(=)\s* | |
| 286 | 					</string> | |
| 287 | 					<key>captures</key> | |
| 288 | 					<dict> | |
| 289 | 						<key>1</key> | |
| 290 | 						<dict> | |
| 291 | 							<key>name</key> | |
| 292 | 							<string>variable.other.key.toml</string> | |
| 293 | 							<key>patterns</key> | |
| 294 | 							<array> | |
| 295 | 								<dict> | |
| 296 | 									<key>match</key> | |
| 297 | 									<string>\.</string> | |
| 298 | 									<key>name</key> | |
| 299 | 									<string>punctuation.separator.variable.toml</string> | |
| 300 | 								</dict> | |
| 301 | 								<dict> | |
| 302 | 									<key>captures</key> | |
| 303 | 									<dict> | |
| 304 | 										<key>1</key> | |
| 305 | 										<dict> | |
| 306 | 											<key>name</key> | |
| 307 | 											<string>punctuation.definition.variable.begin.toml</string> | |
| 308 | 										</dict> | |
| 309 | 										<key>2</key> | |
| 310 | 										<dict> | |
| 311 | 											<key>patterns</key> | |
| 312 | 											<array> | |
| 313 | 												<dict> | |
| 314 | 													<key>match</key> | |
| 315 | 													<string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string> | |
| 316 | 													<key>name</key> | |
| 317 | 													<string>constant.character.escape.toml</string> | |
| 318 | 												</dict> | |
| 319 | 												<dict> | |
| 320 | 													<key>match</key> | |
| 321 | 													<string>\\[^btnfr"\\]</string> | |
| 322 | 													<key>name</key> | |
| 323 | 													<string>invalid.illegal.escape.toml</string> | |
| 324 | 												</dict> | |
| 325 | 											</array> | |
| 326 | 										</dict> | |
| 327 | 										<key>3</key> | |
| 328 | 										<dict> | |
| 329 | 											<key>name</key> | |
| 330 | 											<string>punctuation.definition.variable.end.toml</string> | |
| 331 | 										</dict> | |
| 332 | 									</dict> | |
| 333 | 									<key>match</key> | |
| 334 | 									<string>(")((?:[^"\\]|\\.)*)(")</string> | |
| 335 | 								</dict> | |
| 336 | 								<dict> | |
| 337 | 									<key>captures</key> | |
| 338 | 									<dict> | |
| 339 | 										<key>1</key> | |
| 340 | 										<dict> | |
| 341 | 											<key>name</key> | |
| 342 | 											<string>punctuation.definition.variable.begin.toml</string> | |
| 343 | 										</dict> | |
| 344 | 										<key>2</key> | |
| 345 | 										<dict> | |
| 346 | 											<key>name</key> | |
| 347 | 											<string>punctuation.definition.variable.end.toml</string> | |
| 348 | 										</dict> | |
| 349 | 									</dict> | |
| 350 | 									<key>match</key> | |
| 351 | 									<string>(')[^']*(')</string> | |
| 352 | 								</dict> | |
| 353 | 							</array> | |
| 354 | 						</dict> | |
| 355 | 						<key>3</key> | |
| 356 | 						<dict> | |
| 357 | 							<key>name</key> | |
| 358 | 							<string>punctuation.separator.key-value.toml</string> | |
| 359 | 						</dict> | |
| 360 | 					</dict> | |
| 361 | 					<key>comment</key> | |
| 362 | 					<string>Dotted key</string> | |
| 363 | 					<key>end</key> | |
| 364 | 					<string>(?&lt;=\S)(?&lt;!=)|$</string> | |
| 365 | 					<key>patterns</key> | |
| 366 | 					<array> | |
| 367 | 						<dict> | |
| 368 | 							<key>include</key> | |
| 369 | 							<string>#primatives</string> | |
| 370 | 						</dict> | |
| 371 | 					</array> | |
| 372 | 				</dict> | |
| 373 | 			</array> | |
| 374 | 		</dict> | |
| 375 | 		<key>primatives</key> | |
| 376 | 		<dict> | |
| 377 | 			<key>patterns</key> | |
| 378 | 			<array> | |
| 379 | 				<dict> | |
| 380 | 					<key>begin</key> | |
| 381 | 					<string>\G"""</string> | |
| 382 | 					<key>beginCaptures</key> | |
| 383 | 					<dict> | |
| 384 | 						<key>0</key> | |
| 385 | 						<dict> | |
| 386 | 							<key>name</key> | |
| 387 | 							<string>punctuation.definition.string.begin.toml</string> | |
| 388 | 						</dict> | |
| 389 | 					</dict> | |
| 390 | 					<key>end</key> | |
| 391 | 					<string>"{3,5}</string> | |
| 392 | 					<key>endCaptures</key> | |
| 393 | 					<dict> | |
| 394 | 						<key>0</key> | |
| 395 | 						<dict> | |
| 396 | 							<key>name</key> | |
| 397 | 							<string>punctuation.definition.string.end.toml</string> | |
| 398 | 						</dict> | |
| 399 | 					</dict> | |
| 400 | 					<key>name</key> | |
| 401 | 					<string>string.quoted.triple.double.toml</string> | |
| 402 | 					<key>patterns</key> | |
| 403 | 					<array> | |
| 404 | 						<dict> | |
| 405 | 							<key>match</key> | |
| 406 | 							<string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string> | |
| 407 | 							<key>name</key> | |
| 408 | 							<string>constant.character.escape.toml</string> | |
| 409 | 						</dict> | |
| 410 | 						<dict> | |
| 411 | 							<key>match</key> | |
| 412 | 							<string>\\[^btnfr"\\\n]</string> | |
| 413 | 							<key>name</key> | |
| 414 | 							<string>invalid.illegal.escape.toml</string> | |
| 415 | 						</dict> | |
| 416 | 					</array> | |
| 417 | 				</dict> | |
| 418 | 				<dict> | |
| 419 | 					<key>begin</key> | |
| 420 | 					<string>\G"</string> | |
| 421 | 					<key>beginCaptures</key> | |
| 422 | 					<dict> | |
| 423 | 						<key>0</key> | |
| 424 | 						<dict> | |
| 425 | 							<key>name</key> | |
| 426 | 							<string>punctuation.definition.string.begin.toml</string> | |
| 427 | 						</dict> | |
| 428 | 					</dict> | |
| 429 | 					<key>end</key> | |
| 430 | 					<string>"</string> | |
| 431 | 					<key>endCaptures</key> | |
| 432 | 					<dict> | |
| 433 | 						<key>0</key> | |
| 434 | 						<dict> | |
| 435 | 							<key>name</key> | |
| 436 | 							<string>punctuation.definition.string.end.toml</string> | |
| 437 | 						</dict> | |
| 438 | 					</dict> | |
| 439 | 					<key>name</key> | |
| 440 | 					<string>string.quoted.double.toml</string> | |
| 441 | 					<key>patterns</key> | |
| 442 | 					<array> | |
| 443 | 						<dict> | |
| 444 | 							<key>match</key> | |
| 445 | 							<string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string> | |
| 446 | 							<key>name</key> | |
| 447 | 							<string>constant.character.escape.toml</string> | |
| 448 | 						</dict> | |
| 449 | 						<dict> | |
| 450 | 							<key>match</key> | |
| 451 | 							<string>\\[^btnfr"\\]</string> | |
| 452 | 							<key>name</key> | |
| 453 | 							<string>invalid.illegal.escape.toml</string> | |
| 454 | 						</dict> | |
| 455 | 					</array> | |
| 456 | 				</dict> | |
| 457 | 				<dict> | |
| 458 | 					<key>begin</key> | |
| 459 | 					<string>\G'''</string> | |
| 460 | 					<key>beginCaptures</key> | |
| 461 | 					<dict> | |
| 462 | 						<key>0</key> | |
| 463 | 						<dict> | |
| 464 | 							<key>name</key> | |
| 465 | 							<string>punctuation.definition.string.begin.toml</string> | |
| 466 | 						</dict> | |
| 467 | 					</dict> | |
| 468 | 					<key>end</key> | |
| 469 | 					<string>'{3,5}</string> | |
| 470 | 					<key>endCaptures</key> | |
| 471 | 					<dict> | |
| 472 | 						<key>0</key> | |
| 473 | 						<dict> | |
| 474 | 							<key>name</key> | |
| 475 | 							<string>punctuation.definition.string.end.toml</string> | |
| 476 | 						</dict> | |
| 477 | 					</dict> | |
| 478 | 					<key>name</key> | |
| 479 | 					<string>string.quoted.triple.single.toml</string> | |
| 480 | 				</dict> | |
| 481 | 				<dict> | |
| 482 | 					<key>begin</key> | |
| 483 | 					<string>\G'</string> | |
| 484 | 					<key>beginCaptures</key> | |
| 485 | 					<dict> | |
| 486 | 						<key>0</key> | |
| 487 | 						<dict> | |
| 488 | 							<key>name</key> | |
| 489 | 							<string>punctuation.definition.string.begin.toml</string> | |
| 490 | 						</dict> | |
| 491 | 					</dict> | |
| 492 | 					<key>end</key> | |
| 493 | 					<string>'</string> | |
| 494 | 					<key>endCaptures</key> | |
| 495 | 					<dict> | |
| 496 | 						<key>0</key> | |
| 497 | 						<dict> | |
| 498 | 							<key>name</key> | |
| 499 | 							<string>punctuation.definition.string.end.toml</string> | |
| 500 | 						</dict> | |
| 501 | 					</dict> | |
| 502 | 					<key>name</key> | |
| 503 | 					<string>string.quoted.single.toml</string> | |
| 504 | 				</dict> | |
| 505 | 				<dict> | |
| 506 | 					<key>match</key> | |
| 507 | 					<string>\G(?x) | |
| 508 | 						[0-9]{4} | |
| 509 | 						- | |
| 510 | 						(0[1-9]|1[012]) | |
| 511 | 						- | |
| 512 | 						(?!00|3[2-9])[0-3][0-9] | |
| 513 | 						( | |
| 514 | 							[Tt ] | |
| 515 | 							(?!2[5-9])[0-2][0-9] | |
| 516 | 							: | |
| 517 | 							[0-5][0-9] | |
| 518 | 							: | |
| 519 | 							(?!6[1-9])[0-6][0-9] | |
| 520 | 							(\.[0-9]+)? | |
| 521 | 							( | |
| 522 | 								Z | |
| 523 | 							 | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9] | |
| 524 | 							)? | |
| 525 | 						)? | |
| 526 | 					</string> | |
| 527 | 					<key>name</key> | |
| 528 | 					<string>constant.other.date.toml</string> | |
| 529 | 				</dict> | |
| 530 | 				<dict> | |
| 531 | 					<key>match</key> | |
| 532 | 					<string>\G(?x) | |
| 533 | 						(?!2[5-9])[0-2][0-9] | |
| 534 | 						: | |
| 535 | 						[0-5][0-9] | |
| 536 | 						: | |
| 537 | 						(?!6[1-9])[0-6][0-9] | |
| 538 | 						(\.[0-9]+)? | |
| 539 | 					</string> | |
| 540 | 					<key>name</key> | |
| 541 | 					<string>constant.other.time.toml</string> | |
| 542 | 				</dict> | |
| 543 | 				<dict> | |
| 544 | 					<key>match</key> | |
| 545 | 					<string>\G(true|false)</string> | |
| 546 | 					<key>name</key> | |
| 547 | 					<string>constant.language.boolean.toml</string> | |
| 548 | 				</dict> | |
| 549 | 				<dict> | |
| 550 | 					<key>match</key> | |
| 551 | 					<string>\G0x\h(\h|_\h)*</string> | |
| 552 | 					<key>name</key> | |
| 553 | 					<string>constant.numeric.hex.toml</string> | |
| 554 | 				</dict> | |
| 555 | 				<dict> | |
| 556 | 					<key>match</key> | |
| 557 | 					<string>\G0o[0-7]([0-7]|_[0-7])*</string> | |
| 558 | 					<key>name</key> | |
| 559 | 					<string>constant.numeric.octal.toml</string> | |
| 560 | 				</dict> | |
| 561 | 				<dict> | |
| 562 | 					<key>match</key> | |
| 563 | 					<string>\G0b[01]([01]|_[01])*</string> | |
| 564 | 					<key>name</key> | |
| 565 | 					<string>constant.numeric.binary.toml</string> | |
| 566 | 				</dict> | |
| 567 | 				<dict> | |
| 568 | 					<key>match</key> | |
| 569 | 					<string>\G[+-]?(inf|nan)</string> | |
| 570 | 					<key>name</key> | |
| 571 | 					<string>constant.numeric.toml</string> | |
| 572 | 				</dict> | |
| 573 | 				<dict> | |
| 574 | 					<key>match</key> | |
| 575 | 					<string>(?x) | |
| 576 | 						\G | |
| 577 | 						( | |
| 578 | 						 [+-]? | |
| 579 | 						 ( | |
| 580 | 								0 | |
| 581 | 							 | ([1-9](([0-9]|_[0-9])+)?) | |
| 582 | 							) | |
| 583 | 						) | |
| 584 | 						(?=[.eE]) | |
| 585 | 						( | |
| 586 | 						 \. | |
| 587 | 						 ([0-9](([0-9]|_[0-9])+)?) | |
| 588 | 						)? | |
| 589 | 						( | |
| 590 | 						 [eE] | |
| 591 | 						 ([+-]?[0-9](([0-9]|_[0-9])+)?) | |
| 592 | 						)? | |
| 593 | 					</string> | |
| 594 | 					<key>name</key> | |
| 595 | 					<string>constant.numeric.float.toml</string> | |
| 596 | 				</dict> | |
| 597 | 				<dict> | |
| 598 | 					<key>match</key> | |
| 599 | 					<string>(?x) | |
| 600 | 						\G | |
| 601 | 						( | |
| 602 | 						 [+-]? | |
| 603 | 						 ( | |
| 604 | 								0 | |
| 605 | 							 | ([1-9](([0-9]|_[0-9])+)?) | |
| 606 | 							) | |
| 607 | 						) | |
| 608 | 					</string> | |
| 609 | 					<key>name</key> | |
| 610 | 					<string>constant.numeric.integer.toml</string> | |
| 611 | 				</dict> | |
| 612 | 				<dict> | |
| 613 | 					<key>begin</key> | |
| 614 | 					<string>\G\[</string> | |
| 615 | 					<key>beginCaptures</key> | |
| 616 | 					<dict> | |
| 617 | 						<key>0</key> | |
| 618 | 						<dict> | |
| 619 | 							<key>name</key> | |
| 620 | 							<string>punctuation.definition.array.begin.toml</string> | |
| 621 | 						</dict> | |
| 622 | 					</dict> | |
| 623 | 					<key>end</key> | |
| 624 | 					<string>\]</string> | |
| 625 | 					<key>endCaptures</key> | |
| 626 | 					<dict> | |
| 627 | 						<key>0</key> | |
| 628 | 						<dict> | |
| 629 | 							<key>name</key> | |
| 630 | 							<string>punctuation.definition.array.end.toml</string> | |
| 631 | 						</dict> | |
| 632 | 					</dict> | |
| 633 | 					<key>name</key> | |
| 634 | 					<string>meta.array.toml</string> | |
| 635 | 					<key>patterns</key> | |
| 636 | 					<array> | |
| 637 | 						<dict> | |
| 638 | 							<key>begin</key> | |
| 639 | 							<string>(?=["'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\[|\{)</string> | |
| 640 | 							<key>end</key> | |
| 641 | 							<string>,|(?=])</string> | |
| 642 | 							<key>endCaptures</key> | |
| 643 | 							<dict> | |
| 644 | 								<key>0</key> | |
| 645 | 								<dict> | |
| 646 | 									<key>name</key> | |
| 647 | 									<string>punctuation.separator.array.toml</string> | |
| 648 | 								</dict> | |
| 649 | 							</dict> | |
| 650 | 							<key>patterns</key> | |
| 651 | 							<array> | |
| 652 | 								<dict> | |
| 653 | 									<key>include</key> | |
| 654 | 									<string>#primatives</string> | |
| 655 | 								</dict> | |
| 656 | 								<dict> | |
| 657 | 									<key>include</key> | |
| 658 | 									<string>#comments</string> | |
| 659 | 								</dict> | |
| 660 | 								<dict> | |
| 661 | 									<key>include</key> | |
| 662 | 									<string>#invalid</string> | |
| 663 | 								</dict> | |
| 664 | 							</array> | |
| 665 | 						</dict> | |
| 666 | 						<dict> | |
| 667 | 							<key>include</key> | |
| 668 | 							<string>#comments</string> | |
| 669 | 						</dict> | |
| 670 | 						<dict> | |
| 671 | 							<key>include</key> | |
| 672 | 							<string>#invalid</string> | |
| 673 | 						</dict> | |
| 674 | 					</array> | |
| 675 | 				</dict> | |
| 676 | 				<dict> | |
| 677 | 					<key>begin</key> | |
| 678 | 					<string>\G\{</string> | |
| 679 | 					<key>beginCaptures</key> | |
| 680 | 					<dict> | |
| 681 | 						<key>0</key> | |
| 682 | 						<dict> | |
| 683 | 							<key>name</key> | |
| 684 | 							<string>punctuation.definition.inline-table.begin.toml</string> | |
| 685 | 						</dict> | |
| 686 | 					</dict> | |
| 687 | 					<key>end</key> | |
| 688 | 					<string>\}</string> | |
| 689 | 					<key>endCaptures</key> | |
| 690 | 					<dict> | |
| 691 | 						<key>0</key> | |
| 692 | 						<dict> | |
| 693 | 							<key>name</key> | |
| 694 | 							<string>punctuation.definition.inline-table.end.toml</string> | |
| 695 | 						</dict> | |
| 696 | 					</dict> | |
| 697 | 					<key>name</key> | |
| 698 | 					<string>meta.inline-table.toml</string> | |
| 699 | 					<key>patterns</key> | |
| 700 | 					<array> | |
| 701 | 						<dict> | |
| 702 | 							<key>begin</key> | |
| 703 | 							<string>(?=\S)</string> | |
| 704 | 							<key>end</key> | |
| 705 | 							<string>,|(?=})</string> | |
| 706 | 							<key>endCaptures</key> | |
| 707 | 							<dict> | |
| 708 | 								<key>0</key> | |
| 709 | 								<dict> | |
| 710 | 									<key>name</key> | |
| 711 | 									<string>punctuation.separator.inline-table.toml</string> | |
| 712 | 								</dict> | |
| 713 | 							</dict> | |
| 714 | 							<key>patterns</key> | |
| 715 | 							<array> | |
| 716 | 								<dict> | |
| 717 | 									<key>include</key> | |
| 718 | 									<string>#key_pair</string> | |
| 719 | 								</dict> | |
| 720 | 							</array> | |
| 721 | 						</dict> | |
| 722 | 						<dict> | |
| 723 | 							<key>include</key> | |
| 724 | 							<string>#comments</string> | |
| 725 | 						</dict> | |
| 726 | 					</array> | |
| 727 | 				</dict> | |
| 728 | 			</array> | |
| 729 | 		</dict> | |
| 730 | 	</dict> | |
| 731 | 	<key>scopeName</key> | |
| 732 | 	<string>source.toml</string> | |
| 733 | 	<key>uuid</key> | |
| 734 | 	<string>7DEF2EDB-5BB7-4DD2-9E78-3541A26B7923</string> | |
| 735 | </dict> | |
| 736 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/ts.plist created+9858| ... | ... | @@ -0,0 +1,9858 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | <key>name</key> | |
| 6 | <string>TypeScript</string> | |
| 7 | <key>scopeName</key> | |
| 8 | <string>source.ts</string> | |
| 9 | <key>fileTypes</key> | |
| 10 | <array> | |
| 11 | <string>ts</string> | |
| 12 | </array> | |
| 13 | <key>uuid</key> | |
| 14 | <string>ef98eb90-bf9b-11e4-bb52-0800200c9a66</string> | |
| 15 | <key>patterns</key> | |
| 16 | <array> | |
| 17 | <dict> | |
| 18 | <key>include</key> | |
| 19 | <string>#directives</string> | |
| 20 | </dict> | |
| 21 | <dict> | |
| 22 | <key>include</key> | |
| 23 | <string>#statements</string> | |
| 24 | </dict> | |
| 25 | <dict> | |
| 26 | <key>include</key> | |
| 27 | <string>#shebang</string> | |
| 28 | </dict> | |
| 29 | </array> | |
| 30 | <key>repository</key> | |
| 31 | <dict> | |
| 32 | <key>shebang</key> | |
| 33 | <dict> | |
| 34 | <key>name</key> | |
| 35 | <string>comment.line.shebang.ts</string> | |
| 36 | <key>match</key> | |
| 37 | <string>\A(#!).*(?=$)</string> | |
| 38 | <key>captures</key> | |
| 39 | <dict> | |
| 40 | <key>1</key> | |
| 41 | <dict> | |
| 42 | <key>name</key> | |
| 43 | <string>punctuation.definition.comment.ts</string> | |
| 44 | </dict> | |
| 45 | </dict> | |
| 46 | </dict> | |
| 47 | <key>statements</key> | |
| 48 | <dict> | |
| 49 | <key>patterns</key> | |
| 50 | <array> | |
| 51 | <dict> | |
| 52 | <key>include</key> | |
| 53 | <string>#declaration</string> | |
| 54 | </dict> | |
| 55 | <dict> | |
| 56 | <key>include</key> | |
| 57 | <string>#control-statement</string> | |
| 58 | </dict> | |
| 59 | <dict> | |
| 60 | <key>include</key> | |
| 61 | <string>#after-operator-block-as-object-literal</string> | |
| 62 | </dict> | |
| 63 | <dict> | |
| 64 | <key>include</key> | |
| 65 | <string>#decl-block</string> | |
| 66 | </dict> | |
| 67 | <dict> | |
| 68 | <key>include</key> | |
| 69 | <string>#label</string> | |
| 70 | </dict> | |
| 71 | <dict> | |
| 72 | <key>include</key> | |
| 73 | <string>#expression</string> | |
| 74 | </dict> | |
| 75 | <dict> | |
| 76 | <key>include</key> | |
| 77 | <string>#punctuation-semicolon</string> | |
| 78 | </dict> | |
| 79 | <dict> | |
| 80 | <key>include</key> | |
| 81 | <string>#string</string> | |
| 82 | </dict> | |
| 83 | <dict> | |
| 84 | <key>include</key> | |
| 85 | <string>#comment</string> | |
| 86 | </dict> | |
| 87 | </array> | |
| 88 | </dict> | |
| 89 | <key>declaration</key> | |
| 90 | <dict> | |
| 91 | <key>patterns</key> | |
| 92 | <array> | |
| 93 | <dict> | |
| 94 | <key>include</key> | |
| 95 | <string>#decorator</string> | |
| 96 | </dict> | |
| 97 | <dict> | |
| 98 | <key>include</key> | |
| 99 | <string>#var-expr</string> | |
| 100 | </dict> | |
| 101 | <dict> | |
| 102 | <key>include</key> | |
| 103 | <string>#function-declaration</string> | |
| 104 | </dict> | |
| 105 | <dict> | |
| 106 | <key>include</key> | |
| 107 | <string>#class-declaration</string> | |
| 108 | </dict> | |
| 109 | <dict> | |
| 110 | <key>include</key> | |
| 111 | <string>#interface-declaration</string> | |
| 112 | </dict> | |
| 113 | <dict> | |
| 114 | <key>include</key> | |
| 115 | <string>#enum-declaration</string> | |
| 116 | </dict> | |
| 117 | <dict> | |
| 118 | <key>include</key> | |
| 119 | <string>#namespace-declaration</string> | |
| 120 | </dict> | |
| 121 | <dict> | |
| 122 | <key>include</key> | |
| 123 | <string>#type-alias-declaration</string> | |
| 124 | </dict> | |
| 125 | <dict> | |
| 126 | <key>include</key> | |
| 127 | <string>#import-equals-declaration</string> | |
| 128 | </dict> | |
| 129 | <dict> | |
| 130 | <key>include</key> | |
| 131 | <string>#import-declaration</string> | |
| 132 | </dict> | |
| 133 | <dict> | |
| 134 | <key>include</key> | |
| 135 | <string>#export-declaration</string> | |
| 136 | </dict> | |
| 137 | <dict> | |
| 138 | <key>name</key> | |
| 139 | <string>storage.modifier.ts</string> | |
| 140 | <key>match</key> | |
| 141 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(declare|export)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 142 | </dict> | |
| 143 | </array> | |
| 144 | </dict> | |
| 145 | <key>control-statement</key> | |
| 146 | <dict> | |
| 147 | <key>patterns</key> | |
| 148 | <array> | |
| 149 | <dict> | |
| 150 | <key>include</key> | |
| 151 | <string>#switch-statement</string> | |
| 152 | </dict> | |
| 153 | <dict> | |
| 154 | <key>include</key> | |
| 155 | <string>#for-loop</string> | |
| 156 | </dict> | |
| 157 | <dict> | |
| 158 | <key>name</key> | |
| 159 | <string>keyword.control.trycatch.ts</string> | |
| 160 | <key>match</key> | |
| 161 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 162 | </dict> | |
| 163 | <dict> | |
| 164 | <key>match</key> | |
| 165 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|goto)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 166 | <key>captures</key> | |
| 167 | <dict> | |
| 168 | <key>1</key> | |
| 169 | <dict> | |
| 170 | <key>name</key> | |
| 171 | <string>keyword.control.loop.ts</string> | |
| 172 | </dict> | |
| 173 | <key>2</key> | |
| 174 | <dict> | |
| 175 | <key>name</key> | |
| 176 | <string>entity.name.label.ts</string> | |
| 177 | </dict> | |
| 178 | </dict> | |
| 179 | </dict> | |
| 180 | <dict> | |
| 181 | <key>name</key> | |
| 182 | <string>keyword.control.loop.ts</string> | |
| 183 | <key>match</key> | |
| 184 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 185 | </dict> | |
| 186 | <dict> | |
| 187 | <key>begin</key> | |
| 188 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 189 | <key>beginCaptures</key> | |
| 190 | <dict> | |
| 191 | <key>0</key> | |
| 192 | <dict> | |
| 193 | <key>name</key> | |
| 194 | <string>keyword.control.flow.ts</string> | |
| 195 | </dict> | |
| 196 | </dict> | |
| 197 | <key>end</key> | |
| 198 | <string>(?=[;}]|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 199 | <key>patterns</key> | |
| 200 | <array> | |
| 201 | <dict> | |
| 202 | <key>include</key> | |
| 203 | <string>#expression</string> | |
| 204 | </dict> | |
| 205 | </array> | |
| 206 | </dict> | |
| 207 | <dict> | |
| 208 | <key>name</key> | |
| 209 | <string>keyword.control.switch.ts</string> | |
| 210 | <key>match</key> | |
| 211 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 212 | </dict> | |
| 213 | <dict> | |
| 214 | <key>include</key> | |
| 215 | <string>#if-statement</string> | |
| 216 | </dict> | |
| 217 | <dict> | |
| 218 | <key>name</key> | |
| 219 | <string>keyword.control.conditional.ts</string> | |
| 220 | <key>match</key> | |
| 221 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 222 | </dict> | |
| 223 | <dict> | |
| 224 | <key>name</key> | |
| 225 | <string>keyword.control.with.ts</string> | |
| 226 | <key>match</key> | |
| 227 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 228 | </dict> | |
| 229 | <dict> | |
| 230 | <key>name</key> | |
| 231 | <string>keyword.control.ts</string> | |
| 232 | <key>match</key> | |
| 233 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(package)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 234 | </dict> | |
| 235 | <dict> | |
| 236 | <key>name</key> | |
| 237 | <string>keyword.other.debugger.ts</string> | |
| 238 | <key>match</key> | |
| 239 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 240 | </dict> | |
| 241 | </array> | |
| 242 | </dict> | |
| 243 | <key>label</key> | |
| 244 | <dict> | |
| 245 | <key>patterns</key> | |
| 246 | <array> | |
| 247 | <dict> | |
| 248 | <key>begin</key> | |
| 249 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*\{)</string> | |
| 250 | <key>beginCaptures</key> | |
| 251 | <dict> | |
| 252 | <key>1</key> | |
| 253 | <dict> | |
| 254 | <key>name</key> | |
| 255 | <string>entity.name.label.ts</string> | |
| 256 | </dict> | |
| 257 | <key>2</key> | |
| 258 | <dict> | |
| 259 | <key>name</key> | |
| 260 | <string>punctuation.separator.label.ts</string> | |
| 261 | </dict> | |
| 262 | </dict> | |
| 263 | <key>end</key> | |
| 264 | <string>(?&lt;=\})</string> | |
| 265 | <key>patterns</key> | |
| 266 | <array> | |
| 267 | <dict> | |
| 268 | <key>include</key> | |
| 269 | <string>#decl-block</string> | |
| 270 | </dict> | |
| 271 | </array> | |
| 272 | </dict> | |
| 273 | <dict> | |
| 274 | <key>match</key> | |
| 275 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)</string> | |
| 276 | <key>captures</key> | |
| 277 | <dict> | |
| 278 | <key>1</key> | |
| 279 | <dict> | |
| 280 | <key>name</key> | |
| 281 | <string>entity.name.label.ts</string> | |
| 282 | </dict> | |
| 283 | <key>2</key> | |
| 284 | <dict> | |
| 285 | <key>name</key> | |
| 286 | <string>punctuation.separator.label.ts</string> | |
| 287 | </dict> | |
| 288 | </dict> | |
| 289 | </dict> | |
| 290 | </array> | |
| 291 | </dict> | |
| 292 | <key>expression</key> | |
| 293 | <dict> | |
| 294 | <key>patterns</key> | |
| 295 | <array> | |
| 296 | <dict> | |
| 297 | <key>include</key> | |
| 298 | <string>#expressionWithoutIdentifiers</string> | |
| 299 | </dict> | |
| 300 | <dict> | |
| 301 | <key>include</key> | |
| 302 | <string>#identifiers</string> | |
| 303 | </dict> | |
| 304 | <dict> | |
| 305 | <key>include</key> | |
| 306 | <string>#expressionPunctuations</string> | |
| 307 | </dict> | |
| 308 | </array> | |
| 309 | </dict> | |
| 310 | <key>expressionWithoutIdentifiers</key> | |
| 311 | <dict> | |
| 312 | <key>patterns</key> | |
| 313 | <array> | |
| 314 | <dict> | |
| 315 | <key>include</key> | |
| 316 | <string>#string</string> | |
| 317 | </dict> | |
| 318 | <dict> | |
| 319 | <key>include</key> | |
| 320 | <string>#regex</string> | |
| 321 | </dict> | |
| 322 | <dict> | |
| 323 | <key>include</key> | |
| 324 | <string>#comment</string> | |
| 325 | </dict> | |
| 326 | <dict> | |
| 327 | <key>include</key> | |
| 328 | <string>#function-expression</string> | |
| 329 | </dict> | |
| 330 | <dict> | |
| 331 | <key>include</key> | |
| 332 | <string>#class-expression</string> | |
| 333 | </dict> | |
| 334 | <dict> | |
| 335 | <key>include</key> | |
| 336 | <string>#arrow-function</string> | |
| 337 | </dict> | |
| 338 | <dict> | |
| 339 | <key>include</key> | |
| 340 | <string>#paren-expression-possibly-arrow</string> | |
| 341 | </dict> | |
| 342 | <dict> | |
| 343 | <key>include</key> | |
| 344 | <string>#cast</string> | |
| 345 | </dict> | |
| 346 | <dict> | |
| 347 | <key>include</key> | |
| 348 | <string>#ternary-expression</string> | |
| 349 | </dict> | |
| 350 | <dict> | |
| 351 | <key>include</key> | |
| 352 | <string>#new-expr</string> | |
| 353 | </dict> | |
| 354 | <dict> | |
| 355 | <key>include</key> | |
| 356 | <string>#instanceof-expr</string> | |
| 357 | </dict> | |
| 358 | <dict> | |
| 359 | <key>include</key> | |
| 360 | <string>#object-literal</string> | |
| 361 | </dict> | |
| 362 | <dict> | |
| 363 | <key>include</key> | |
| 364 | <string>#expression-operators</string> | |
| 365 | </dict> | |
| 366 | <dict> | |
| 367 | <key>include</key> | |
| 368 | <string>#function-call</string> | |
| 369 | </dict> | |
| 370 | <dict> | |
| 371 | <key>include</key> | |
| 372 | <string>#literal</string> | |
| 373 | </dict> | |
| 374 | <dict> | |
| 375 | <key>include</key> | |
| 376 | <string>#support-objects</string> | |
| 377 | </dict> | |
| 378 | <dict> | |
| 379 | <key>include</key> | |
| 380 | <string>#paren-expression</string> | |
| 381 | </dict> | |
| 382 | </array> | |
| 383 | </dict> | |
| 384 | <key>expressionPunctuations</key> | |
| 385 | <dict> | |
| 386 | <key>patterns</key> | |
| 387 | <array> | |
| 388 | <dict> | |
| 389 | <key>include</key> | |
| 390 | <string>#punctuation-comma</string> | |
| 391 | </dict> | |
| 392 | <dict> | |
| 393 | <key>include</key> | |
| 394 | <string>#punctuation-accessor</string> | |
| 395 | </dict> | |
| 396 | </array> | |
| 397 | </dict> | |
| 398 | <key>decorator</key> | |
| 399 | <dict> | |
| 400 | <key>name</key> | |
| 401 | <string>meta.decorator.ts</string> | |
| 402 | <key>begin</key> | |
| 403 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))\@</string> | |
| 404 | <key>beginCaptures</key> | |
| 405 | <dict> | |
| 406 | <key>0</key> | |
| 407 | <dict> | |
| 408 | <key>name</key> | |
| 409 | <string>punctuation.decorator.ts</string> | |
| 410 | </dict> | |
| 411 | </dict> | |
| 412 | <key>end</key> | |
| 413 | <string>(?=\s)</string> | |
| 414 | <key>patterns</key> | |
| 415 | <array> | |
| 416 | <dict> | |
| 417 | <key>include</key> | |
| 418 | <string>#expression</string> | |
| 419 | </dict> | |
| 420 | </array> | |
| 421 | </dict> | |
| 422 | <key>var-expr</key> | |
| 423 | <dict> | |
| 424 | <key>patterns</key> | |
| 425 | <array> | |
| 426 | <dict> | |
| 427 | <key>name</key> | |
| 428 | <string>meta.var.expr.ts</string> | |
| 429 | <key>begin</key> | |
| 430 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 431 | <key>end</key> | |
| 432 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))</string> | |
| 433 | <key>patterns</key> | |
| 434 | <array> | |
| 435 | <dict> | |
| 436 | <key>begin</key> | |
| 437 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 438 | <key>beginCaptures</key> | |
| 439 | <dict> | |
| 440 | <key>1</key> | |
| 441 | <dict> | |
| 442 | <key>name</key> | |
| 443 | <string>keyword.control.export.ts</string> | |
| 444 | </dict> | |
| 445 | <key>2</key> | |
| 446 | <dict> | |
| 447 | <key>name</key> | |
| 448 | <string>storage.modifier.ts</string> | |
| 449 | </dict> | |
| 450 | <key>3</key> | |
| 451 | <dict> | |
| 452 | <key>name</key> | |
| 453 | <string>storage.type.ts</string> | |
| 454 | </dict> | |
| 455 | </dict> | |
| 456 | <key>end</key> | |
| 457 | <string>(?=\S)</string> | |
| 458 | </dict> | |
| 459 | <dict> | |
| 460 | <key>include</key> | |
| 461 | <string>#destructuring-variable</string> | |
| 462 | </dict> | |
| 463 | <dict> | |
| 464 | <key>include</key> | |
| 465 | <string>#var-single-variable</string> | |
| 466 | </dict> | |
| 467 | <dict> | |
| 468 | <key>include</key> | |
| 469 | <string>#variable-initializer</string> | |
| 470 | </dict> | |
| 471 | <dict> | |
| 472 | <key>include</key> | |
| 473 | <string>#comment</string> | |
| 474 | </dict> | |
| 475 | <dict> | |
| 476 | <key>begin</key> | |
| 477 | <string>(,)\s*(?=$|\/\/)</string> | |
| 478 | <key>beginCaptures</key> | |
| 479 | <dict> | |
| 480 | <key>1</key> | |
| 481 | <dict> | |
| 482 | <key>name</key> | |
| 483 | <string>punctuation.separator.comma.ts</string> | |
| 484 | </dict> | |
| 485 | </dict> | |
| 486 | <key>end</key> | |
| 487 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 488 | <key>patterns</key> | |
| 489 | <array> | |
| 490 | <dict> | |
| 491 | <key>include</key> | |
| 492 | <string>#single-line-comment-consuming-line-ending</string> | |
| 493 | </dict> | |
| 494 | <dict> | |
| 495 | <key>include</key> | |
| 496 | <string>#comment</string> | |
| 497 | </dict> | |
| 498 | <dict> | |
| 499 | <key>include</key> | |
| 500 | <string>#destructuring-variable</string> | |
| 501 | </dict> | |
| 502 | <dict> | |
| 503 | <key>include</key> | |
| 504 | <string>#var-single-variable</string> | |
| 505 | </dict> | |
| 506 | <dict> | |
| 507 | <key>include</key> | |
| 508 | <string>#punctuation-comma</string> | |
| 509 | </dict> | |
| 510 | </array> | |
| 511 | </dict> | |
| 512 | <dict> | |
| 513 | <key>include</key> | |
| 514 | <string>#punctuation-comma</string> | |
| 515 | </dict> | |
| 516 | </array> | |
| 517 | </dict> | |
| 518 | <dict> | |
| 519 | <key>name</key> | |
| 520 | <string>meta.var.expr.ts</string> | |
| 521 | <key>begin</key> | |
| 522 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 523 | <key>beginCaptures</key> | |
| 524 | <dict> | |
| 525 | <key>1</key> | |
| 526 | <dict> | |
| 527 | <key>name</key> | |
| 528 | <string>keyword.control.export.ts</string> | |
| 529 | </dict> | |
| 530 | <key>2</key> | |
| 531 | <dict> | |
| 532 | <key>name</key> | |
| 533 | <string>storage.modifier.ts</string> | |
| 534 | </dict> | |
| 535 | <key>3</key> | |
| 536 | <dict> | |
| 537 | <key>name</key> | |
| 538 | <string>storage.type.ts</string> | |
| 539 | </dict> | |
| 540 | </dict> | |
| 541 | <key>end</key> | |
| 542 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^const|[^\._$[:alnum:]]const)(?=\s*$)))</string> | |
| 543 | <key>patterns</key> | |
| 544 | <array> | |
| 545 | <dict> | |
| 546 | <key>begin</key> | |
| 547 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 548 | <key>beginCaptures</key> | |
| 549 | <dict> | |
| 550 | <key>1</key> | |
| 551 | <dict> | |
| 552 | <key>name</key> | |
| 553 | <string>keyword.control.export.ts</string> | |
| 554 | </dict> | |
| 555 | <key>2</key> | |
| 556 | <dict> | |
| 557 | <key>name</key> | |
| 558 | <string>storage.modifier.ts</string> | |
| 559 | </dict> | |
| 560 | <key>3</key> | |
| 561 | <dict> | |
| 562 | <key>name</key> | |
| 563 | <string>storage.type.ts</string> | |
| 564 | </dict> | |
| 565 | </dict> | |
| 566 | <key>end</key> | |
| 567 | <string>(?=\S)</string> | |
| 568 | </dict> | |
| 569 | <dict> | |
| 570 | <key>include</key> | |
| 571 | <string>#destructuring-const</string> | |
| 572 | </dict> | |
| 573 | <dict> | |
| 574 | <key>include</key> | |
| 575 | <string>#var-single-const</string> | |
| 576 | </dict> | |
| 577 | <dict> | |
| 578 | <key>include</key> | |
| 579 | <string>#variable-initializer</string> | |
| 580 | </dict> | |
| 581 | <dict> | |
| 582 | <key>include</key> | |
| 583 | <string>#comment</string> | |
| 584 | </dict> | |
| 585 | <dict> | |
| 586 | <key>begin</key> | |
| 587 | <string>(,)\s*(?=$|\/\/)</string> | |
| 588 | <key>beginCaptures</key> | |
| 589 | <dict> | |
| 590 | <key>1</key> | |
| 591 | <dict> | |
| 592 | <key>name</key> | |
| 593 | <string>punctuation.separator.comma.ts</string> | |
| 594 | </dict> | |
| 595 | </dict> | |
| 596 | <key>end</key> | |
| 597 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 598 | <key>patterns</key> | |
| 599 | <array> | |
| 600 | <dict> | |
| 601 | <key>include</key> | |
| 602 | <string>#single-line-comment-consuming-line-ending</string> | |
| 603 | </dict> | |
| 604 | <dict> | |
| 605 | <key>include</key> | |
| 606 | <string>#comment</string> | |
| 607 | </dict> | |
| 608 | <dict> | |
| 609 | <key>include</key> | |
| 610 | <string>#destructuring-const</string> | |
| 611 | </dict> | |
| 612 | <dict> | |
| 613 | <key>include</key> | |
| 614 | <string>#var-single-const</string> | |
| 615 | </dict> | |
| 616 | <dict> | |
| 617 | <key>include</key> | |
| 618 | <string>#punctuation-comma</string> | |
| 619 | </dict> | |
| 620 | </array> | |
| 621 | </dict> | |
| 622 | <dict> | |
| 623 | <key>include</key> | |
| 624 | <string>#punctuation-comma</string> | |
| 625 | </dict> | |
| 626 | </array> | |
| 627 | </dict> | |
| 628 | <dict> | |
| 629 | <key>name</key> | |
| 630 | <string>meta.var.expr.ts</string> | |
| 631 | <key>begin</key> | |
| 632 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 633 | <key>beginCaptures</key> | |
| 634 | <dict> | |
| 635 | <key>1</key> | |
| 636 | <dict> | |
| 637 | <key>name</key> | |
| 638 | <string>keyword.control.export.ts</string> | |
| 639 | </dict> | |
| 640 | <key>2</key> | |
| 641 | <dict> | |
| 642 | <key>name</key> | |
| 643 | <string>storage.modifier.ts</string> | |
| 644 | </dict> | |
| 645 | <key>3</key> | |
| 646 | <dict> | |
| 647 | <key>name</key> | |
| 648 | <string>storage.type.ts</string> | |
| 649 | </dict> | |
| 650 | </dict> | |
| 651 | <key>end</key> | |
| 652 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^using|[^\._$[:alnum:]]using|^await\s+using|[^\._$[:alnum:]]await\s+using)(?=\s*$)))</string> | |
| 653 | <key>patterns</key> | |
| 654 | <array> | |
| 655 | <dict> | |
| 656 | <key>begin</key> | |
| 657 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 658 | <key>beginCaptures</key> | |
| 659 | <dict> | |
| 660 | <key>1</key> | |
| 661 | <dict> | |
| 662 | <key>name</key> | |
| 663 | <string>keyword.control.export.ts</string> | |
| 664 | </dict> | |
| 665 | <key>2</key> | |
| 666 | <dict> | |
| 667 | <key>name</key> | |
| 668 | <string>storage.modifier.ts</string> | |
| 669 | </dict> | |
| 670 | <key>3</key> | |
| 671 | <dict> | |
| 672 | <key>name</key> | |
| 673 | <string>storage.type.ts</string> | |
| 674 | </dict> | |
| 675 | </dict> | |
| 676 | <key>end</key> | |
| 677 | <string>(?=\S)</string> | |
| 678 | </dict> | |
| 679 | <dict> | |
| 680 | <key>include</key> | |
| 681 | <string>#var-single-const</string> | |
| 682 | </dict> | |
| 683 | <dict> | |
| 684 | <key>include</key> | |
| 685 | <string>#variable-initializer</string> | |
| 686 | </dict> | |
| 687 | <dict> | |
| 688 | <key>include</key> | |
| 689 | <string>#comment</string> | |
| 690 | </dict> | |
| 691 | <dict> | |
| 692 | <key>begin</key> | |
| 693 | <string>(,)\s*((?!\S)|(?=\/\/))</string> | |
| 694 | <key>beginCaptures</key> | |
| 695 | <dict> | |
| 696 | <key>1</key> | |
| 697 | <dict> | |
| 698 | <key>name</key> | |
| 699 | <string>punctuation.separator.comma.ts</string> | |
| 700 | </dict> | |
| 701 | </dict> | |
| 702 | <key>end</key> | |
| 703 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 704 | <key>patterns</key> | |
| 705 | <array> | |
| 706 | <dict> | |
| 707 | <key>include</key> | |
| 708 | <string>#single-line-comment-consuming-line-ending</string> | |
| 709 | </dict> | |
| 710 | <dict> | |
| 711 | <key>include</key> | |
| 712 | <string>#comment</string> | |
| 713 | </dict> | |
| 714 | <dict> | |
| 715 | <key>include</key> | |
| 716 | <string>#var-single-const</string> | |
| 717 | </dict> | |
| 718 | <dict> | |
| 719 | <key>include</key> | |
| 720 | <string>#punctuation-comma</string> | |
| 721 | </dict> | |
| 722 | </array> | |
| 723 | </dict> | |
| 724 | <dict> | |
| 725 | <key>include</key> | |
| 726 | <string>#punctuation-comma</string> | |
| 727 | </dict> | |
| 728 | </array> | |
| 729 | </dict> | |
| 730 | </array> | |
| 731 | </dict> | |
| 732 | <key>var-single-variable</key> | |
| 733 | <dict> | |
| 734 | <key>patterns</key> | |
| 735 | <array> | |
| 736 | <dict> | |
| 737 | <key>name</key> | |
| 738 | <string>meta.var-single-variable.expr.ts</string> | |
| 739 | <key>begin</key> | |
| 740 | <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(\!)?(?=\s* | |
| 741 | # function assignment | | |
| 742 | (=\s*( | |
| 743 | ((async\s+)?( | |
| 744 | (function\s*[(&lt;*]) | | |
| 745 | (function\s+) | | |
| 746 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 747 | )) | | |
| 748 | ((async\s*)?( | |
| 749 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 750 | # sure shot arrow functions even if =&gt; is on new line | |
| 751 | ( | |
| 752 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 753 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 754 | ( | |
| 755 | ([)]\s*:) | # (): | |
| 756 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 757 | ) | |
| 758 | ) | | |
| 759 | ||
| 760 | # arrow function possible to detect only with =&gt; on same line | |
| 761 | ( | |
| 762 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 763 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 764 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 765 | \s*=&gt; # arrow operator | |
| 766 | ) | |
| 767 | )) | |
| 768 | )) | | |
| 769 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 770 | (:\s*( | |
| 771 | (&lt;) | | |
| 772 | ([(]\s*( | |
| 773 | ([)]) | | |
| 774 | (\.\.\.) | | |
| 775 | ([_$[:alnum:]]+\s*( | |
| 776 | ([:,?=])| | |
| 777 | ([)]\s*=&gt;) | |
| 778 | )) | |
| 779 | )) | |
| 780 | )) | | |
| 781 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 782 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 783 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 784 | ((async\s+)?( | |
| 785 | (function\s*[(&lt;*]) | | |
| 786 | (function\s+) | | |
| 787 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 788 | )) | | |
| 789 | ((async\s*)?( | |
| 790 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 791 | # sure shot arrow functions even if =&gt; is on new line | |
| 792 | ( | |
| 793 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 794 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 795 | ( | |
| 796 | ([)]\s*:) | # (): | |
| 797 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 798 | ) | |
| 799 | ) | | |
| 800 | ||
| 801 | # arrow function possible to detect only with =&gt; on same line | |
| 802 | ( | |
| 803 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 804 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 805 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 806 | \s*=&gt; # arrow operator | |
| 807 | ) | |
| 808 | )) | |
| 809 | )))</string> | |
| 810 | <key>beginCaptures</key> | |
| 811 | <dict> | |
| 812 | <key>1</key> | |
| 813 | <dict> | |
| 814 | <key>name</key> | |
| 815 | <string>meta.definition.variable.ts entity.name.function.ts</string> | |
| 816 | </dict> | |
| 817 | <key>2</key> | |
| 818 | <dict> | |
| 819 | <key>name</key> | |
| 820 | <string>keyword.operator.definiteassignment.ts</string> | |
| 821 | </dict> | |
| 822 | </dict> | |
| 823 | <key>end</key> | |
| 824 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 825 | <key>patterns</key> | |
| 826 | <array> | |
| 827 | <dict> | |
| 828 | <key>include</key> | |
| 829 | <string>#var-single-variable-type-annotation</string> | |
| 830 | </dict> | |
| 831 | </array> | |
| 832 | </dict> | |
| 833 | <dict> | |
| 834 | <key>name</key> | |
| 835 | <string>meta.var-single-variable.expr.ts</string> | |
| 836 | <key>begin</key> | |
| 837 | <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\!)?</string> | |
| 838 | <key>beginCaptures</key> | |
| 839 | <dict> | |
| 840 | <key>1</key> | |
| 841 | <dict> | |
| 842 | <key>name</key> | |
| 843 | <string>meta.definition.variable.ts variable.other.constant.ts</string> | |
| 844 | </dict> | |
| 845 | <key>2</key> | |
| 846 | <dict> | |
| 847 | <key>name</key> | |
| 848 | <string>keyword.operator.definiteassignment.ts</string> | |
| 849 | </dict> | |
| 850 | </dict> | |
| 851 | <key>end</key> | |
| 852 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 853 | <key>patterns</key> | |
| 854 | <array> | |
| 855 | <dict> | |
| 856 | <key>include</key> | |
| 857 | <string>#var-single-variable-type-annotation</string> | |
| 858 | </dict> | |
| 859 | </array> | |
| 860 | </dict> | |
| 861 | <dict> | |
| 862 | <key>name</key> | |
| 863 | <string>meta.var-single-variable.expr.ts</string> | |
| 864 | <key>begin</key> | |
| 865 | <string>([_$[:alpha:]][_$[:alnum:]]*)(\!)?</string> | |
| 866 | <key>beginCaptures</key> | |
| 867 | <dict> | |
| 868 | <key>1</key> | |
| 869 | <dict> | |
| 870 | <key>name</key> | |
| 871 | <string>meta.definition.variable.ts variable.other.readwrite.ts</string> | |
| 872 | </dict> | |
| 873 | <key>2</key> | |
| 874 | <dict> | |
| 875 | <key>name</key> | |
| 876 | <string>keyword.operator.definiteassignment.ts</string> | |
| 877 | </dict> | |
| 878 | </dict> | |
| 879 | <key>end</key> | |
| 880 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 881 | <key>patterns</key> | |
| 882 | <array> | |
| 883 | <dict> | |
| 884 | <key>include</key> | |
| 885 | <string>#var-single-variable-type-annotation</string> | |
| 886 | </dict> | |
| 887 | </array> | |
| 888 | </dict> | |
| 889 | </array> | |
| 890 | </dict> | |
| 891 | <key>var-single-const</key> | |
| 892 | <dict> | |
| 893 | <key>patterns</key> | |
| 894 | <array> | |
| 895 | <dict> | |
| 896 | <key>name</key> | |
| 897 | <string>meta.var-single-variable.expr.ts</string> | |
| 898 | <key>begin</key> | |
| 899 | <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s* | |
| 900 | # function assignment | | |
| 901 | (=\s*( | |
| 902 | ((async\s+)?( | |
| 903 | (function\s*[(&lt;*]) | | |
| 904 | (function\s+) | | |
| 905 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 906 | )) | | |
| 907 | ((async\s*)?( | |
| 908 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 909 | # sure shot arrow functions even if =&gt; is on new line | |
| 910 | ( | |
| 911 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 912 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 913 | ( | |
| 914 | ([)]\s*:) | # (): | |
| 915 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 916 | ) | |
| 917 | ) | | |
| 918 | ||
| 919 | # arrow function possible to detect only with =&gt; on same line | |
| 920 | ( | |
| 921 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 922 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 923 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 924 | \s*=&gt; # arrow operator | |
| 925 | ) | |
| 926 | )) | |
| 927 | )) | | |
| 928 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 929 | (:\s*( | |
| 930 | (&lt;) | | |
| 931 | ([(]\s*( | |
| 932 | ([)]) | | |
| 933 | (\.\.\.) | | |
| 934 | ([_$[:alnum:]]+\s*( | |
| 935 | ([:,?=])| | |
| 936 | ([)]\s*=&gt;) | |
| 937 | )) | |
| 938 | )) | |
| 939 | )) | | |
| 940 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 941 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 942 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 943 | ((async\s+)?( | |
| 944 | (function\s*[(&lt;*]) | | |
| 945 | (function\s+) | | |
| 946 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 947 | )) | | |
| 948 | ((async\s*)?( | |
| 949 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 950 | # sure shot arrow functions even if =&gt; is on new line | |
| 951 | ( | |
| 952 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 953 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 954 | ( | |
| 955 | ([)]\s*:) | # (): | |
| 956 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 957 | ) | |
| 958 | ) | | |
| 959 | ||
| 960 | # arrow function possible to detect only with =&gt; on same line | |
| 961 | ( | |
| 962 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 963 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 964 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 965 | \s*=&gt; # arrow operator | |
| 966 | ) | |
| 967 | )) | |
| 968 | )))</string> | |
| 969 | <key>beginCaptures</key> | |
| 970 | <dict> | |
| 971 | <key>1</key> | |
| 972 | <dict> | |
| 973 | <key>name</key> | |
| 974 | <string>meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts</string> | |
| 975 | </dict> | |
| 976 | </dict> | |
| 977 | <key>end</key> | |
| 978 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 979 | <key>patterns</key> | |
| 980 | <array> | |
| 981 | <dict> | |
| 982 | <key>include</key> | |
| 983 | <string>#var-single-variable-type-annotation</string> | |
| 984 | </dict> | |
| 985 | </array> | |
| 986 | </dict> | |
| 987 | <dict> | |
| 988 | <key>name</key> | |
| 989 | <string>meta.var-single-variable.expr.ts</string> | |
| 990 | <key>begin</key> | |
| 991 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 992 | <key>beginCaptures</key> | |
| 993 | <dict> | |
| 994 | <key>1</key> | |
| 995 | <dict> | |
| 996 | <key>name</key> | |
| 997 | <string>meta.definition.variable.ts variable.other.constant.ts</string> | |
| 998 | </dict> | |
| 999 | </dict> | |
| 1000 | <key>end</key> | |
| 1001 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 1002 | <key>patterns</key> | |
| 1003 | <array> | |
| 1004 | <dict> | |
| 1005 | <key>include</key> | |
| 1006 | <string>#var-single-variable-type-annotation</string> | |
| 1007 | </dict> | |
| 1008 | </array> | |
| 1009 | </dict> | |
| 1010 | </array> | |
| 1011 | </dict> | |
| 1012 | <key>var-single-variable-type-annotation</key> | |
| 1013 | <dict> | |
| 1014 | <key>patterns</key> | |
| 1015 | <array> | |
| 1016 | <dict> | |
| 1017 | <key>include</key> | |
| 1018 | <string>#type-annotation</string> | |
| 1019 | </dict> | |
| 1020 | <dict> | |
| 1021 | <key>include</key> | |
| 1022 | <string>#string</string> | |
| 1023 | </dict> | |
| 1024 | <dict> | |
| 1025 | <key>include</key> | |
| 1026 | <string>#comment</string> | |
| 1027 | </dict> | |
| 1028 | </array> | |
| 1029 | </dict> | |
| 1030 | <key>destructuring-variable</key> | |
| 1031 | <dict> | |
| 1032 | <key>patterns</key> | |
| 1033 | <array> | |
| 1034 | <dict> | |
| 1035 | <key>name</key> | |
| 1036 | <string>meta.object-binding-pattern-variable.ts</string> | |
| 1037 | <key>begin</key> | |
| 1038 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string> | |
| 1039 | <key>end</key> | |
| 1040 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1041 | <key>patterns</key> | |
| 1042 | <array> | |
| 1043 | <dict> | |
| 1044 | <key>include</key> | |
| 1045 | <string>#object-binding-pattern</string> | |
| 1046 | </dict> | |
| 1047 | <dict> | |
| 1048 | <key>include</key> | |
| 1049 | <string>#type-annotation</string> | |
| 1050 | </dict> | |
| 1051 | <dict> | |
| 1052 | <key>include</key> | |
| 1053 | <string>#comment</string> | |
| 1054 | </dict> | |
| 1055 | </array> | |
| 1056 | </dict> | |
| 1057 | <dict> | |
| 1058 | <key>name</key> | |
| 1059 | <string>meta.array-binding-pattern-variable.ts</string> | |
| 1060 | <key>begin</key> | |
| 1061 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string> | |
| 1062 | <key>end</key> | |
| 1063 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1064 | <key>patterns</key> | |
| 1065 | <array> | |
| 1066 | <dict> | |
| 1067 | <key>include</key> | |
| 1068 | <string>#array-binding-pattern</string> | |
| 1069 | </dict> | |
| 1070 | <dict> | |
| 1071 | <key>include</key> | |
| 1072 | <string>#type-annotation</string> | |
| 1073 | </dict> | |
| 1074 | <dict> | |
| 1075 | <key>include</key> | |
| 1076 | <string>#comment</string> | |
| 1077 | </dict> | |
| 1078 | </array> | |
| 1079 | </dict> | |
| 1080 | </array> | |
| 1081 | </dict> | |
| 1082 | <key>destructuring-const</key> | |
| 1083 | <dict> | |
| 1084 | <key>patterns</key> | |
| 1085 | <array> | |
| 1086 | <dict> | |
| 1087 | <key>name</key> | |
| 1088 | <string>meta.object-binding-pattern-variable.ts</string> | |
| 1089 | <key>begin</key> | |
| 1090 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string> | |
| 1091 | <key>end</key> | |
| 1092 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1093 | <key>patterns</key> | |
| 1094 | <array> | |
| 1095 | <dict> | |
| 1096 | <key>include</key> | |
| 1097 | <string>#object-binding-pattern-const</string> | |
| 1098 | </dict> | |
| 1099 | <dict> | |
| 1100 | <key>include</key> | |
| 1101 | <string>#type-annotation</string> | |
| 1102 | </dict> | |
| 1103 | <dict> | |
| 1104 | <key>include</key> | |
| 1105 | <string>#comment</string> | |
| 1106 | </dict> | |
| 1107 | </array> | |
| 1108 | </dict> | |
| 1109 | <dict> | |
| 1110 | <key>name</key> | |
| 1111 | <string>meta.array-binding-pattern-variable.ts</string> | |
| 1112 | <key>begin</key> | |
| 1113 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string> | |
| 1114 | <key>end</key> | |
| 1115 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1116 | <key>patterns</key> | |
| 1117 | <array> | |
| 1118 | <dict> | |
| 1119 | <key>include</key> | |
| 1120 | <string>#array-binding-pattern-const</string> | |
| 1121 | </dict> | |
| 1122 | <dict> | |
| 1123 | <key>include</key> | |
| 1124 | <string>#type-annotation</string> | |
| 1125 | </dict> | |
| 1126 | <dict> | |
| 1127 | <key>include</key> | |
| 1128 | <string>#comment</string> | |
| 1129 | </dict> | |
| 1130 | </array> | |
| 1131 | </dict> | |
| 1132 | </array> | |
| 1133 | </dict> | |
| 1134 | <key>object-binding-element</key> | |
| 1135 | <dict> | |
| 1136 | <key>patterns</key> | |
| 1137 | <array> | |
| 1138 | <dict> | |
| 1139 | <key>include</key> | |
| 1140 | <string>#comment</string> | |
| 1141 | </dict> | |
| 1142 | <dict> | |
| 1143 | <key>begin</key> | |
| 1144 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1145 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1146 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1147 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1148 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1149 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1150 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1151 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1152 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1153 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1154 | <key>end</key> | |
| 1155 | <string>(?=,|\})</string> | |
| 1156 | <key>patterns</key> | |
| 1157 | <array> | |
| 1158 | <dict> | |
| 1159 | <key>include</key> | |
| 1160 | <string>#object-binding-element-propertyName</string> | |
| 1161 | </dict> | |
| 1162 | <dict> | |
| 1163 | <key>include</key> | |
| 1164 | <string>#binding-element</string> | |
| 1165 | </dict> | |
| 1166 | </array> | |
| 1167 | </dict> | |
| 1168 | <dict> | |
| 1169 | <key>include</key> | |
| 1170 | <string>#object-binding-pattern</string> | |
| 1171 | </dict> | |
| 1172 | <dict> | |
| 1173 | <key>include</key> | |
| 1174 | <string>#destructuring-variable-rest</string> | |
| 1175 | </dict> | |
| 1176 | <dict> | |
| 1177 | <key>include</key> | |
| 1178 | <string>#variable-initializer</string> | |
| 1179 | </dict> | |
| 1180 | <dict> | |
| 1181 | <key>include</key> | |
| 1182 | <string>#punctuation-comma</string> | |
| 1183 | </dict> | |
| 1184 | </array> | |
| 1185 | </dict> | |
| 1186 | <key>object-binding-element-const</key> | |
| 1187 | <dict> | |
| 1188 | <key>patterns</key> | |
| 1189 | <array> | |
| 1190 | <dict> | |
| 1191 | <key>include</key> | |
| 1192 | <string>#comment</string> | |
| 1193 | </dict> | |
| 1194 | <dict> | |
| 1195 | <key>begin</key> | |
| 1196 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1197 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1198 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1199 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1200 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1201 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1202 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1203 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1204 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1205 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1206 | <key>end</key> | |
| 1207 | <string>(?=,|\})</string> | |
| 1208 | <key>patterns</key> | |
| 1209 | <array> | |
| 1210 | <dict> | |
| 1211 | <key>include</key> | |
| 1212 | <string>#object-binding-element-propertyName</string> | |
| 1213 | </dict> | |
| 1214 | <dict> | |
| 1215 | <key>include</key> | |
| 1216 | <string>#binding-element-const</string> | |
| 1217 | </dict> | |
| 1218 | </array> | |
| 1219 | </dict> | |
| 1220 | <dict> | |
| 1221 | <key>include</key> | |
| 1222 | <string>#object-binding-pattern-const</string> | |
| 1223 | </dict> | |
| 1224 | <dict> | |
| 1225 | <key>include</key> | |
| 1226 | <string>#destructuring-variable-rest-const</string> | |
| 1227 | </dict> | |
| 1228 | <dict> | |
| 1229 | <key>include</key> | |
| 1230 | <string>#variable-initializer</string> | |
| 1231 | </dict> | |
| 1232 | <dict> | |
| 1233 | <key>include</key> | |
| 1234 | <string>#punctuation-comma</string> | |
| 1235 | </dict> | |
| 1236 | </array> | |
| 1237 | </dict> | |
| 1238 | <key>object-binding-element-propertyName</key> | |
| 1239 | <dict> | |
| 1240 | <key>begin</key> | |
| 1241 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1242 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1243 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1244 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1245 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1246 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1247 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1248 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1249 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1250 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1251 | <key>end</key> | |
| 1252 | <string>(:)</string> | |
| 1253 | <key>endCaptures</key> | |
| 1254 | <dict> | |
| 1255 | <key>0</key> | |
| 1256 | <dict> | |
| 1257 | <key>name</key> | |
| 1258 | <string>punctuation.destructuring.ts</string> | |
| 1259 | </dict> | |
| 1260 | </dict> | |
| 1261 | <key>patterns</key> | |
| 1262 | <array> | |
| 1263 | <dict> | |
| 1264 | <key>include</key> | |
| 1265 | <string>#string</string> | |
| 1266 | </dict> | |
| 1267 | <dict> | |
| 1268 | <key>include</key> | |
| 1269 | <string>#array-literal</string> | |
| 1270 | </dict> | |
| 1271 | <dict> | |
| 1272 | <key>include</key> | |
| 1273 | <string>#numeric-literal</string> | |
| 1274 | </dict> | |
| 1275 | <dict> | |
| 1276 | <key>name</key> | |
| 1277 | <string>variable.object.property.ts</string> | |
| 1278 | <key>match</key> | |
| 1279 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1280 | </dict> | |
| 1281 | </array> | |
| 1282 | </dict> | |
| 1283 | <key>binding-element</key> | |
| 1284 | <dict> | |
| 1285 | <key>patterns</key> | |
| 1286 | <array> | |
| 1287 | <dict> | |
| 1288 | <key>include</key> | |
| 1289 | <string>#comment</string> | |
| 1290 | </dict> | |
| 1291 | <dict> | |
| 1292 | <key>include</key> | |
| 1293 | <string>#string</string> | |
| 1294 | </dict> | |
| 1295 | <dict> | |
| 1296 | <key>include</key> | |
| 1297 | <string>#numeric-literal</string> | |
| 1298 | </dict> | |
| 1299 | <dict> | |
| 1300 | <key>include</key> | |
| 1301 | <string>#regex</string> | |
| 1302 | </dict> | |
| 1303 | <dict> | |
| 1304 | <key>include</key> | |
| 1305 | <string>#object-binding-pattern</string> | |
| 1306 | </dict> | |
| 1307 | <dict> | |
| 1308 | <key>include</key> | |
| 1309 | <string>#array-binding-pattern</string> | |
| 1310 | </dict> | |
| 1311 | <dict> | |
| 1312 | <key>include</key> | |
| 1313 | <string>#destructuring-variable-rest</string> | |
| 1314 | </dict> | |
| 1315 | <dict> | |
| 1316 | <key>include</key> | |
| 1317 | <string>#variable-initializer</string> | |
| 1318 | </dict> | |
| 1319 | </array> | |
| 1320 | </dict> | |
| 1321 | <key>binding-element-const</key> | |
| 1322 | <dict> | |
| 1323 | <key>patterns</key> | |
| 1324 | <array> | |
| 1325 | <dict> | |
| 1326 | <key>include</key> | |
| 1327 | <string>#comment</string> | |
| 1328 | </dict> | |
| 1329 | <dict> | |
| 1330 | <key>include</key> | |
| 1331 | <string>#string</string> | |
| 1332 | </dict> | |
| 1333 | <dict> | |
| 1334 | <key>include</key> | |
| 1335 | <string>#numeric-literal</string> | |
| 1336 | </dict> | |
| 1337 | <dict> | |
| 1338 | <key>include</key> | |
| 1339 | <string>#regex</string> | |
| 1340 | </dict> | |
| 1341 | <dict> | |
| 1342 | <key>include</key> | |
| 1343 | <string>#object-binding-pattern-const</string> | |
| 1344 | </dict> | |
| 1345 | <dict> | |
| 1346 | <key>include</key> | |
| 1347 | <string>#array-binding-pattern-const</string> | |
| 1348 | </dict> | |
| 1349 | <dict> | |
| 1350 | <key>include</key> | |
| 1351 | <string>#destructuring-variable-rest-const</string> | |
| 1352 | </dict> | |
| 1353 | <dict> | |
| 1354 | <key>include</key> | |
| 1355 | <string>#variable-initializer</string> | |
| 1356 | </dict> | |
| 1357 | </array> | |
| 1358 | </dict> | |
| 1359 | <key>destructuring-variable-rest</key> | |
| 1360 | <dict> | |
| 1361 | <key>match</key> | |
| 1362 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1363 | <key>captures</key> | |
| 1364 | <dict> | |
| 1365 | <key>1</key> | |
| 1366 | <dict> | |
| 1367 | <key>name</key> | |
| 1368 | <string>keyword.operator.rest.ts</string> | |
| 1369 | </dict> | |
| 1370 | <key>2</key> | |
| 1371 | <dict> | |
| 1372 | <key>name</key> | |
| 1373 | <string>meta.definition.variable.ts variable.other.readwrite.ts</string> | |
| 1374 | </dict> | |
| 1375 | </dict> | |
| 1376 | </dict> | |
| 1377 | <key>destructuring-variable-rest-const</key> | |
| 1378 | <dict> | |
| 1379 | <key>match</key> | |
| 1380 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1381 | <key>captures</key> | |
| 1382 | <dict> | |
| 1383 | <key>1</key> | |
| 1384 | <dict> | |
| 1385 | <key>name</key> | |
| 1386 | <string>keyword.operator.rest.ts</string> | |
| 1387 | </dict> | |
| 1388 | <key>2</key> | |
| 1389 | <dict> | |
| 1390 | <key>name</key> | |
| 1391 | <string>meta.definition.variable.ts variable.other.constant.ts</string> | |
| 1392 | </dict> | |
| 1393 | </dict> | |
| 1394 | </dict> | |
| 1395 | <key>object-binding-pattern</key> | |
| 1396 | <dict> | |
| 1397 | <key>begin</key> | |
| 1398 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1399 | <key>beginCaptures</key> | |
| 1400 | <dict> | |
| 1401 | <key>1</key> | |
| 1402 | <dict> | |
| 1403 | <key>name</key> | |
| 1404 | <string>keyword.operator.rest.ts</string> | |
| 1405 | </dict> | |
| 1406 | <key>2</key> | |
| 1407 | <dict> | |
| 1408 | <key>name</key> | |
| 1409 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1410 | </dict> | |
| 1411 | </dict> | |
| 1412 | <key>end</key> | |
| 1413 | <string>\}</string> | |
| 1414 | <key>endCaptures</key> | |
| 1415 | <dict> | |
| 1416 | <key>0</key> | |
| 1417 | <dict> | |
| 1418 | <key>name</key> | |
| 1419 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1420 | </dict> | |
| 1421 | </dict> | |
| 1422 | <key>patterns</key> | |
| 1423 | <array> | |
| 1424 | <dict> | |
| 1425 | <key>include</key> | |
| 1426 | <string>#object-binding-element</string> | |
| 1427 | </dict> | |
| 1428 | </array> | |
| 1429 | </dict> | |
| 1430 | <key>object-binding-pattern-const</key> | |
| 1431 | <dict> | |
| 1432 | <key>begin</key> | |
| 1433 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1434 | <key>beginCaptures</key> | |
| 1435 | <dict> | |
| 1436 | <key>1</key> | |
| 1437 | <dict> | |
| 1438 | <key>name</key> | |
| 1439 | <string>keyword.operator.rest.ts</string> | |
| 1440 | </dict> | |
| 1441 | <key>2</key> | |
| 1442 | <dict> | |
| 1443 | <key>name</key> | |
| 1444 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1445 | </dict> | |
| 1446 | </dict> | |
| 1447 | <key>end</key> | |
| 1448 | <string>\}</string> | |
| 1449 | <key>endCaptures</key> | |
| 1450 | <dict> | |
| 1451 | <key>0</key> | |
| 1452 | <dict> | |
| 1453 | <key>name</key> | |
| 1454 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1455 | </dict> | |
| 1456 | </dict> | |
| 1457 | <key>patterns</key> | |
| 1458 | <array> | |
| 1459 | <dict> | |
| 1460 | <key>include</key> | |
| 1461 | <string>#object-binding-element-const</string> | |
| 1462 | </dict> | |
| 1463 | </array> | |
| 1464 | </dict> | |
| 1465 | <key>array-binding-pattern</key> | |
| 1466 | <dict> | |
| 1467 | <key>begin</key> | |
| 1468 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1469 | <key>beginCaptures</key> | |
| 1470 | <dict> | |
| 1471 | <key>1</key> | |
| 1472 | <dict> | |
| 1473 | <key>name</key> | |
| 1474 | <string>keyword.operator.rest.ts</string> | |
| 1475 | </dict> | |
| 1476 | <key>2</key> | |
| 1477 | <dict> | |
| 1478 | <key>name</key> | |
| 1479 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1480 | </dict> | |
| 1481 | </dict> | |
| 1482 | <key>end</key> | |
| 1483 | <string>\]</string> | |
| 1484 | <key>endCaptures</key> | |
| 1485 | <dict> | |
| 1486 | <key>0</key> | |
| 1487 | <dict> | |
| 1488 | <key>name</key> | |
| 1489 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1490 | </dict> | |
| 1491 | </dict> | |
| 1492 | <key>patterns</key> | |
| 1493 | <array> | |
| 1494 | <dict> | |
| 1495 | <key>include</key> | |
| 1496 | <string>#binding-element</string> | |
| 1497 | </dict> | |
| 1498 | <dict> | |
| 1499 | <key>include</key> | |
| 1500 | <string>#punctuation-comma</string> | |
| 1501 | </dict> | |
| 1502 | </array> | |
| 1503 | </dict> | |
| 1504 | <key>array-binding-pattern-const</key> | |
| 1505 | <dict> | |
| 1506 | <key>begin</key> | |
| 1507 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1508 | <key>beginCaptures</key> | |
| 1509 | <dict> | |
| 1510 | <key>1</key> | |
| 1511 | <dict> | |
| 1512 | <key>name</key> | |
| 1513 | <string>keyword.operator.rest.ts</string> | |
| 1514 | </dict> | |
| 1515 | <key>2</key> | |
| 1516 | <dict> | |
| 1517 | <key>name</key> | |
| 1518 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1519 | </dict> | |
| 1520 | </dict> | |
| 1521 | <key>end</key> | |
| 1522 | <string>\]</string> | |
| 1523 | <key>endCaptures</key> | |
| 1524 | <dict> | |
| 1525 | <key>0</key> | |
| 1526 | <dict> | |
| 1527 | <key>name</key> | |
| 1528 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1529 | </dict> | |
| 1530 | </dict> | |
| 1531 | <key>patterns</key> | |
| 1532 | <array> | |
| 1533 | <dict> | |
| 1534 | <key>include</key> | |
| 1535 | <string>#binding-element-const</string> | |
| 1536 | </dict> | |
| 1537 | <dict> | |
| 1538 | <key>include</key> | |
| 1539 | <string>#punctuation-comma</string> | |
| 1540 | </dict> | |
| 1541 | </array> | |
| 1542 | </dict> | |
| 1543 | <key>parameter-name</key> | |
| 1544 | <dict> | |
| 1545 | <key>patterns</key> | |
| 1546 | <array> | |
| 1547 | <dict> | |
| 1548 | <key>match</key> | |
| 1549 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string> | |
| 1550 | <key>captures</key> | |
| 1551 | <dict> | |
| 1552 | <key>1</key> | |
| 1553 | <dict> | |
| 1554 | <key>name</key> | |
| 1555 | <string>storage.modifier.ts</string> | |
| 1556 | </dict> | |
| 1557 | </dict> | |
| 1558 | </dict> | |
| 1559 | <dict> | |
| 1560 | <key>match</key> | |
| 1561 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s* | |
| 1562 | # function assignment | | |
| 1563 | (=\s*( | |
| 1564 | ((async\s+)?( | |
| 1565 | (function\s*[(&lt;*]) | | |
| 1566 | (function\s+) | | |
| 1567 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 1568 | )) | | |
| 1569 | ((async\s*)?( | |
| 1570 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 1571 | # sure shot arrow functions even if =&gt; is on new line | |
| 1572 | ( | |
| 1573 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 1574 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 1575 | ( | |
| 1576 | ([)]\s*:) | # (): | |
| 1577 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 1578 | ) | |
| 1579 | ) | | |
| 1580 | ||
| 1581 | # arrow function possible to detect only with =&gt; on same line | |
| 1582 | ( | |
| 1583 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 1584 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 1585 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 1586 | \s*=&gt; # arrow operator | |
| 1587 | ) | |
| 1588 | )) | |
| 1589 | )) | | |
| 1590 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 1591 | (:\s*( | |
| 1592 | (&lt;) | | |
| 1593 | ([(]\s*( | |
| 1594 | ([)]) | | |
| 1595 | (\.\.\.) | | |
| 1596 | ([_$[:alnum:]]+\s*( | |
| 1597 | ([:,?=])| | |
| 1598 | ([)]\s*=&gt;) | |
| 1599 | )) | |
| 1600 | )) | |
| 1601 | )) | | |
| 1602 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 1603 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 1604 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 1605 | ((async\s+)?( | |
| 1606 | (function\s*[(&lt;*]) | | |
| 1607 | (function\s+) | | |
| 1608 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 1609 | )) | | |
| 1610 | ((async\s*)?( | |
| 1611 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 1612 | # sure shot arrow functions even if =&gt; is on new line | |
| 1613 | ( | |
| 1614 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 1615 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 1616 | ( | |
| 1617 | ([)]\s*:) | # (): | |
| 1618 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 1619 | ) | |
| 1620 | ) | | |
| 1621 | ||
| 1622 | # arrow function possible to detect only with =&gt; on same line | |
| 1623 | ( | |
| 1624 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 1625 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 1626 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 1627 | \s*=&gt; # arrow operator | |
| 1628 | ) | |
| 1629 | )) | |
| 1630 | )))</string> | |
| 1631 | <key>captures</key> | |
| 1632 | <dict> | |
| 1633 | <key>1</key> | |
| 1634 | <dict> | |
| 1635 | <key>name</key> | |
| 1636 | <string>storage.modifier.ts</string> | |
| 1637 | </dict> | |
| 1638 | <key>2</key> | |
| 1639 | <dict> | |
| 1640 | <key>name</key> | |
| 1641 | <string>keyword.operator.rest.ts</string> | |
| 1642 | </dict> | |
| 1643 | <key>3</key> | |
| 1644 | <dict> | |
| 1645 | <key>name</key> | |
| 1646 | <string>entity.name.function.ts variable.language.this.ts</string> | |
| 1647 | </dict> | |
| 1648 | <key>4</key> | |
| 1649 | <dict> | |
| 1650 | <key>name</key> | |
| 1651 | <string>entity.name.function.ts</string> | |
| 1652 | </dict> | |
| 1653 | <key>5</key> | |
| 1654 | <dict> | |
| 1655 | <key>name</key> | |
| 1656 | <string>keyword.operator.optional.ts</string> | |
| 1657 | </dict> | |
| 1658 | </dict> | |
| 1659 | </dict> | |
| 1660 | <dict> | |
| 1661 | <key>match</key> | |
| 1662 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string> | |
| 1663 | <key>captures</key> | |
| 1664 | <dict> | |
| 1665 | <key>1</key> | |
| 1666 | <dict> | |
| 1667 | <key>name</key> | |
| 1668 | <string>storage.modifier.ts</string> | |
| 1669 | </dict> | |
| 1670 | <key>2</key> | |
| 1671 | <dict> | |
| 1672 | <key>name</key> | |
| 1673 | <string>keyword.operator.rest.ts</string> | |
| 1674 | </dict> | |
| 1675 | <key>3</key> | |
| 1676 | <dict> | |
| 1677 | <key>name</key> | |
| 1678 | <string>variable.parameter.ts variable.language.this.ts</string> | |
| 1679 | </dict> | |
| 1680 | <key>4</key> | |
| 1681 | <dict> | |
| 1682 | <key>name</key> | |
| 1683 | <string>variable.parameter.ts</string> | |
| 1684 | </dict> | |
| 1685 | <key>5</key> | |
| 1686 | <dict> | |
| 1687 | <key>name</key> | |
| 1688 | <string>keyword.operator.optional.ts</string> | |
| 1689 | </dict> | |
| 1690 | </dict> | |
| 1691 | </dict> | |
| 1692 | </array> | |
| 1693 | </dict> | |
| 1694 | <key>destructuring-parameter</key> | |
| 1695 | <dict> | |
| 1696 | <key>patterns</key> | |
| 1697 | <array> | |
| 1698 | <dict> | |
| 1699 | <key>name</key> | |
| 1700 | <string>meta.parameter.object-binding-pattern.ts</string> | |
| 1701 | <key>begin</key> | |
| 1702 | <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\{)</string> | |
| 1703 | <key>beginCaptures</key> | |
| 1704 | <dict> | |
| 1705 | <key>1</key> | |
| 1706 | <dict> | |
| 1707 | <key>name</key> | |
| 1708 | <string>keyword.operator.rest.ts</string> | |
| 1709 | </dict> | |
| 1710 | <key>2</key> | |
| 1711 | <dict> | |
| 1712 | <key>name</key> | |
| 1713 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1714 | </dict> | |
| 1715 | </dict> | |
| 1716 | <key>end</key> | |
| 1717 | <string>\}</string> | |
| 1718 | <key>endCaptures</key> | |
| 1719 | <dict> | |
| 1720 | <key>0</key> | |
| 1721 | <dict> | |
| 1722 | <key>name</key> | |
| 1723 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1724 | </dict> | |
| 1725 | </dict> | |
| 1726 | <key>patterns</key> | |
| 1727 | <array> | |
| 1728 | <dict> | |
| 1729 | <key>include</key> | |
| 1730 | <string>#parameter-object-binding-element</string> | |
| 1731 | </dict> | |
| 1732 | </array> | |
| 1733 | </dict> | |
| 1734 | <dict> | |
| 1735 | <key>name</key> | |
| 1736 | <string>meta.paramter.array-binding-pattern.ts</string> | |
| 1737 | <key>begin</key> | |
| 1738 | <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\[)</string> | |
| 1739 | <key>beginCaptures</key> | |
| 1740 | <dict> | |
| 1741 | <key>1</key> | |
| 1742 | <dict> | |
| 1743 | <key>name</key> | |
| 1744 | <string>keyword.operator.rest.ts</string> | |
| 1745 | </dict> | |
| 1746 | <key>2</key> | |
| 1747 | <dict> | |
| 1748 | <key>name</key> | |
| 1749 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1750 | </dict> | |
| 1751 | </dict> | |
| 1752 | <key>end</key> | |
| 1753 | <string>\]</string> | |
| 1754 | <key>endCaptures</key> | |
| 1755 | <dict> | |
| 1756 | <key>0</key> | |
| 1757 | <dict> | |
| 1758 | <key>name</key> | |
| 1759 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1760 | </dict> | |
| 1761 | </dict> | |
| 1762 | <key>patterns</key> | |
| 1763 | <array> | |
| 1764 | <dict> | |
| 1765 | <key>include</key> | |
| 1766 | <string>#parameter-binding-element</string> | |
| 1767 | </dict> | |
| 1768 | <dict> | |
| 1769 | <key>include</key> | |
| 1770 | <string>#punctuation-comma</string> | |
| 1771 | </dict> | |
| 1772 | </array> | |
| 1773 | </dict> | |
| 1774 | </array> | |
| 1775 | </dict> | |
| 1776 | <key>parameter-object-binding-element</key> | |
| 1777 | <dict> | |
| 1778 | <key>patterns</key> | |
| 1779 | <array> | |
| 1780 | <dict> | |
| 1781 | <key>include</key> | |
| 1782 | <string>#comment</string> | |
| 1783 | </dict> | |
| 1784 | <dict> | |
| 1785 | <key>begin</key> | |
| 1786 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1787 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1788 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1789 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1790 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1791 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1792 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1793 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1794 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1795 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1796 | <key>end</key> | |
| 1797 | <string>(?=,|\})</string> | |
| 1798 | <key>patterns</key> | |
| 1799 | <array> | |
| 1800 | <dict> | |
| 1801 | <key>include</key> | |
| 1802 | <string>#object-binding-element-propertyName</string> | |
| 1803 | </dict> | |
| 1804 | <dict> | |
| 1805 | <key>include</key> | |
| 1806 | <string>#parameter-binding-element</string> | |
| 1807 | </dict> | |
| 1808 | <dict> | |
| 1809 | <key>include</key> | |
| 1810 | <string>#paren-expression</string> | |
| 1811 | </dict> | |
| 1812 | </array> | |
| 1813 | </dict> | |
| 1814 | <dict> | |
| 1815 | <key>include</key> | |
| 1816 | <string>#parameter-object-binding-pattern</string> | |
| 1817 | </dict> | |
| 1818 | <dict> | |
| 1819 | <key>include</key> | |
| 1820 | <string>#destructuring-parameter-rest</string> | |
| 1821 | </dict> | |
| 1822 | <dict> | |
| 1823 | <key>include</key> | |
| 1824 | <string>#variable-initializer</string> | |
| 1825 | </dict> | |
| 1826 | <dict> | |
| 1827 | <key>include</key> | |
| 1828 | <string>#punctuation-comma</string> | |
| 1829 | </dict> | |
| 1830 | </array> | |
| 1831 | </dict> | |
| 1832 | <key>parameter-binding-element</key> | |
| 1833 | <dict> | |
| 1834 | <key>patterns</key> | |
| 1835 | <array> | |
| 1836 | <dict> | |
| 1837 | <key>include</key> | |
| 1838 | <string>#comment</string> | |
| 1839 | </dict> | |
| 1840 | <dict> | |
| 1841 | <key>include</key> | |
| 1842 | <string>#string</string> | |
| 1843 | </dict> | |
| 1844 | <dict> | |
| 1845 | <key>include</key> | |
| 1846 | <string>#numeric-literal</string> | |
| 1847 | </dict> | |
| 1848 | <dict> | |
| 1849 | <key>include</key> | |
| 1850 | <string>#regex</string> | |
| 1851 | </dict> | |
| 1852 | <dict> | |
| 1853 | <key>include</key> | |
| 1854 | <string>#parameter-object-binding-pattern</string> | |
| 1855 | </dict> | |
| 1856 | <dict> | |
| 1857 | <key>include</key> | |
| 1858 | <string>#parameter-array-binding-pattern</string> | |
| 1859 | </dict> | |
| 1860 | <dict> | |
| 1861 | <key>include</key> | |
| 1862 | <string>#destructuring-parameter-rest</string> | |
| 1863 | </dict> | |
| 1864 | <dict> | |
| 1865 | <key>include</key> | |
| 1866 | <string>#variable-initializer</string> | |
| 1867 | </dict> | |
| 1868 | </array> | |
| 1869 | </dict> | |
| 1870 | <key>destructuring-parameter-rest</key> | |
| 1871 | <dict> | |
| 1872 | <key>match</key> | |
| 1873 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1874 | <key>captures</key> | |
| 1875 | <dict> | |
| 1876 | <key>1</key> | |
| 1877 | <dict> | |
| 1878 | <key>name</key> | |
| 1879 | <string>keyword.operator.rest.ts</string> | |
| 1880 | </dict> | |
| 1881 | <key>2</key> | |
| 1882 | <dict> | |
| 1883 | <key>name</key> | |
| 1884 | <string>variable.parameter.ts</string> | |
| 1885 | </dict> | |
| 1886 | </dict> | |
| 1887 | </dict> | |
| 1888 | <key>parameter-object-binding-pattern</key> | |
| 1889 | <dict> | |
| 1890 | <key>begin</key> | |
| 1891 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1892 | <key>beginCaptures</key> | |
| 1893 | <dict> | |
| 1894 | <key>1</key> | |
| 1895 | <dict> | |
| 1896 | <key>name</key> | |
| 1897 | <string>keyword.operator.rest.ts</string> | |
| 1898 | </dict> | |
| 1899 | <key>2</key> | |
| 1900 | <dict> | |
| 1901 | <key>name</key> | |
| 1902 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1903 | </dict> | |
| 1904 | </dict> | |
| 1905 | <key>end</key> | |
| 1906 | <string>\}</string> | |
| 1907 | <key>endCaptures</key> | |
| 1908 | <dict> | |
| 1909 | <key>0</key> | |
| 1910 | <dict> | |
| 1911 | <key>name</key> | |
| 1912 | <string>punctuation.definition.binding-pattern.object.ts</string> | |
| 1913 | </dict> | |
| 1914 | </dict> | |
| 1915 | <key>patterns</key> | |
| 1916 | <array> | |
| 1917 | <dict> | |
| 1918 | <key>include</key> | |
| 1919 | <string>#parameter-object-binding-element</string> | |
| 1920 | </dict> | |
| 1921 | </array> | |
| 1922 | </dict> | |
| 1923 | <key>parameter-array-binding-pattern</key> | |
| 1924 | <dict> | |
| 1925 | <key>begin</key> | |
| 1926 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1927 | <key>beginCaptures</key> | |
| 1928 | <dict> | |
| 1929 | <key>1</key> | |
| 1930 | <dict> | |
| 1931 | <key>name</key> | |
| 1932 | <string>keyword.operator.rest.ts</string> | |
| 1933 | </dict> | |
| 1934 | <key>2</key> | |
| 1935 | <dict> | |
| 1936 | <key>name</key> | |
| 1937 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1938 | </dict> | |
| 1939 | </dict> | |
| 1940 | <key>end</key> | |
| 1941 | <string>\]</string> | |
| 1942 | <key>endCaptures</key> | |
| 1943 | <dict> | |
| 1944 | <key>0</key> | |
| 1945 | <dict> | |
| 1946 | <key>name</key> | |
| 1947 | <string>punctuation.definition.binding-pattern.array.ts</string> | |
| 1948 | </dict> | |
| 1949 | </dict> | |
| 1950 | <key>patterns</key> | |
| 1951 | <array> | |
| 1952 | <dict> | |
| 1953 | <key>include</key> | |
| 1954 | <string>#parameter-binding-element</string> | |
| 1955 | </dict> | |
| 1956 | <dict> | |
| 1957 | <key>include</key> | |
| 1958 | <string>#punctuation-comma</string> | |
| 1959 | </dict> | |
| 1960 | </array> | |
| 1961 | </dict> | |
| 1962 | <key>field-declaration</key> | |
| 1963 | <dict> | |
| 1964 | <key>name</key> | |
| 1965 | <string>meta.field.declaration.ts</string> | |
| 1966 | <key>begin</key> | |
| 1967 | <string>(?x)(?&lt;!\()(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s+)?(?=\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1968 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1969 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1970 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1971 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1972 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1973 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1974 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1975 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1976 | )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|\}|$))</string> | |
| 1977 | <key>beginCaptures</key> | |
| 1978 | <dict> | |
| 1979 | <key>1</key> | |
| 1980 | <dict> | |
| 1981 | <key>name</key> | |
| 1982 | <string>storage.modifier.ts</string> | |
| 1983 | </dict> | |
| 1984 | </dict> | |
| 1985 | <key>end</key> | |
| 1986 | <string>(?x)(?=\}|;|,|$|(^(?!\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1987 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1988 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1989 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1990 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1991 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1992 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1993 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1994 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1995 | )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|$))))|(?&lt;=\})</string> | |
| 1996 | <key>patterns</key> | |
| 1997 | <array> | |
| 1998 | <dict> | |
| 1999 | <key>include</key> | |
| 2000 | <string>#variable-initializer</string> | |
| 2001 | </dict> | |
| 2002 | <dict> | |
| 2003 | <key>include</key> | |
| 2004 | <string>#type-annotation</string> | |
| 2005 | </dict> | |
| 2006 | <dict> | |
| 2007 | <key>include</key> | |
| 2008 | <string>#string</string> | |
| 2009 | </dict> | |
| 2010 | <dict> | |
| 2011 | <key>include</key> | |
| 2012 | <string>#array-literal</string> | |
| 2013 | </dict> | |
| 2014 | <dict> | |
| 2015 | <key>include</key> | |
| 2016 | <string>#numeric-literal</string> | |
| 2017 | </dict> | |
| 2018 | <dict> | |
| 2019 | <key>include</key> | |
| 2020 | <string>#comment</string> | |
| 2021 | </dict> | |
| 2022 | <dict> | |
| 2023 | <key>match</key> | |
| 2024 | <string>(?x)(\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\?)|(\!))?(?=\s*\s* | |
| 2025 | # function assignment | | |
| 2026 | (=\s*( | |
| 2027 | ((async\s+)?( | |
| 2028 | (function\s*[(&lt;*]) | | |
| 2029 | (function\s+) | | |
| 2030 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 2031 | )) | | |
| 2032 | ((async\s*)?( | |
| 2033 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 2034 | # sure shot arrow functions even if =&gt; is on new line | |
| 2035 | ( | |
| 2036 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2037 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2038 | ( | |
| 2039 | ([)]\s*:) | # (): | |
| 2040 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2041 | ) | |
| 2042 | ) | | |
| 2043 | ||
| 2044 | # arrow function possible to detect only with =&gt; on same line | |
| 2045 | ( | |
| 2046 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2047 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2048 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2049 | \s*=&gt; # arrow operator | |
| 2050 | ) | |
| 2051 | )) | |
| 2052 | )) | | |
| 2053 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 2054 | (:\s*( | |
| 2055 | (&lt;) | | |
| 2056 | ([(]\s*( | |
| 2057 | ([)]) | | |
| 2058 | (\.\.\.) | | |
| 2059 | ([_$[:alnum:]]+\s*( | |
| 2060 | ([:,?=])| | |
| 2061 | ([)]\s*=&gt;) | |
| 2062 | )) | |
| 2063 | )) | |
| 2064 | )) | | |
| 2065 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 2066 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 2067 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 2068 | ((async\s+)?( | |
| 2069 | (function\s*[(&lt;*]) | | |
| 2070 | (function\s+) | | |
| 2071 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 2072 | )) | | |
| 2073 | ((async\s*)?( | |
| 2074 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 2075 | # sure shot arrow functions even if =&gt; is on new line | |
| 2076 | ( | |
| 2077 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2078 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2079 | ( | |
| 2080 | ([)]\s*:) | # (): | |
| 2081 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2082 | ) | |
| 2083 | ) | | |
| 2084 | ||
| 2085 | # arrow function possible to detect only with =&gt; on same line | |
| 2086 | ( | |
| 2087 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2088 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2089 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2090 | \s*=&gt; # arrow operator | |
| 2091 | ) | |
| 2092 | )) | |
| 2093 | )))</string> | |
| 2094 | <key>captures</key> | |
| 2095 | <dict> | |
| 2096 | <key>1</key> | |
| 2097 | <dict> | |
| 2098 | <key>name</key> | |
| 2099 | <string>meta.definition.property.ts entity.name.function.ts</string> | |
| 2100 | </dict> | |
| 2101 | <key>2</key> | |
| 2102 | <dict> | |
| 2103 | <key>name</key> | |
| 2104 | <string>keyword.operator.optional.ts</string> | |
| 2105 | </dict> | |
| 2106 | <key>3</key> | |
| 2107 | <dict> | |
| 2108 | <key>name</key> | |
| 2109 | <string>keyword.operator.definiteassignment.ts</string> | |
| 2110 | </dict> | |
| 2111 | </dict> | |
| 2112 | </dict> | |
| 2113 | <dict> | |
| 2114 | <key>name</key> | |
| 2115 | <string>meta.definition.property.ts variable.object.property.ts</string> | |
| 2116 | <key>match</key> | |
| 2117 | <string>\#?[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2118 | </dict> | |
| 2119 | <dict> | |
| 2120 | <key>name</key> | |
| 2121 | <string>keyword.operator.optional.ts</string> | |
| 2122 | <key>match</key> | |
| 2123 | <string>\?</string> | |
| 2124 | </dict> | |
| 2125 | <dict> | |
| 2126 | <key>name</key> | |
| 2127 | <string>keyword.operator.definiteassignment.ts</string> | |
| 2128 | <key>match</key> | |
| 2129 | <string>\!</string> | |
| 2130 | </dict> | |
| 2131 | </array> | |
| 2132 | </dict> | |
| 2133 | <key>variable-initializer</key> | |
| 2134 | <dict> | |
| 2135 | <key>patterns</key> | |
| 2136 | <array> | |
| 2137 | <dict> | |
| 2138 | <key>begin</key> | |
| 2139 | <string>(?&lt;!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=&gt;\s*$)</string> | |
| 2140 | <key>beginCaptures</key> | |
| 2141 | <dict> | |
| 2142 | <key>1</key> | |
| 2143 | <dict> | |
| 2144 | <key>name</key> | |
| 2145 | <string>keyword.operator.assignment.ts</string> | |
| 2146 | </dict> | |
| 2147 | </dict> | |
| 2148 | <key>end</key> | |
| 2149 | <string>(?=$|^|[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 2150 | <key>patterns</key> | |
| 2151 | <array> | |
| 2152 | <dict> | |
| 2153 | <key>include</key> | |
| 2154 | <string>#expression</string> | |
| 2155 | </dict> | |
| 2156 | </array> | |
| 2157 | </dict> | |
| 2158 | <dict> | |
| 2159 | <key>begin</key> | |
| 2160 | <string>(?&lt;!=|!)(=)(?!=)</string> | |
| 2161 | <key>beginCaptures</key> | |
| 2162 | <dict> | |
| 2163 | <key>1</key> | |
| 2164 | <dict> | |
| 2165 | <key>name</key> | |
| 2166 | <string>keyword.operator.assignment.ts</string> | |
| 2167 | </dict> | |
| 2168 | </dict> | |
| 2169 | <key>end</key> | |
| 2170 | <string>(?=[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))|(?=^\s*$)|(?&lt;![\|\&amp;\+\-\*\/])(?&lt;=\S)(?&lt;!=)(?=\s*$)</string> | |
| 2171 | <key>patterns</key> | |
| 2172 | <array> | |
| 2173 | <dict> | |
| 2174 | <key>include</key> | |
| 2175 | <string>#expression</string> | |
| 2176 | </dict> | |
| 2177 | </array> | |
| 2178 | </dict> | |
| 2179 | </array> | |
| 2180 | </dict> | |
| 2181 | <key>function-declaration</key> | |
| 2182 | <dict> | |
| 2183 | <key>name</key> | |
| 2184 | <string>meta.function.ts</string> | |
| 2185 | <key>begin</key> | |
| 2186 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string> | |
| 2187 | <key>beginCaptures</key> | |
| 2188 | <dict> | |
| 2189 | <key>1</key> | |
| 2190 | <dict> | |
| 2191 | <key>name</key> | |
| 2192 | <string>keyword.control.export.ts</string> | |
| 2193 | </dict> | |
| 2194 | <key>2</key> | |
| 2195 | <dict> | |
| 2196 | <key>name</key> | |
| 2197 | <string>storage.modifier.ts</string> | |
| 2198 | </dict> | |
| 2199 | <key>3</key> | |
| 2200 | <dict> | |
| 2201 | <key>name</key> | |
| 2202 | <string>storage.modifier.async.ts</string> | |
| 2203 | </dict> | |
| 2204 | <key>4</key> | |
| 2205 | <dict> | |
| 2206 | <key>name</key> | |
| 2207 | <string>storage.type.function.ts</string> | |
| 2208 | </dict> | |
| 2209 | <key>5</key> | |
| 2210 | <dict> | |
| 2211 | <key>name</key> | |
| 2212 | <string>keyword.generator.asterisk.ts</string> | |
| 2213 | </dict> | |
| 2214 | <key>6</key> | |
| 2215 | <dict> | |
| 2216 | <key>name</key> | |
| 2217 | <string>meta.definition.function.ts entity.name.function.ts</string> | |
| 2218 | </dict> | |
| 2219 | </dict> | |
| 2220 | <key>end</key> | |
| 2221 | <string>(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|(?&lt;=\})</string> | |
| 2222 | <key>patterns</key> | |
| 2223 | <array> | |
| 2224 | <dict> | |
| 2225 | <key>include</key> | |
| 2226 | <string>#function-name</string> | |
| 2227 | </dict> | |
| 2228 | <dict> | |
| 2229 | <key>include</key> | |
| 2230 | <string>#function-body</string> | |
| 2231 | </dict> | |
| 2232 | </array> | |
| 2233 | </dict> | |
| 2234 | <key>function-expression</key> | |
| 2235 | <dict> | |
| 2236 | <key>name</key> | |
| 2237 | <string>meta.function.expression.ts</string> | |
| 2238 | <key>begin</key> | |
| 2239 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string> | |
| 2240 | <key>beginCaptures</key> | |
| 2241 | <dict> | |
| 2242 | <key>1</key> | |
| 2243 | <dict> | |
| 2244 | <key>name</key> | |
| 2245 | <string>storage.modifier.async.ts</string> | |
| 2246 | </dict> | |
| 2247 | <key>2</key> | |
| 2248 | <dict> | |
| 2249 | <key>name</key> | |
| 2250 | <string>storage.type.function.ts</string> | |
| 2251 | </dict> | |
| 2252 | <key>3</key> | |
| 2253 | <dict> | |
| 2254 | <key>name</key> | |
| 2255 | <string>keyword.generator.asterisk.ts</string> | |
| 2256 | </dict> | |
| 2257 | <key>4</key> | |
| 2258 | <dict> | |
| 2259 | <key>name</key> | |
| 2260 | <string>meta.definition.function.ts entity.name.function.ts</string> | |
| 2261 | </dict> | |
| 2262 | </dict> | |
| 2263 | <key>end</key> | |
| 2264 | <string>(?=;)|(?&lt;=\})</string> | |
| 2265 | <key>patterns</key> | |
| 2266 | <array> | |
| 2267 | <dict> | |
| 2268 | <key>include</key> | |
| 2269 | <string>#function-name</string> | |
| 2270 | </dict> | |
| 2271 | <dict> | |
| 2272 | <key>include</key> | |
| 2273 | <string>#single-line-comment-consuming-line-ending</string> | |
| 2274 | </dict> | |
| 2275 | <dict> | |
| 2276 | <key>include</key> | |
| 2277 | <string>#function-body</string> | |
| 2278 | </dict> | |
| 2279 | </array> | |
| 2280 | </dict> | |
| 2281 | <key>function-name</key> | |
| 2282 | <dict> | |
| 2283 | <key>name</key> | |
| 2284 | <string>meta.definition.function.ts entity.name.function.ts</string> | |
| 2285 | <key>match</key> | |
| 2286 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2287 | </dict> | |
| 2288 | <key>function-body</key> | |
| 2289 | <dict> | |
| 2290 | <key>patterns</key> | |
| 2291 | <array> | |
| 2292 | <dict> | |
| 2293 | <key>include</key> | |
| 2294 | <string>#comment</string> | |
| 2295 | </dict> | |
| 2296 | <dict> | |
| 2297 | <key>include</key> | |
| 2298 | <string>#type-parameters</string> | |
| 2299 | </dict> | |
| 2300 | <dict> | |
| 2301 | <key>include</key> | |
| 2302 | <string>#function-parameters</string> | |
| 2303 | </dict> | |
| 2304 | <dict> | |
| 2305 | <key>include</key> | |
| 2306 | <string>#return-type</string> | |
| 2307 | </dict> | |
| 2308 | <dict> | |
| 2309 | <key>include</key> | |
| 2310 | <string>#type-function-return-type</string> | |
| 2311 | </dict> | |
| 2312 | <dict> | |
| 2313 | <key>include</key> | |
| 2314 | <string>#decl-block</string> | |
| 2315 | </dict> | |
| 2316 | <dict> | |
| 2317 | <key>name</key> | |
| 2318 | <string>keyword.generator.asterisk.ts</string> | |
| 2319 | <key>match</key> | |
| 2320 | <string>\*</string> | |
| 2321 | </dict> | |
| 2322 | </array> | |
| 2323 | </dict> | |
| 2324 | <key>method-declaration</key> | |
| 2325 | <dict> | |
| 2326 | <key>patterns</key> | |
| 2327 | <array> | |
| 2328 | <dict> | |
| 2329 | <key>name</key> | |
| 2330 | <string>meta.method.declaration.ts</string> | |
| 2331 | <key>begin</key> | |
| 2332 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 2333 | <key>beginCaptures</key> | |
| 2334 | <dict> | |
| 2335 | <key>1</key> | |
| 2336 | <dict> | |
| 2337 | <key>name</key> | |
| 2338 | <string>storage.modifier.ts</string> | |
| 2339 | </dict> | |
| 2340 | <key>2</key> | |
| 2341 | <dict> | |
| 2342 | <key>name</key> | |
| 2343 | <string>storage.modifier.ts</string> | |
| 2344 | </dict> | |
| 2345 | <key>3</key> | |
| 2346 | <dict> | |
| 2347 | <key>name</key> | |
| 2348 | <string>storage.modifier.ts</string> | |
| 2349 | </dict> | |
| 2350 | <key>4</key> | |
| 2351 | <dict> | |
| 2352 | <key>name</key> | |
| 2353 | <string>storage.modifier.async.ts</string> | |
| 2354 | </dict> | |
| 2355 | <key>5</key> | |
| 2356 | <dict> | |
| 2357 | <key>name</key> | |
| 2358 | <string>storage.type.ts</string> | |
| 2359 | </dict> | |
| 2360 | </dict> | |
| 2361 | <key>end</key> | |
| 2362 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2363 | <key>patterns</key> | |
| 2364 | <array> | |
| 2365 | <dict> | |
| 2366 | <key>include</key> | |
| 2367 | <string>#method-declaration-name</string> | |
| 2368 | </dict> | |
| 2369 | <dict> | |
| 2370 | <key>include</key> | |
| 2371 | <string>#function-body</string> | |
| 2372 | </dict> | |
| 2373 | </array> | |
| 2374 | </dict> | |
| 2375 | <dict> | |
| 2376 | <key>name</key> | |
| 2377 | <string>meta.method.declaration.ts</string> | |
| 2378 | <key>begin</key> | |
| 2379 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2380 | <key>beginCaptures</key> | |
| 2381 | <dict> | |
| 2382 | <key>1</key> | |
| 2383 | <dict> | |
| 2384 | <key>name</key> | |
| 2385 | <string>storage.modifier.ts</string> | |
| 2386 | </dict> | |
| 2387 | <key>2</key> | |
| 2388 | <dict> | |
| 2389 | <key>name</key> | |
| 2390 | <string>storage.modifier.ts</string> | |
| 2391 | </dict> | |
| 2392 | <key>3</key> | |
| 2393 | <dict> | |
| 2394 | <key>name</key> | |
| 2395 | <string>storage.modifier.ts</string> | |
| 2396 | </dict> | |
| 2397 | <key>4</key> | |
| 2398 | <dict> | |
| 2399 | <key>name</key> | |
| 2400 | <string>storage.modifier.async.ts</string> | |
| 2401 | </dict> | |
| 2402 | <key>5</key> | |
| 2403 | <dict> | |
| 2404 | <key>name</key> | |
| 2405 | <string>keyword.operator.new.ts</string> | |
| 2406 | </dict> | |
| 2407 | <key>6</key> | |
| 2408 | <dict> | |
| 2409 | <key>name</key> | |
| 2410 | <string>keyword.generator.asterisk.ts</string> | |
| 2411 | </dict> | |
| 2412 | </dict> | |
| 2413 | <key>end</key> | |
| 2414 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2415 | <key>patterns</key> | |
| 2416 | <array> | |
| 2417 | <dict> | |
| 2418 | <key>include</key> | |
| 2419 | <string>#method-declaration-name</string> | |
| 2420 | </dict> | |
| 2421 | <dict> | |
| 2422 | <key>include</key> | |
| 2423 | <string>#function-body</string> | |
| 2424 | </dict> | |
| 2425 | </array> | |
| 2426 | </dict> | |
| 2427 | <dict> | |
| 2428 | <key>name</key> | |
| 2429 | <string>meta.method.declaration.ts</string> | |
| 2430 | <key>begin</key> | |
| 2431 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2432 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2433 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2434 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2435 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2436 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2437 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2438 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2439 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2440 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2441 | <key>beginCaptures</key> | |
| 2442 | <dict> | |
| 2443 | <key>1</key> | |
| 2444 | <dict> | |
| 2445 | <key>name</key> | |
| 2446 | <string>storage.modifier.ts</string> | |
| 2447 | </dict> | |
| 2448 | <key>2</key> | |
| 2449 | <dict> | |
| 2450 | <key>name</key> | |
| 2451 | <string>storage.modifier.ts</string> | |
| 2452 | </dict> | |
| 2453 | <key>3</key> | |
| 2454 | <dict> | |
| 2455 | <key>name</key> | |
| 2456 | <string>storage.modifier.ts</string> | |
| 2457 | </dict> | |
| 2458 | <key>4</key> | |
| 2459 | <dict> | |
| 2460 | <key>name</key> | |
| 2461 | <string>storage.modifier.async.ts</string> | |
| 2462 | </dict> | |
| 2463 | <key>5</key> | |
| 2464 | <dict> | |
| 2465 | <key>name</key> | |
| 2466 | <string>storage.type.property.ts</string> | |
| 2467 | </dict> | |
| 2468 | <key>6</key> | |
| 2469 | <dict> | |
| 2470 | <key>name</key> | |
| 2471 | <string>keyword.generator.asterisk.ts</string> | |
| 2472 | </dict> | |
| 2473 | </dict> | |
| 2474 | <key>end</key> | |
| 2475 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2476 | <key>patterns</key> | |
| 2477 | <array> | |
| 2478 | <dict> | |
| 2479 | <key>include</key> | |
| 2480 | <string>#method-declaration-name</string> | |
| 2481 | </dict> | |
| 2482 | <dict> | |
| 2483 | <key>include</key> | |
| 2484 | <string>#function-body</string> | |
| 2485 | </dict> | |
| 2486 | </array> | |
| 2487 | </dict> | |
| 2488 | </array> | |
| 2489 | </dict> | |
| 2490 | <key>object-literal-method-declaration</key> | |
| 2491 | <dict> | |
| 2492 | <key>name</key> | |
| 2493 | <string>meta.method.declaration.ts</string> | |
| 2494 | <key>begin</key> | |
| 2495 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2496 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2497 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2498 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2499 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2500 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2501 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2502 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2503 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2504 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2505 | <key>beginCaptures</key> | |
| 2506 | <dict> | |
| 2507 | <key>1</key> | |
| 2508 | <dict> | |
| 2509 | <key>name</key> | |
| 2510 | <string>storage.modifier.async.ts</string> | |
| 2511 | </dict> | |
| 2512 | <key>2</key> | |
| 2513 | <dict> | |
| 2514 | <key>name</key> | |
| 2515 | <string>storage.type.property.ts</string> | |
| 2516 | </dict> | |
| 2517 | <key>3</key> | |
| 2518 | <dict> | |
| 2519 | <key>name</key> | |
| 2520 | <string>keyword.generator.asterisk.ts</string> | |
| 2521 | </dict> | |
| 2522 | </dict> | |
| 2523 | <key>end</key> | |
| 2524 | <string>(?=\}|;|,)|(?&lt;=\})</string> | |
| 2525 | <key>patterns</key> | |
| 2526 | <array> | |
| 2527 | <dict> | |
| 2528 | <key>include</key> | |
| 2529 | <string>#method-declaration-name</string> | |
| 2530 | </dict> | |
| 2531 | <dict> | |
| 2532 | <key>include</key> | |
| 2533 | <string>#function-body</string> | |
| 2534 | </dict> | |
| 2535 | <dict> | |
| 2536 | <key>begin</key> | |
| 2537 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2538 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2539 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2540 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2541 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2542 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2543 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2544 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2545 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2546 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2547 | <key>beginCaptures</key> | |
| 2548 | <dict> | |
| 2549 | <key>1</key> | |
| 2550 | <dict> | |
| 2551 | <key>name</key> | |
| 2552 | <string>storage.modifier.async.ts</string> | |
| 2553 | </dict> | |
| 2554 | <key>2</key> | |
| 2555 | <dict> | |
| 2556 | <key>name</key> | |
| 2557 | <string>storage.type.property.ts</string> | |
| 2558 | </dict> | |
| 2559 | <key>3</key> | |
| 2560 | <dict> | |
| 2561 | <key>name</key> | |
| 2562 | <string>keyword.generator.asterisk.ts</string> | |
| 2563 | </dict> | |
| 2564 | </dict> | |
| 2565 | <key>end</key> | |
| 2566 | <string>(?=\(|\&lt;)</string> | |
| 2567 | <key>patterns</key> | |
| 2568 | <array> | |
| 2569 | <dict> | |
| 2570 | <key>include</key> | |
| 2571 | <string>#method-declaration-name</string> | |
| 2572 | </dict> | |
| 2573 | </array> | |
| 2574 | </dict> | |
| 2575 | </array> | |
| 2576 | </dict> | |
| 2577 | <key>method-declaration-name</key> | |
| 2578 | <dict> | |
| 2579 | <key>begin</key> | |
| 2580 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2581 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2582 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2583 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2584 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2585 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2586 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2587 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2588 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2589 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\&lt;])</string> | |
| 2590 | <key>end</key> | |
| 2591 | <string>(?=\(|\&lt;)</string> | |
| 2592 | <key>patterns</key> | |
| 2593 | <array> | |
| 2594 | <dict> | |
| 2595 | <key>include</key> | |
| 2596 | <string>#string</string> | |
| 2597 | </dict> | |
| 2598 | <dict> | |
| 2599 | <key>include</key> | |
| 2600 | <string>#array-literal</string> | |
| 2601 | </dict> | |
| 2602 | <dict> | |
| 2603 | <key>include</key> | |
| 2604 | <string>#numeric-literal</string> | |
| 2605 | </dict> | |
| 2606 | <dict> | |
| 2607 | <key>name</key> | |
| 2608 | <string>meta.definition.method.ts entity.name.function.ts</string> | |
| 2609 | <key>match</key> | |
| 2610 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2611 | </dict> | |
| 2612 | <dict> | |
| 2613 | <key>name</key> | |
| 2614 | <string>keyword.operator.optional.ts</string> | |
| 2615 | <key>match</key> | |
| 2616 | <string>\?</string> | |
| 2617 | </dict> | |
| 2618 | </array> | |
| 2619 | </dict> | |
| 2620 | <key>arrow-function</key> | |
| 2621 | <dict> | |
| 2622 | <key>patterns</key> | |
| 2623 | <array> | |
| 2624 | <dict> | |
| 2625 | <key>name</key> | |
| 2626 | <string>meta.arrow.ts</string> | |
| 2627 | <key>match</key> | |
| 2628 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync)\s+)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?==&gt;)</string> | |
| 2629 | <key>captures</key> | |
| 2630 | <dict> | |
| 2631 | <key>1</key> | |
| 2632 | <dict> | |
| 2633 | <key>name</key> | |
| 2634 | <string>storage.modifier.async.ts</string> | |
| 2635 | </dict> | |
| 2636 | <key>2</key> | |
| 2637 | <dict> | |
| 2638 | <key>name</key> | |
| 2639 | <string>variable.parameter.ts</string> | |
| 2640 | </dict> | |
| 2641 | </dict> | |
| 2642 | </dict> | |
| 2643 | <dict> | |
| 2644 | <key>name</key> | |
| 2645 | <string>meta.arrow.ts</string> | |
| 2646 | <key>begin</key> | |
| 2647 | <string>(?x) (?: | |
| 2648 | (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync) | |
| 2649 | )? ((?&lt;![})!\]])\s* | |
| 2650 | (?= | |
| 2651 | # sure shot arrow functions even if =&gt; is on new line | |
| 2652 | ( | |
| 2653 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2654 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2655 | ( | |
| 2656 | ([)]\s*:) | # (): | |
| 2657 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2658 | ) | |
| 2659 | ) | | |
| 2660 | ||
| 2661 | # arrow function possible to detect only with =&gt; on same line | |
| 2662 | ( | |
| 2663 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2664 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2665 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2666 | \s*=&gt; # arrow operator | |
| 2667 | ) | |
| 2668 | ) | |
| 2669 | )</string> | |
| 2670 | <key>beginCaptures</key> | |
| 2671 | <dict> | |
| 2672 | <key>1</key> | |
| 2673 | <dict> | |
| 2674 | <key>name</key> | |
| 2675 | <string>storage.modifier.async.ts</string> | |
| 2676 | </dict> | |
| 2677 | </dict> | |
| 2678 | <key>end</key> | |
| 2679 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 2680 | <key>patterns</key> | |
| 2681 | <array> | |
| 2682 | <dict> | |
| 2683 | <key>include</key> | |
| 2684 | <string>#comment</string> | |
| 2685 | </dict> | |
| 2686 | <dict> | |
| 2687 | <key>include</key> | |
| 2688 | <string>#type-parameters</string> | |
| 2689 | </dict> | |
| 2690 | <dict> | |
| 2691 | <key>include</key> | |
| 2692 | <string>#function-parameters</string> | |
| 2693 | </dict> | |
| 2694 | <dict> | |
| 2695 | <key>include</key> | |
| 2696 | <string>#arrow-return-type</string> | |
| 2697 | </dict> | |
| 2698 | <dict> | |
| 2699 | <key>include</key> | |
| 2700 | <string>#possibly-arrow-return-type</string> | |
| 2701 | </dict> | |
| 2702 | </array> | |
| 2703 | </dict> | |
| 2704 | <dict> | |
| 2705 | <key>name</key> | |
| 2706 | <string>meta.arrow.ts</string> | |
| 2707 | <key>begin</key> | |
| 2708 | <string>=&gt;</string> | |
| 2709 | <key>beginCaptures</key> | |
| 2710 | <dict> | |
| 2711 | <key>0</key> | |
| 2712 | <dict> | |
| 2713 | <key>name</key> | |
| 2714 | <string>storage.type.function.arrow.ts</string> | |
| 2715 | </dict> | |
| 2716 | </dict> | |
| 2717 | <key>end</key> | |
| 2718 | <string>((?&lt;=\}|\S)(?&lt;!=&gt;)|((?!\{)(?=\S)))(?!\/[\/\*])</string> | |
| 2719 | <key>patterns</key> | |
| 2720 | <array> | |
| 2721 | <dict> | |
| 2722 | <key>include</key> | |
| 2723 | <string>#single-line-comment-consuming-line-ending</string> | |
| 2724 | </dict> | |
| 2725 | <dict> | |
| 2726 | <key>include</key> | |
| 2727 | <string>#decl-block</string> | |
| 2728 | </dict> | |
| 2729 | <dict> | |
| 2730 | <key>include</key> | |
| 2731 | <string>#expression</string> | |
| 2732 | </dict> | |
| 2733 | </array> | |
| 2734 | </dict> | |
| 2735 | </array> | |
| 2736 | </dict> | |
| 2737 | <key>indexer-declaration</key> | |
| 2738 | <dict> | |
| 2739 | <key>name</key> | |
| 2740 | <string>meta.indexer.declaration.ts</string> | |
| 2741 | <key>begin</key> | |
| 2742 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string> | |
| 2743 | <key>beginCaptures</key> | |
| 2744 | <dict> | |
| 2745 | <key>1</key> | |
| 2746 | <dict> | |
| 2747 | <key>name</key> | |
| 2748 | <string>storage.modifier.ts</string> | |
| 2749 | </dict> | |
| 2750 | <key>2</key> | |
| 2751 | <dict> | |
| 2752 | <key>name</key> | |
| 2753 | <string>meta.brace.square.ts</string> | |
| 2754 | </dict> | |
| 2755 | <key>3</key> | |
| 2756 | <dict> | |
| 2757 | <key>name</key> | |
| 2758 | <string>variable.parameter.ts</string> | |
| 2759 | </dict> | |
| 2760 | </dict> | |
| 2761 | <key>end</key> | |
| 2762 | <string>(\])\s*(\?\s*)?|$</string> | |
| 2763 | <key>endCaptures</key> | |
| 2764 | <dict> | |
| 2765 | <key>1</key> | |
| 2766 | <dict> | |
| 2767 | <key>name</key> | |
| 2768 | <string>meta.brace.square.ts</string> | |
| 2769 | </dict> | |
| 2770 | <key>2</key> | |
| 2771 | <dict> | |
| 2772 | <key>name</key> | |
| 2773 | <string>keyword.operator.optional.ts</string> | |
| 2774 | </dict> | |
| 2775 | </dict> | |
| 2776 | <key>patterns</key> | |
| 2777 | <array> | |
| 2778 | <dict> | |
| 2779 | <key>include</key> | |
| 2780 | <string>#type-annotation</string> | |
| 2781 | </dict> | |
| 2782 | </array> | |
| 2783 | </dict> | |
| 2784 | <key>indexer-mapped-type-declaration</key> | |
| 2785 | <dict> | |
| 2786 | <key>name</key> | |
| 2787 | <string>meta.indexer.mappedtype.declaration.ts</string> | |
| 2788 | <key>begin</key> | |
| 2789 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([+-])?(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s+(in)\s+</string> | |
| 2790 | <key>beginCaptures</key> | |
| 2791 | <dict> | |
| 2792 | <key>1</key> | |
| 2793 | <dict> | |
| 2794 | <key>name</key> | |
| 2795 | <string>keyword.operator.type.modifier.ts</string> | |
| 2796 | </dict> | |
| 2797 | <key>2</key> | |
| 2798 | <dict> | |
| 2799 | <key>name</key> | |
| 2800 | <string>storage.modifier.ts</string> | |
| 2801 | </dict> | |
| 2802 | <key>3</key> | |
| 2803 | <dict> | |
| 2804 | <key>name</key> | |
| 2805 | <string>meta.brace.square.ts</string> | |
| 2806 | </dict> | |
| 2807 | <key>4</key> | |
| 2808 | <dict> | |
| 2809 | <key>name</key> | |
| 2810 | <string>entity.name.type.ts</string> | |
| 2811 | </dict> | |
| 2812 | <key>5</key> | |
| 2813 | <dict> | |
| 2814 | <key>name</key> | |
| 2815 | <string>keyword.operator.expression.in.ts</string> | |
| 2816 | </dict> | |
| 2817 | </dict> | |
| 2818 | <key>end</key> | |
| 2819 | <string>(\])([+-])?\s*(\?\s*)?|$</string> | |
| 2820 | <key>endCaptures</key> | |
| 2821 | <dict> | |
| 2822 | <key>1</key> | |
| 2823 | <dict> | |
| 2824 | <key>name</key> | |
| 2825 | <string>meta.brace.square.ts</string> | |
| 2826 | </dict> | |
| 2827 | <key>2</key> | |
| 2828 | <dict> | |
| 2829 | <key>name</key> | |
| 2830 | <string>keyword.operator.type.modifier.ts</string> | |
| 2831 | </dict> | |
| 2832 | <key>3</key> | |
| 2833 | <dict> | |
| 2834 | <key>name</key> | |
| 2835 | <string>keyword.operator.optional.ts</string> | |
| 2836 | </dict> | |
| 2837 | </dict> | |
| 2838 | <key>patterns</key> | |
| 2839 | <array> | |
| 2840 | <dict> | |
| 2841 | <key>match</key> | |
| 2842 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string> | |
| 2843 | <key>captures</key> | |
| 2844 | <dict> | |
| 2845 | <key>1</key> | |
| 2846 | <dict> | |
| 2847 | <key>name</key> | |
| 2848 | <string>keyword.control.as.ts</string> | |
| 2849 | </dict> | |
| 2850 | </dict> | |
| 2851 | </dict> | |
| 2852 | <dict> | |
| 2853 | <key>include</key> | |
| 2854 | <string>#type</string> | |
| 2855 | </dict> | |
| 2856 | </array> | |
| 2857 | </dict> | |
| 2858 | <key>function-parameters</key> | |
| 2859 | <dict> | |
| 2860 | <key>name</key> | |
| 2861 | <string>meta.parameters.ts</string> | |
| 2862 | <key>begin</key> | |
| 2863 | <string>\(</string> | |
| 2864 | <key>beginCaptures</key> | |
| 2865 | <dict> | |
| 2866 | <key>0</key> | |
| 2867 | <dict> | |
| 2868 | <key>name</key> | |
| 2869 | <string>punctuation.definition.parameters.begin.ts</string> | |
| 2870 | </dict> | |
| 2871 | </dict> | |
| 2872 | <key>end</key> | |
| 2873 | <string>\)</string> | |
| 2874 | <key>endCaptures</key> | |
| 2875 | <dict> | |
| 2876 | <key>0</key> | |
| 2877 | <dict> | |
| 2878 | <key>name</key> | |
| 2879 | <string>punctuation.definition.parameters.end.ts</string> | |
| 2880 | </dict> | |
| 2881 | </dict> | |
| 2882 | <key>patterns</key> | |
| 2883 | <array> | |
| 2884 | <dict> | |
| 2885 | <key>include</key> | |
| 2886 | <string>#function-parameters-body</string> | |
| 2887 | </dict> | |
| 2888 | </array> | |
| 2889 | </dict> | |
| 2890 | <key>function-parameters-body</key> | |
| 2891 | <dict> | |
| 2892 | <key>patterns</key> | |
| 2893 | <array> | |
| 2894 | <dict> | |
| 2895 | <key>include</key> | |
| 2896 | <string>#comment</string> | |
| 2897 | </dict> | |
| 2898 | <dict> | |
| 2899 | <key>include</key> | |
| 2900 | <string>#string</string> | |
| 2901 | </dict> | |
| 2902 | <dict> | |
| 2903 | <key>include</key> | |
| 2904 | <string>#decorator</string> | |
| 2905 | </dict> | |
| 2906 | <dict> | |
| 2907 | <key>include</key> | |
| 2908 | <string>#destructuring-parameter</string> | |
| 2909 | </dict> | |
| 2910 | <dict> | |
| 2911 | <key>include</key> | |
| 2912 | <string>#parameter-name</string> | |
| 2913 | </dict> | |
| 2914 | <dict> | |
| 2915 | <key>include</key> | |
| 2916 | <string>#parameter-type-annotation</string> | |
| 2917 | </dict> | |
| 2918 | <dict> | |
| 2919 | <key>include</key> | |
| 2920 | <string>#variable-initializer</string> | |
| 2921 | </dict> | |
| 2922 | <dict> | |
| 2923 | <key>name</key> | |
| 2924 | <string>punctuation.separator.parameter.ts</string> | |
| 2925 | <key>match</key> | |
| 2926 | <string>,</string> | |
| 2927 | </dict> | |
| 2928 | </array> | |
| 2929 | </dict> | |
| 2930 | <key>class-declaration</key> | |
| 2931 | <dict> | |
| 2932 | <key>name</key> | |
| 2933 | <string>meta.class.ts</string> | |
| 2934 | <key>begin</key> | |
| 2935 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])</string> | |
| 2936 | <key>beginCaptures</key> | |
| 2937 | <dict> | |
| 2938 | <key>1</key> | |
| 2939 | <dict> | |
| 2940 | <key>name</key> | |
| 2941 | <string>keyword.control.export.ts</string> | |
| 2942 | </dict> | |
| 2943 | <key>2</key> | |
| 2944 | <dict> | |
| 2945 | <key>name</key> | |
| 2946 | <string>storage.modifier.ts</string> | |
| 2947 | </dict> | |
| 2948 | <key>3</key> | |
| 2949 | <dict> | |
| 2950 | <key>name</key> | |
| 2951 | <string>storage.modifier.ts</string> | |
| 2952 | </dict> | |
| 2953 | <key>4</key> | |
| 2954 | <dict> | |
| 2955 | <key>name</key> | |
| 2956 | <string>storage.type.class.ts</string> | |
| 2957 | </dict> | |
| 2958 | </dict> | |
| 2959 | <key>end</key> | |
| 2960 | <string>(?&lt;=\})</string> | |
| 2961 | <key>patterns</key> | |
| 2962 | <array> | |
| 2963 | <dict> | |
| 2964 | <key>include</key> | |
| 2965 | <string>#class-declaration-or-expression-patterns</string> | |
| 2966 | </dict> | |
| 2967 | </array> | |
| 2968 | </dict> | |
| 2969 | <key>class-expression</key> | |
| 2970 | <dict> | |
| 2971 | <key>name</key> | |
| 2972 | <string>meta.class.ts</string> | |
| 2973 | <key>begin</key> | |
| 2974 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[&lt;{]|\/[\/*])</string> | |
| 2975 | <key>beginCaptures</key> | |
| 2976 | <dict> | |
| 2977 | <key>1</key> | |
| 2978 | <dict> | |
| 2979 | <key>name</key> | |
| 2980 | <string>storage.modifier.ts</string> | |
| 2981 | </dict> | |
| 2982 | <key>2</key> | |
| 2983 | <dict> | |
| 2984 | <key>name</key> | |
| 2985 | <string>storage.type.class.ts</string> | |
| 2986 | </dict> | |
| 2987 | </dict> | |
| 2988 | <key>end</key> | |
| 2989 | <string>(?&lt;=\})</string> | |
| 2990 | <key>patterns</key> | |
| 2991 | <array> | |
| 2992 | <dict> | |
| 2993 | <key>include</key> | |
| 2994 | <string>#class-declaration-or-expression-patterns</string> | |
| 2995 | </dict> | |
| 2996 | </array> | |
| 2997 | </dict> | |
| 2998 | <key>class-declaration-or-expression-patterns</key> | |
| 2999 | <dict> | |
| 3000 | <key>patterns</key> | |
| 3001 | <array> | |
| 3002 | <dict> | |
| 3003 | <key>include</key> | |
| 3004 | <string>#comment</string> | |
| 3005 | </dict> | |
| 3006 | <dict> | |
| 3007 | <key>include</key> | |
| 3008 | <string>#class-or-interface-heritage</string> | |
| 3009 | </dict> | |
| 3010 | <dict> | |
| 3011 | <key>match</key> | |
| 3012 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 3013 | <key>captures</key> | |
| 3014 | <dict> | |
| 3015 | <key>0</key> | |
| 3016 | <dict> | |
| 3017 | <key>name</key> | |
| 3018 | <string>entity.name.type.class.ts</string> | |
| 3019 | </dict> | |
| 3020 | </dict> | |
| 3021 | </dict> | |
| 3022 | <dict> | |
| 3023 | <key>include</key> | |
| 3024 | <string>#type-parameters</string> | |
| 3025 | </dict> | |
| 3026 | <dict> | |
| 3027 | <key>include</key> | |
| 3028 | <string>#class-or-interface-body</string> | |
| 3029 | </dict> | |
| 3030 | </array> | |
| 3031 | </dict> | |
| 3032 | <key>interface-declaration</key> | |
| 3033 | <dict> | |
| 3034 | <key>name</key> | |
| 3035 | <string>meta.interface.ts</string> | |
| 3036 | <key>begin</key> | |
| 3037 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])</string> | |
| 3038 | <key>beginCaptures</key> | |
| 3039 | <dict> | |
| 3040 | <key>1</key> | |
| 3041 | <dict> | |
| 3042 | <key>name</key> | |
| 3043 | <string>keyword.control.export.ts</string> | |
| 3044 | </dict> | |
| 3045 | <key>2</key> | |
| 3046 | <dict> | |
| 3047 | <key>name</key> | |
| 3048 | <string>storage.modifier.ts</string> | |
| 3049 | </dict> | |
| 3050 | <key>3</key> | |
| 3051 | <dict> | |
| 3052 | <key>name</key> | |
| 3053 | <string>storage.modifier.ts</string> | |
| 3054 | </dict> | |
| 3055 | <key>4</key> | |
| 3056 | <dict> | |
| 3057 | <key>name</key> | |
| 3058 | <string>storage.type.interface.ts</string> | |
| 3059 | </dict> | |
| 3060 | </dict> | |
| 3061 | <key>end</key> | |
| 3062 | <string>(?&lt;=\})</string> | |
| 3063 | <key>patterns</key> | |
| 3064 | <array> | |
| 3065 | <dict> | |
| 3066 | <key>include</key> | |
| 3067 | <string>#comment</string> | |
| 3068 | </dict> | |
| 3069 | <dict> | |
| 3070 | <key>include</key> | |
| 3071 | <string>#class-or-interface-heritage</string> | |
| 3072 | </dict> | |
| 3073 | <dict> | |
| 3074 | <key>match</key> | |
| 3075 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 3076 | <key>captures</key> | |
| 3077 | <dict> | |
| 3078 | <key>0</key> | |
| 3079 | <dict> | |
| 3080 | <key>name</key> | |
| 3081 | <string>entity.name.type.interface.ts</string> | |
| 3082 | </dict> | |
| 3083 | </dict> | |
| 3084 | </dict> | |
| 3085 | <dict> | |
| 3086 | <key>include</key> | |
| 3087 | <string>#type-parameters</string> | |
| 3088 | </dict> | |
| 3089 | <dict> | |
| 3090 | <key>include</key> | |
| 3091 | <string>#class-or-interface-body</string> | |
| 3092 | </dict> | |
| 3093 | </array> | |
| 3094 | </dict> | |
| 3095 | <key>class-or-interface-heritage</key> | |
| 3096 | <dict> | |
| 3097 | <key>begin</key> | |
| 3098 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(extends|implements)\b)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3099 | <key>beginCaptures</key> | |
| 3100 | <dict> | |
| 3101 | <key>1</key> | |
| 3102 | <dict> | |
| 3103 | <key>name</key> | |
| 3104 | <string>storage.modifier.ts</string> | |
| 3105 | </dict> | |
| 3106 | </dict> | |
| 3107 | <key>end</key> | |
| 3108 | <string>(?=\{)</string> | |
| 3109 | <key>patterns</key> | |
| 3110 | <array> | |
| 3111 | <dict> | |
| 3112 | <key>include</key> | |
| 3113 | <string>#comment</string> | |
| 3114 | </dict> | |
| 3115 | <dict> | |
| 3116 | <key>include</key> | |
| 3117 | <string>#class-or-interface-heritage</string> | |
| 3118 | </dict> | |
| 3119 | <dict> | |
| 3120 | <key>include</key> | |
| 3121 | <string>#type-parameters</string> | |
| 3122 | </dict> | |
| 3123 | <dict> | |
| 3124 | <key>include</key> | |
| 3125 | <string>#expressionWithoutIdentifiers</string> | |
| 3126 | </dict> | |
| 3127 | <dict> | |
| 3128 | <key>match</key> | |
| 3129 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)*\s*)</string> | |
| 3130 | <key>captures</key> | |
| 3131 | <dict> | |
| 3132 | <key>1</key> | |
| 3133 | <dict> | |
| 3134 | <key>name</key> | |
| 3135 | <string>entity.name.type.module.ts</string> | |
| 3136 | </dict> | |
| 3137 | <key>2</key> | |
| 3138 | <dict> | |
| 3139 | <key>name</key> | |
| 3140 | <string>punctuation.accessor.ts</string> | |
| 3141 | </dict> | |
| 3142 | <key>3</key> | |
| 3143 | <dict> | |
| 3144 | <key>name</key> | |
| 3145 | <string>punctuation.accessor.optional.ts</string> | |
| 3146 | </dict> | |
| 3147 | </dict> | |
| 3148 | </dict> | |
| 3149 | <dict> | |
| 3150 | <key>match</key> | |
| 3151 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3152 | <key>captures</key> | |
| 3153 | <dict> | |
| 3154 | <key>1</key> | |
| 3155 | <dict> | |
| 3156 | <key>name</key> | |
| 3157 | <string>entity.other.inherited-class.ts</string> | |
| 3158 | </dict> | |
| 3159 | </dict> | |
| 3160 | </dict> | |
| 3161 | <dict> | |
| 3162 | <key>include</key> | |
| 3163 | <string>#expressionPunctuations</string> | |
| 3164 | </dict> | |
| 3165 | </array> | |
| 3166 | </dict> | |
| 3167 | <key>class-or-interface-body</key> | |
| 3168 | <dict> | |
| 3169 | <key>begin</key> | |
| 3170 | <string>\{</string> | |
| 3171 | <key>beginCaptures</key> | |
| 3172 | <dict> | |
| 3173 | <key>0</key> | |
| 3174 | <dict> | |
| 3175 | <key>name</key> | |
| 3176 | <string>punctuation.definition.block.ts</string> | |
| 3177 | </dict> | |
| 3178 | </dict> | |
| 3179 | <key>end</key> | |
| 3180 | <string>\}</string> | |
| 3181 | <key>endCaptures</key> | |
| 3182 | <dict> | |
| 3183 | <key>0</key> | |
| 3184 | <dict> | |
| 3185 | <key>name</key> | |
| 3186 | <string>punctuation.definition.block.ts</string> | |
| 3187 | </dict> | |
| 3188 | </dict> | |
| 3189 | <key>patterns</key> | |
| 3190 | <array> | |
| 3191 | <dict> | |
| 3192 | <key>include</key> | |
| 3193 | <string>#comment</string> | |
| 3194 | </dict> | |
| 3195 | <dict> | |
| 3196 | <key>include</key> | |
| 3197 | <string>#decorator</string> | |
| 3198 | </dict> | |
| 3199 | <dict> | |
| 3200 | <key>begin</key> | |
| 3201 | <string>(?&lt;=:)\s*</string> | |
| 3202 | <key>end</key> | |
| 3203 | <string>(?=\s|[;),}\]:\-\+]|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3204 | <key>patterns</key> | |
| 3205 | <array> | |
| 3206 | <dict> | |
| 3207 | <key>include</key> | |
| 3208 | <string>#expression</string> | |
| 3209 | </dict> | |
| 3210 | </array> | |
| 3211 | </dict> | |
| 3212 | <dict> | |
| 3213 | <key>include</key> | |
| 3214 | <string>#method-declaration</string> | |
| 3215 | </dict> | |
| 3216 | <dict> | |
| 3217 | <key>include</key> | |
| 3218 | <string>#indexer-declaration</string> | |
| 3219 | </dict> | |
| 3220 | <dict> | |
| 3221 | <key>include</key> | |
| 3222 | <string>#field-declaration</string> | |
| 3223 | </dict> | |
| 3224 | <dict> | |
| 3225 | <key>include</key> | |
| 3226 | <string>#string</string> | |
| 3227 | </dict> | |
| 3228 | <dict> | |
| 3229 | <key>include</key> | |
| 3230 | <string>#type-annotation</string> | |
| 3231 | </dict> | |
| 3232 | <dict> | |
| 3233 | <key>include</key> | |
| 3234 | <string>#variable-initializer</string> | |
| 3235 | </dict> | |
| 3236 | <dict> | |
| 3237 | <key>include</key> | |
| 3238 | <string>#access-modifier</string> | |
| 3239 | </dict> | |
| 3240 | <dict> | |
| 3241 | <key>include</key> | |
| 3242 | <string>#property-accessor</string> | |
| 3243 | </dict> | |
| 3244 | <dict> | |
| 3245 | <key>include</key> | |
| 3246 | <string>#async-modifier</string> | |
| 3247 | </dict> | |
| 3248 | <dict> | |
| 3249 | <key>include</key> | |
| 3250 | <string>#after-operator-block-as-object-literal</string> | |
| 3251 | </dict> | |
| 3252 | <dict> | |
| 3253 | <key>include</key> | |
| 3254 | <string>#decl-block</string> | |
| 3255 | </dict> | |
| 3256 | <dict> | |
| 3257 | <key>include</key> | |
| 3258 | <string>#expression</string> | |
| 3259 | </dict> | |
| 3260 | <dict> | |
| 3261 | <key>include</key> | |
| 3262 | <string>#punctuation-comma</string> | |
| 3263 | </dict> | |
| 3264 | <dict> | |
| 3265 | <key>include</key> | |
| 3266 | <string>#punctuation-semicolon</string> | |
| 3267 | </dict> | |
| 3268 | </array> | |
| 3269 | </dict> | |
| 3270 | <key>access-modifier</key> | |
| 3271 | <dict> | |
| 3272 | <key>name</key> | |
| 3273 | <string>storage.modifier.ts</string> | |
| 3274 | <key>match</key> | |
| 3275 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3276 | </dict> | |
| 3277 | <key>property-accessor</key> | |
| 3278 | <dict> | |
| 3279 | <key>name</key> | |
| 3280 | <string>storage.type.property.ts</string> | |
| 3281 | <key>match</key> | |
| 3282 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3283 | </dict> | |
| 3284 | <key>async-modifier</key> | |
| 3285 | <dict> | |
| 3286 | <key>name</key> | |
| 3287 | <string>storage.modifier.async.ts</string> | |
| 3288 | <key>match</key> | |
| 3289 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(async)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3290 | </dict> | |
| 3291 | <key>enum-declaration</key> | |
| 3292 | <dict> | |
| 3293 | <key>name</key> | |
| 3294 | <string>meta.enum.declaration.ts</string> | |
| 3295 | <key>begin</key> | |
| 3296 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3297 | <key>beginCaptures</key> | |
| 3298 | <dict> | |
| 3299 | <key>1</key> | |
| 3300 | <dict> | |
| 3301 | <key>name</key> | |
| 3302 | <string>keyword.control.export.ts</string> | |
| 3303 | </dict> | |
| 3304 | <key>2</key> | |
| 3305 | <dict> | |
| 3306 | <key>name</key> | |
| 3307 | <string>storage.modifier.ts</string> | |
| 3308 | </dict> | |
| 3309 | <key>3</key> | |
| 3310 | <dict> | |
| 3311 | <key>name</key> | |
| 3312 | <string>storage.modifier.ts</string> | |
| 3313 | </dict> | |
| 3314 | <key>4</key> | |
| 3315 | <dict> | |
| 3316 | <key>name</key> | |
| 3317 | <string>storage.type.enum.ts</string> | |
| 3318 | </dict> | |
| 3319 | <key>5</key> | |
| 3320 | <dict> | |
| 3321 | <key>name</key> | |
| 3322 | <string>entity.name.type.enum.ts</string> | |
| 3323 | </dict> | |
| 3324 | </dict> | |
| 3325 | <key>end</key> | |
| 3326 | <string>(?&lt;=\})</string> | |
| 3327 | <key>patterns</key> | |
| 3328 | <array> | |
| 3329 | <dict> | |
| 3330 | <key>include</key> | |
| 3331 | <string>#comment</string> | |
| 3332 | </dict> | |
| 3333 | <dict> | |
| 3334 | <key>begin</key> | |
| 3335 | <string>\{</string> | |
| 3336 | <key>beginCaptures</key> | |
| 3337 | <dict> | |
| 3338 | <key>0</key> | |
| 3339 | <dict> | |
| 3340 | <key>name</key> | |
| 3341 | <string>punctuation.definition.block.ts</string> | |
| 3342 | </dict> | |
| 3343 | </dict> | |
| 3344 | <key>end</key> | |
| 3345 | <string>\}</string> | |
| 3346 | <key>endCaptures</key> | |
| 3347 | <dict> | |
| 3348 | <key>0</key> | |
| 3349 | <dict> | |
| 3350 | <key>name</key> | |
| 3351 | <string>punctuation.definition.block.ts</string> | |
| 3352 | </dict> | |
| 3353 | </dict> | |
| 3354 | <key>patterns</key> | |
| 3355 | <array> | |
| 3356 | <dict> | |
| 3357 | <key>include</key> | |
| 3358 | <string>#comment</string> | |
| 3359 | </dict> | |
| 3360 | <dict> | |
| 3361 | <key>begin</key> | |
| 3362 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3363 | <key>beginCaptures</key> | |
| 3364 | <dict> | |
| 3365 | <key>0</key> | |
| 3366 | <dict> | |
| 3367 | <key>name</key> | |
| 3368 | <string>variable.other.enummember.ts</string> | |
| 3369 | </dict> | |
| 3370 | </dict> | |
| 3371 | <key>end</key> | |
| 3372 | <string>(?=,|\}|$)</string> | |
| 3373 | <key>patterns</key> | |
| 3374 | <array> | |
| 3375 | <dict> | |
| 3376 | <key>include</key> | |
| 3377 | <string>#comment</string> | |
| 3378 | </dict> | |
| 3379 | <dict> | |
| 3380 | <key>include</key> | |
| 3381 | <string>#variable-initializer</string> | |
| 3382 | </dict> | |
| 3383 | </array> | |
| 3384 | </dict> | |
| 3385 | <dict> | |
| 3386 | <key>begin</key> | |
| 3387 | <string>(?=((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\])))</string> | |
| 3388 | <key>end</key> | |
| 3389 | <string>(?=,|\}|$)</string> | |
| 3390 | <key>patterns</key> | |
| 3391 | <array> | |
| 3392 | <dict> | |
| 3393 | <key>include</key> | |
| 3394 | <string>#string</string> | |
| 3395 | </dict> | |
| 3396 | <dict> | |
| 3397 | <key>include</key> | |
| 3398 | <string>#array-literal</string> | |
| 3399 | </dict> | |
| 3400 | <dict> | |
| 3401 | <key>include</key> | |
| 3402 | <string>#comment</string> | |
| 3403 | </dict> | |
| 3404 | <dict> | |
| 3405 | <key>include</key> | |
| 3406 | <string>#variable-initializer</string> | |
| 3407 | </dict> | |
| 3408 | </array> | |
| 3409 | </dict> | |
| 3410 | <dict> | |
| 3411 | <key>include</key> | |
| 3412 | <string>#punctuation-comma</string> | |
| 3413 | </dict> | |
| 3414 | </array> | |
| 3415 | </dict> | |
| 3416 | </array> | |
| 3417 | </dict> | |
| 3418 | <key>namespace-declaration</key> | |
| 3419 | <dict> | |
| 3420 | <key>name</key> | |
| 3421 | <string>meta.namespace.declaration.ts</string> | |
| 3422 | <key>begin</key> | |
| 3423 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"'`]))</string> | |
| 3424 | <key>beginCaptures</key> | |
| 3425 | <dict> | |
| 3426 | <key>1</key> | |
| 3427 | <dict> | |
| 3428 | <key>name</key> | |
| 3429 | <string>keyword.control.export.ts</string> | |
| 3430 | </dict> | |
| 3431 | <key>2</key> | |
| 3432 | <dict> | |
| 3433 | <key>name</key> | |
| 3434 | <string>storage.modifier.ts</string> | |
| 3435 | </dict> | |
| 3436 | <key>3</key> | |
| 3437 | <dict> | |
| 3438 | <key>name</key> | |
| 3439 | <string>storage.type.namespace.ts</string> | |
| 3440 | </dict> | |
| 3441 | </dict> | |
| 3442 | <key>end</key> | |
| 3443 | <string>(?&lt;=\})|(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3444 | <key>patterns</key> | |
| 3445 | <array> | |
| 3446 | <dict> | |
| 3447 | <key>include</key> | |
| 3448 | <string>#comment</string> | |
| 3449 | </dict> | |
| 3450 | <dict> | |
| 3451 | <key>include</key> | |
| 3452 | <string>#string</string> | |
| 3453 | </dict> | |
| 3454 | <dict> | |
| 3455 | <key>name</key> | |
| 3456 | <string>entity.name.type.module.ts</string> | |
| 3457 | <key>match</key> | |
| 3458 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3459 | </dict> | |
| 3460 | <dict> | |
| 3461 | <key>include</key> | |
| 3462 | <string>#punctuation-accessor</string> | |
| 3463 | </dict> | |
| 3464 | <dict> | |
| 3465 | <key>include</key> | |
| 3466 | <string>#decl-block</string> | |
| 3467 | </dict> | |
| 3468 | </array> | |
| 3469 | </dict> | |
| 3470 | <key>type-alias-declaration</key> | |
| 3471 | <dict> | |
| 3472 | <key>name</key> | |
| 3473 | <string>meta.type.declaration.ts</string> | |
| 3474 | <key>begin</key> | |
| 3475 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*</string> | |
| 3476 | <key>beginCaptures</key> | |
| 3477 | <dict> | |
| 3478 | <key>1</key> | |
| 3479 | <dict> | |
| 3480 | <key>name</key> | |
| 3481 | <string>keyword.control.export.ts</string> | |
| 3482 | </dict> | |
| 3483 | <key>2</key> | |
| 3484 | <dict> | |
| 3485 | <key>name</key> | |
| 3486 | <string>storage.modifier.ts</string> | |
| 3487 | </dict> | |
| 3488 | <key>3</key> | |
| 3489 | <dict> | |
| 3490 | <key>name</key> | |
| 3491 | <string>storage.type.type.ts</string> | |
| 3492 | </dict> | |
| 3493 | <key>4</key> | |
| 3494 | <dict> | |
| 3495 | <key>name</key> | |
| 3496 | <string>entity.name.type.alias.ts</string> | |
| 3497 | </dict> | |
| 3498 | </dict> | |
| 3499 | <key>end</key> | |
| 3500 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3501 | <key>patterns</key> | |
| 3502 | <array> | |
| 3503 | <dict> | |
| 3504 | <key>include</key> | |
| 3505 | <string>#comment</string> | |
| 3506 | </dict> | |
| 3507 | <dict> | |
| 3508 | <key>include</key> | |
| 3509 | <string>#type-parameters</string> | |
| 3510 | </dict> | |
| 3511 | <dict> | |
| 3512 | <key>begin</key> | |
| 3513 | <string>(=)\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3514 | <key>beginCaptures</key> | |
| 3515 | <dict> | |
| 3516 | <key>1</key> | |
| 3517 | <dict> | |
| 3518 | <key>name</key> | |
| 3519 | <string>keyword.operator.assignment.ts</string> | |
| 3520 | </dict> | |
| 3521 | <key>2</key> | |
| 3522 | <dict> | |
| 3523 | <key>name</key> | |
| 3524 | <string>keyword.control.intrinsic.ts</string> | |
| 3525 | </dict> | |
| 3526 | </dict> | |
| 3527 | <key>end</key> | |
| 3528 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3529 | <key>patterns</key> | |
| 3530 | <array> | |
| 3531 | <dict> | |
| 3532 | <key>include</key> | |
| 3533 | <string>#type</string> | |
| 3534 | </dict> | |
| 3535 | </array> | |
| 3536 | </dict> | |
| 3537 | <dict> | |
| 3538 | <key>begin</key> | |
| 3539 | <string>(=)\s*</string> | |
| 3540 | <key>beginCaptures</key> | |
| 3541 | <dict> | |
| 3542 | <key>1</key> | |
| 3543 | <dict> | |
| 3544 | <key>name</key> | |
| 3545 | <string>keyword.operator.assignment.ts</string> | |
| 3546 | </dict> | |
| 3547 | </dict> | |
| 3548 | <key>end</key> | |
| 3549 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3550 | <key>patterns</key> | |
| 3551 | <array> | |
| 3552 | <dict> | |
| 3553 | <key>include</key> | |
| 3554 | <string>#type</string> | |
| 3555 | </dict> | |
| 3556 | </array> | |
| 3557 | </dict> | |
| 3558 | </array> | |
| 3559 | </dict> | |
| 3560 | <key>import-equals-declaration</key> | |
| 3561 | <dict> | |
| 3562 | <key>patterns</key> | |
| 3563 | <array> | |
| 3564 | <dict> | |
| 3565 | <key>name</key> | |
| 3566 | <string>meta.import-equals.external.ts</string> | |
| 3567 | <key>begin</key> | |
| 3568 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()</string> | |
| 3569 | <key>beginCaptures</key> | |
| 3570 | <dict> | |
| 3571 | <key>1</key> | |
| 3572 | <dict> | |
| 3573 | <key>name</key> | |
| 3574 | <string>keyword.control.export.ts</string> | |
| 3575 | </dict> | |
| 3576 | <key>2</key> | |
| 3577 | <dict> | |
| 3578 | <key>name</key> | |
| 3579 | <string>storage.modifier.ts</string> | |
| 3580 | </dict> | |
| 3581 | <key>3</key> | |
| 3582 | <dict> | |
| 3583 | <key>name</key> | |
| 3584 | <string>keyword.control.import.ts</string> | |
| 3585 | </dict> | |
| 3586 | <key>4</key> | |
| 3587 | <dict> | |
| 3588 | <key>name</key> | |
| 3589 | <string>keyword.control.type.ts</string> | |
| 3590 | </dict> | |
| 3591 | <key>5</key> | |
| 3592 | <dict> | |
| 3593 | <key>name</key> | |
| 3594 | <string>variable.other.readwrite.alias.ts</string> | |
| 3595 | </dict> | |
| 3596 | <key>6</key> | |
| 3597 | <dict> | |
| 3598 | <key>name</key> | |
| 3599 | <string>keyword.operator.assignment.ts</string> | |
| 3600 | </dict> | |
| 3601 | <key>7</key> | |
| 3602 | <dict> | |
| 3603 | <key>name</key> | |
| 3604 | <string>keyword.control.require.ts</string> | |
| 3605 | </dict> | |
| 3606 | <key>8</key> | |
| 3607 | <dict> | |
| 3608 | <key>name</key> | |
| 3609 | <string>meta.brace.round.ts</string> | |
| 3610 | </dict> | |
| 3611 | </dict> | |
| 3612 | <key>end</key> | |
| 3613 | <string>\)</string> | |
| 3614 | <key>endCaptures</key> | |
| 3615 | <dict> | |
| 3616 | <key>0</key> | |
| 3617 | <dict> | |
| 3618 | <key>name</key> | |
| 3619 | <string>meta.brace.round.ts</string> | |
| 3620 | </dict> | |
| 3621 | </dict> | |
| 3622 | <key>patterns</key> | |
| 3623 | <array> | |
| 3624 | <dict> | |
| 3625 | <key>include</key> | |
| 3626 | <string>#comment</string> | |
| 3627 | </dict> | |
| 3628 | <dict> | |
| 3629 | <key>include</key> | |
| 3630 | <string>#string</string> | |
| 3631 | </dict> | |
| 3632 | </array> | |
| 3633 | </dict> | |
| 3634 | <dict> | |
| 3635 | <key>name</key> | |
| 3636 | <string>meta.import-equals.internal.ts</string> | |
| 3637 | <key>begin</key> | |
| 3638 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)</string> | |
| 3639 | <key>beginCaptures</key> | |
| 3640 | <dict> | |
| 3641 | <key>1</key> | |
| 3642 | <dict> | |
| 3643 | <key>name</key> | |
| 3644 | <string>keyword.control.export.ts</string> | |
| 3645 | </dict> | |
| 3646 | <key>2</key> | |
| 3647 | <dict> | |
| 3648 | <key>name</key> | |
| 3649 | <string>storage.modifier.ts</string> | |
| 3650 | </dict> | |
| 3651 | <key>3</key> | |
| 3652 | <dict> | |
| 3653 | <key>name</key> | |
| 3654 | <string>keyword.control.import.ts</string> | |
| 3655 | </dict> | |
| 3656 | <key>4</key> | |
| 3657 | <dict> | |
| 3658 | <key>name</key> | |
| 3659 | <string>keyword.control.type.ts</string> | |
| 3660 | </dict> | |
| 3661 | <key>5</key> | |
| 3662 | <dict> | |
| 3663 | <key>name</key> | |
| 3664 | <string>variable.other.readwrite.alias.ts</string> | |
| 3665 | </dict> | |
| 3666 | <key>6</key> | |
| 3667 | <dict> | |
| 3668 | <key>name</key> | |
| 3669 | <string>keyword.operator.assignment.ts</string> | |
| 3670 | </dict> | |
| 3671 | </dict> | |
| 3672 | <key>end</key> | |
| 3673 | <string>(?=;|$|^)</string> | |
| 3674 | <key>patterns</key> | |
| 3675 | <array> | |
| 3676 | <dict> | |
| 3677 | <key>include</key> | |
| 3678 | <string>#single-line-comment-consuming-line-ending</string> | |
| 3679 | </dict> | |
| 3680 | <dict> | |
| 3681 | <key>include</key> | |
| 3682 | <string>#comment</string> | |
| 3683 | </dict> | |
| 3684 | <dict> | |
| 3685 | <key>match</key> | |
| 3686 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 3687 | <key>captures</key> | |
| 3688 | <dict> | |
| 3689 | <key>1</key> | |
| 3690 | <dict> | |
| 3691 | <key>name</key> | |
| 3692 | <string>entity.name.type.module.ts</string> | |
| 3693 | </dict> | |
| 3694 | <key>2</key> | |
| 3695 | <dict> | |
| 3696 | <key>name</key> | |
| 3697 | <string>punctuation.accessor.ts</string> | |
| 3698 | </dict> | |
| 3699 | <key>3</key> | |
| 3700 | <dict> | |
| 3701 | <key>name</key> | |
| 3702 | <string>punctuation.accessor.optional.ts</string> | |
| 3703 | </dict> | |
| 3704 | </dict> | |
| 3705 | </dict> | |
| 3706 | <dict> | |
| 3707 | <key>name</key> | |
| 3708 | <string>variable.other.readwrite.ts</string> | |
| 3709 | <key>match</key> | |
| 3710 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3711 | </dict> | |
| 3712 | </array> | |
| 3713 | </dict> | |
| 3714 | </array> | |
| 3715 | </dict> | |
| 3716 | <key>import-declaration</key> | |
| 3717 | <dict> | |
| 3718 | <key>name</key> | |
| 3719 | <string>meta.import.ts</string> | |
| 3720 | <key>begin</key> | |
| 3721 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type)(?!\s+from))?(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3722 | <key>beginCaptures</key> | |
| 3723 | <dict> | |
| 3724 | <key>1</key> | |
| 3725 | <dict> | |
| 3726 | <key>name</key> | |
| 3727 | <string>keyword.control.export.ts</string> | |
| 3728 | </dict> | |
| 3729 | <key>2</key> | |
| 3730 | <dict> | |
| 3731 | <key>name</key> | |
| 3732 | <string>storage.modifier.ts</string> | |
| 3733 | </dict> | |
| 3734 | <key>3</key> | |
| 3735 | <dict> | |
| 3736 | <key>name</key> | |
| 3737 | <string>keyword.control.import.ts</string> | |
| 3738 | </dict> | |
| 3739 | <key>4</key> | |
| 3740 | <dict> | |
| 3741 | <key>name</key> | |
| 3742 | <string>keyword.control.type.ts</string> | |
| 3743 | </dict> | |
| 3744 | </dict> | |
| 3745 | <key>end</key> | |
| 3746 | <string>(?&lt;!^import|[^\._$[:alnum:]]import)(?=;|$|^)</string> | |
| 3747 | <key>patterns</key> | |
| 3748 | <array> | |
| 3749 | <dict> | |
| 3750 | <key>include</key> | |
| 3751 | <string>#single-line-comment-consuming-line-ending</string> | |
| 3752 | </dict> | |
| 3753 | <dict> | |
| 3754 | <key>include</key> | |
| 3755 | <string>#comment</string> | |
| 3756 | </dict> | |
| 3757 | <dict> | |
| 3758 | <key>include</key> | |
| 3759 | <string>#string</string> | |
| 3760 | </dict> | |
| 3761 | <dict> | |
| 3762 | <key>begin</key> | |
| 3763 | <string>(?&lt;=^import|[^\._$[:alnum:]]import)(?!\s*["'])</string> | |
| 3764 | <key>end</key> | |
| 3765 | <string>\bfrom\b</string> | |
| 3766 | <key>endCaptures</key> | |
| 3767 | <dict> | |
| 3768 | <key>0</key> | |
| 3769 | <dict> | |
| 3770 | <key>name</key> | |
| 3771 | <string>keyword.control.from.ts</string> | |
| 3772 | </dict> | |
| 3773 | </dict> | |
| 3774 | <key>patterns</key> | |
| 3775 | <array> | |
| 3776 | <dict> | |
| 3777 | <key>include</key> | |
| 3778 | <string>#import-export-declaration</string> | |
| 3779 | </dict> | |
| 3780 | </array> | |
| 3781 | </dict> | |
| 3782 | <dict> | |
| 3783 | <key>include</key> | |
| 3784 | <string>#import-export-declaration</string> | |
| 3785 | </dict> | |
| 3786 | </array> | |
| 3787 | </dict> | |
| 3788 | <key>export-declaration</key> | |
| 3789 | <dict> | |
| 3790 | <key>patterns</key> | |
| 3791 | <array> | |
| 3792 | <dict> | |
| 3793 | <key>match</key> | |
| 3794 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\s+(as)\s+(namespace)\s+([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3795 | <key>captures</key> | |
| 3796 | <dict> | |
| 3797 | <key>1</key> | |
| 3798 | <dict> | |
| 3799 | <key>name</key> | |
| 3800 | <string>keyword.control.export.ts</string> | |
| 3801 | </dict> | |
| 3802 | <key>2</key> | |
| 3803 | <dict> | |
| 3804 | <key>name</key> | |
| 3805 | <string>keyword.control.as.ts</string> | |
| 3806 | </dict> | |
| 3807 | <key>3</key> | |
| 3808 | <dict> | |
| 3809 | <key>name</key> | |
| 3810 | <string>storage.type.namespace.ts</string> | |
| 3811 | </dict> | |
| 3812 | <key>4</key> | |
| 3813 | <dict> | |
| 3814 | <key>name</key> | |
| 3815 | <string>entity.name.type.module.ts</string> | |
| 3816 | </dict> | |
| 3817 | </dict> | |
| 3818 | </dict> | |
| 3819 | <dict> | |
| 3820 | <key>name</key> | |
| 3821 | <string>meta.export.default.ts</string> | |
| 3822 | <key>begin</key> | |
| 3823 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))</string> | |
| 3824 | <key>beginCaptures</key> | |
| 3825 | <dict> | |
| 3826 | <key>1</key> | |
| 3827 | <dict> | |
| 3828 | <key>name</key> | |
| 3829 | <string>keyword.control.export.ts</string> | |
| 3830 | </dict> | |
| 3831 | <key>2</key> | |
| 3832 | <dict> | |
| 3833 | <key>name</key> | |
| 3834 | <string>keyword.control.type.ts</string> | |
| 3835 | </dict> | |
| 3836 | <key>3</key> | |
| 3837 | <dict> | |
| 3838 | <key>name</key> | |
| 3839 | <string>keyword.operator.assignment.ts</string> | |
| 3840 | </dict> | |
| 3841 | <key>4</key> | |
| 3842 | <dict> | |
| 3843 | <key>name</key> | |
| 3844 | <string>keyword.control.default.ts</string> | |
| 3845 | </dict> | |
| 3846 | </dict> | |
| 3847 | <key>end</key> | |
| 3848 | <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3849 | <key>patterns</key> | |
| 3850 | <array> | |
| 3851 | <dict> | |
| 3852 | <key>include</key> | |
| 3853 | <string>#interface-declaration</string> | |
| 3854 | </dict> | |
| 3855 | <dict> | |
| 3856 | <key>include</key> | |
| 3857 | <string>#expression</string> | |
| 3858 | </dict> | |
| 3859 | </array> | |
| 3860 | </dict> | |
| 3861 | <dict> | |
| 3862 | <key>name</key> | |
| 3863 | <string>meta.export.ts</string> | |
| 3864 | <key>begin</key> | |
| 3865 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 3866 | <key>beginCaptures</key> | |
| 3867 | <dict> | |
| 3868 | <key>1</key> | |
| 3869 | <dict> | |
| 3870 | <key>name</key> | |
| 3871 | <string>keyword.control.export.ts</string> | |
| 3872 | </dict> | |
| 3873 | <key>2</key> | |
| 3874 | <dict> | |
| 3875 | <key>name</key> | |
| 3876 | <string>keyword.control.type.ts</string> | |
| 3877 | </dict> | |
| 3878 | </dict> | |
| 3879 | <key>end</key> | |
| 3880 | <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3881 | <key>patterns</key> | |
| 3882 | <array> | |
| 3883 | <dict> | |
| 3884 | <key>include</key> | |
| 3885 | <string>#import-export-declaration</string> | |
| 3886 | </dict> | |
| 3887 | </array> | |
| 3888 | </dict> | |
| 3889 | </array> | |
| 3890 | </dict> | |
| 3891 | <key>import-export-declaration</key> | |
| 3892 | <dict> | |
| 3893 | <key>patterns</key> | |
| 3894 | <array> | |
| 3895 | <dict> | |
| 3896 | <key>include</key> | |
| 3897 | <string>#comment</string> | |
| 3898 | </dict> | |
| 3899 | <dict> | |
| 3900 | <key>include</key> | |
| 3901 | <string>#string</string> | |
| 3902 | </dict> | |
| 3903 | <dict> | |
| 3904 | <key>include</key> | |
| 3905 | <string>#import-export-block</string> | |
| 3906 | </dict> | |
| 3907 | <dict> | |
| 3908 | <key>name</key> | |
| 3909 | <string>keyword.control.from.ts</string> | |
| 3910 | <key>match</key> | |
| 3911 | <string>\bfrom\b</string> | |
| 3912 | </dict> | |
| 3913 | <dict> | |
| 3914 | <key>include</key> | |
| 3915 | <string>#import-export-assert-clause</string> | |
| 3916 | </dict> | |
| 3917 | <dict> | |
| 3918 | <key>include</key> | |
| 3919 | <string>#import-export-clause</string> | |
| 3920 | </dict> | |
| 3921 | </array> | |
| 3922 | </dict> | |
| 3923 | <key>import-export-assert-clause</key> | |
| 3924 | <dict> | |
| 3925 | <key>begin</key> | |
| 3926 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(with)|(assert))\s*(\{)</string> | |
| 3927 | <key>beginCaptures</key> | |
| 3928 | <dict> | |
| 3929 | <key>1</key> | |
| 3930 | <dict> | |
| 3931 | <key>name</key> | |
| 3932 | <string>keyword.control.with.ts</string> | |
| 3933 | </dict> | |
| 3934 | <key>2</key> | |
| 3935 | <dict> | |
| 3936 | <key>name</key> | |
| 3937 | <string>keyword.control.assert.ts</string> | |
| 3938 | </dict> | |
| 3939 | <key>3</key> | |
| 3940 | <dict> | |
| 3941 | <key>name</key> | |
| 3942 | <string>punctuation.definition.block.ts</string> | |
| 3943 | </dict> | |
| 3944 | </dict> | |
| 3945 | <key>end</key> | |
| 3946 | <string>\}</string> | |
| 3947 | <key>endCaptures</key> | |
| 3948 | <dict> | |
| 3949 | <key>0</key> | |
| 3950 | <dict> | |
| 3951 | <key>name</key> | |
| 3952 | <string>punctuation.definition.block.ts</string> | |
| 3953 | </dict> | |
| 3954 | </dict> | |
| 3955 | <key>patterns</key> | |
| 3956 | <array> | |
| 3957 | <dict> | |
| 3958 | <key>include</key> | |
| 3959 | <string>#comment</string> | |
| 3960 | </dict> | |
| 3961 | <dict> | |
| 3962 | <key>include</key> | |
| 3963 | <string>#string</string> | |
| 3964 | </dict> | |
| 3965 | <dict> | |
| 3966 | <key>name</key> | |
| 3967 | <string>meta.object-literal.key.ts</string> | |
| 3968 | <key>match</key> | |
| 3969 | <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 3970 | </dict> | |
| 3971 | <dict> | |
| 3972 | <key>name</key> | |
| 3973 | <string>punctuation.separator.key-value.ts</string> | |
| 3974 | <key>match</key> | |
| 3975 | <string>:</string> | |
| 3976 | </dict> | |
| 3977 | </array> | |
| 3978 | </dict> | |
| 3979 | <key>import-export-block</key> | |
| 3980 | <dict> | |
| 3981 | <key>name</key> | |
| 3982 | <string>meta.block.ts</string> | |
| 3983 | <key>begin</key> | |
| 3984 | <string>\{</string> | |
| 3985 | <key>beginCaptures</key> | |
| 3986 | <dict> | |
| 3987 | <key>0</key> | |
| 3988 | <dict> | |
| 3989 | <key>name</key> | |
| 3990 | <string>punctuation.definition.block.ts</string> | |
| 3991 | </dict> | |
| 3992 | </dict> | |
| 3993 | <key>end</key> | |
| 3994 | <string>\}</string> | |
| 3995 | <key>endCaptures</key> | |
| 3996 | <dict> | |
| 3997 | <key>0</key> | |
| 3998 | <dict> | |
| 3999 | <key>name</key> | |
| 4000 | <string>punctuation.definition.block.ts</string> | |
| 4001 | </dict> | |
| 4002 | </dict> | |
| 4003 | <key>patterns</key> | |
| 4004 | <array> | |
| 4005 | <dict> | |
| 4006 | <key>include</key> | |
| 4007 | <string>#import-export-clause</string> | |
| 4008 | </dict> | |
| 4009 | </array> | |
| 4010 | </dict> | |
| 4011 | <key>import-export-clause</key> | |
| 4012 | <dict> | |
| 4013 | <key>patterns</key> | |
| 4014 | <array> | |
| 4015 | <dict> | |
| 4016 | <key>include</key> | |
| 4017 | <string>#comment</string> | |
| 4018 | </dict> | |
| 4019 | <dict> | |
| 4020 | <key>match</key> | |
| 4021 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string> | |
| 4022 | <key>captures</key> | |
| 4023 | <dict> | |
| 4024 | <key>1</key> | |
| 4025 | <dict> | |
| 4026 | <key>name</key> | |
| 4027 | <string>keyword.control.type.ts</string> | |
| 4028 | </dict> | |
| 4029 | <key>2</key> | |
| 4030 | <dict> | |
| 4031 | <key>name</key> | |
| 4032 | <string>keyword.control.default.ts</string> | |
| 4033 | </dict> | |
| 4034 | <key>3</key> | |
| 4035 | <dict> | |
| 4036 | <key>name</key> | |
| 4037 | <string>constant.language.import-export-all.ts</string> | |
| 4038 | </dict> | |
| 4039 | <key>4</key> | |
| 4040 | <dict> | |
| 4041 | <key>name</key> | |
| 4042 | <string>variable.other.readwrite.ts</string> | |
| 4043 | </dict> | |
| 4044 | <key>5</key> | |
| 4045 | <dict> | |
| 4046 | <key>name</key> | |
| 4047 | <string>string.quoted.alias.ts</string> | |
| 4048 | </dict> | |
| 4049 | <key>12</key> | |
| 4050 | <dict> | |
| 4051 | <key>name</key> | |
| 4052 | <string>keyword.control.as.ts</string> | |
| 4053 | </dict> | |
| 4054 | <key>13</key> | |
| 4055 | <dict> | |
| 4056 | <key>name</key> | |
| 4057 | <string>keyword.control.default.ts</string> | |
| 4058 | </dict> | |
| 4059 | <key>14</key> | |
| 4060 | <dict> | |
| 4061 | <key>name</key> | |
| 4062 | <string>variable.other.readwrite.alias.ts</string> | |
| 4063 | </dict> | |
| 4064 | <key>15</key> | |
| 4065 | <dict> | |
| 4066 | <key>name</key> | |
| 4067 | <string>string.quoted.alias.ts</string> | |
| 4068 | </dict> | |
| 4069 | </dict> | |
| 4070 | </dict> | |
| 4071 | <dict> | |
| 4072 | <key>include</key> | |
| 4073 | <string>#punctuation-comma</string> | |
| 4074 | </dict> | |
| 4075 | <dict> | |
| 4076 | <key>name</key> | |
| 4077 | <string>constant.language.import-export-all.ts</string> | |
| 4078 | <key>match</key> | |
| 4079 | <string>\*</string> | |
| 4080 | </dict> | |
| 4081 | <dict> | |
| 4082 | <key>name</key> | |
| 4083 | <string>keyword.control.default.ts</string> | |
| 4084 | <key>match</key> | |
| 4085 | <string>\b(default)\b</string> | |
| 4086 | </dict> | |
| 4087 | <dict> | |
| 4088 | <key>match</key> | |
| 4089 | <string>(?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string> | |
| 4090 | <key>captures</key> | |
| 4091 | <dict> | |
| 4092 | <key>1</key> | |
| 4093 | <dict> | |
| 4094 | <key>name</key> | |
| 4095 | <string>keyword.control.type.ts</string> | |
| 4096 | </dict> | |
| 4097 | <key>2</key> | |
| 4098 | <dict> | |
| 4099 | <key>name</key> | |
| 4100 | <string>variable.other.readwrite.alias.ts</string> | |
| 4101 | </dict> | |
| 4102 | <key>3</key> | |
| 4103 | <dict> | |
| 4104 | <key>name</key> | |
| 4105 | <string>string.quoted.alias.ts</string> | |
| 4106 | </dict> | |
| 4107 | </dict> | |
| 4108 | </dict> | |
| 4109 | </array> | |
| 4110 | </dict> | |
| 4111 | <key>switch-statement</key> | |
| 4112 | <dict> | |
| 4113 | <key>name</key> | |
| 4114 | <string>switch-statement.expr.ts</string> | |
| 4115 | <key>begin</key> | |
| 4116 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bswitch\s*\()</string> | |
| 4117 | <key>end</key> | |
| 4118 | <string>\}</string> | |
| 4119 | <key>endCaptures</key> | |
| 4120 | <dict> | |
| 4121 | <key>0</key> | |
| 4122 | <dict> | |
| 4123 | <key>name</key> | |
| 4124 | <string>punctuation.definition.block.ts</string> | |
| 4125 | </dict> | |
| 4126 | </dict> | |
| 4127 | <key>patterns</key> | |
| 4128 | <array> | |
| 4129 | <dict> | |
| 4130 | <key>include</key> | |
| 4131 | <string>#comment</string> | |
| 4132 | </dict> | |
| 4133 | <dict> | |
| 4134 | <key>name</key> | |
| 4135 | <string>switch-expression.expr.ts</string> | |
| 4136 | <key>begin</key> | |
| 4137 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(switch)\s*(\()</string> | |
| 4138 | <key>beginCaptures</key> | |
| 4139 | <dict> | |
| 4140 | <key>1</key> | |
| 4141 | <dict> | |
| 4142 | <key>name</key> | |
| 4143 | <string>keyword.control.switch.ts</string> | |
| 4144 | </dict> | |
| 4145 | <key>2</key> | |
| 4146 | <dict> | |
| 4147 | <key>name</key> | |
| 4148 | <string>meta.brace.round.ts</string> | |
| 4149 | </dict> | |
| 4150 | </dict> | |
| 4151 | <key>end</key> | |
| 4152 | <string>\)</string> | |
| 4153 | <key>endCaptures</key> | |
| 4154 | <dict> | |
| 4155 | <key>0</key> | |
| 4156 | <dict> | |
| 4157 | <key>name</key> | |
| 4158 | <string>meta.brace.round.ts</string> | |
| 4159 | </dict> | |
| 4160 | </dict> | |
| 4161 | <key>patterns</key> | |
| 4162 | <array> | |
| 4163 | <dict> | |
| 4164 | <key>include</key> | |
| 4165 | <string>#expression</string> | |
| 4166 | </dict> | |
| 4167 | </array> | |
| 4168 | </dict> | |
| 4169 | <dict> | |
| 4170 | <key>name</key> | |
| 4171 | <string>switch-block.expr.ts</string> | |
| 4172 | <key>begin</key> | |
| 4173 | <string>\{</string> | |
| 4174 | <key>beginCaptures</key> | |
| 4175 | <dict> | |
| 4176 | <key>0</key> | |
| 4177 | <dict> | |
| 4178 | <key>name</key> | |
| 4179 | <string>punctuation.definition.block.ts</string> | |
| 4180 | </dict> | |
| 4181 | </dict> | |
| 4182 | <key>end</key> | |
| 4183 | <string>(?=\})</string> | |
| 4184 | <key>patterns</key> | |
| 4185 | <array> | |
| 4186 | <dict> | |
| 4187 | <key>name</key> | |
| 4188 | <string>case-clause.expr.ts</string> | |
| 4189 | <key>begin</key> | |
| 4190 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 4191 | <key>beginCaptures</key> | |
| 4192 | <dict> | |
| 4193 | <key>1</key> | |
| 4194 | <dict> | |
| 4195 | <key>name</key> | |
| 4196 | <string>keyword.control.switch.ts</string> | |
| 4197 | </dict> | |
| 4198 | </dict> | |
| 4199 | <key>end</key> | |
| 4200 | <string>(?=:)</string> | |
| 4201 | <key>patterns</key> | |
| 4202 | <array> | |
| 4203 | <dict> | |
| 4204 | <key>include</key> | |
| 4205 | <string>#expression</string> | |
| 4206 | </dict> | |
| 4207 | </array> | |
| 4208 | </dict> | |
| 4209 | <dict> | |
| 4210 | <key>begin</key> | |
| 4211 | <string>(:)\s*(\{)</string> | |
| 4212 | <key>beginCaptures</key> | |
| 4213 | <dict> | |
| 4214 | <key>1</key> | |
| 4215 | <dict> | |
| 4216 | <key>name</key> | |
| 4217 | <string>case-clause.expr.ts punctuation.definition.section.case-statement.ts</string> | |
| 4218 | </dict> | |
| 4219 | <key>2</key> | |
| 4220 | <dict> | |
| 4221 | <key>name</key> | |
| 4222 | <string>meta.block.ts punctuation.definition.block.ts</string> | |
| 4223 | </dict> | |
| 4224 | </dict> | |
| 4225 | <key>end</key> | |
| 4226 | <string>\}</string> | |
| 4227 | <key>endCaptures</key> | |
| 4228 | <dict> | |
| 4229 | <key>0</key> | |
| 4230 | <dict> | |
| 4231 | <key>name</key> | |
| 4232 | <string>meta.block.ts punctuation.definition.block.ts</string> | |
| 4233 | </dict> | |
| 4234 | </dict> | |
| 4235 | <key>contentName</key> | |
| 4236 | <string>meta.block.ts</string> | |
| 4237 | <key>patterns</key> | |
| 4238 | <array> | |
| 4239 | <dict> | |
| 4240 | <key>include</key> | |
| 4241 | <string>#statements</string> | |
| 4242 | </dict> | |
| 4243 | </array> | |
| 4244 | </dict> | |
| 4245 | <dict> | |
| 4246 | <key>match</key> | |
| 4247 | <string>(:)</string> | |
| 4248 | <key>captures</key> | |
| 4249 | <dict> | |
| 4250 | <key>0</key> | |
| 4251 | <dict> | |
| 4252 | <key>name</key> | |
| 4253 | <string>case-clause.expr.ts punctuation.definition.section.case-statement.ts</string> | |
| 4254 | </dict> | |
| 4255 | </dict> | |
| 4256 | </dict> | |
| 4257 | <dict> | |
| 4258 | <key>include</key> | |
| 4259 | <string>#statements</string> | |
| 4260 | </dict> | |
| 4261 | </array> | |
| 4262 | </dict> | |
| 4263 | </array> | |
| 4264 | </dict> | |
| 4265 | <key>for-loop</key> | |
| 4266 | <dict> | |
| 4267 | <key>begin</key> | |
| 4268 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())</string> | |
| 4269 | <key>beginCaptures</key> | |
| 4270 | <dict> | |
| 4271 | <key>0</key> | |
| 4272 | <dict> | |
| 4273 | <key>name</key> | |
| 4274 | <string>keyword.control.loop.ts</string> | |
| 4275 | </dict> | |
| 4276 | </dict> | |
| 4277 | <key>end</key> | |
| 4278 | <string>(?&lt;=\))</string> | |
| 4279 | <key>patterns</key> | |
| 4280 | <array> | |
| 4281 | <dict> | |
| 4282 | <key>include</key> | |
| 4283 | <string>#comment</string> | |
| 4284 | </dict> | |
| 4285 | <dict> | |
| 4286 | <key>name</key> | |
| 4287 | <string>keyword.control.loop.ts</string> | |
| 4288 | <key>match</key> | |
| 4289 | <string>await</string> | |
| 4290 | </dict> | |
| 4291 | <dict> | |
| 4292 | <key>begin</key> | |
| 4293 | <string>\(</string> | |
| 4294 | <key>beginCaptures</key> | |
| 4295 | <dict> | |
| 4296 | <key>0</key> | |
| 4297 | <dict> | |
| 4298 | <key>name</key> | |
| 4299 | <string>meta.brace.round.ts</string> | |
| 4300 | </dict> | |
| 4301 | </dict> | |
| 4302 | <key>end</key> | |
| 4303 | <string>\)</string> | |
| 4304 | <key>endCaptures</key> | |
| 4305 | <dict> | |
| 4306 | <key>0</key> | |
| 4307 | <dict> | |
| 4308 | <key>name</key> | |
| 4309 | <string>meta.brace.round.ts</string> | |
| 4310 | </dict> | |
| 4311 | </dict> | |
| 4312 | <key>patterns</key> | |
| 4313 | <array> | |
| 4314 | <dict> | |
| 4315 | <key>include</key> | |
| 4316 | <string>#var-expr</string> | |
| 4317 | </dict> | |
| 4318 | <dict> | |
| 4319 | <key>include</key> | |
| 4320 | <string>#expression</string> | |
| 4321 | </dict> | |
| 4322 | <dict> | |
| 4323 | <key>include</key> | |
| 4324 | <string>#punctuation-semicolon</string> | |
| 4325 | </dict> | |
| 4326 | </array> | |
| 4327 | </dict> | |
| 4328 | </array> | |
| 4329 | </dict> | |
| 4330 | <key>if-statement</key> | |
| 4331 | <dict> | |
| 4332 | <key>patterns</key> | |
| 4333 | <array> | |
| 4334 | <dict> | |
| 4335 | <key>begin</key> | |
| 4336 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bif\s*(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))\s*(?!\{))</string> | |
| 4337 | <key>end</key> | |
| 4338 | <string>(?=;|$|\})</string> | |
| 4339 | <key>patterns</key> | |
| 4340 | <array> | |
| 4341 | <dict> | |
| 4342 | <key>include</key> | |
| 4343 | <string>#comment</string> | |
| 4344 | </dict> | |
| 4345 | <dict> | |
| 4346 | <key>begin</key> | |
| 4347 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(if)\s*(\()</string> | |
| 4348 | <key>beginCaptures</key> | |
| 4349 | <dict> | |
| 4350 | <key>1</key> | |
| 4351 | <dict> | |
| 4352 | <key>name</key> | |
| 4353 | <string>keyword.control.conditional.ts</string> | |
| 4354 | </dict> | |
| 4355 | <key>2</key> | |
| 4356 | <dict> | |
| 4357 | <key>name</key> | |
| 4358 | <string>meta.brace.round.ts</string> | |
| 4359 | </dict> | |
| 4360 | </dict> | |
| 4361 | <key>end</key> | |
| 4362 | <string>\)</string> | |
| 4363 | <key>endCaptures</key> | |
| 4364 | <dict> | |
| 4365 | <key>0</key> | |
| 4366 | <dict> | |
| 4367 | <key>name</key> | |
| 4368 | <string>meta.brace.round.ts</string> | |
| 4369 | </dict> | |
| 4370 | </dict> | |
| 4371 | <key>patterns</key> | |
| 4372 | <array> | |
| 4373 | <dict> | |
| 4374 | <key>include</key> | |
| 4375 | <string>#expression</string> | |
| 4376 | </dict> | |
| 4377 | </array> | |
| 4378 | </dict> | |
| 4379 | <dict> | |
| 4380 | <key>name</key> | |
| 4381 | <string>string.regexp.ts</string> | |
| 4382 | <key>begin</key> | |
| 4383 | <string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 4384 | <key>beginCaptures</key> | |
| 4385 | <dict> | |
| 4386 | <key>0</key> | |
| 4387 | <dict> | |
| 4388 | <key>name</key> | |
| 4389 | <string>punctuation.definition.string.begin.ts</string> | |
| 4390 | </dict> | |
| 4391 | </dict> | |
| 4392 | <key>end</key> | |
| 4393 | <string>(/)([dgimsuvy]*)</string> | |
| 4394 | <key>endCaptures</key> | |
| 4395 | <dict> | |
| 4396 | <key>1</key> | |
| 4397 | <dict> | |
| 4398 | <key>name</key> | |
| 4399 | <string>punctuation.definition.string.end.ts</string> | |
| 4400 | </dict> | |
| 4401 | <key>2</key> | |
| 4402 | <dict> | |
| 4403 | <key>name</key> | |
| 4404 | <string>keyword.other.ts</string> | |
| 4405 | </dict> | |
| 4406 | </dict> | |
| 4407 | <key>patterns</key> | |
| 4408 | <array> | |
| 4409 | <dict> | |
| 4410 | <key>include</key> | |
| 4411 | <string>#regexp</string> | |
| 4412 | </dict> | |
| 4413 | </array> | |
| 4414 | </dict> | |
| 4415 | <dict> | |
| 4416 | <key>include</key> | |
| 4417 | <string>#statements</string> | |
| 4418 | </dict> | |
| 4419 | </array> | |
| 4420 | </dict> | |
| 4421 | </array> | |
| 4422 | </dict> | |
| 4423 | <key>decl-block</key> | |
| 4424 | <dict> | |
| 4425 | <key>name</key> | |
| 4426 | <string>meta.block.ts</string> | |
| 4427 | <key>begin</key> | |
| 4428 | <string>\{</string> | |
| 4429 | <key>beginCaptures</key> | |
| 4430 | <dict> | |
| 4431 | <key>0</key> | |
| 4432 | <dict> | |
| 4433 | <key>name</key> | |
| 4434 | <string>punctuation.definition.block.ts</string> | |
| 4435 | </dict> | |
| 4436 | </dict> | |
| 4437 | <key>end</key> | |
| 4438 | <string>\}</string> | |
| 4439 | <key>endCaptures</key> | |
| 4440 | <dict> | |
| 4441 | <key>0</key> | |
| 4442 | <dict> | |
| 4443 | <key>name</key> | |
| 4444 | <string>punctuation.definition.block.ts</string> | |
| 4445 | </dict> | |
| 4446 | </dict> | |
| 4447 | <key>patterns</key> | |
| 4448 | <array> | |
| 4449 | <dict> | |
| 4450 | <key>include</key> | |
| 4451 | <string>#statements</string> | |
| 4452 | </dict> | |
| 4453 | </array> | |
| 4454 | </dict> | |
| 4455 | <key>after-operator-block-as-object-literal</key> | |
| 4456 | <dict> | |
| 4457 | <key>name</key> | |
| 4458 | <string>meta.objectliteral.ts</string> | |
| 4459 | <key>begin</key> | |
| 4460 | <string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!&gt;]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string> | |
| 4461 | <key>beginCaptures</key> | |
| 4462 | <dict> | |
| 4463 | <key>1</key> | |
| 4464 | <dict> | |
| 4465 | <key>name</key> | |
| 4466 | <string>punctuation.definition.block.ts</string> | |
| 4467 | </dict> | |
| 4468 | </dict> | |
| 4469 | <key>end</key> | |
| 4470 | <string>\}</string> | |
| 4471 | <key>endCaptures</key> | |
| 4472 | <dict> | |
| 4473 | <key>0</key> | |
| 4474 | <dict> | |
| 4475 | <key>name</key> | |
| 4476 | <string>punctuation.definition.block.ts</string> | |
| 4477 | </dict> | |
| 4478 | </dict> | |
| 4479 | <key>patterns</key> | |
| 4480 | <array> | |
| 4481 | <dict> | |
| 4482 | <key>include</key> | |
| 4483 | <string>#object-member</string> | |
| 4484 | </dict> | |
| 4485 | </array> | |
| 4486 | </dict> | |
| 4487 | <key>object-literal</key> | |
| 4488 | <dict> | |
| 4489 | <key>name</key> | |
| 4490 | <string>meta.objectliteral.ts</string> | |
| 4491 | <key>begin</key> | |
| 4492 | <string>\{</string> | |
| 4493 | <key>beginCaptures</key> | |
| 4494 | <dict> | |
| 4495 | <key>0</key> | |
| 4496 | <dict> | |
| 4497 | <key>name</key> | |
| 4498 | <string>punctuation.definition.block.ts</string> | |
| 4499 | </dict> | |
| 4500 | </dict> | |
| 4501 | <key>end</key> | |
| 4502 | <string>\}</string> | |
| 4503 | <key>endCaptures</key> | |
| 4504 | <dict> | |
| 4505 | <key>0</key> | |
| 4506 | <dict> | |
| 4507 | <key>name</key> | |
| 4508 | <string>punctuation.definition.block.ts</string> | |
| 4509 | </dict> | |
| 4510 | </dict> | |
| 4511 | <key>patterns</key> | |
| 4512 | <array> | |
| 4513 | <dict> | |
| 4514 | <key>include</key> | |
| 4515 | <string>#object-member</string> | |
| 4516 | </dict> | |
| 4517 | </array> | |
| 4518 | </dict> | |
| 4519 | <key>object-member</key> | |
| 4520 | <dict> | |
| 4521 | <key>patterns</key> | |
| 4522 | <array> | |
| 4523 | <dict> | |
| 4524 | <key>include</key> | |
| 4525 | <string>#comment</string> | |
| 4526 | </dict> | |
| 4527 | <dict> | |
| 4528 | <key>include</key> | |
| 4529 | <string>#object-literal-method-declaration</string> | |
| 4530 | </dict> | |
| 4531 | <dict> | |
| 4532 | <key>name</key> | |
| 4533 | <string>meta.object.member.ts meta.object-literal.key.ts</string> | |
| 4534 | <key>begin</key> | |
| 4535 | <string>(?=\[)</string> | |
| 4536 | <key>end</key> | |
| 4537 | <string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string> | |
| 4538 | <key>patterns</key> | |
| 4539 | <array> | |
| 4540 | <dict> | |
| 4541 | <key>include</key> | |
| 4542 | <string>#comment</string> | |
| 4543 | </dict> | |
| 4544 | <dict> | |
| 4545 | <key>include</key> | |
| 4546 | <string>#array-literal</string> | |
| 4547 | </dict> | |
| 4548 | </array> | |
| 4549 | </dict> | |
| 4550 | <dict> | |
| 4551 | <key>name</key> | |
| 4552 | <string>meta.object.member.ts meta.object-literal.key.ts</string> | |
| 4553 | <key>begin</key> | |
| 4554 | <string>(?=[\'\"\`])</string> | |
| 4555 | <key>end</key> | |
| 4556 | <string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as|satisifies)\s+))))</string> | |
| 4557 | <key>patterns</key> | |
| 4558 | <array> | |
| 4559 | <dict> | |
| 4560 | <key>include</key> | |
| 4561 | <string>#comment</string> | |
| 4562 | </dict> | |
| 4563 | <dict> | |
| 4564 | <key>include</key> | |
| 4565 | <string>#string</string> | |
| 4566 | </dict> | |
| 4567 | </array> | |
| 4568 | </dict> | |
| 4569 | <dict> | |
| 4570 | <key>name</key> | |
| 4571 | <string>meta.object.member.ts meta.object-literal.key.ts</string> | |
| 4572 | <key>begin</key> | |
| 4573 | <string>(?x)(?=(\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 4574 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 4575 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 4576 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 4577 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 4578 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 4579 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 4580 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 4581 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 4582 | )(?!\$)))</string> | |
| 4583 | <key>end</key> | |
| 4584 | <string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as|satisifies\s+))</string> | |
| 4585 | <key>patterns</key> | |
| 4586 | <array> | |
| 4587 | <dict> | |
| 4588 | <key>include</key> | |
| 4589 | <string>#comment</string> | |
| 4590 | </dict> | |
| 4591 | <dict> | |
| 4592 | <key>include</key> | |
| 4593 | <string>#numeric-literal</string> | |
| 4594 | </dict> | |
| 4595 | </array> | |
| 4596 | </dict> | |
| 4597 | <dict> | |
| 4598 | <key>name</key> | |
| 4599 | <string>meta.method.declaration.ts</string> | |
| 4600 | <key>begin</key> | |
| 4601 | <string>(?&lt;=[\]\'\"\`])(?=\s*[\(\&lt;])</string> | |
| 4602 | <key>end</key> | |
| 4603 | <string>(?=\}|;|,)|(?&lt;=\})</string> | |
| 4604 | <key>patterns</key> | |
| 4605 | <array> | |
| 4606 | <dict> | |
| 4607 | <key>include</key> | |
| 4608 | <string>#function-body</string> | |
| 4609 | </dict> | |
| 4610 | </array> | |
| 4611 | </dict> | |
| 4612 | <dict> | |
| 4613 | <key>name</key> | |
| 4614 | <string>meta.object.member.ts</string> | |
| 4615 | <key>match</key> | |
| 4616 | <string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 4617 | <key>captures</key> | |
| 4618 | <dict> | |
| 4619 | <key>0</key> | |
| 4620 | <dict> | |
| 4621 | <key>name</key> | |
| 4622 | <string>meta.object-literal.key.ts</string> | |
| 4623 | </dict> | |
| 4624 | <key>1</key> | |
| 4625 | <dict> | |
| 4626 | <key>name</key> | |
| 4627 | <string>constant.numeric.decimal.ts</string> | |
| 4628 | </dict> | |
| 4629 | </dict> | |
| 4630 | </dict> | |
| 4631 | <dict> | |
| 4632 | <key>name</key> | |
| 4633 | <string>meta.object.member.ts</string> | |
| 4634 | <key>match</key> | |
| 4635 | <string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*( | |
| 4636 | ((async\s+)?( | |
| 4637 | (function\s*[(&lt;*]) | | |
| 4638 | (function\s+) | | |
| 4639 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 4640 | )) | | |
| 4641 | ((async\s*)?( | |
| 4642 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 4643 | # sure shot arrow functions even if =&gt; is on new line | |
| 4644 | ( | |
| 4645 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 4646 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 4647 | ( | |
| 4648 | ([)]\s*:) | # (): | |
| 4649 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 4650 | ) | |
| 4651 | ) | | |
| 4652 | ||
| 4653 | # arrow function possible to detect only with =&gt; on same line | |
| 4654 | ( | |
| 4655 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 4656 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 4657 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 4658 | \s*=&gt; # arrow operator | |
| 4659 | ) | |
| 4660 | )) | |
| 4661 | )))</string> | |
| 4662 | <key>captures</key> | |
| 4663 | <dict> | |
| 4664 | <key>0</key> | |
| 4665 | <dict> | |
| 4666 | <key>name</key> | |
| 4667 | <string>meta.object-literal.key.ts</string> | |
| 4668 | </dict> | |
| 4669 | <key>1</key> | |
| 4670 | <dict> | |
| 4671 | <key>name</key> | |
| 4672 | <string>entity.name.function.ts</string> | |
| 4673 | </dict> | |
| 4674 | </dict> | |
| 4675 | </dict> | |
| 4676 | <dict> | |
| 4677 | <key>name</key> | |
| 4678 | <string>meta.object.member.ts</string> | |
| 4679 | <key>match</key> | |
| 4680 | <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 4681 | <key>captures</key> | |
| 4682 | <dict> | |
| 4683 | <key>0</key> | |
| 4684 | <dict> | |
| 4685 | <key>name</key> | |
| 4686 | <string>meta.object-literal.key.ts</string> | |
| 4687 | </dict> | |
| 4688 | </dict> | |
| 4689 | </dict> | |
| 4690 | <dict> | |
| 4691 | <key>name</key> | |
| 4692 | <string>meta.object.member.ts</string> | |
| 4693 | <key>begin</key> | |
| 4694 | <string>\.\.\.</string> | |
| 4695 | <key>beginCaptures</key> | |
| 4696 | <dict> | |
| 4697 | <key>0</key> | |
| 4698 | <dict> | |
| 4699 | <key>name</key> | |
| 4700 | <string>keyword.operator.spread.ts</string> | |
| 4701 | </dict> | |
| 4702 | </dict> | |
| 4703 | <key>end</key> | |
| 4704 | <string>(?=,|\})</string> | |
| 4705 | <key>patterns</key> | |
| 4706 | <array> | |
| 4707 | <dict> | |
| 4708 | <key>include</key> | |
| 4709 | <string>#expression</string> | |
| 4710 | </dict> | |
| 4711 | </array> | |
| 4712 | </dict> | |
| 4713 | <dict> | |
| 4714 | <key>name</key> | |
| 4715 | <string>meta.object.member.ts</string> | |
| 4716 | <key>match</key> | |
| 4717 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$|\/\/|\/\*)</string> | |
| 4718 | <key>captures</key> | |
| 4719 | <dict> | |
| 4720 | <key>1</key> | |
| 4721 | <dict> | |
| 4722 | <key>name</key> | |
| 4723 | <string>variable.other.readwrite.ts</string> | |
| 4724 | </dict> | |
| 4725 | </dict> | |
| 4726 | </dict> | |
| 4727 | <dict> | |
| 4728 | <key>name</key> | |
| 4729 | <string>meta.object.member.ts</string> | |
| 4730 | <key>match</key> | |
| 4731 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*([,}]|$))</string> | |
| 4732 | <key>captures</key> | |
| 4733 | <dict> | |
| 4734 | <key>1</key> | |
| 4735 | <dict> | |
| 4736 | <key>name</key> | |
| 4737 | <string>keyword.control.as.ts</string> | |
| 4738 | </dict> | |
| 4739 | <key>2</key> | |
| 4740 | <dict> | |
| 4741 | <key>name</key> | |
| 4742 | <string>storage.modifier.ts</string> | |
| 4743 | </dict> | |
| 4744 | </dict> | |
| 4745 | </dict> | |
| 4746 | <dict> | |
| 4747 | <key>name</key> | |
| 4748 | <string>meta.object.member.ts</string> | |
| 4749 | <key>begin</key> | |
| 4750 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string> | |
| 4751 | <key>beginCaptures</key> | |
| 4752 | <dict> | |
| 4753 | <key>1</key> | |
| 4754 | <dict> | |
| 4755 | <key>name</key> | |
| 4756 | <string>keyword.control.as.ts</string> | |
| 4757 | </dict> | |
| 4758 | <key>2</key> | |
| 4759 | <dict> | |
| 4760 | <key>name</key> | |
| 4761 | <string>keyword.control.satisfies.ts</string> | |
| 4762 | </dict> | |
| 4763 | </dict> | |
| 4764 | <key>end</key> | |
| 4765 | <string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+))</string> | |
| 4766 | <key>patterns</key> | |
| 4767 | <array> | |
| 4768 | <dict> | |
| 4769 | <key>include</key> | |
| 4770 | <string>#type</string> | |
| 4771 | </dict> | |
| 4772 | </array> | |
| 4773 | </dict> | |
| 4774 | <dict> | |
| 4775 | <key>name</key> | |
| 4776 | <string>meta.object.member.ts</string> | |
| 4777 | <key>begin</key> | |
| 4778 | <string>(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)</string> | |
| 4779 | <key>end</key> | |
| 4780 | <string>(?=,|\}|$|\/\/|\/\*)</string> | |
| 4781 | <key>patterns</key> | |
| 4782 | <array> | |
| 4783 | <dict> | |
| 4784 | <key>include</key> | |
| 4785 | <string>#expression</string> | |
| 4786 | </dict> | |
| 4787 | </array> | |
| 4788 | </dict> | |
| 4789 | <dict> | |
| 4790 | <key>name</key> | |
| 4791 | <string>meta.object.member.ts</string> | |
| 4792 | <key>begin</key> | |
| 4793 | <string>:</string> | |
| 4794 | <key>beginCaptures</key> | |
| 4795 | <dict> | |
| 4796 | <key>0</key> | |
| 4797 | <dict> | |
| 4798 | <key>name</key> | |
| 4799 | <string>meta.object-literal.key.ts punctuation.separator.key-value.ts</string> | |
| 4800 | </dict> | |
| 4801 | </dict> | |
| 4802 | <key>end</key> | |
| 4803 | <string>(?=,|\})</string> | |
| 4804 | <key>patterns</key> | |
| 4805 | <array> | |
| 4806 | <dict> | |
| 4807 | <key>begin</key> | |
| 4808 | <string>(?&lt;=:)\s*(async)?(?=\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4809 | <key>beginCaptures</key> | |
| 4810 | <dict> | |
| 4811 | <key>1</key> | |
| 4812 | <dict> | |
| 4813 | <key>name</key> | |
| 4814 | <string>storage.modifier.async.ts</string> | |
| 4815 | </dict> | |
| 4816 | </dict> | |
| 4817 | <key>end</key> | |
| 4818 | <string>(?&lt;=\))</string> | |
| 4819 | <key>patterns</key> | |
| 4820 | <array> | |
| 4821 | <dict> | |
| 4822 | <key>include</key> | |
| 4823 | <string>#type-parameters</string> | |
| 4824 | </dict> | |
| 4825 | <dict> | |
| 4826 | <key>begin</key> | |
| 4827 | <string>\(</string> | |
| 4828 | <key>beginCaptures</key> | |
| 4829 | <dict> | |
| 4830 | <key>0</key> | |
| 4831 | <dict> | |
| 4832 | <key>name</key> | |
| 4833 | <string>meta.brace.round.ts</string> | |
| 4834 | </dict> | |
| 4835 | </dict> | |
| 4836 | <key>end</key> | |
| 4837 | <string>\)</string> | |
| 4838 | <key>endCaptures</key> | |
| 4839 | <dict> | |
| 4840 | <key>0</key> | |
| 4841 | <dict> | |
| 4842 | <key>name</key> | |
| 4843 | <string>meta.brace.round.ts</string> | |
| 4844 | </dict> | |
| 4845 | </dict> | |
| 4846 | <key>patterns</key> | |
| 4847 | <array> | |
| 4848 | <dict> | |
| 4849 | <key>include</key> | |
| 4850 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4851 | </dict> | |
| 4852 | </array> | |
| 4853 | </dict> | |
| 4854 | </array> | |
| 4855 | </dict> | |
| 4856 | <dict> | |
| 4857 | <key>begin</key> | |
| 4858 | <string>(?&lt;=:)\s*(async)?\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4859 | <key>beginCaptures</key> | |
| 4860 | <dict> | |
| 4861 | <key>1</key> | |
| 4862 | <dict> | |
| 4863 | <key>name</key> | |
| 4864 | <string>storage.modifier.async.ts</string> | |
| 4865 | </dict> | |
| 4866 | <key>2</key> | |
| 4867 | <dict> | |
| 4868 | <key>name</key> | |
| 4869 | <string>meta.brace.round.ts</string> | |
| 4870 | </dict> | |
| 4871 | </dict> | |
| 4872 | <key>end</key> | |
| 4873 | <string>\)</string> | |
| 4874 | <key>endCaptures</key> | |
| 4875 | <dict> | |
| 4876 | <key>0</key> | |
| 4877 | <dict> | |
| 4878 | <key>name</key> | |
| 4879 | <string>meta.brace.round.ts</string> | |
| 4880 | </dict> | |
| 4881 | </dict> | |
| 4882 | <key>patterns</key> | |
| 4883 | <array> | |
| 4884 | <dict> | |
| 4885 | <key>include</key> | |
| 4886 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4887 | </dict> | |
| 4888 | </array> | |
| 4889 | </dict> | |
| 4890 | <dict> | |
| 4891 | <key>begin</key> | |
| 4892 | <string>(?&lt;=:)\s*(async)?\s*(?=\&lt;\s*$)</string> | |
| 4893 | <key>beginCaptures</key> | |
| 4894 | <dict> | |
| 4895 | <key>1</key> | |
| 4896 | <dict> | |
| 4897 | <key>name</key> | |
| 4898 | <string>storage.modifier.async.ts</string> | |
| 4899 | </dict> | |
| 4900 | </dict> | |
| 4901 | <key>end</key> | |
| 4902 | <string>(?&lt;=\&gt;)</string> | |
| 4903 | <key>patterns</key> | |
| 4904 | <array> | |
| 4905 | <dict> | |
| 4906 | <key>include</key> | |
| 4907 | <string>#type-parameters</string> | |
| 4908 | </dict> | |
| 4909 | </array> | |
| 4910 | </dict> | |
| 4911 | <dict> | |
| 4912 | <key>begin</key> | |
| 4913 | <string>(?&lt;=\&gt;)\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4914 | <key>beginCaptures</key> | |
| 4915 | <dict> | |
| 4916 | <key>1</key> | |
| 4917 | <dict> | |
| 4918 | <key>name</key> | |
| 4919 | <string>meta.brace.round.ts</string> | |
| 4920 | </dict> | |
| 4921 | </dict> | |
| 4922 | <key>end</key> | |
| 4923 | <string>\)</string> | |
| 4924 | <key>endCaptures</key> | |
| 4925 | <dict> | |
| 4926 | <key>0</key> | |
| 4927 | <dict> | |
| 4928 | <key>name</key> | |
| 4929 | <string>meta.brace.round.ts</string> | |
| 4930 | </dict> | |
| 4931 | </dict> | |
| 4932 | <key>patterns</key> | |
| 4933 | <array> | |
| 4934 | <dict> | |
| 4935 | <key>include</key> | |
| 4936 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4937 | </dict> | |
| 4938 | </array> | |
| 4939 | </dict> | |
| 4940 | <dict> | |
| 4941 | <key>include</key> | |
| 4942 | <string>#possibly-arrow-return-type</string> | |
| 4943 | </dict> | |
| 4944 | <dict> | |
| 4945 | <key>include</key> | |
| 4946 | <string>#expression</string> | |
| 4947 | </dict> | |
| 4948 | </array> | |
| 4949 | </dict> | |
| 4950 | <dict> | |
| 4951 | <key>include</key> | |
| 4952 | <string>#punctuation-comma</string> | |
| 4953 | </dict> | |
| 4954 | <dict> | |
| 4955 | <key>include</key> | |
| 4956 | <string>#decl-block</string> | |
| 4957 | </dict> | |
| 4958 | </array> | |
| 4959 | </dict> | |
| 4960 | <key>ternary-expression</key> | |
| 4961 | <dict> | |
| 4962 | <key>begin</key> | |
| 4963 | <string>(?!\?\.\s*[^[:digit:]])(\?)(?!\?)</string> | |
| 4964 | <key>beginCaptures</key> | |
| 4965 | <dict> | |
| 4966 | <key>1</key> | |
| 4967 | <dict> | |
| 4968 | <key>name</key> | |
| 4969 | <string>keyword.operator.ternary.ts</string> | |
| 4970 | </dict> | |
| 4971 | </dict> | |
| 4972 | <key>end</key> | |
| 4973 | <string>\s*(:)</string> | |
| 4974 | <key>endCaptures</key> | |
| 4975 | <dict> | |
| 4976 | <key>1</key> | |
| 4977 | <dict> | |
| 4978 | <key>name</key> | |
| 4979 | <string>keyword.operator.ternary.ts</string> | |
| 4980 | </dict> | |
| 4981 | </dict> | |
| 4982 | <key>patterns</key> | |
| 4983 | <array> | |
| 4984 | <dict> | |
| 4985 | <key>include</key> | |
| 4986 | <string>#expression</string> | |
| 4987 | </dict> | |
| 4988 | </array> | |
| 4989 | </dict> | |
| 4990 | <key>function-call</key> | |
| 4991 | <dict> | |
| 4992 | <key>patterns</key> | |
| 4993 | <array> | |
| 4994 | <dict> | |
| 4995 | <key>begin</key> | |
| 4996 | <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 4997 | <key>end</key> | |
| 4998 | <string>(?&lt;=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 4999 | <key>patterns</key> | |
| 5000 | <array> | |
| 5001 | <dict> | |
| 5002 | <key>name</key> | |
| 5003 | <string>meta.function-call.ts</string> | |
| 5004 | <key>begin</key> | |
| 5005 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 5006 | <key>end</key> | |
| 5007 | <string>(?=\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 5008 | <key>patterns</key> | |
| 5009 | <array> | |
| 5010 | <dict> | |
| 5011 | <key>include</key> | |
| 5012 | <string>#function-call-target</string> | |
| 5013 | </dict> | |
| 5014 | </array> | |
| 5015 | </dict> | |
| 5016 | <dict> | |
| 5017 | <key>include</key> | |
| 5018 | <string>#comment</string> | |
| 5019 | </dict> | |
| 5020 | <dict> | |
| 5021 | <key>include</key> | |
| 5022 | <string>#function-call-optionals</string> | |
| 5023 | </dict> | |
| 5024 | <dict> | |
| 5025 | <key>include</key> | |
| 5026 | <string>#type-arguments</string> | |
| 5027 | </dict> | |
| 5028 | <dict> | |
| 5029 | <key>include</key> | |
| 5030 | <string>#paren-expression</string> | |
| 5031 | </dict> | |
| 5032 | </array> | |
| 5033 | </dict> | |
| 5034 | <dict> | |
| 5035 | <key>begin</key> | |
| 5036 | <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5037 | <key>end</key> | |
| 5038 | <string>(?&lt;=\&gt;)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5039 | <key>patterns</key> | |
| 5040 | <array> | |
| 5041 | <dict> | |
| 5042 | <key>name</key> | |
| 5043 | <string>meta.function-call.ts</string> | |
| 5044 | <key>begin</key> | |
| 5045 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 5046 | <key>end</key> | |
| 5047 | <string>(?=(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5048 | <key>patterns</key> | |
| 5049 | <array> | |
| 5050 | <dict> | |
| 5051 | <key>include</key> | |
| 5052 | <string>#function-call-target</string> | |
| 5053 | </dict> | |
| 5054 | </array> | |
| 5055 | </dict> | |
| 5056 | <dict> | |
| 5057 | <key>include</key> | |
| 5058 | <string>#comment</string> | |
| 5059 | </dict> | |
| 5060 | <dict> | |
| 5061 | <key>include</key> | |
| 5062 | <string>#function-call-optionals</string> | |
| 5063 | </dict> | |
| 5064 | <dict> | |
| 5065 | <key>include</key> | |
| 5066 | <string>#type-arguments</string> | |
| 5067 | </dict> | |
| 5068 | </array> | |
| 5069 | </dict> | |
| 5070 | </array> | |
| 5071 | </dict> | |
| 5072 | <key>function-call-target</key> | |
| 5073 | <dict> | |
| 5074 | <key>patterns</key> | |
| 5075 | <array> | |
| 5076 | <dict> | |
| 5077 | <key>include</key> | |
| 5078 | <string>#support-function-call-identifiers</string> | |
| 5079 | </dict> | |
| 5080 | <dict> | |
| 5081 | <key>name</key> | |
| 5082 | <string>entity.name.function.ts</string> | |
| 5083 | <key>match</key> | |
| 5084 | <string>(\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 5085 | </dict> | |
| 5086 | </array> | |
| 5087 | </dict> | |
| 5088 | <key>function-call-optionals</key> | |
| 5089 | <dict> | |
| 5090 | <key>patterns</key> | |
| 5091 | <array> | |
| 5092 | <dict> | |
| 5093 | <key>name</key> | |
| 5094 | <string>meta.function-call.ts punctuation.accessor.optional.ts</string> | |
| 5095 | <key>match</key> | |
| 5096 | <string>\?\.</string> | |
| 5097 | </dict> | |
| 5098 | <dict> | |
| 5099 | <key>name</key> | |
| 5100 | <string>meta.function-call.ts keyword.operator.definiteassignment.ts</string> | |
| 5101 | <key>match</key> | |
| 5102 | <string>\!</string> | |
| 5103 | </dict> | |
| 5104 | </array> | |
| 5105 | </dict> | |
| 5106 | <key>support-function-call-identifiers</key> | |
| 5107 | <dict> | |
| 5108 | <key>patterns</key> | |
| 5109 | <array> | |
| 5110 | <dict> | |
| 5111 | <key>include</key> | |
| 5112 | <string>#literal</string> | |
| 5113 | </dict> | |
| 5114 | <dict> | |
| 5115 | <key>include</key> | |
| 5116 | <string>#support-objects</string> | |
| 5117 | </dict> | |
| 5118 | <dict> | |
| 5119 | <key>include</key> | |
| 5120 | <string>#object-identifiers</string> | |
| 5121 | </dict> | |
| 5122 | <dict> | |
| 5123 | <key>include</key> | |
| 5124 | <string>#punctuation-accessor</string> | |
| 5125 | </dict> | |
| 5126 | <dict> | |
| 5127 | <key>name</key> | |
| 5128 | <string>keyword.operator.expression.import.ts</string> | |
| 5129 | <key>match</key> | |
| 5130 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*[\(]\s*[\"\'\`]))</string> | |
| 5131 | </dict> | |
| 5132 | </array> | |
| 5133 | </dict> | |
| 5134 | <key>new-expr</key> | |
| 5135 | <dict> | |
| 5136 | <key>name</key> | |
| 5137 | <string>new.expr.ts</string> | |
| 5138 | <key>begin</key> | |
| 5139 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5140 | <key>beginCaptures</key> | |
| 5141 | <dict> | |
| 5142 | <key>1</key> | |
| 5143 | <dict> | |
| 5144 | <key>name</key> | |
| 5145 | <string>keyword.operator.new.ts</string> | |
| 5146 | </dict> | |
| 5147 | </dict> | |
| 5148 | <key>end</key> | |
| 5149 | <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string> | |
| 5150 | <key>patterns</key> | |
| 5151 | <array> | |
| 5152 | <dict> | |
| 5153 | <key>include</key> | |
| 5154 | <string>#expression</string> | |
| 5155 | </dict> | |
| 5156 | </array> | |
| 5157 | </dict> | |
| 5158 | <key>instanceof-expr</key> | |
| 5159 | <dict> | |
| 5160 | <key>begin</key> | |
| 5161 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(instanceof)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5162 | <key>beginCaptures</key> | |
| 5163 | <dict> | |
| 5164 | <key>1</key> | |
| 5165 | <dict> | |
| 5166 | <key>name</key> | |
| 5167 | <string>keyword.operator.expression.instanceof.ts</string> | |
| 5168 | </dict> | |
| 5169 | </dict> | |
| 5170 | <key>end</key> | |
| 5171 | <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|(===|!==|==|!=)|(([\&amp;\~\^\|]\s*)?[_$[:alpha:]][_$[:alnum:]]*\s+instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string> | |
| 5172 | <key>patterns</key> | |
| 5173 | <array> | |
| 5174 | <dict> | |
| 5175 | <key>include</key> | |
| 5176 | <string>#type</string> | |
| 5177 | </dict> | |
| 5178 | </array> | |
| 5179 | </dict> | |
| 5180 | <key>paren-expression-possibly-arrow</key> | |
| 5181 | <dict> | |
| 5182 | <key>patterns</key> | |
| 5183 | <array> | |
| 5184 | <dict> | |
| 5185 | <key>begin</key> | |
| 5186 | <string>(?&lt;=[(=,])\s*(async)?(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 5187 | <key>beginCaptures</key> | |
| 5188 | <dict> | |
| 5189 | <key>1</key> | |
| 5190 | <dict> | |
| 5191 | <key>name</key> | |
| 5192 | <string>storage.modifier.async.ts</string> | |
| 5193 | </dict> | |
| 5194 | </dict> | |
| 5195 | <key>end</key> | |
| 5196 | <string>(?&lt;=\))</string> | |
| 5197 | <key>patterns</key> | |
| 5198 | <array> | |
| 5199 | <dict> | |
| 5200 | <key>include</key> | |
| 5201 | <string>#paren-expression-possibly-arrow-with-typeparameters</string> | |
| 5202 | </dict> | |
| 5203 | </array> | |
| 5204 | </dict> | |
| 5205 | <dict> | |
| 5206 | <key>begin</key> | |
| 5207 | <string>(?&lt;=[(=,]|=&gt;|^return|[^\._$[:alnum:]]return)\s*(async)?(?=\s*((((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\()|(&lt;)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)))\s*$)</string> | |
| 5208 | <key>beginCaptures</key> | |
| 5209 | <dict> | |
| 5210 | <key>1</key> | |
| 5211 | <dict> | |
| 5212 | <key>name</key> | |
| 5213 | <string>storage.modifier.async.ts</string> | |
| 5214 | </dict> | |
| 5215 | </dict> | |
| 5216 | <key>end</key> | |
| 5217 | <string>(?&lt;=\))</string> | |
| 5218 | <key>patterns</key> | |
| 5219 | <array> | |
| 5220 | <dict> | |
| 5221 | <key>include</key> | |
| 5222 | <string>#paren-expression-possibly-arrow-with-typeparameters</string> | |
| 5223 | </dict> | |
| 5224 | </array> | |
| 5225 | </dict> | |
| 5226 | <dict> | |
| 5227 | <key>include</key> | |
| 5228 | <string>#possibly-arrow-return-type</string> | |
| 5229 | </dict> | |
| 5230 | </array> | |
| 5231 | </dict> | |
| 5232 | <key>paren-expression-possibly-arrow-with-typeparameters</key> | |
| 5233 | <dict> | |
| 5234 | <key>patterns</key> | |
| 5235 | <array> | |
| 5236 | <dict> | |
| 5237 | <key>include</key> | |
| 5238 | <string>#type-parameters</string> | |
| 5239 | </dict> | |
| 5240 | <dict> | |
| 5241 | <key>begin</key> | |
| 5242 | <string>\(</string> | |
| 5243 | <key>beginCaptures</key> | |
| 5244 | <dict> | |
| 5245 | <key>0</key> | |
| 5246 | <dict> | |
| 5247 | <key>name</key> | |
| 5248 | <string>meta.brace.round.ts</string> | |
| 5249 | </dict> | |
| 5250 | </dict> | |
| 5251 | <key>end</key> | |
| 5252 | <string>\)</string> | |
| 5253 | <key>endCaptures</key> | |
| 5254 | <dict> | |
| 5255 | <key>0</key> | |
| 5256 | <dict> | |
| 5257 | <key>name</key> | |
| 5258 | <string>meta.brace.round.ts</string> | |
| 5259 | </dict> | |
| 5260 | </dict> | |
| 5261 | <key>patterns</key> | |
| 5262 | <array> | |
| 5263 | <dict> | |
| 5264 | <key>include</key> | |
| 5265 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 5266 | </dict> | |
| 5267 | </array> | |
| 5268 | </dict> | |
| 5269 | </array> | |
| 5270 | </dict> | |
| 5271 | <key>expression-inside-possibly-arrow-parens</key> | |
| 5272 | <dict> | |
| 5273 | <key>patterns</key> | |
| 5274 | <array> | |
| 5275 | <dict> | |
| 5276 | <key>include</key> | |
| 5277 | <string>#expressionWithoutIdentifiers</string> | |
| 5278 | </dict> | |
| 5279 | <dict> | |
| 5280 | <key>include</key> | |
| 5281 | <string>#comment</string> | |
| 5282 | </dict> | |
| 5283 | <dict> | |
| 5284 | <key>include</key> | |
| 5285 | <string>#string</string> | |
| 5286 | </dict> | |
| 5287 | <dict> | |
| 5288 | <key>include</key> | |
| 5289 | <string>#decorator</string> | |
| 5290 | </dict> | |
| 5291 | <dict> | |
| 5292 | <key>include</key> | |
| 5293 | <string>#destructuring-parameter</string> | |
| 5294 | </dict> | |
| 5295 | <dict> | |
| 5296 | <key>match</key> | |
| 5297 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string> | |
| 5298 | <key>captures</key> | |
| 5299 | <dict> | |
| 5300 | <key>1</key> | |
| 5301 | <dict> | |
| 5302 | <key>name</key> | |
| 5303 | <string>storage.modifier.ts</string> | |
| 5304 | </dict> | |
| 5305 | </dict> | |
| 5306 | </dict> | |
| 5307 | <dict> | |
| 5308 | <key>match</key> | |
| 5309 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s* | |
| 5310 | # function assignment | | |
| 5311 | (=\s*( | |
| 5312 | ((async\s+)?( | |
| 5313 | (function\s*[(&lt;*]) | | |
| 5314 | (function\s+) | | |
| 5315 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 5316 | )) | | |
| 5317 | ((async\s*)?( | |
| 5318 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 5319 | # sure shot arrow functions even if =&gt; is on new line | |
| 5320 | ( | |
| 5321 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 5322 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 5323 | ( | |
| 5324 | ([)]\s*:) | # (): | |
| 5325 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 5326 | ) | |
| 5327 | ) | | |
| 5328 | ||
| 5329 | # arrow function possible to detect only with =&gt; on same line | |
| 5330 | ( | |
| 5331 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 5332 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 5333 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 5334 | \s*=&gt; # arrow operator | |
| 5335 | ) | |
| 5336 | )) | |
| 5337 | )) | | |
| 5338 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 5339 | (:\s*( | |
| 5340 | (&lt;) | | |
| 5341 | ([(]\s*( | |
| 5342 | ([)]) | | |
| 5343 | (\.\.\.) | | |
| 5344 | ([_$[:alnum:]]+\s*( | |
| 5345 | ([:,?=])| | |
| 5346 | ([)]\s*=&gt;) | |
| 5347 | )) | |
| 5348 | )) | |
| 5349 | )) | | |
| 5350 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 5351 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 5352 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 5353 | ((async\s+)?( | |
| 5354 | (function\s*[(&lt;*]) | | |
| 5355 | (function\s+) | | |
| 5356 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 5357 | )) | | |
| 5358 | ((async\s*)?( | |
| 5359 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 5360 | # sure shot arrow functions even if =&gt; is on new line | |
| 5361 | ( | |
| 5362 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 5363 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 5364 | ( | |
| 5365 | ([)]\s*:) | # (): | |
| 5366 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 5367 | ) | |
| 5368 | ) | | |
| 5369 | ||
| 5370 | # arrow function possible to detect only with =&gt; on same line | |
| 5371 | ( | |
| 5372 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 5373 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 5374 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 5375 | \s*=&gt; # arrow operator | |
| 5376 | ) | |
| 5377 | )) | |
| 5378 | )))</string> | |
| 5379 | <key>captures</key> | |
| 5380 | <dict> | |
| 5381 | <key>1</key> | |
| 5382 | <dict> | |
| 5383 | <key>name</key> | |
| 5384 | <string>storage.modifier.ts</string> | |
| 5385 | </dict> | |
| 5386 | <key>2</key> | |
| 5387 | <dict> | |
| 5388 | <key>name</key> | |
| 5389 | <string>keyword.operator.rest.ts</string> | |
| 5390 | </dict> | |
| 5391 | <key>3</key> | |
| 5392 | <dict> | |
| 5393 | <key>name</key> | |
| 5394 | <string>entity.name.function.ts variable.language.this.ts</string> | |
| 5395 | </dict> | |
| 5396 | <key>4</key> | |
| 5397 | <dict> | |
| 5398 | <key>name</key> | |
| 5399 | <string>entity.name.function.ts</string> | |
| 5400 | </dict> | |
| 5401 | <key>5</key> | |
| 5402 | <dict> | |
| 5403 | <key>name</key> | |
| 5404 | <string>keyword.operator.optional.ts</string> | |
| 5405 | </dict> | |
| 5406 | </dict> | |
| 5407 | </dict> | |
| 5408 | <dict> | |
| 5409 | <key>match</key> | |
| 5410 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)</string> | |
| 5411 | <key>captures</key> | |
| 5412 | <dict> | |
| 5413 | <key>1</key> | |
| 5414 | <dict> | |
| 5415 | <key>name</key> | |
| 5416 | <string>storage.modifier.ts</string> | |
| 5417 | </dict> | |
| 5418 | <key>2</key> | |
| 5419 | <dict> | |
| 5420 | <key>name</key> | |
| 5421 | <string>keyword.operator.rest.ts</string> | |
| 5422 | </dict> | |
| 5423 | <key>3</key> | |
| 5424 | <dict> | |
| 5425 | <key>name</key> | |
| 5426 | <string>variable.parameter.ts variable.language.this.ts</string> | |
| 5427 | </dict> | |
| 5428 | <key>4</key> | |
| 5429 | <dict> | |
| 5430 | <key>name</key> | |
| 5431 | <string>variable.parameter.ts</string> | |
| 5432 | </dict> | |
| 5433 | <key>5</key> | |
| 5434 | <dict> | |
| 5435 | <key>name</key> | |
| 5436 | <string>keyword.operator.optional.ts</string> | |
| 5437 | </dict> | |
| 5438 | </dict> | |
| 5439 | </dict> | |
| 5440 | <dict> | |
| 5441 | <key>include</key> | |
| 5442 | <string>#type-annotation</string> | |
| 5443 | </dict> | |
| 5444 | <dict> | |
| 5445 | <key>include</key> | |
| 5446 | <string>#variable-initializer</string> | |
| 5447 | </dict> | |
| 5448 | <dict> | |
| 5449 | <key>name</key> | |
| 5450 | <string>punctuation.separator.parameter.ts</string> | |
| 5451 | <key>match</key> | |
| 5452 | <string>,</string> | |
| 5453 | </dict> | |
| 5454 | <dict> | |
| 5455 | <key>include</key> | |
| 5456 | <string>#identifiers</string> | |
| 5457 | </dict> | |
| 5458 | <dict> | |
| 5459 | <key>include</key> | |
| 5460 | <string>#expressionPunctuations</string> | |
| 5461 | </dict> | |
| 5462 | </array> | |
| 5463 | </dict> | |
| 5464 | <key>paren-expression</key> | |
| 5465 | <dict> | |
| 5466 | <key>begin</key> | |
| 5467 | <string>\(</string> | |
| 5468 | <key>beginCaptures</key> | |
| 5469 | <dict> | |
| 5470 | <key>0</key> | |
| 5471 | <dict> | |
| 5472 | <key>name</key> | |
| 5473 | <string>meta.brace.round.ts</string> | |
| 5474 | </dict> | |
| 5475 | </dict> | |
| 5476 | <key>end</key> | |
| 5477 | <string>\)</string> | |
| 5478 | <key>endCaptures</key> | |
| 5479 | <dict> | |
| 5480 | <key>0</key> | |
| 5481 | <dict> | |
| 5482 | <key>name</key> | |
| 5483 | <string>meta.brace.round.ts</string> | |
| 5484 | </dict> | |
| 5485 | </dict> | |
| 5486 | <key>patterns</key> | |
| 5487 | <array> | |
| 5488 | <dict> | |
| 5489 | <key>include</key> | |
| 5490 | <string>#expression</string> | |
| 5491 | </dict> | |
| 5492 | </array> | |
| 5493 | </dict> | |
| 5494 | <key>cast</key> | |
| 5495 | <dict> | |
| 5496 | <key>patterns</key> | |
| 5497 | <array> | |
| 5498 | <dict> | |
| 5499 | <key>name</key> | |
| 5500 | <string>cast.expr.ts</string> | |
| 5501 | <key>match</key> | |
| 5502 | <string>\s*(&lt;)\s*(const)\s*(&gt;)</string> | |
| 5503 | <key>captures</key> | |
| 5504 | <dict> | |
| 5505 | <key>1</key> | |
| 5506 | <dict> | |
| 5507 | <key>name</key> | |
| 5508 | <string>meta.brace.angle.ts</string> | |
| 5509 | </dict> | |
| 5510 | <key>2</key> | |
| 5511 | <dict> | |
| 5512 | <key>name</key> | |
| 5513 | <string>storage.modifier.ts</string> | |
| 5514 | </dict> | |
| 5515 | <key>3</key> | |
| 5516 | <dict> | |
| 5517 | <key>name</key> | |
| 5518 | <string>meta.brace.angle.ts</string> | |
| 5519 | </dict> | |
| 5520 | </dict> | |
| 5521 | </dict> | |
| 5522 | <dict> | |
| 5523 | <key>name</key> | |
| 5524 | <string>cast.expr.ts</string> | |
| 5525 | <key>begin</key> | |
| 5526 | <string>(?:(?&lt;!\+\+|--)(?&lt;=^return|[^\._$[:alnum:]]return|^throw|[^\._$[:alnum:]]throw|^yield|[^\._$[:alnum:]]yield|^await|[^\._$[:alnum:]]await|^default|[^\._$[:alnum:]]default|[=(,:&gt;*?\&amp;\|\^]|[^_$[:alnum:]](?:\+\+|\-\-)|[^\+]\+|[^\-]\-))\s*(&lt;)(?!&lt;?\=)(?!\s*$)</string> | |
| 5527 | <key>beginCaptures</key> | |
| 5528 | <dict> | |
| 5529 | <key>1</key> | |
| 5530 | <dict> | |
| 5531 | <key>name</key> | |
| 5532 | <string>meta.brace.angle.ts</string> | |
| 5533 | </dict> | |
| 5534 | </dict> | |
| 5535 | <key>end</key> | |
| 5536 | <string>(\&gt;)</string> | |
| 5537 | <key>endCaptures</key> | |
| 5538 | <dict> | |
| 5539 | <key>1</key> | |
| 5540 | <dict> | |
| 5541 | <key>name</key> | |
| 5542 | <string>meta.brace.angle.ts</string> | |
| 5543 | </dict> | |
| 5544 | </dict> | |
| 5545 | <key>patterns</key> | |
| 5546 | <array> | |
| 5547 | <dict> | |
| 5548 | <key>include</key> | |
| 5549 | <string>#type</string> | |
| 5550 | </dict> | |
| 5551 | </array> | |
| 5552 | </dict> | |
| 5553 | <dict> | |
| 5554 | <key>name</key> | |
| 5555 | <string>cast.expr.ts</string> | |
| 5556 | <key>begin</key> | |
| 5557 | <string>(?:(?&lt;=^))\s*(&lt;)(?=[_$[:alpha:]][_$[:alnum:]]*\s*&gt;)</string> | |
| 5558 | <key>beginCaptures</key> | |
| 5559 | <dict> | |
| 5560 | <key>1</key> | |
| 5561 | <dict> | |
| 5562 | <key>name</key> | |
| 5563 | <string>meta.brace.angle.ts</string> | |
| 5564 | </dict> | |
| 5565 | </dict> | |
| 5566 | <key>end</key> | |
| 5567 | <string>(\&gt;)</string> | |
| 5568 | <key>endCaptures</key> | |
| 5569 | <dict> | |
| 5570 | <key>1</key> | |
| 5571 | <dict> | |
| 5572 | <key>name</key> | |
| 5573 | <string>meta.brace.angle.ts</string> | |
| 5574 | </dict> | |
| 5575 | </dict> | |
| 5576 | <key>patterns</key> | |
| 5577 | <array> | |
| 5578 | <dict> | |
| 5579 | <key>include</key> | |
| 5580 | <string>#type</string> | |
| 5581 | </dict> | |
| 5582 | </array> | |
| 5583 | </dict> | |
| 5584 | </array> | |
| 5585 | </dict> | |
| 5586 | <key>expression-operators</key> | |
| 5587 | <dict> | |
| 5588 | <key>patterns</key> | |
| 5589 | <array> | |
| 5590 | <dict> | |
| 5591 | <key>name</key> | |
| 5592 | <string>keyword.control.flow.ts</string> | |
| 5593 | <key>match</key> | |
| 5594 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(await)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5595 | </dict> | |
| 5596 | <dict> | |
| 5597 | <key>begin</key> | |
| 5598 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?=\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*\*)</string> | |
| 5599 | <key>beginCaptures</key> | |
| 5600 | <dict> | |
| 5601 | <key>1</key> | |
| 5602 | <dict> | |
| 5603 | <key>name</key> | |
| 5604 | <string>keyword.control.flow.ts</string> | |
| 5605 | </dict> | |
| 5606 | </dict> | |
| 5607 | <key>end</key> | |
| 5608 | <string>\*</string> | |
| 5609 | <key>endCaptures</key> | |
| 5610 | <dict> | |
| 5611 | <key>0</key> | |
| 5612 | <dict> | |
| 5613 | <key>name</key> | |
| 5614 | <string>keyword.generator.asterisk.ts</string> | |
| 5615 | </dict> | |
| 5616 | </dict> | |
| 5617 | <key>patterns</key> | |
| 5618 | <array> | |
| 5619 | <dict> | |
| 5620 | <key>include</key> | |
| 5621 | <string>#comment</string> | |
| 5622 | </dict> | |
| 5623 | </array> | |
| 5624 | </dict> | |
| 5625 | <dict> | |
| 5626 | <key>match</key> | |
| 5627 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s*(\*))?</string> | |
| 5628 | <key>captures</key> | |
| 5629 | <dict> | |
| 5630 | <key>1</key> | |
| 5631 | <dict> | |
| 5632 | <key>name</key> | |
| 5633 | <string>keyword.control.flow.ts</string> | |
| 5634 | </dict> | |
| 5635 | <key>2</key> | |
| 5636 | <dict> | |
| 5637 | <key>name</key> | |
| 5638 | <string>keyword.generator.asterisk.ts</string> | |
| 5639 | </dict> | |
| 5640 | </dict> | |
| 5641 | </dict> | |
| 5642 | <dict> | |
| 5643 | <key>name</key> | |
| 5644 | <string>keyword.operator.expression.delete.ts</string> | |
| 5645 | <key>match</key> | |
| 5646 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))delete(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5647 | </dict> | |
| 5648 | <dict> | |
| 5649 | <key>name</key> | |
| 5650 | <string>keyword.operator.expression.in.ts</string> | |
| 5651 | <key>match</key> | |
| 5652 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))in(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string> | |
| 5653 | </dict> | |
| 5654 | <dict> | |
| 5655 | <key>name</key> | |
| 5656 | <string>keyword.operator.expression.of.ts</string> | |
| 5657 | <key>match</key> | |
| 5658 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))of(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string> | |
| 5659 | </dict> | |
| 5660 | <dict> | |
| 5661 | <key>name</key> | |
| 5662 | <string>keyword.operator.expression.instanceof.ts</string> | |
| 5663 | <key>match</key> | |
| 5664 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5665 | </dict> | |
| 5666 | <dict> | |
| 5667 | <key>name</key> | |
| 5668 | <string>keyword.operator.new.ts</string> | |
| 5669 | <key>match</key> | |
| 5670 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5671 | </dict> | |
| 5672 | <dict> | |
| 5673 | <key>include</key> | |
| 5674 | <string>#typeof-operator</string> | |
| 5675 | </dict> | |
| 5676 | <dict> | |
| 5677 | <key>name</key> | |
| 5678 | <string>keyword.operator.expression.void.ts</string> | |
| 5679 | <key>match</key> | |
| 5680 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5681 | </dict> | |
| 5682 | <dict> | |
| 5683 | <key>match</key> | |
| 5684 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))</string> | |
| 5685 | <key>captures</key> | |
| 5686 | <dict> | |
| 5687 | <key>1</key> | |
| 5688 | <dict> | |
| 5689 | <key>name</key> | |
| 5690 | <string>keyword.control.as.ts</string> | |
| 5691 | </dict> | |
| 5692 | <key>2</key> | |
| 5693 | <dict> | |
| 5694 | <key>name</key> | |
| 5695 | <string>storage.modifier.ts</string> | |
| 5696 | </dict> | |
| 5697 | </dict> | |
| 5698 | </dict> | |
| 5699 | <dict> | |
| 5700 | <key>begin</key> | |
| 5701 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string> | |
| 5702 | <key>beginCaptures</key> | |
| 5703 | <dict> | |
| 5704 | <key>1</key> | |
| 5705 | <dict> | |
| 5706 | <key>name</key> | |
| 5707 | <string>keyword.control.as.ts</string> | |
| 5708 | </dict> | |
| 5709 | <key>2</key> | |
| 5710 | <dict> | |
| 5711 | <key>name</key> | |
| 5712 | <string>keyword.control.satisfies.ts</string> | |
| 5713 | </dict> | |
| 5714 | </dict> | |
| 5715 | <key>end</key> | |
| 5716 | <string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisfies)\s+)|(\s+\&lt;))</string> | |
| 5717 | <key>patterns</key> | |
| 5718 | <array> | |
| 5719 | <dict> | |
| 5720 | <key>include</key> | |
| 5721 | <string>#type</string> | |
| 5722 | </dict> | |
| 5723 | </array> | |
| 5724 | </dict> | |
| 5725 | <dict> | |
| 5726 | <key>name</key> | |
| 5727 | <string>keyword.operator.spread.ts</string> | |
| 5728 | <key>match</key> | |
| 5729 | <string>\.\.\.</string> | |
| 5730 | </dict> | |
| 5731 | <dict> | |
| 5732 | <key>name</key> | |
| 5733 | <string>keyword.operator.assignment.compound.ts</string> | |
| 5734 | <key>match</key> | |
| 5735 | <string>\*=|(?&lt;!\()/=|%=|\+=|\-=</string> | |
| 5736 | </dict> | |
| 5737 | <dict> | |
| 5738 | <key>name</key> | |
| 5739 | <string>keyword.operator.assignment.compound.bitwise.ts</string> | |
| 5740 | <key>match</key> | |
| 5741 | <string>\&amp;=|\^=|&lt;&lt;=|&gt;&gt;=|&gt;&gt;&gt;=|\|=</string> | |
| 5742 | </dict> | |
| 5743 | <dict> | |
| 5744 | <key>name</key> | |
| 5745 | <string>keyword.operator.bitwise.shift.ts</string> | |
| 5746 | <key>match</key> | |
| 5747 | <string>&lt;&lt;|&gt;&gt;&gt;|&gt;&gt;</string> | |
| 5748 | </dict> | |
| 5749 | <dict> | |
| 5750 | <key>name</key> | |
| 5751 | <string>keyword.operator.comparison.ts</string> | |
| 5752 | <key>match</key> | |
| 5753 | <string>===|!==|==|!=</string> | |
| 5754 | </dict> | |
| 5755 | <dict> | |
| 5756 | <key>name</key> | |
| 5757 | <string>keyword.operator.relational.ts</string> | |
| 5758 | <key>match</key> | |
| 5759 | <string>&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;</string> | |
| 5760 | </dict> | |
| 5761 | <dict> | |
| 5762 | <key>match</key> | |
| 5763 | <string>(?&lt;=[_$[:alnum:]])(\!)\s*(?:(/=)|(?:(/)(?![/*])))</string> | |
| 5764 | <key>captures</key> | |
| 5765 | <dict> | |
| 5766 | <key>1</key> | |
| 5767 | <dict> | |
| 5768 | <key>name</key> | |
| 5769 | <string>keyword.operator.logical.ts</string> | |
| 5770 | </dict> | |
| 5771 | <key>2</key> | |
| 5772 | <dict> | |
| 5773 | <key>name</key> | |
| 5774 | <string>keyword.operator.assignment.compound.ts</string> | |
| 5775 | </dict> | |
| 5776 | <key>3</key> | |
| 5777 | <dict> | |
| 5778 | <key>name</key> | |
| 5779 | <string>keyword.operator.arithmetic.ts</string> | |
| 5780 | </dict> | |
| 5781 | </dict> | |
| 5782 | </dict> | |
| 5783 | <dict> | |
| 5784 | <key>name</key> | |
| 5785 | <string>keyword.operator.logical.ts</string> | |
| 5786 | <key>match</key> | |
| 5787 | <string>\!|&amp;&amp;|\|\||\?\?</string> | |
| 5788 | </dict> | |
| 5789 | <dict> | |
| 5790 | <key>name</key> | |
| 5791 | <string>keyword.operator.bitwise.ts</string> | |
| 5792 | <key>match</key> | |
| 5793 | <string>\&amp;|~|\^|\|</string> | |
| 5794 | </dict> | |
| 5795 | <dict> | |
| 5796 | <key>name</key> | |
| 5797 | <string>keyword.operator.assignment.ts</string> | |
| 5798 | <key>match</key> | |
| 5799 | <string>\=</string> | |
| 5800 | </dict> | |
| 5801 | <dict> | |
| 5802 | <key>name</key> | |
| 5803 | <string>keyword.operator.decrement.ts</string> | |
| 5804 | <key>match</key> | |
| 5805 | <string>--</string> | |
| 5806 | </dict> | |
| 5807 | <dict> | |
| 5808 | <key>name</key> | |
| 5809 | <string>keyword.operator.increment.ts</string> | |
| 5810 | <key>match</key> | |
| 5811 | <string>\+\+</string> | |
| 5812 | </dict> | |
| 5813 | <dict> | |
| 5814 | <key>name</key> | |
| 5815 | <string>keyword.operator.arithmetic.ts</string> | |
| 5816 | <key>match</key> | |
| 5817 | <string>%|\*|/|-|\+</string> | |
| 5818 | </dict> | |
| 5819 | <dict> | |
| 5820 | <key>begin</key> | |
| 5821 | <string>(?&lt;=[_$[:alnum:])\]])\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)+(?:(/=)|(?:(/)(?![/*]))))</string> | |
| 5822 | <key>end</key> | |
| 5823 | <string>(?:(/=)|(?:(/)(?!\*([^\*]|(\*[^\/]))*\*\/)))</string> | |
| 5824 | <key>endCaptures</key> | |
| 5825 | <dict> | |
| 5826 | <key>1</key> | |
| 5827 | <dict> | |
| 5828 | <key>name</key> | |
| 5829 | <string>keyword.operator.assignment.compound.ts</string> | |
| 5830 | </dict> | |
| 5831 | <key>2</key> | |
| 5832 | <dict> | |
| 5833 | <key>name</key> | |
| 5834 | <string>keyword.operator.arithmetic.ts</string> | |
| 5835 | </dict> | |
| 5836 | </dict> | |
| 5837 | <key>patterns</key> | |
| 5838 | <array> | |
| 5839 | <dict> | |
| 5840 | <key>include</key> | |
| 5841 | <string>#comment</string> | |
| 5842 | </dict> | |
| 5843 | </array> | |
| 5844 | </dict> | |
| 5845 | <dict> | |
| 5846 | <key>match</key> | |
| 5847 | <string>(?&lt;=[_$[:alnum:])\]])\s*(?:(/=)|(?:(/)(?![/*])))</string> | |
| 5848 | <key>captures</key> | |
| 5849 | <dict> | |
| 5850 | <key>1</key> | |
| 5851 | <dict> | |
| 5852 | <key>name</key> | |
| 5853 | <string>keyword.operator.assignment.compound.ts</string> | |
| 5854 | </dict> | |
| 5855 | <key>2</key> | |
| 5856 | <dict> | |
| 5857 | <key>name</key> | |
| 5858 | <string>keyword.operator.arithmetic.ts</string> | |
| 5859 | </dict> | |
| 5860 | </dict> | |
| 5861 | </dict> | |
| 5862 | </array> | |
| 5863 | </dict> | |
| 5864 | <key>typeof-operator</key> | |
| 5865 | <dict> | |
| 5866 | <key>begin</key> | |
| 5867 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5868 | <key>beginCaptures</key> | |
| 5869 | <dict> | |
| 5870 | <key>0</key> | |
| 5871 | <dict> | |
| 5872 | <key>name</key> | |
| 5873 | <string>keyword.operator.expression.typeof.ts</string> | |
| 5874 | </dict> | |
| 5875 | </dict> | |
| 5876 | <key>end</key> | |
| 5877 | <string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 5878 | <key>patterns</key> | |
| 5879 | <array> | |
| 5880 | <dict> | |
| 5881 | <key>include</key> | |
| 5882 | <string>#type-arguments</string> | |
| 5883 | </dict> | |
| 5884 | <dict> | |
| 5885 | <key>include</key> | |
| 5886 | <string>#expression</string> | |
| 5887 | </dict> | |
| 5888 | </array> | |
| 5889 | </dict> | |
| 5890 | <key>literal</key> | |
| 5891 | <dict> | |
| 5892 | <key>patterns</key> | |
| 5893 | <array> | |
| 5894 | <dict> | |
| 5895 | <key>include</key> | |
| 5896 | <string>#numeric-literal</string> | |
| 5897 | </dict> | |
| 5898 | <dict> | |
| 5899 | <key>include</key> | |
| 5900 | <string>#boolean-literal</string> | |
| 5901 | </dict> | |
| 5902 | <dict> | |
| 5903 | <key>include</key> | |
| 5904 | <string>#null-literal</string> | |
| 5905 | </dict> | |
| 5906 | <dict> | |
| 5907 | <key>include</key> | |
| 5908 | <string>#undefined-literal</string> | |
| 5909 | </dict> | |
| 5910 | <dict> | |
| 5911 | <key>include</key> | |
| 5912 | <string>#numericConstant-literal</string> | |
| 5913 | </dict> | |
| 5914 | <dict> | |
| 5915 | <key>include</key> | |
| 5916 | <string>#array-literal</string> | |
| 5917 | </dict> | |
| 5918 | <dict> | |
| 5919 | <key>include</key> | |
| 5920 | <string>#this-literal</string> | |
| 5921 | </dict> | |
| 5922 | <dict> | |
| 5923 | <key>include</key> | |
| 5924 | <string>#super-literal</string> | |
| 5925 | </dict> | |
| 5926 | </array> | |
| 5927 | </dict> | |
| 5928 | <key>array-literal</key> | |
| 5929 | <dict> | |
| 5930 | <key>name</key> | |
| 5931 | <string>meta.array.literal.ts</string> | |
| 5932 | <key>begin</key> | |
| 5933 | <string>\s*(\[)</string> | |
| 5934 | <key>beginCaptures</key> | |
| 5935 | <dict> | |
| 5936 | <key>1</key> | |
| 5937 | <dict> | |
| 5938 | <key>name</key> | |
| 5939 | <string>meta.brace.square.ts</string> | |
| 5940 | </dict> | |
| 5941 | </dict> | |
| 5942 | <key>end</key> | |
| 5943 | <string>\]</string> | |
| 5944 | <key>endCaptures</key> | |
| 5945 | <dict> | |
| 5946 | <key>0</key> | |
| 5947 | <dict> | |
| 5948 | <key>name</key> | |
| 5949 | <string>meta.brace.square.ts</string> | |
| 5950 | </dict> | |
| 5951 | </dict> | |
| 5952 | <key>patterns</key> | |
| 5953 | <array> | |
| 5954 | <dict> | |
| 5955 | <key>include</key> | |
| 5956 | <string>#expression</string> | |
| 5957 | </dict> | |
| 5958 | <dict> | |
| 5959 | <key>include</key> | |
| 5960 | <string>#punctuation-comma</string> | |
| 5961 | </dict> | |
| 5962 | </array> | |
| 5963 | </dict> | |
| 5964 | <key>numeric-literal</key> | |
| 5965 | <dict> | |
| 5966 | <key>patterns</key> | |
| 5967 | <array> | |
| 5968 | <dict> | |
| 5969 | <key>name</key> | |
| 5970 | <string>constant.numeric.hex.ts</string> | |
| 5971 | <key>match</key> | |
| 5972 | <string>\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)</string> | |
| 5973 | <key>captures</key> | |
| 5974 | <dict> | |
| 5975 | <key>1</key> | |
| 5976 | <dict> | |
| 5977 | <key>name</key> | |
| 5978 | <string>storage.type.numeric.bigint.ts</string> | |
| 5979 | </dict> | |
| 5980 | </dict> | |
| 5981 | </dict> | |
| 5982 | <dict> | |
| 5983 | <key>name</key> | |
| 5984 | <string>constant.numeric.binary.ts</string> | |
| 5985 | <key>match</key> | |
| 5986 | <string>\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)</string> | |
| 5987 | <key>captures</key> | |
| 5988 | <dict> | |
| 5989 | <key>1</key> | |
| 5990 | <dict> | |
| 5991 | <key>name</key> | |
| 5992 | <string>storage.type.numeric.bigint.ts</string> | |
| 5993 | </dict> | |
| 5994 | </dict> | |
| 5995 | </dict> | |
| 5996 | <dict> | |
| 5997 | <key>name</key> | |
| 5998 | <string>constant.numeric.octal.ts</string> | |
| 5999 | <key>match</key> | |
| 6000 | <string>\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$)</string> | |
| 6001 | <key>captures</key> | |
| 6002 | <dict> | |
| 6003 | <key>1</key> | |
| 6004 | <dict> | |
| 6005 | <key>name</key> | |
| 6006 | <string>storage.type.numeric.bigint.ts</string> | |
| 6007 | </dict> | |
| 6008 | </dict> | |
| 6009 | </dict> | |
| 6010 | <dict> | |
| 6011 | <key>match</key> | |
| 6012 | <string>(?x) | |
| 6013 | (?&lt;!\$)(?: | |
| 6014 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 6015 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 6016 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 6017 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 6018 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 6019 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 6020 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 6021 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 6022 | )(?!\$)</string> | |
| 6023 | <key>captures</key> | |
| 6024 | <dict> | |
| 6025 | <key>0</key> | |
| 6026 | <dict> | |
| 6027 | <key>name</key> | |
| 6028 | <string>constant.numeric.decimal.ts</string> | |
| 6029 | </dict> | |
| 6030 | <key>1</key> | |
| 6031 | <dict> | |
| 6032 | <key>name</key> | |
| 6033 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6034 | </dict> | |
| 6035 | <key>2</key> | |
| 6036 | <dict> | |
| 6037 | <key>name</key> | |
| 6038 | <string>storage.type.numeric.bigint.ts</string> | |
| 6039 | </dict> | |
| 6040 | <key>3</key> | |
| 6041 | <dict> | |
| 6042 | <key>name</key> | |
| 6043 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6044 | </dict> | |
| 6045 | <key>4</key> | |
| 6046 | <dict> | |
| 6047 | <key>name</key> | |
| 6048 | <string>storage.type.numeric.bigint.ts</string> | |
| 6049 | </dict> | |
| 6050 | <key>5</key> | |
| 6051 | <dict> | |
| 6052 | <key>name</key> | |
| 6053 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6054 | </dict> | |
| 6055 | <key>6</key> | |
| 6056 | <dict> | |
| 6057 | <key>name</key> | |
| 6058 | <string>storage.type.numeric.bigint.ts</string> | |
| 6059 | </dict> | |
| 6060 | <key>7</key> | |
| 6061 | <dict> | |
| 6062 | <key>name</key> | |
| 6063 | <string>storage.type.numeric.bigint.ts</string> | |
| 6064 | </dict> | |
| 6065 | <key>8</key> | |
| 6066 | <dict> | |
| 6067 | <key>name</key> | |
| 6068 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6069 | </dict> | |
| 6070 | <key>9</key> | |
| 6071 | <dict> | |
| 6072 | <key>name</key> | |
| 6073 | <string>storage.type.numeric.bigint.ts</string> | |
| 6074 | </dict> | |
| 6075 | <key>10</key> | |
| 6076 | <dict> | |
| 6077 | <key>name</key> | |
| 6078 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6079 | </dict> | |
| 6080 | <key>11</key> | |
| 6081 | <dict> | |
| 6082 | <key>name</key> | |
| 6083 | <string>storage.type.numeric.bigint.ts</string> | |
| 6084 | </dict> | |
| 6085 | <key>12</key> | |
| 6086 | <dict> | |
| 6087 | <key>name</key> | |
| 6088 | <string>meta.delimiter.decimal.period.ts</string> | |
| 6089 | </dict> | |
| 6090 | <key>13</key> | |
| 6091 | <dict> | |
| 6092 | <key>name</key> | |
| 6093 | <string>storage.type.numeric.bigint.ts</string> | |
| 6094 | </dict> | |
| 6095 | <key>14</key> | |
| 6096 | <dict> | |
| 6097 | <key>name</key> | |
| 6098 | <string>storage.type.numeric.bigint.ts</string> | |
| 6099 | </dict> | |
| 6100 | </dict> | |
| 6101 | </dict> | |
| 6102 | </array> | |
| 6103 | </dict> | |
| 6104 | <key>boolean-literal</key> | |
| 6105 | <dict> | |
| 6106 | <key>patterns</key> | |
| 6107 | <array> | |
| 6108 | <dict> | |
| 6109 | <key>name</key> | |
| 6110 | <string>constant.language.boolean.true.ts</string> | |
| 6111 | <key>match</key> | |
| 6112 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))true(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6113 | </dict> | |
| 6114 | <dict> | |
| 6115 | <key>name</key> | |
| 6116 | <string>constant.language.boolean.false.ts</string> | |
| 6117 | <key>match</key> | |
| 6118 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))false(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6119 | </dict> | |
| 6120 | </array> | |
| 6121 | </dict> | |
| 6122 | <key>null-literal</key> | |
| 6123 | <dict> | |
| 6124 | <key>name</key> | |
| 6125 | <string>constant.language.null.ts</string> | |
| 6126 | <key>match</key> | |
| 6127 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6128 | </dict> | |
| 6129 | <key>this-literal</key> | |
| 6130 | <dict> | |
| 6131 | <key>name</key> | |
| 6132 | <string>variable.language.this.ts</string> | |
| 6133 | <key>match</key> | |
| 6134 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))this\b(?!\$)</string> | |
| 6135 | </dict> | |
| 6136 | <key>super-literal</key> | |
| 6137 | <dict> | |
| 6138 | <key>name</key> | |
| 6139 | <string>variable.language.super.ts</string> | |
| 6140 | <key>match</key> | |
| 6141 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))super\b(?!\$)</string> | |
| 6142 | </dict> | |
| 6143 | <key>undefined-literal</key> | |
| 6144 | <dict> | |
| 6145 | <key>name</key> | |
| 6146 | <string>constant.language.undefined.ts</string> | |
| 6147 | <key>match</key> | |
| 6148 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6149 | </dict> | |
| 6150 | <key>numericConstant-literal</key> | |
| 6151 | <dict> | |
| 6152 | <key>patterns</key> | |
| 6153 | <array> | |
| 6154 | <dict> | |
| 6155 | <key>name</key> | |
| 6156 | <string>constant.language.nan.ts</string> | |
| 6157 | <key>match</key> | |
| 6158 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6159 | </dict> | |
| 6160 | <dict> | |
| 6161 | <key>name</key> | |
| 6162 | <string>constant.language.infinity.ts</string> | |
| 6163 | <key>match</key> | |
| 6164 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Infinity(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6165 | </dict> | |
| 6166 | </array> | |
| 6167 | </dict> | |
| 6168 | <key>support-objects</key> | |
| 6169 | <dict> | |
| 6170 | <key>patterns</key> | |
| 6171 | <array> | |
| 6172 | <dict> | |
| 6173 | <key>name</key> | |
| 6174 | <string>variable.language.arguments.ts</string> | |
| 6175 | <key>match</key> | |
| 6176 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(arguments)\b(?!\$)</string> | |
| 6177 | </dict> | |
| 6178 | <dict> | |
| 6179 | <key>name</key> | |
| 6180 | <string>support.class.builtin.ts</string> | |
| 6181 | <key>match</key> | |
| 6182 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array | |
| 6183 | |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy | |
| 6184 | |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray | |
| 6185 | |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)</string> | |
| 6186 | </dict> | |
| 6187 | <dict> | |
| 6188 | <key>name</key> | |
| 6189 | <string>support.class.error.ts</string> | |
| 6190 | <key>match</key> | |
| 6191 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\b(?!\$)</string> | |
| 6192 | </dict> | |
| 6193 | <dict> | |
| 6194 | <key>name</key> | |
| 6195 | <string>support.class.promise.ts</string> | |
| 6196 | <key>match</key> | |
| 6197 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Promise)\b(?!\$)</string> | |
| 6198 | </dict> | |
| 6199 | <dict> | |
| 6200 | <key>name</key> | |
| 6201 | <string>support.function.ts</string> | |
| 6202 | <key>match</key> | |
| 6203 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval| | |
| 6204 | isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\s*\()</string> | |
| 6205 | </dict> | |
| 6206 | <dict> | |
| 6207 | <key>match</key> | |
| 6208 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Math)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?: | |
| 6209 | (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp| | |
| 6210 | expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random| | |
| 6211 | round|sign|sin|sinh|sqrt|tan|tanh|trunc) | |
| 6212 | | | |
| 6213 | (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\b(?!\$)</string> | |
| 6214 | <key>captures</key> | |
| 6215 | <dict> | |
| 6216 | <key>1</key> | |
| 6217 | <dict> | |
| 6218 | <key>name</key> | |
| 6219 | <string>support.constant.math.ts</string> | |
| 6220 | </dict> | |
| 6221 | <key>2</key> | |
| 6222 | <dict> | |
| 6223 | <key>name</key> | |
| 6224 | <string>punctuation.accessor.ts</string> | |
| 6225 | </dict> | |
| 6226 | <key>3</key> | |
| 6227 | <dict> | |
| 6228 | <key>name</key> | |
| 6229 | <string>punctuation.accessor.optional.ts</string> | |
| 6230 | </dict> | |
| 6231 | <key>4</key> | |
| 6232 | <dict> | |
| 6233 | <key>name</key> | |
| 6234 | <string>support.function.math.ts</string> | |
| 6235 | </dict> | |
| 6236 | <key>5</key> | |
| 6237 | <dict> | |
| 6238 | <key>name</key> | |
| 6239 | <string>support.constant.property.math.ts</string> | |
| 6240 | </dict> | |
| 6241 | </dict> | |
| 6242 | </dict> | |
| 6243 | <dict> | |
| 6244 | <key>match</key> | |
| 6245 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(console)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*( | |
| 6246 | assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log | |
| 6247 | |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\b(?!\$)</string> | |
| 6248 | <key>captures</key> | |
| 6249 | <dict> | |
| 6250 | <key>1</key> | |
| 6251 | <dict> | |
| 6252 | <key>name</key> | |
| 6253 | <string>support.class.console.ts</string> | |
| 6254 | </dict> | |
| 6255 | <key>2</key> | |
| 6256 | <dict> | |
| 6257 | <key>name</key> | |
| 6258 | <string>punctuation.accessor.ts</string> | |
| 6259 | </dict> | |
| 6260 | <key>3</key> | |
| 6261 | <dict> | |
| 6262 | <key>name</key> | |
| 6263 | <string>punctuation.accessor.optional.ts</string> | |
| 6264 | </dict> | |
| 6265 | <key>4</key> | |
| 6266 | <dict> | |
| 6267 | <key>name</key> | |
| 6268 | <string>support.function.console.ts</string> | |
| 6269 | </dict> | |
| 6270 | </dict> | |
| 6271 | </dict> | |
| 6272 | <dict> | |
| 6273 | <key>match</key> | |
| 6274 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(JSON)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(parse|stringify))?\b(?!\$)</string> | |
| 6275 | <key>captures</key> | |
| 6276 | <dict> | |
| 6277 | <key>1</key> | |
| 6278 | <dict> | |
| 6279 | <key>name</key> | |
| 6280 | <string>support.constant.json.ts</string> | |
| 6281 | </dict> | |
| 6282 | <key>2</key> | |
| 6283 | <dict> | |
| 6284 | <key>name</key> | |
| 6285 | <string>punctuation.accessor.ts</string> | |
| 6286 | </dict> | |
| 6287 | <key>3</key> | |
| 6288 | <dict> | |
| 6289 | <key>name</key> | |
| 6290 | <string>punctuation.accessor.optional.ts</string> | |
| 6291 | </dict> | |
| 6292 | <key>4</key> | |
| 6293 | <dict> | |
| 6294 | <key>name</key> | |
| 6295 | <string>support.function.json.ts</string> | |
| 6296 | </dict> | |
| 6297 | </dict> | |
| 6298 | </dict> | |
| 6299 | <dict> | |
| 6300 | <key>match</key> | |
| 6301 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(import)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(meta)\b(?!\$)</string> | |
| 6302 | <key>captures</key> | |
| 6303 | <dict> | |
| 6304 | <key>1</key> | |
| 6305 | <dict> | |
| 6306 | <key>name</key> | |
| 6307 | <string>keyword.control.import.ts</string> | |
| 6308 | </dict> | |
| 6309 | <key>2</key> | |
| 6310 | <dict> | |
| 6311 | <key>name</key> | |
| 6312 | <string>punctuation.accessor.ts</string> | |
| 6313 | </dict> | |
| 6314 | <key>3</key> | |
| 6315 | <dict> | |
| 6316 | <key>name</key> | |
| 6317 | <string>punctuation.accessor.optional.ts</string> | |
| 6318 | </dict> | |
| 6319 | <key>4</key> | |
| 6320 | <dict> | |
| 6321 | <key>name</key> | |
| 6322 | <string>support.variable.property.importmeta.ts</string> | |
| 6323 | </dict> | |
| 6324 | </dict> | |
| 6325 | </dict> | |
| 6326 | <dict> | |
| 6327 | <key>match</key> | |
| 6328 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(target)\b(?!\$)</string> | |
| 6329 | <key>captures</key> | |
| 6330 | <dict> | |
| 6331 | <key>1</key> | |
| 6332 | <dict> | |
| 6333 | <key>name</key> | |
| 6334 | <string>keyword.operator.new.ts</string> | |
| 6335 | </dict> | |
| 6336 | <key>2</key> | |
| 6337 | <dict> | |
| 6338 | <key>name</key> | |
| 6339 | <string>punctuation.accessor.ts</string> | |
| 6340 | </dict> | |
| 6341 | <key>3</key> | |
| 6342 | <dict> | |
| 6343 | <key>name</key> | |
| 6344 | <string>punctuation.accessor.optional.ts</string> | |
| 6345 | </dict> | |
| 6346 | <key>4</key> | |
| 6347 | <dict> | |
| 6348 | <key>name</key> | |
| 6349 | <string>support.variable.property.target.ts</string> | |
| 6350 | </dict> | |
| 6351 | </dict> | |
| 6352 | </dict> | |
| 6353 | <dict> | |
| 6354 | <key>match</key> | |
| 6355 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?: | |
| 6356 | (?:(constructor|length|prototype|__proto__)\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\()) | |
| 6357 | | | |
| 6358 | (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\b(?!\$)))</string> | |
| 6359 | <key>captures</key> | |
| 6360 | <dict> | |
| 6361 | <key>1</key> | |
| 6362 | <dict> | |
| 6363 | <key>name</key> | |
| 6364 | <string>punctuation.accessor.ts</string> | |
| 6365 | </dict> | |
| 6366 | <key>2</key> | |
| 6367 | <dict> | |
| 6368 | <key>name</key> | |
| 6369 | <string>punctuation.accessor.optional.ts</string> | |
| 6370 | </dict> | |
| 6371 | <key>3</key> | |
| 6372 | <dict> | |
| 6373 | <key>name</key> | |
| 6374 | <string>support.variable.property.ts</string> | |
| 6375 | </dict> | |
| 6376 | <key>4</key> | |
| 6377 | <dict> | |
| 6378 | <key>name</key> | |
| 6379 | <string>support.constant.ts</string> | |
| 6380 | </dict> | |
| 6381 | </dict> | |
| 6382 | </dict> | |
| 6383 | <dict> | |
| 6384 | <key>match</key> | |
| 6385 | <string>(?x) (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.)) \b (?: | |
| 6386 | (document|event|navigator|performance|screen|window) | |
| 6387 | | | |
| 6388 | (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener | |
| 6389 | |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule | |
| 6390 | |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration | |
| 6391 | |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern | |
| 6392 | |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent | |
| 6393 | |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException | |
| 6394 | |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer | |
| 6395 | |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry | |
| 6396 | |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent | |
| 6397 | |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential | |
| 6398 | |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync | |
| 6399 | |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement | |
| 6400 | |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement | |
| 6401 | |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement | |
| 6402 | |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement | |
| 6403 | |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement | |
| 6404 | |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement | |
| 6405 | |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement | |
| 6406 | |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement | |
| 6407 | |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement | |
| 6408 | |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement | |
| 6409 | |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement | |
| 6410 | |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase | |
| 6411 | |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction | |
| 6412 | |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities | |
| 6413 | |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess | |
| 6414 | |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent | |
| 6415 | |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream | |
| 6416 | |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent | |
| 6417 | |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID | |
| 6418 | |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification | |
| 6419 | |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential | |
| 6420 | |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark | |
| 6421 | |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList | |
| 6422 | |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent | |
| 6423 | |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList | |
| 6424 | |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager | |
| 6425 | |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource | |
| 6426 | |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement | |
| 6427 | |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength | |
| 6428 | |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio | |
| 6429 | |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement | |
| 6430 | |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement | |
| 6431 | |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement | |
| 6432 | |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength | |
| 6433 | |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement | |
| 6434 | |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio | |
| 6435 | |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList | |
| 6436 | |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement | |
| 6437 | |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement | |
| 6438 | |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState | |
| 6439 | |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet | |
| 6440 | |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable | |
| 6441 | |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer | |
| 6442 | |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat | |
| 6443 | |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES | |
| 6444 | |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope | |
| 6445 | |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult | |
| 6446 | |XSLTProcessor))\b(?!\$)</string> | |
| 6447 | <key>captures</key> | |
| 6448 | <dict> | |
| 6449 | <key>1</key> | |
| 6450 | <dict> | |
| 6451 | <key>name</key> | |
| 6452 | <string>support.variable.dom.ts</string> | |
| 6453 | </dict> | |
| 6454 | <key>2</key> | |
| 6455 | <dict> | |
| 6456 | <key>name</key> | |
| 6457 | <string>support.class.dom.ts</string> | |
| 6458 | </dict> | |
| 6459 | </dict> | |
| 6460 | </dict> | |
| 6461 | <dict> | |
| 6462 | <key>match</key> | |
| 6463 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?: | |
| 6464 | (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE | |
| 6465 | |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR | |
| 6466 | |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR | |
| 6467 | |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR) | |
| 6468 | | | |
| 6469 | (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName | |
| 6470 | |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop | |
| 6471 | |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor | |
| 6472 | |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption | |
| 6473 | |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear | |
| 6474 | |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete | |
| 6475 | |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset | |
| 6476 | |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight | |
| 6477 | |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds | |
| 6478 | |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize | |
| 6479 | |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host | |
| 6480 | |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth | |
| 6481 | |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext | |
| 6482 | |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom | |
| 6483 | |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple | |
| 6484 | |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName | |
| 6485 | |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight | |
| 6486 | |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer | |
| 6487 | |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling | |
| 6488 | |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText | |
| 6489 | |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts | |
| 6490 | |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove | |
| 6491 | |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary | |
| 6492 | |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead | |
| 6493 | |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile | |
| 6494 | |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\()</string> | |
| 6495 | <key>captures</key> | |
| 6496 | <dict> | |
| 6497 | <key>1</key> | |
| 6498 | <dict> | |
| 6499 | <key>name</key> | |
| 6500 | <string>punctuation.accessor.ts</string> | |
| 6501 | </dict> | |
| 6502 | <key>2</key> | |
| 6503 | <dict> | |
| 6504 | <key>name</key> | |
| 6505 | <string>punctuation.accessor.optional.ts</string> | |
| 6506 | </dict> | |
| 6507 | <key>3</key> | |
| 6508 | <dict> | |
| 6509 | <key>name</key> | |
| 6510 | <string>support.constant.dom.ts</string> | |
| 6511 | </dict> | |
| 6512 | <key>4</key> | |
| 6513 | <dict> | |
| 6514 | <key>name</key> | |
| 6515 | <string>support.variable.property.dom.ts</string> | |
| 6516 | </dict> | |
| 6517 | </dict> | |
| 6518 | </dict> | |
| 6519 | <dict> | |
| 6520 | <key>name</key> | |
| 6521 | <string>support.class.node.ts</string> | |
| 6522 | <key>match</key> | |
| 6523 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream | |
| 6524 | |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\b(?!\$)</string> | |
| 6525 | </dict> | |
| 6526 | <dict> | |
| 6527 | <key>match</key> | |
| 6528 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(process)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?: | |
| 6529 | (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions) | |
| 6530 | | | |
| 6531 | (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime) | |
| 6532 | ))?\b(?!\$)</string> | |
| 6533 | <key>captures</key> | |
| 6534 | <dict> | |
| 6535 | <key>1</key> | |
| 6536 | <dict> | |
| 6537 | <key>name</key> | |
| 6538 | <string>support.variable.object.process.ts</string> | |
| 6539 | </dict> | |
| 6540 | <key>2</key> | |
| 6541 | <dict> | |
| 6542 | <key>name</key> | |
| 6543 | <string>punctuation.accessor.ts</string> | |
| 6544 | </dict> | |
| 6545 | <key>3</key> | |
| 6546 | <dict> | |
| 6547 | <key>name</key> | |
| 6548 | <string>punctuation.accessor.optional.ts</string> | |
| 6549 | </dict> | |
| 6550 | <key>4</key> | |
| 6551 | <dict> | |
| 6552 | <key>name</key> | |
| 6553 | <string>support.variable.property.process.ts</string> | |
| 6554 | </dict> | |
| 6555 | <key>5</key> | |
| 6556 | <dict> | |
| 6557 | <key>name</key> | |
| 6558 | <string>support.function.process.ts</string> | |
| 6559 | </dict> | |
| 6560 | </dict> | |
| 6561 | </dict> | |
| 6562 | <dict> | |
| 6563 | <key>match</key> | |
| 6564 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(exports)|(module)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\b(?!\$)</string> | |
| 6565 | <key>captures</key> | |
| 6566 | <dict> | |
| 6567 | <key>1</key> | |
| 6568 | <dict> | |
| 6569 | <key>name</key> | |
| 6570 | <string>support.type.object.module.ts</string> | |
| 6571 | </dict> | |
| 6572 | <key>2</key> | |
| 6573 | <dict> | |
| 6574 | <key>name</key> | |
| 6575 | <string>support.type.object.module.ts</string> | |
| 6576 | </dict> | |
| 6577 | <key>3</key> | |
| 6578 | <dict> | |
| 6579 | <key>name</key> | |
| 6580 | <string>punctuation.accessor.ts</string> | |
| 6581 | </dict> | |
| 6582 | <key>4</key> | |
| 6583 | <dict> | |
| 6584 | <key>name</key> | |
| 6585 | <string>punctuation.accessor.optional.ts</string> | |
| 6586 | </dict> | |
| 6587 | <key>5</key> | |
| 6588 | <dict> | |
| 6589 | <key>name</key> | |
| 6590 | <string>support.type.object.module.ts</string> | |
| 6591 | </dict> | |
| 6592 | </dict> | |
| 6593 | </dict> | |
| 6594 | <dict> | |
| 6595 | <key>name</key> | |
| 6596 | <string>support.variable.object.node.ts</string> | |
| 6597 | <key>match</key> | |
| 6598 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(global|GLOBAL|root|__dirname|__filename)\b(?!\$)</string> | |
| 6599 | </dict> | |
| 6600 | <dict> | |
| 6601 | <key>match</key> | |
| 6602 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* | |
| 6603 | (?: | |
| 6604 | (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset| | |
| 6605 | Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove| | |
| 6606 | Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)| | |
| 6607 | Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help| | |
| 6608 | Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate| | |
| 6609 | Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover| | |
| 6610 | Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error| | |
| 6611 | Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort) | |
| 6612 | ) | | |
| 6613 | (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages| | |
| 6614 | scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort| | |
| 6615 | sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours| | |
| 6616 | Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)| | |
| 6617 | Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice| | |
| 6618 | savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat| | |
| 6619 | contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup| | |
| 6620 | createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)| | |
| 6621 | test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift| | |
| 6622 | untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse| | |
| 6623 | print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file| | |
| 6624 | fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor| | |
| 6625 | forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert| | |
| 6626 | abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload| | |
| 6627 | releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear| | |
| 6628 | Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)| | |
| 6629 | Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo| | |
| 6630 | moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back | |
| 6631 | ) | | |
| 6632 | (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append| | |
| 6633 | appendChild|appendData|before|blur|canPlayType|captureStream| | |
| 6634 | caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click| | |
| 6635 | cloneContents|cloneNode|cloneRange|close|closest|collapse| | |
| 6636 | compareBoundaryPoints|compareDocumentPosition|comparePoint|contains| | |
| 6637 | convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute| | |
| 6638 | createAttributeNS|createCaption|createCDATASection|createComment| | |
| 6639 | createContextualFragment|createDocument|createDocumentFragment| | |
| 6640 | createDocumentType|createElement|createElementNS|createEntityReference| | |
| 6641 | createEvent|createExpression|createHTMLDocument|createNodeIterator| | |
| 6642 | createNSResolver|createProcessingInstruction|createRange|createShadowRoot| | |
| 6643 | createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete| | |
| 6644 | deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot| | |
| 6645 | deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint| | |
| 6646 | enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen| | |
| 6647 | exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get| | |
| 6648 | getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode| | |
| 6649 | getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads| | |
| 6650 | getClientRects|getContext|getDestinationInsertionPoints|getElementById| | |
| 6651 | getElementsByClassName|getElementsByName|getElementsByTagName| | |
| 6652 | getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate| | |
| 6653 | getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes| | |
| 6654 | hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement| | |
| 6655 | insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData| | |
| 6656 | insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode| | |
| 6657 | isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI| | |
| 6658 | lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild| | |
| 6659 | moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open| | |
| 6660 | parentNode|pause|play|postMessage|prepend|preventDefault|previousNode| | |
| 6661 | previousSibling|probablySupportsContext|queryCommandEnabled| | |
| 6662 | queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue| | |
| 6663 | querySelector|querySelectorAll|registerContentHandler|registerElement| | |
| 6664 | registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute| | |
| 6665 | removeAttributeNode|removeAttributeNS|removeChild|removeEventListener| | |
| 6666 | removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity| | |
| 6667 | requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView| | |
| 6668 | scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute| | |
| 6669 | setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture| | |
| 6670 | setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem| | |
| 6671 | setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore| | |
| 6672 | slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation| | |
| 6673 | submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob| | |
| 6674 | toDataURL|toggle|toString|values|write|writeln | |
| 6675 | ) | | |
| 6676 | (all|catch|finally|race|reject|resolve|then | |
| 6677 | ) | |
| 6678 | )(?=\s*\()</string> | |
| 6679 | <key>captures</key> | |
| 6680 | <dict> | |
| 6681 | <key>1</key> | |
| 6682 | <dict> | |
| 6683 | <key>name</key> | |
| 6684 | <string>punctuation.accessor.ts</string> | |
| 6685 | </dict> | |
| 6686 | <key>2</key> | |
| 6687 | <dict> | |
| 6688 | <key>name</key> | |
| 6689 | <string>punctuation.accessor.optional.ts</string> | |
| 6690 | </dict> | |
| 6691 | <key>3</key> | |
| 6692 | <dict> | |
| 6693 | <key>name</key> | |
| 6694 | <string>support.function.event-handler.ts</string> | |
| 6695 | </dict> | |
| 6696 | <key>4</key> | |
| 6697 | <dict> | |
| 6698 | <key>name</key> | |
| 6699 | <string>support.function.ts</string> | |
| 6700 | </dict> | |
| 6701 | <key>5</key> | |
| 6702 | <dict> | |
| 6703 | <key>name</key> | |
| 6704 | <string>support.function.dom.ts</string> | |
| 6705 | </dict> | |
| 6706 | <key>6</key> | |
| 6707 | <dict> | |
| 6708 | <key>name</key> | |
| 6709 | <string>support.function.promise.ts</string> | |
| 6710 | </dict> | |
| 6711 | </dict> | |
| 6712 | </dict> | |
| 6713 | </array> | |
| 6714 | </dict> | |
| 6715 | <key>identifiers</key> | |
| 6716 | <dict> | |
| 6717 | <key>patterns</key> | |
| 6718 | <array> | |
| 6719 | <dict> | |
| 6720 | <key>include</key> | |
| 6721 | <string>#object-identifiers</string> | |
| 6722 | </dict> | |
| 6723 | <dict> | |
| 6724 | <key>match</key> | |
| 6725 | <string>(?x)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*( | |
| 6726 | ((async\s+)?( | |
| 6727 | (function\s*[(&lt;*]) | | |
| 6728 | (function\s+) | | |
| 6729 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 6730 | )) | | |
| 6731 | ((async\s*)?( | |
| 6732 | ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 6733 | # sure shot arrow functions even if =&gt; is on new line | |
| 6734 | ( | |
| 6735 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 6736 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 6737 | ( | |
| 6738 | ([)]\s*:) | # (): | |
| 6739 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 6740 | ) | |
| 6741 | ) | | |
| 6742 | ||
| 6743 | # arrow function possible to detect only with =&gt; on same line | |
| 6744 | ( | |
| 6745 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 6746 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 6747 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 6748 | \s*=&gt; # arrow operator | |
| 6749 | ) | |
| 6750 | )) | |
| 6751 | ))</string> | |
| 6752 | <key>captures</key> | |
| 6753 | <dict> | |
| 6754 | <key>1</key> | |
| 6755 | <dict> | |
| 6756 | <key>name</key> | |
| 6757 | <string>punctuation.accessor.ts</string> | |
| 6758 | </dict> | |
| 6759 | <key>2</key> | |
| 6760 | <dict> | |
| 6761 | <key>name</key> | |
| 6762 | <string>punctuation.accessor.optional.ts</string> | |
| 6763 | </dict> | |
| 6764 | <key>3</key> | |
| 6765 | <dict> | |
| 6766 | <key>name</key> | |
| 6767 | <string>entity.name.function.ts</string> | |
| 6768 | </dict> | |
| 6769 | </dict> | |
| 6770 | </dict> | |
| 6771 | <dict> | |
| 6772 | <key>match</key> | |
| 6773 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string> | |
| 6774 | <key>captures</key> | |
| 6775 | <dict> | |
| 6776 | <key>1</key> | |
| 6777 | <dict> | |
| 6778 | <key>name</key> | |
| 6779 | <string>punctuation.accessor.ts</string> | |
| 6780 | </dict> | |
| 6781 | <key>2</key> | |
| 6782 | <dict> | |
| 6783 | <key>name</key> | |
| 6784 | <string>punctuation.accessor.optional.ts</string> | |
| 6785 | </dict> | |
| 6786 | <key>3</key> | |
| 6787 | <dict> | |
| 6788 | <key>name</key> | |
| 6789 | <string>variable.other.constant.property.ts</string> | |
| 6790 | </dict> | |
| 6791 | </dict> | |
| 6792 | </dict> | |
| 6793 | <dict> | |
| 6794 | <key>match</key> | |
| 6795 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6796 | <key>captures</key> | |
| 6797 | <dict> | |
| 6798 | <key>1</key> | |
| 6799 | <dict> | |
| 6800 | <key>name</key> | |
| 6801 | <string>punctuation.accessor.ts</string> | |
| 6802 | </dict> | |
| 6803 | <key>2</key> | |
| 6804 | <dict> | |
| 6805 | <key>name</key> | |
| 6806 | <string>punctuation.accessor.optional.ts</string> | |
| 6807 | </dict> | |
| 6808 | <key>3</key> | |
| 6809 | <dict> | |
| 6810 | <key>name</key> | |
| 6811 | <string>variable.other.property.ts</string> | |
| 6812 | </dict> | |
| 6813 | </dict> | |
| 6814 | </dict> | |
| 6815 | <dict> | |
| 6816 | <key>name</key> | |
| 6817 | <string>variable.other.constant.ts</string> | |
| 6818 | <key>match</key> | |
| 6819 | <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string> | |
| 6820 | </dict> | |
| 6821 | <dict> | |
| 6822 | <key>name</key> | |
| 6823 | <string>variable.other.readwrite.ts</string> | |
| 6824 | <key>match</key> | |
| 6825 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 6826 | </dict> | |
| 6827 | </array> | |
| 6828 | </dict> | |
| 6829 | <key>object-identifiers</key> | |
| 6830 | <dict> | |
| 6831 | <key>patterns</key> | |
| 6832 | <array> | |
| 6833 | <dict> | |
| 6834 | <key>name</key> | |
| 6835 | <string>support.class.ts</string> | |
| 6836 | <key>match</key> | |
| 6837 | <string>([_$[:alpha:]][_$[:alnum:]]*)(?=\s*\??\.\s*prototype\b(?!\$))</string> | |
| 6838 | </dict> | |
| 6839 | <dict> | |
| 6840 | <key>match</key> | |
| 6841 | <string>(?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?: | |
| 6842 | (\#?[[:upper:]][_$[:digit:][:upper:]]*) | | |
| 6843 | (\#?[_$[:alpha:]][_$[:alnum:]]*) | |
| 6844 | )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6845 | <key>captures</key> | |
| 6846 | <dict> | |
| 6847 | <key>1</key> | |
| 6848 | <dict> | |
| 6849 | <key>name</key> | |
| 6850 | <string>punctuation.accessor.ts</string> | |
| 6851 | </dict> | |
| 6852 | <key>2</key> | |
| 6853 | <dict> | |
| 6854 | <key>name</key> | |
| 6855 | <string>punctuation.accessor.optional.ts</string> | |
| 6856 | </dict> | |
| 6857 | <key>3</key> | |
| 6858 | <dict> | |
| 6859 | <key>name</key> | |
| 6860 | <string>variable.other.constant.object.property.ts</string> | |
| 6861 | </dict> | |
| 6862 | <key>4</key> | |
| 6863 | <dict> | |
| 6864 | <key>name</key> | |
| 6865 | <string>variable.other.object.property.ts</string> | |
| 6866 | </dict> | |
| 6867 | </dict> | |
| 6868 | </dict> | |
| 6869 | <dict> | |
| 6870 | <key>match</key> | |
| 6871 | <string>(?x)(?: | |
| 6872 | ([[:upper:]][_$[:digit:][:upper:]]*) | | |
| 6873 | ([_$[:alpha:]][_$[:alnum:]]*) | |
| 6874 | )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6875 | <key>captures</key> | |
| 6876 | <dict> | |
| 6877 | <key>1</key> | |
| 6878 | <dict> | |
| 6879 | <key>name</key> | |
| 6880 | <string>variable.other.constant.object.ts</string> | |
| 6881 | </dict> | |
| 6882 | <key>2</key> | |
| 6883 | <dict> | |
| 6884 | <key>name</key> | |
| 6885 | <string>variable.other.object.ts</string> | |
| 6886 | </dict> | |
| 6887 | </dict> | |
| 6888 | </dict> | |
| 6889 | </array> | |
| 6890 | </dict> | |
| 6891 | <key>type-annotation</key> | |
| 6892 | <dict> | |
| 6893 | <key>patterns</key> | |
| 6894 | <array> | |
| 6895 | <dict> | |
| 6896 | <key>name</key> | |
| 6897 | <string>meta.type.annotation.ts</string> | |
| 6898 | <key>begin</key> | |
| 6899 | <string>(:)(?=\s*\S)</string> | |
| 6900 | <key>beginCaptures</key> | |
| 6901 | <dict> | |
| 6902 | <key>1</key> | |
| 6903 | <dict> | |
| 6904 | <key>name</key> | |
| 6905 | <string>keyword.operator.type.annotation.ts</string> | |
| 6906 | </dict> | |
| 6907 | </dict> | |
| 6908 | <key>end</key> | |
| 6909 | <string>(?&lt;![:|&amp;])(?!\s*[|&amp;]\s+)((?=^|[,);\}\]]|//)|(?==[^&gt;])|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string> | |
| 6910 | <key>patterns</key> | |
| 6911 | <array> | |
| 6912 | <dict> | |
| 6913 | <key>include</key> | |
| 6914 | <string>#type</string> | |
| 6915 | </dict> | |
| 6916 | </array> | |
| 6917 | </dict> | |
| 6918 | <dict> | |
| 6919 | <key>name</key> | |
| 6920 | <string>meta.type.annotation.ts</string> | |
| 6921 | <key>begin</key> | |
| 6922 | <string>(:)</string> | |
| 6923 | <key>beginCaptures</key> | |
| 6924 | <dict> | |
| 6925 | <key>1</key> | |
| 6926 | <dict> | |
| 6927 | <key>name</key> | |
| 6928 | <string>keyword.operator.type.annotation.ts</string> | |
| 6929 | </dict> | |
| 6930 | </dict> | |
| 6931 | <key>end</key> | |
| 6932 | <string>(?&lt;![:|&amp;])((?=[,);\}\]]|\/\/)|(?==[^&gt;])|(?=^\s*$)|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string> | |
| 6933 | <key>patterns</key> | |
| 6934 | <array> | |
| 6935 | <dict> | |
| 6936 | <key>include</key> | |
| 6937 | <string>#type</string> | |
| 6938 | </dict> | |
| 6939 | </array> | |
| 6940 | </dict> | |
| 6941 | </array> | |
| 6942 | </dict> | |
| 6943 | <key>parameter-type-annotation</key> | |
| 6944 | <dict> | |
| 6945 | <key>patterns</key> | |
| 6946 | <array> | |
| 6947 | <dict> | |
| 6948 | <key>name</key> | |
| 6949 | <string>meta.type.annotation.ts</string> | |
| 6950 | <key>begin</key> | |
| 6951 | <string>(:)</string> | |
| 6952 | <key>beginCaptures</key> | |
| 6953 | <dict> | |
| 6954 | <key>1</key> | |
| 6955 | <dict> | |
| 6956 | <key>name</key> | |
| 6957 | <string>keyword.operator.type.annotation.ts</string> | |
| 6958 | </dict> | |
| 6959 | </dict> | |
| 6960 | <key>end</key> | |
| 6961 | <string>(?=[,)])|(?==[^&gt;])</string> | |
| 6962 | <key>patterns</key> | |
| 6963 | <array> | |
| 6964 | <dict> | |
| 6965 | <key>include</key> | |
| 6966 | <string>#type</string> | |
| 6967 | </dict> | |
| 6968 | </array> | |
| 6969 | </dict> | |
| 6970 | </array> | |
| 6971 | </dict> | |
| 6972 | <key>return-type</key> | |
| 6973 | <dict> | |
| 6974 | <key>patterns</key> | |
| 6975 | <array> | |
| 6976 | <dict> | |
| 6977 | <key>name</key> | |
| 6978 | <string>meta.return.type.ts</string> | |
| 6979 | <key>begin</key> | |
| 6980 | <string>(?&lt;=\))\s*(:)(?=\s*\S)</string> | |
| 6981 | <key>beginCaptures</key> | |
| 6982 | <dict> | |
| 6983 | <key>1</key> | |
| 6984 | <dict> | |
| 6985 | <key>name</key> | |
| 6986 | <string>keyword.operator.type.annotation.ts</string> | |
| 6987 | </dict> | |
| 6988 | </dict> | |
| 6989 | <key>end</key> | |
| 6990 | <string>(?&lt;![:|&amp;])(?=$|^|[{};,]|//)</string> | |
| 6991 | <key>patterns</key> | |
| 6992 | <array> | |
| 6993 | <dict> | |
| 6994 | <key>include</key> | |
| 6995 | <string>#return-type-core</string> | |
| 6996 | </dict> | |
| 6997 | </array> | |
| 6998 | </dict> | |
| 6999 | <dict> | |
| 7000 | <key>name</key> | |
| 7001 | <string>meta.return.type.ts</string> | |
| 7002 | <key>begin</key> | |
| 7003 | <string>(?&lt;=\))\s*(:)</string> | |
| 7004 | <key>beginCaptures</key> | |
| 7005 | <dict> | |
| 7006 | <key>1</key> | |
| 7007 | <dict> | |
| 7008 | <key>name</key> | |
| 7009 | <string>keyword.operator.type.annotation.ts</string> | |
| 7010 | </dict> | |
| 7011 | </dict> | |
| 7012 | <key>end</key> | |
| 7013 | <string>(?&lt;![:|&amp;])((?=[{};,]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string> | |
| 7014 | <key>patterns</key> | |
| 7015 | <array> | |
| 7016 | <dict> | |
| 7017 | <key>include</key> | |
| 7018 | <string>#return-type-core</string> | |
| 7019 | </dict> | |
| 7020 | </array> | |
| 7021 | </dict> | |
| 7022 | </array> | |
| 7023 | </dict> | |
| 7024 | <key>return-type-core</key> | |
| 7025 | <dict> | |
| 7026 | <key>patterns</key> | |
| 7027 | <array> | |
| 7028 | <dict> | |
| 7029 | <key>include</key> | |
| 7030 | <string>#comment</string> | |
| 7031 | </dict> | |
| 7032 | <dict> | |
| 7033 | <key>begin</key> | |
| 7034 | <string>(?&lt;=[:|&amp;])(?=\s*\{)</string> | |
| 7035 | <key>end</key> | |
| 7036 | <string>(?&lt;=\})</string> | |
| 7037 | <key>patterns</key> | |
| 7038 | <array> | |
| 7039 | <dict> | |
| 7040 | <key>include</key> | |
| 7041 | <string>#type-object</string> | |
| 7042 | </dict> | |
| 7043 | </array> | |
| 7044 | </dict> | |
| 7045 | <dict> | |
| 7046 | <key>include</key> | |
| 7047 | <string>#type-predicate-operator</string> | |
| 7048 | </dict> | |
| 7049 | <dict> | |
| 7050 | <key>include</key> | |
| 7051 | <string>#type</string> | |
| 7052 | </dict> | |
| 7053 | </array> | |
| 7054 | </dict> | |
| 7055 | <key>arrow-return-type</key> | |
| 7056 | <dict> | |
| 7057 | <key>name</key> | |
| 7058 | <string>meta.return.type.arrow.ts</string> | |
| 7059 | <key>begin</key> | |
| 7060 | <string>(?&lt;=\))\s*(:)</string> | |
| 7061 | <key>beginCaptures</key> | |
| 7062 | <dict> | |
| 7063 | <key>1</key> | |
| 7064 | <dict> | |
| 7065 | <key>name</key> | |
| 7066 | <string>keyword.operator.type.annotation.ts</string> | |
| 7067 | </dict> | |
| 7068 | </dict> | |
| 7069 | <key>end</key> | |
| 7070 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 7071 | <key>patterns</key> | |
| 7072 | <array> | |
| 7073 | <dict> | |
| 7074 | <key>include</key> | |
| 7075 | <string>#arrow-return-type-body</string> | |
| 7076 | </dict> | |
| 7077 | </array> | |
| 7078 | </dict> | |
| 7079 | <key>possibly-arrow-return-type</key> | |
| 7080 | <dict> | |
| 7081 | <key>begin</key> | |
| 7082 | <string>(?&lt;=\)|^)\s*(:)(?=\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*=&gt;)</string> | |
| 7083 | <key>beginCaptures</key> | |
| 7084 | <dict> | |
| 7085 | <key>1</key> | |
| 7086 | <dict> | |
| 7087 | <key>name</key> | |
| 7088 | <string>meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts</string> | |
| 7089 | </dict> | |
| 7090 | </dict> | |
| 7091 | <key>end</key> | |
| 7092 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 7093 | <key>contentName</key> | |
| 7094 | <string>meta.arrow.ts meta.return.type.arrow.ts</string> | |
| 7095 | <key>patterns</key> | |
| 7096 | <array> | |
| 7097 | <dict> | |
| 7098 | <key>include</key> | |
| 7099 | <string>#arrow-return-type-body</string> | |
| 7100 | </dict> | |
| 7101 | </array> | |
| 7102 | </dict> | |
| 7103 | <key>arrow-return-type-body</key> | |
| 7104 | <dict> | |
| 7105 | <key>patterns</key> | |
| 7106 | <array> | |
| 7107 | <dict> | |
| 7108 | <key>begin</key> | |
| 7109 | <string>(?&lt;=[:])(?=\s*\{)</string> | |
| 7110 | <key>end</key> | |
| 7111 | <string>(?&lt;=\})</string> | |
| 7112 | <key>patterns</key> | |
| 7113 | <array> | |
| 7114 | <dict> | |
| 7115 | <key>include</key> | |
| 7116 | <string>#type-object</string> | |
| 7117 | </dict> | |
| 7118 | </array> | |
| 7119 | </dict> | |
| 7120 | <dict> | |
| 7121 | <key>include</key> | |
| 7122 | <string>#type-predicate-operator</string> | |
| 7123 | </dict> | |
| 7124 | <dict> | |
| 7125 | <key>include</key> | |
| 7126 | <string>#type</string> | |
| 7127 | </dict> | |
| 7128 | </array> | |
| 7129 | </dict> | |
| 7130 | <key>type-parameters</key> | |
| 7131 | <dict> | |
| 7132 | <key>name</key> | |
| 7133 | <string>meta.type.parameters.ts</string> | |
| 7134 | <key>begin</key> | |
| 7135 | <string>(&lt;)</string> | |
| 7136 | <key>beginCaptures</key> | |
| 7137 | <dict> | |
| 7138 | <key>1</key> | |
| 7139 | <dict> | |
| 7140 | <key>name</key> | |
| 7141 | <string>punctuation.definition.typeparameters.begin.ts</string> | |
| 7142 | </dict> | |
| 7143 | </dict> | |
| 7144 | <key>end</key> | |
| 7145 | <string>(&gt;)</string> | |
| 7146 | <key>endCaptures</key> | |
| 7147 | <dict> | |
| 7148 | <key>1</key> | |
| 7149 | <dict> | |
| 7150 | <key>name</key> | |
| 7151 | <string>punctuation.definition.typeparameters.end.ts</string> | |
| 7152 | </dict> | |
| 7153 | </dict> | |
| 7154 | <key>patterns</key> | |
| 7155 | <array> | |
| 7156 | <dict> | |
| 7157 | <key>include</key> | |
| 7158 | <string>#comment</string> | |
| 7159 | </dict> | |
| 7160 | <dict> | |
| 7161 | <key>name</key> | |
| 7162 | <string>storage.modifier.ts</string> | |
| 7163 | <key>match</key> | |
| 7164 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7165 | </dict> | |
| 7166 | <dict> | |
| 7167 | <key>include</key> | |
| 7168 | <string>#type</string> | |
| 7169 | </dict> | |
| 7170 | <dict> | |
| 7171 | <key>include</key> | |
| 7172 | <string>#punctuation-comma</string> | |
| 7173 | </dict> | |
| 7174 | <dict> | |
| 7175 | <key>name</key> | |
| 7176 | <string>keyword.operator.assignment.ts</string> | |
| 7177 | <key>match</key> | |
| 7178 | <string>(=)(?!&gt;)</string> | |
| 7179 | </dict> | |
| 7180 | </array> | |
| 7181 | </dict> | |
| 7182 | <key>type-arguments</key> | |
| 7183 | <dict> | |
| 7184 | <key>name</key> | |
| 7185 | <string>meta.type.parameters.ts</string> | |
| 7186 | <key>begin</key> | |
| 7187 | <string>\&lt;</string> | |
| 7188 | <key>beginCaptures</key> | |
| 7189 | <dict> | |
| 7190 | <key>0</key> | |
| 7191 | <dict> | |
| 7192 | <key>name</key> | |
| 7193 | <string>punctuation.definition.typeparameters.begin.ts</string> | |
| 7194 | </dict> | |
| 7195 | </dict> | |
| 7196 | <key>end</key> | |
| 7197 | <string>\&gt;</string> | |
| 7198 | <key>endCaptures</key> | |
| 7199 | <dict> | |
| 7200 | <key>0</key> | |
| 7201 | <dict> | |
| 7202 | <key>name</key> | |
| 7203 | <string>punctuation.definition.typeparameters.end.ts</string> | |
| 7204 | </dict> | |
| 7205 | </dict> | |
| 7206 | <key>patterns</key> | |
| 7207 | <array> | |
| 7208 | <dict> | |
| 7209 | <key>include</key> | |
| 7210 | <string>#type-arguments-body</string> | |
| 7211 | </dict> | |
| 7212 | </array> | |
| 7213 | </dict> | |
| 7214 | <key>type-arguments-body</key> | |
| 7215 | <dict> | |
| 7216 | <key>patterns</key> | |
| 7217 | <array> | |
| 7218 | <dict> | |
| 7219 | <key>match</key> | |
| 7220 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(_)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7221 | <key>captures</key> | |
| 7222 | <dict> | |
| 7223 | <key>0</key> | |
| 7224 | <dict> | |
| 7225 | <key>name</key> | |
| 7226 | <string>keyword.operator.type.ts</string> | |
| 7227 | </dict> | |
| 7228 | </dict> | |
| 7229 | </dict> | |
| 7230 | <dict> | |
| 7231 | <key>include</key> | |
| 7232 | <string>#type</string> | |
| 7233 | </dict> | |
| 7234 | <dict> | |
| 7235 | <key>include</key> | |
| 7236 | <string>#punctuation-comma</string> | |
| 7237 | </dict> | |
| 7238 | </array> | |
| 7239 | </dict> | |
| 7240 | <key>type</key> | |
| 7241 | <dict> | |
| 7242 | <key>patterns</key> | |
| 7243 | <array> | |
| 7244 | <dict> | |
| 7245 | <key>include</key> | |
| 7246 | <string>#comment</string> | |
| 7247 | </dict> | |
| 7248 | <dict> | |
| 7249 | <key>include</key> | |
| 7250 | <string>#type-string</string> | |
| 7251 | </dict> | |
| 7252 | <dict> | |
| 7253 | <key>include</key> | |
| 7254 | <string>#numeric-literal</string> | |
| 7255 | </dict> | |
| 7256 | <dict> | |
| 7257 | <key>include</key> | |
| 7258 | <string>#type-primitive</string> | |
| 7259 | </dict> | |
| 7260 | <dict> | |
| 7261 | <key>include</key> | |
| 7262 | <string>#type-builtin-literals</string> | |
| 7263 | </dict> | |
| 7264 | <dict> | |
| 7265 | <key>include</key> | |
| 7266 | <string>#type-parameters</string> | |
| 7267 | </dict> | |
| 7268 | <dict> | |
| 7269 | <key>include</key> | |
| 7270 | <string>#type-tuple</string> | |
| 7271 | </dict> | |
| 7272 | <dict> | |
| 7273 | <key>include</key> | |
| 7274 | <string>#type-object</string> | |
| 7275 | </dict> | |
| 7276 | <dict> | |
| 7277 | <key>include</key> | |
| 7278 | <string>#type-operators</string> | |
| 7279 | </dict> | |
| 7280 | <dict> | |
| 7281 | <key>include</key> | |
| 7282 | <string>#type-conditional</string> | |
| 7283 | </dict> | |
| 7284 | <dict> | |
| 7285 | <key>include</key> | |
| 7286 | <string>#type-fn-type-parameters</string> | |
| 7287 | </dict> | |
| 7288 | <dict> | |
| 7289 | <key>include</key> | |
| 7290 | <string>#type-paren-or-function-parameters</string> | |
| 7291 | </dict> | |
| 7292 | <dict> | |
| 7293 | <key>include</key> | |
| 7294 | <string>#type-function-return-type</string> | |
| 7295 | </dict> | |
| 7296 | <dict> | |
| 7297 | <key>match</key> | |
| 7298 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 7299 | <key>captures</key> | |
| 7300 | <dict> | |
| 7301 | <key>1</key> | |
| 7302 | <dict> | |
| 7303 | <key>name</key> | |
| 7304 | <string>storage.modifier.ts</string> | |
| 7305 | </dict> | |
| 7306 | </dict> | |
| 7307 | </dict> | |
| 7308 | <dict> | |
| 7309 | <key>include</key> | |
| 7310 | <string>#type-name</string> | |
| 7311 | </dict> | |
| 7312 | </array> | |
| 7313 | </dict> | |
| 7314 | <key>type-primitive</key> | |
| 7315 | <dict> | |
| 7316 | <key>name</key> | |
| 7317 | <string>support.type.primitive.ts</string> | |
| 7318 | <key>match</key> | |
| 7319 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7320 | </dict> | |
| 7321 | <key>type-builtin-literals</key> | |
| 7322 | <dict> | |
| 7323 | <key>name</key> | |
| 7324 | <string>support.type.builtin.ts</string> | |
| 7325 | <key>match</key> | |
| 7326 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7327 | </dict> | |
| 7328 | <key>type-tuple</key> | |
| 7329 | <dict> | |
| 7330 | <key>name</key> | |
| 7331 | <string>meta.type.tuple.ts</string> | |
| 7332 | <key>begin</key> | |
| 7333 | <string>\[</string> | |
| 7334 | <key>beginCaptures</key> | |
| 7335 | <dict> | |
| 7336 | <key>0</key> | |
| 7337 | <dict> | |
| 7338 | <key>name</key> | |
| 7339 | <string>meta.brace.square.ts</string> | |
| 7340 | </dict> | |
| 7341 | </dict> | |
| 7342 | <key>end</key> | |
| 7343 | <string>\]</string> | |
| 7344 | <key>endCaptures</key> | |
| 7345 | <dict> | |
| 7346 | <key>0</key> | |
| 7347 | <dict> | |
| 7348 | <key>name</key> | |
| 7349 | <string>meta.brace.square.ts</string> | |
| 7350 | </dict> | |
| 7351 | </dict> | |
| 7352 | <key>patterns</key> | |
| 7353 | <array> | |
| 7354 | <dict> | |
| 7355 | <key>name</key> | |
| 7356 | <string>keyword.operator.rest.ts</string> | |
| 7357 | <key>match</key> | |
| 7358 | <string>\.\.\.</string> | |
| 7359 | </dict> | |
| 7360 | <dict> | |
| 7361 | <key>match</key> | |
| 7362 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([_$[:alpha:]][_$[:alnum:]]*)\s*(\?)?\s*(:)</string> | |
| 7363 | <key>captures</key> | |
| 7364 | <dict> | |
| 7365 | <key>1</key> | |
| 7366 | <dict> | |
| 7367 | <key>name</key> | |
| 7368 | <string>entity.name.label.ts</string> | |
| 7369 | </dict> | |
| 7370 | <key>2</key> | |
| 7371 | <dict> | |
| 7372 | <key>name</key> | |
| 7373 | <string>keyword.operator.optional.ts</string> | |
| 7374 | </dict> | |
| 7375 | <key>3</key> | |
| 7376 | <dict> | |
| 7377 | <key>name</key> | |
| 7378 | <string>punctuation.separator.label.ts</string> | |
| 7379 | </dict> | |
| 7380 | </dict> | |
| 7381 | </dict> | |
| 7382 | <dict> | |
| 7383 | <key>include</key> | |
| 7384 | <string>#type</string> | |
| 7385 | </dict> | |
| 7386 | <dict> | |
| 7387 | <key>include</key> | |
| 7388 | <string>#punctuation-comma</string> | |
| 7389 | </dict> | |
| 7390 | </array> | |
| 7391 | </dict> | |
| 7392 | <key>type-object</key> | |
| 7393 | <dict> | |
| 7394 | <key>name</key> | |
| 7395 | <string>meta.object.type.ts</string> | |
| 7396 | <key>begin</key> | |
| 7397 | <string>\{</string> | |
| 7398 | <key>beginCaptures</key> | |
| 7399 | <dict> | |
| 7400 | <key>0</key> | |
| 7401 | <dict> | |
| 7402 | <key>name</key> | |
| 7403 | <string>punctuation.definition.block.ts</string> | |
| 7404 | </dict> | |
| 7405 | </dict> | |
| 7406 | <key>end</key> | |
| 7407 | <string>\}</string> | |
| 7408 | <key>endCaptures</key> | |
| 7409 | <dict> | |
| 7410 | <key>0</key> | |
| 7411 | <dict> | |
| 7412 | <key>name</key> | |
| 7413 | <string>punctuation.definition.block.ts</string> | |
| 7414 | </dict> | |
| 7415 | </dict> | |
| 7416 | <key>patterns</key> | |
| 7417 | <array> | |
| 7418 | <dict> | |
| 7419 | <key>include</key> | |
| 7420 | <string>#comment</string> | |
| 7421 | </dict> | |
| 7422 | <dict> | |
| 7423 | <key>include</key> | |
| 7424 | <string>#method-declaration</string> | |
| 7425 | </dict> | |
| 7426 | <dict> | |
| 7427 | <key>include</key> | |
| 7428 | <string>#indexer-declaration</string> | |
| 7429 | </dict> | |
| 7430 | <dict> | |
| 7431 | <key>include</key> | |
| 7432 | <string>#indexer-mapped-type-declaration</string> | |
| 7433 | </dict> | |
| 7434 | <dict> | |
| 7435 | <key>include</key> | |
| 7436 | <string>#field-declaration</string> | |
| 7437 | </dict> | |
| 7438 | <dict> | |
| 7439 | <key>include</key> | |
| 7440 | <string>#type-annotation</string> | |
| 7441 | </dict> | |
| 7442 | <dict> | |
| 7443 | <key>begin</key> | |
| 7444 | <string>\.\.\.</string> | |
| 7445 | <key>beginCaptures</key> | |
| 7446 | <dict> | |
| 7447 | <key>0</key> | |
| 7448 | <dict> | |
| 7449 | <key>name</key> | |
| 7450 | <string>keyword.operator.spread.ts</string> | |
| 7451 | </dict> | |
| 7452 | </dict> | |
| 7453 | <key>end</key> | |
| 7454 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 7455 | <key>patterns</key> | |
| 7456 | <array> | |
| 7457 | <dict> | |
| 7458 | <key>include</key> | |
| 7459 | <string>#type</string> | |
| 7460 | </dict> | |
| 7461 | </array> | |
| 7462 | </dict> | |
| 7463 | <dict> | |
| 7464 | <key>include</key> | |
| 7465 | <string>#punctuation-comma</string> | |
| 7466 | </dict> | |
| 7467 | <dict> | |
| 7468 | <key>include</key> | |
| 7469 | <string>#punctuation-semicolon</string> | |
| 7470 | </dict> | |
| 7471 | <dict> | |
| 7472 | <key>include</key> | |
| 7473 | <string>#type</string> | |
| 7474 | </dict> | |
| 7475 | </array> | |
| 7476 | </dict> | |
| 7477 | <key>type-conditional</key> | |
| 7478 | <dict> | |
| 7479 | <key>patterns</key> | |
| 7480 | <array> | |
| 7481 | <dict> | |
| 7482 | <key>begin</key> | |
| 7483 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends)\s+</string> | |
| 7484 | <key>beginCaptures</key> | |
| 7485 | <dict> | |
| 7486 | <key>1</key> | |
| 7487 | <dict> | |
| 7488 | <key>name</key> | |
| 7489 | <string>storage.modifier.ts</string> | |
| 7490 | </dict> | |
| 7491 | </dict> | |
| 7492 | <key>end</key> | |
| 7493 | <string>(?&lt;=:)</string> | |
| 7494 | <key>patterns</key> | |
| 7495 | <array> | |
| 7496 | <dict> | |
| 7497 | <key>begin</key> | |
| 7498 | <string>\?</string> | |
| 7499 | <key>beginCaptures</key> | |
| 7500 | <dict> | |
| 7501 | <key>0</key> | |
| 7502 | <dict> | |
| 7503 | <key>name</key> | |
| 7504 | <string>keyword.operator.ternary.ts</string> | |
| 7505 | </dict> | |
| 7506 | </dict> | |
| 7507 | <key>end</key> | |
| 7508 | <string>:</string> | |
| 7509 | <key>endCaptures</key> | |
| 7510 | <dict> | |
| 7511 | <key>0</key> | |
| 7512 | <dict> | |
| 7513 | <key>name</key> | |
| 7514 | <string>keyword.operator.ternary.ts</string> | |
| 7515 | </dict> | |
| 7516 | </dict> | |
| 7517 | <key>patterns</key> | |
| 7518 | <array> | |
| 7519 | <dict> | |
| 7520 | <key>include</key> | |
| 7521 | <string>#type</string> | |
| 7522 | </dict> | |
| 7523 | </array> | |
| 7524 | </dict> | |
| 7525 | <dict> | |
| 7526 | <key>include</key> | |
| 7527 | <string>#type</string> | |
| 7528 | </dict> | |
| 7529 | </array> | |
| 7530 | </dict> | |
| 7531 | </array> | |
| 7532 | </dict> | |
| 7533 | <key>type-paren-or-function-parameters</key> | |
| 7534 | <dict> | |
| 7535 | <key>name</key> | |
| 7536 | <string>meta.type.paren.cover.ts</string> | |
| 7537 | <key>begin</key> | |
| 7538 | <string>\(</string> | |
| 7539 | <key>beginCaptures</key> | |
| 7540 | <dict> | |
| 7541 | <key>0</key> | |
| 7542 | <dict> | |
| 7543 | <key>name</key> | |
| 7544 | <string>meta.brace.round.ts</string> | |
| 7545 | </dict> | |
| 7546 | </dict> | |
| 7547 | <key>end</key> | |
| 7548 | <string>\)</string> | |
| 7549 | <key>endCaptures</key> | |
| 7550 | <dict> | |
| 7551 | <key>0</key> | |
| 7552 | <dict> | |
| 7553 | <key>name</key> | |
| 7554 | <string>meta.brace.round.ts</string> | |
| 7555 | </dict> | |
| 7556 | </dict> | |
| 7557 | <key>patterns</key> | |
| 7558 | <array> | |
| 7559 | <dict> | |
| 7560 | <key>match</key> | |
| 7561 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*( | |
| 7562 | (&lt;) | | |
| 7563 | ([(]\s*( | |
| 7564 | ([)]) | | |
| 7565 | (\.\.\.) | | |
| 7566 | ([_$[:alnum:]]+\s*( | |
| 7567 | ([:,?=])| | |
| 7568 | ([)]\s*=&gt;) | |
| 7569 | )) | |
| 7570 | )) | |
| 7571 | )) | | |
| 7572 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 7573 | (:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))))</string> | |
| 7574 | <key>captures</key> | |
| 7575 | <dict> | |
| 7576 | <key>1</key> | |
| 7577 | <dict> | |
| 7578 | <key>name</key> | |
| 7579 | <string>storage.modifier.ts</string> | |
| 7580 | </dict> | |
| 7581 | <key>2</key> | |
| 7582 | <dict> | |
| 7583 | <key>name</key> | |
| 7584 | <string>keyword.operator.rest.ts</string> | |
| 7585 | </dict> | |
| 7586 | <key>3</key> | |
| 7587 | <dict> | |
| 7588 | <key>name</key> | |
| 7589 | <string>entity.name.function.ts variable.language.this.ts</string> | |
| 7590 | </dict> | |
| 7591 | <key>4</key> | |
| 7592 | <dict> | |
| 7593 | <key>name</key> | |
| 7594 | <string>entity.name.function.ts</string> | |
| 7595 | </dict> | |
| 7596 | <key>5</key> | |
| 7597 | <dict> | |
| 7598 | <key>name</key> | |
| 7599 | <string>keyword.operator.optional.ts</string> | |
| 7600 | </dict> | |
| 7601 | </dict> | |
| 7602 | </dict> | |
| 7603 | <dict> | |
| 7604 | <key>match</key> | |
| 7605 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=:)</string> | |
| 7606 | <key>captures</key> | |
| 7607 | <dict> | |
| 7608 | <key>1</key> | |
| 7609 | <dict> | |
| 7610 | <key>name</key> | |
| 7611 | <string>storage.modifier.ts</string> | |
| 7612 | </dict> | |
| 7613 | <key>2</key> | |
| 7614 | <dict> | |
| 7615 | <key>name</key> | |
| 7616 | <string>keyword.operator.rest.ts</string> | |
| 7617 | </dict> | |
| 7618 | <key>3</key> | |
| 7619 | <dict> | |
| 7620 | <key>name</key> | |
| 7621 | <string>variable.parameter.ts variable.language.this.ts</string> | |
| 7622 | </dict> | |
| 7623 | <key>4</key> | |
| 7624 | <dict> | |
| 7625 | <key>name</key> | |
| 7626 | <string>variable.parameter.ts</string> | |
| 7627 | </dict> | |
| 7628 | <key>5</key> | |
| 7629 | <dict> | |
| 7630 | <key>name</key> | |
| 7631 | <string>keyword.operator.optional.ts</string> | |
| 7632 | </dict> | |
| 7633 | </dict> | |
| 7634 | </dict> | |
| 7635 | <dict> | |
| 7636 | <key>include</key> | |
| 7637 | <string>#type-annotation</string> | |
| 7638 | </dict> | |
| 7639 | <dict> | |
| 7640 | <key>name</key> | |
| 7641 | <string>punctuation.separator.parameter.ts</string> | |
| 7642 | <key>match</key> | |
| 7643 | <string>,</string> | |
| 7644 | </dict> | |
| 7645 | <dict> | |
| 7646 | <key>include</key> | |
| 7647 | <string>#type</string> | |
| 7648 | </dict> | |
| 7649 | </array> | |
| 7650 | </dict> | |
| 7651 | <key>type-fn-type-parameters</key> | |
| 7652 | <dict> | |
| 7653 | <key>patterns</key> | |
| 7654 | <array> | |
| 7655 | <dict> | |
| 7656 | <key>begin</key> | |
| 7657 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b(?=\s*\&lt;)</string> | |
| 7658 | <key>beginCaptures</key> | |
| 7659 | <dict> | |
| 7660 | <key>1</key> | |
| 7661 | <dict> | |
| 7662 | <key>name</key> | |
| 7663 | <string>meta.type.constructor.ts storage.modifier.ts</string> | |
| 7664 | </dict> | |
| 7665 | <key>2</key> | |
| 7666 | <dict> | |
| 7667 | <key>name</key> | |
| 7668 | <string>meta.type.constructor.ts keyword.control.new.ts</string> | |
| 7669 | </dict> | |
| 7670 | </dict> | |
| 7671 | <key>end</key> | |
| 7672 | <string>(?&lt;=&gt;)</string> | |
| 7673 | <key>patterns</key> | |
| 7674 | <array> | |
| 7675 | <dict> | |
| 7676 | <key>include</key> | |
| 7677 | <string>#comment</string> | |
| 7678 | </dict> | |
| 7679 | <dict> | |
| 7680 | <key>include</key> | |
| 7681 | <string>#type-parameters</string> | |
| 7682 | </dict> | |
| 7683 | </array> | |
| 7684 | </dict> | |
| 7685 | <dict> | |
| 7686 | <key>name</key> | |
| 7687 | <string>meta.type.constructor.ts</string> | |
| 7688 | <key>begin</key> | |
| 7689 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b\s*(?=\()</string> | |
| 7690 | <key>beginCaptures</key> | |
| 7691 | <dict> | |
| 7692 | <key>1</key> | |
| 7693 | <dict> | |
| 7694 | <key>name</key> | |
| 7695 | <string>storage.modifier.ts</string> | |
| 7696 | </dict> | |
| 7697 | <key>2</key> | |
| 7698 | <dict> | |
| 7699 | <key>name</key> | |
| 7700 | <string>keyword.control.new.ts</string> | |
| 7701 | </dict> | |
| 7702 | </dict> | |
| 7703 | <key>end</key> | |
| 7704 | <string>(?&lt;=\))</string> | |
| 7705 | <key>patterns</key> | |
| 7706 | <array> | |
| 7707 | <dict> | |
| 7708 | <key>include</key> | |
| 7709 | <string>#function-parameters</string> | |
| 7710 | </dict> | |
| 7711 | </array> | |
| 7712 | </dict> | |
| 7713 | <dict> | |
| 7714 | <key>name</key> | |
| 7715 | <string>meta.type.function.ts</string> | |
| 7716 | <key>begin</key> | |
| 7717 | <string>(?x)( | |
| 7718 | (?= | |
| 7719 | [(]\s*( | |
| 7720 | ([)]) | | |
| 7721 | (\.\.\.) | | |
| 7722 | ([_$[:alnum:]]+\s*( | |
| 7723 | ([:,?=])| | |
| 7724 | ([)]\s*=&gt;) | |
| 7725 | )) | |
| 7726 | ) | |
| 7727 | ) | |
| 7728 | )</string> | |
| 7729 | <key>end</key> | |
| 7730 | <string>(?&lt;=\))</string> | |
| 7731 | <key>patterns</key> | |
| 7732 | <array> | |
| 7733 | <dict> | |
| 7734 | <key>include</key> | |
| 7735 | <string>#function-parameters</string> | |
| 7736 | </dict> | |
| 7737 | </array> | |
| 7738 | </dict> | |
| 7739 | </array> | |
| 7740 | </dict> | |
| 7741 | <key>type-function-return-type</key> | |
| 7742 | <dict> | |
| 7743 | <key>patterns</key> | |
| 7744 | <array> | |
| 7745 | <dict> | |
| 7746 | <key>name</key> | |
| 7747 | <string>meta.type.function.return.ts</string> | |
| 7748 | <key>begin</key> | |
| 7749 | <string>(=&gt;)(?=\s*\S)</string> | |
| 7750 | <key>beginCaptures</key> | |
| 7751 | <dict> | |
| 7752 | <key>1</key> | |
| 7753 | <dict> | |
| 7754 | <key>name</key> | |
| 7755 | <string>storage.type.function.arrow.ts</string> | |
| 7756 | </dict> | |
| 7757 | </dict> | |
| 7758 | <key>end</key> | |
| 7759 | <string>(?&lt;!=&gt;)(?&lt;![|&amp;])(?=[,\]\)\{\}=;&gt;:\?]|//|$)</string> | |
| 7760 | <key>patterns</key> | |
| 7761 | <array> | |
| 7762 | <dict> | |
| 7763 | <key>include</key> | |
| 7764 | <string>#type-function-return-type-core</string> | |
| 7765 | </dict> | |
| 7766 | </array> | |
| 7767 | </dict> | |
| 7768 | <dict> | |
| 7769 | <key>name</key> | |
| 7770 | <string>meta.type.function.return.ts</string> | |
| 7771 | <key>begin</key> | |
| 7772 | <string>=&gt;</string> | |
| 7773 | <key>beginCaptures</key> | |
| 7774 | <dict> | |
| 7775 | <key>0</key> | |
| 7776 | <dict> | |
| 7777 | <key>name</key> | |
| 7778 | <string>storage.type.function.arrow.ts</string> | |
| 7779 | </dict> | |
| 7780 | </dict> | |
| 7781 | <key>end</key> | |
| 7782 | <string>(?&lt;!=&gt;)(?&lt;![|&amp;])((?=[,\]\)\{\}=;:\?&gt;]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string> | |
| 7783 | <key>patterns</key> | |
| 7784 | <array> | |
| 7785 | <dict> | |
| 7786 | <key>include</key> | |
| 7787 | <string>#type-function-return-type-core</string> | |
| 7788 | </dict> | |
| 7789 | </array> | |
| 7790 | </dict> | |
| 7791 | </array> | |
| 7792 | </dict> | |
| 7793 | <key>type-function-return-type-core</key> | |
| 7794 | <dict> | |
| 7795 | <key>patterns</key> | |
| 7796 | <array> | |
| 7797 | <dict> | |
| 7798 | <key>include</key> | |
| 7799 | <string>#comment</string> | |
| 7800 | </dict> | |
| 7801 | <dict> | |
| 7802 | <key>begin</key> | |
| 7803 | <string>(?&lt;==&gt;)(?=\s*\{)</string> | |
| 7804 | <key>end</key> | |
| 7805 | <string>(?&lt;=\})</string> | |
| 7806 | <key>patterns</key> | |
| 7807 | <array> | |
| 7808 | <dict> | |
| 7809 | <key>include</key> | |
| 7810 | <string>#type-object</string> | |
| 7811 | </dict> | |
| 7812 | </array> | |
| 7813 | </dict> | |
| 7814 | <dict> | |
| 7815 | <key>include</key> | |
| 7816 | <string>#type-predicate-operator</string> | |
| 7817 | </dict> | |
| 7818 | <dict> | |
| 7819 | <key>include</key> | |
| 7820 | <string>#type</string> | |
| 7821 | </dict> | |
| 7822 | </array> | |
| 7823 | </dict> | |
| 7824 | <key>type-operators</key> | |
| 7825 | <dict> | |
| 7826 | <key>patterns</key> | |
| 7827 | <array> | |
| 7828 | <dict> | |
| 7829 | <key>include</key> | |
| 7830 | <string>#typeof-operator</string> | |
| 7831 | </dict> | |
| 7832 | <dict> | |
| 7833 | <key>include</key> | |
| 7834 | <string>#type-infer</string> | |
| 7835 | </dict> | |
| 7836 | <dict> | |
| 7837 | <key>begin</key> | |
| 7838 | <string>([&amp;|])(?=\s*\{)</string> | |
| 7839 | <key>beginCaptures</key> | |
| 7840 | <dict> | |
| 7841 | <key>0</key> | |
| 7842 | <dict> | |
| 7843 | <key>name</key> | |
| 7844 | <string>keyword.operator.type.ts</string> | |
| 7845 | </dict> | |
| 7846 | </dict> | |
| 7847 | <key>end</key> | |
| 7848 | <string>(?&lt;=\})</string> | |
| 7849 | <key>patterns</key> | |
| 7850 | <array> | |
| 7851 | <dict> | |
| 7852 | <key>include</key> | |
| 7853 | <string>#type-object</string> | |
| 7854 | </dict> | |
| 7855 | </array> | |
| 7856 | </dict> | |
| 7857 | <dict> | |
| 7858 | <key>begin</key> | |
| 7859 | <string>[&amp;|]</string> | |
| 7860 | <key>beginCaptures</key> | |
| 7861 | <dict> | |
| 7862 | <key>0</key> | |
| 7863 | <dict> | |
| 7864 | <key>name</key> | |
| 7865 | <string>keyword.operator.type.ts</string> | |
| 7866 | </dict> | |
| 7867 | </dict> | |
| 7868 | <key>end</key> | |
| 7869 | <string>(?=\S)</string> | |
| 7870 | </dict> | |
| 7871 | <dict> | |
| 7872 | <key>name</key> | |
| 7873 | <string>keyword.operator.expression.keyof.ts</string> | |
| 7874 | <key>match</key> | |
| 7875 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))keyof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7876 | </dict> | |
| 7877 | <dict> | |
| 7878 | <key>name</key> | |
| 7879 | <string>keyword.operator.ternary.ts</string> | |
| 7880 | <key>match</key> | |
| 7881 | <string>(\?|\:)</string> | |
| 7882 | </dict> | |
| 7883 | <dict> | |
| 7884 | <key>name</key> | |
| 7885 | <string>keyword.operator.expression.import.ts</string> | |
| 7886 | <key>match</key> | |
| 7887 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string> | |
| 7888 | </dict> | |
| 7889 | </array> | |
| 7890 | </dict> | |
| 7891 | <key>type-infer</key> | |
| 7892 | <dict> | |
| 7893 | <key>patterns</key> | |
| 7894 | <array> | |
| 7895 | <dict> | |
| 7896 | <key>match</key> | |
| 7897 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(infer)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s+(extends)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))?</string> | |
| 7898 | <key>name</key> | |
| 7899 | <string>meta.type.infer.ts</string> | |
| 7900 | <key>captures</key> | |
| 7901 | <dict> | |
| 7902 | <key>1</key> | |
| 7903 | <dict> | |
| 7904 | <key>name</key> | |
| 7905 | <string>keyword.operator.expression.infer.ts</string> | |
| 7906 | </dict> | |
| 7907 | <key>2</key> | |
| 7908 | <dict> | |
| 7909 | <key>name</key> | |
| 7910 | <string>entity.name.type.ts</string> | |
| 7911 | </dict> | |
| 7912 | <key>3</key> | |
| 7913 | <dict> | |
| 7914 | <key>name</key> | |
| 7915 | <string>keyword.operator.expression.extends.ts</string> | |
| 7916 | </dict> | |
| 7917 | </dict> | |
| 7918 | </dict> | |
| 7919 | </array> | |
| 7920 | </dict> | |
| 7921 | <key>type-predicate-operator</key> | |
| 7922 | <dict> | |
| 7923 | <key>patterns</key> | |
| 7924 | <array> | |
| 7925 | <dict> | |
| 7926 | <key>match</key> | |
| 7927 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(asserts)\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s(is)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7928 | <key>captures</key> | |
| 7929 | <dict> | |
| 7930 | <key>1</key> | |
| 7931 | <dict> | |
| 7932 | <key>name</key> | |
| 7933 | <string>keyword.operator.type.asserts.ts</string> | |
| 7934 | </dict> | |
| 7935 | <key>2</key> | |
| 7936 | <dict> | |
| 7937 | <key>name</key> | |
| 7938 | <string>variable.parameter.ts variable.language.this.ts</string> | |
| 7939 | </dict> | |
| 7940 | <key>3</key> | |
| 7941 | <dict> | |
| 7942 | <key>name</key> | |
| 7943 | <string>variable.parameter.ts</string> | |
| 7944 | </dict> | |
| 7945 | <key>4</key> | |
| 7946 | <dict> | |
| 7947 | <key>name</key> | |
| 7948 | <string>keyword.operator.expression.is.ts</string> | |
| 7949 | </dict> | |
| 7950 | </dict> | |
| 7951 | </dict> | |
| 7952 | <dict> | |
| 7953 | <key>match</key> | |
| 7954 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(asserts)\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7955 | <key>captures</key> | |
| 7956 | <dict> | |
| 7957 | <key>1</key> | |
| 7958 | <dict> | |
| 7959 | <key>name</key> | |
| 7960 | <string>keyword.operator.type.asserts.ts</string> | |
| 7961 | </dict> | |
| 7962 | <key>2</key> | |
| 7963 | <dict> | |
| 7964 | <key>name</key> | |
| 7965 | <string>variable.parameter.ts variable.language.this.ts</string> | |
| 7966 | </dict> | |
| 7967 | <key>3</key> | |
| 7968 | <dict> | |
| 7969 | <key>name</key> | |
| 7970 | <string>variable.parameter.ts</string> | |
| 7971 | </dict> | |
| 7972 | </dict> | |
| 7973 | </dict> | |
| 7974 | <dict> | |
| 7975 | <key>name</key> | |
| 7976 | <string>keyword.operator.type.asserts.ts</string> | |
| 7977 | <key>match</key> | |
| 7978 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))asserts(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7979 | </dict> | |
| 7980 | <dict> | |
| 7981 | <key>name</key> | |
| 7982 | <string>keyword.operator.expression.is.ts</string> | |
| 7983 | <key>match</key> | |
| 7984 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7985 | </dict> | |
| 7986 | </array> | |
| 7987 | </dict> | |
| 7988 | <key>type-name</key> | |
| 7989 | <dict> | |
| 7990 | <key>patterns</key> | |
| 7991 | <array> | |
| 7992 | <dict> | |
| 7993 | <key>begin</key> | |
| 7994 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(&lt;)</string> | |
| 7995 | <key>captures</key> | |
| 7996 | <dict> | |
| 7997 | <key>1</key> | |
| 7998 | <dict> | |
| 7999 | <key>name</key> | |
| 8000 | <string>entity.name.type.module.ts</string> | |
| 8001 | </dict> | |
| 8002 | <key>2</key> | |
| 8003 | <dict> | |
| 8004 | <key>name</key> | |
| 8005 | <string>punctuation.accessor.ts</string> | |
| 8006 | </dict> | |
| 8007 | <key>3</key> | |
| 8008 | <dict> | |
| 8009 | <key>name</key> | |
| 8010 | <string>punctuation.accessor.optional.ts</string> | |
| 8011 | </dict> | |
| 8012 | <key>4</key> | |
| 8013 | <dict> | |
| 8014 | <key>name</key> | |
| 8015 | <string>meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts</string> | |
| 8016 | </dict> | |
| 8017 | </dict> | |
| 8018 | <key>end</key> | |
| 8019 | <string>(&gt;)</string> | |
| 8020 | <key>endCaptures</key> | |
| 8021 | <dict> | |
| 8022 | <key>1</key> | |
| 8023 | <dict> | |
| 8024 | <key>name</key> | |
| 8025 | <string>meta.type.parameters.ts punctuation.definition.typeparameters.end.ts</string> | |
| 8026 | </dict> | |
| 8027 | </dict> | |
| 8028 | <key>contentName</key> | |
| 8029 | <string>meta.type.parameters.ts</string> | |
| 8030 | <key>patterns</key> | |
| 8031 | <array> | |
| 8032 | <dict> | |
| 8033 | <key>include</key> | |
| 8034 | <string>#type-arguments-body</string> | |
| 8035 | </dict> | |
| 8036 | </array> | |
| 8037 | </dict> | |
| 8038 | <dict> | |
| 8039 | <key>begin</key> | |
| 8040 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(&lt;)</string> | |
| 8041 | <key>beginCaptures</key> | |
| 8042 | <dict> | |
| 8043 | <key>1</key> | |
| 8044 | <dict> | |
| 8045 | <key>name</key> | |
| 8046 | <string>entity.name.type.ts</string> | |
| 8047 | </dict> | |
| 8048 | <key>2</key> | |
| 8049 | <dict> | |
| 8050 | <key>name</key> | |
| 8051 | <string>meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts</string> | |
| 8052 | </dict> | |
| 8053 | </dict> | |
| 8054 | <key>end</key> | |
| 8055 | <string>(&gt;)</string> | |
| 8056 | <key>endCaptures</key> | |
| 8057 | <dict> | |
| 8058 | <key>1</key> | |
| 8059 | <dict> | |
| 8060 | <key>name</key> | |
| 8061 | <string>meta.type.parameters.ts punctuation.definition.typeparameters.end.ts</string> | |
| 8062 | </dict> | |
| 8063 | </dict> | |
| 8064 | <key>contentName</key> | |
| 8065 | <string>meta.type.parameters.ts</string> | |
| 8066 | <key>patterns</key> | |
| 8067 | <array> | |
| 8068 | <dict> | |
| 8069 | <key>include</key> | |
| 8070 | <string>#type-arguments-body</string> | |
| 8071 | </dict> | |
| 8072 | </array> | |
| 8073 | </dict> | |
| 8074 | <dict> | |
| 8075 | <key>match</key> | |
| 8076 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 8077 | <key>captures</key> | |
| 8078 | <dict> | |
| 8079 | <key>1</key> | |
| 8080 | <dict> | |
| 8081 | <key>name</key> | |
| 8082 | <string>entity.name.type.module.ts</string> | |
| 8083 | </dict> | |
| 8084 | <key>2</key> | |
| 8085 | <dict> | |
| 8086 | <key>name</key> | |
| 8087 | <string>punctuation.accessor.ts</string> | |
| 8088 | </dict> | |
| 8089 | <key>3</key> | |
| 8090 | <dict> | |
| 8091 | <key>name</key> | |
| 8092 | <string>punctuation.accessor.optional.ts</string> | |
| 8093 | </dict> | |
| 8094 | </dict> | |
| 8095 | </dict> | |
| 8096 | <dict> | |
| 8097 | <key>name</key> | |
| 8098 | <string>entity.name.type.ts</string> | |
| 8099 | <key>match</key> | |
| 8100 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 8101 | </dict> | |
| 8102 | </array> | |
| 8103 | </dict> | |
| 8104 | <key>punctuation-comma</key> | |
| 8105 | <dict> | |
| 8106 | <key>name</key> | |
| 8107 | <string>punctuation.separator.comma.ts</string> | |
| 8108 | <key>match</key> | |
| 8109 | <string>,</string> | |
| 8110 | </dict> | |
| 8111 | <key>punctuation-semicolon</key> | |
| 8112 | <dict> | |
| 8113 | <key>name</key> | |
| 8114 | <string>punctuation.terminator.statement.ts</string> | |
| 8115 | <key>match</key> | |
| 8116 | <string>;</string> | |
| 8117 | </dict> | |
| 8118 | <key>punctuation-accessor</key> | |
| 8119 | <dict> | |
| 8120 | <key>match</key> | |
| 8121 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 8122 | <key>captures</key> | |
| 8123 | <dict> | |
| 8124 | <key>1</key> | |
| 8125 | <dict> | |
| 8126 | <key>name</key> | |
| 8127 | <string>punctuation.accessor.ts</string> | |
| 8128 | </dict> | |
| 8129 | <key>2</key> | |
| 8130 | <dict> | |
| 8131 | <key>name</key> | |
| 8132 | <string>punctuation.accessor.optional.ts</string> | |
| 8133 | </dict> | |
| 8134 | </dict> | |
| 8135 | </dict> | |
| 8136 | <key>string</key> | |
| 8137 | <dict> | |
| 8138 | <key>patterns</key> | |
| 8139 | <array> | |
| 8140 | <dict> | |
| 8141 | <key>include</key> | |
| 8142 | <string>#qstring-single</string> | |
| 8143 | </dict> | |
| 8144 | <dict> | |
| 8145 | <key>include</key> | |
| 8146 | <string>#qstring-double</string> | |
| 8147 | </dict> | |
| 8148 | <dict> | |
| 8149 | <key>include</key> | |
| 8150 | <string>#template</string> | |
| 8151 | </dict> | |
| 8152 | </array> | |
| 8153 | </dict> | |
| 8154 | <key>qstring-double</key> | |
| 8155 | <dict> | |
| 8156 | <key>name</key> | |
| 8157 | <string>string.quoted.double.ts</string> | |
| 8158 | <key>begin</key> | |
| 8159 | <string>"</string> | |
| 8160 | <key>beginCaptures</key> | |
| 8161 | <dict> | |
| 8162 | <key>0</key> | |
| 8163 | <dict> | |
| 8164 | <key>name</key> | |
| 8165 | <string>punctuation.definition.string.begin.ts</string> | |
| 8166 | </dict> | |
| 8167 | </dict> | |
| 8168 | <key>end</key> | |
| 8169 | <string>(")|((?:[^\\\n])$)</string> | |
| 8170 | <key>endCaptures</key> | |
| 8171 | <dict> | |
| 8172 | <key>1</key> | |
| 8173 | <dict> | |
| 8174 | <key>name</key> | |
| 8175 | <string>punctuation.definition.string.end.ts</string> | |
| 8176 | </dict> | |
| 8177 | <key>2</key> | |
| 8178 | <dict> | |
| 8179 | <key>name</key> | |
| 8180 | <string>invalid.illegal.newline.ts</string> | |
| 8181 | </dict> | |
| 8182 | </dict> | |
| 8183 | <key>patterns</key> | |
| 8184 | <array> | |
| 8185 | <dict> | |
| 8186 | <key>include</key> | |
| 8187 | <string>#string-character-escape</string> | |
| 8188 | </dict> | |
| 8189 | </array> | |
| 8190 | </dict> | |
| 8191 | <key>qstring-single</key> | |
| 8192 | <dict> | |
| 8193 | <key>name</key> | |
| 8194 | <string>string.quoted.single.ts</string> | |
| 8195 | <key>begin</key> | |
| 8196 | <string>'</string> | |
| 8197 | <key>beginCaptures</key> | |
| 8198 | <dict> | |
| 8199 | <key>0</key> | |
| 8200 | <dict> | |
| 8201 | <key>name</key> | |
| 8202 | <string>punctuation.definition.string.begin.ts</string> | |
| 8203 | </dict> | |
| 8204 | </dict> | |
| 8205 | <key>end</key> | |
| 8206 | <string>(\')|((?:[^\\\n])$)</string> | |
| 8207 | <key>endCaptures</key> | |
| 8208 | <dict> | |
| 8209 | <key>1</key> | |
| 8210 | <dict> | |
| 8211 | <key>name</key> | |
| 8212 | <string>punctuation.definition.string.end.ts</string> | |
| 8213 | </dict> | |
| 8214 | <key>2</key> | |
| 8215 | <dict> | |
| 8216 | <key>name</key> | |
| 8217 | <string>invalid.illegal.newline.ts</string> | |
| 8218 | </dict> | |
| 8219 | </dict> | |
| 8220 | <key>patterns</key> | |
| 8221 | <array> | |
| 8222 | <dict> | |
| 8223 | <key>include</key> | |
| 8224 | <string>#string-character-escape</string> | |
| 8225 | </dict> | |
| 8226 | </array> | |
| 8227 | </dict> | |
| 8228 | <key>string-character-escape</key> | |
| 8229 | <dict> | |
| 8230 | <key>name</key> | |
| 8231 | <string>constant.character.escape.ts</string> | |
| 8232 | <key>match</key> | |
| 8233 | <string>\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]+\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)</string> | |
| 8234 | </dict> | |
| 8235 | <key>template</key> | |
| 8236 | <dict> | |
| 8237 | <key>patterns</key> | |
| 8238 | <array> | |
| 8239 | <dict> | |
| 8240 | <key>include</key> | |
| 8241 | <string>#template-call</string> | |
| 8242 | </dict> | |
| 8243 | <dict> | |
| 8244 | <key>contentName</key> | |
| 8245 | <string>string.template.ts</string> | |
| 8246 | <key>begin</key> | |
| 8247 | <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string> | |
| 8248 | <key>beginCaptures</key> | |
| 8249 | <dict> | |
| 8250 | <key>1</key> | |
| 8251 | <dict> | |
| 8252 | <key>name</key> | |
| 8253 | <string>entity.name.function.tagged-template.ts</string> | |
| 8254 | </dict> | |
| 8255 | <key>2</key> | |
| 8256 | <dict> | |
| 8257 | <key>name</key> | |
| 8258 | <string>string.template.ts punctuation.definition.string.template.begin.ts</string> | |
| 8259 | </dict> | |
| 8260 | </dict> | |
| 8261 | <key>end</key> | |
| 8262 | <string>`</string> | |
| 8263 | <key>endCaptures</key> | |
| 8264 | <dict> | |
| 8265 | <key>0</key> | |
| 8266 | <dict> | |
| 8267 | <key>name</key> | |
| 8268 | <string>string.template.ts punctuation.definition.string.template.end.ts</string> | |
| 8269 | </dict> | |
| 8270 | </dict> | |
| 8271 | <key>patterns</key> | |
| 8272 | <array> | |
| 8273 | <dict> | |
| 8274 | <key>include</key> | |
| 8275 | <string>#template-substitution-element</string> | |
| 8276 | </dict> | |
| 8277 | <dict> | |
| 8278 | <key>include</key> | |
| 8279 | <string>#string-character-escape</string> | |
| 8280 | </dict> | |
| 8281 | </array> | |
| 8282 | </dict> | |
| 8283 | </array> | |
| 8284 | </dict> | |
| 8285 | <key>template-call</key> | |
| 8286 | <dict> | |
| 8287 | <key>patterns</key> | |
| 8288 | <array> | |
| 8289 | <dict> | |
| 8290 | <key>begin</key> | |
| 8291 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string> | |
| 8292 | <key>end</key> | |
| 8293 | <string>(?=`)</string> | |
| 8294 | <key>patterns</key> | |
| 8295 | <array> | |
| 8296 | <dict> | |
| 8297 | <key>begin</key> | |
| 8298 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 8299 | <key>end</key> | |
| 8300 | <string>(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string> | |
| 8301 | <key>patterns</key> | |
| 8302 | <array> | |
| 8303 | <dict> | |
| 8304 | <key>include</key> | |
| 8305 | <string>#support-function-call-identifiers</string> | |
| 8306 | </dict> | |
| 8307 | <dict> | |
| 8308 | <key>name</key> | |
| 8309 | <string>entity.name.function.tagged-template.ts</string> | |
| 8310 | <key>match</key> | |
| 8311 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 8312 | </dict> | |
| 8313 | </array> | |
| 8314 | </dict> | |
| 8315 | <dict> | |
| 8316 | <key>include</key> | |
| 8317 | <string>#type-arguments</string> | |
| 8318 | </dict> | |
| 8319 | </array> | |
| 8320 | </dict> | |
| 8321 | <dict> | |
| 8322 | <key>begin</key> | |
| 8323 | <string>([_$[:alpha:]][_$[:alnum:]]*)?\s*(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)`)</string> | |
| 8324 | <key>beginCaptures</key> | |
| 8325 | <dict> | |
| 8326 | <key>1</key> | |
| 8327 | <dict> | |
| 8328 | <key>name</key> | |
| 8329 | <string>entity.name.function.tagged-template.ts</string> | |
| 8330 | </dict> | |
| 8331 | </dict> | |
| 8332 | <key>end</key> | |
| 8333 | <string>(?=`)</string> | |
| 8334 | <key>patterns</key> | |
| 8335 | <array> | |
| 8336 | <dict> | |
| 8337 | <key>include</key> | |
| 8338 | <string>#type-arguments</string> | |
| 8339 | </dict> | |
| 8340 | </array> | |
| 8341 | </dict> | |
| 8342 | </array> | |
| 8343 | </dict> | |
| 8344 | <key>template-substitution-element</key> | |
| 8345 | <dict> | |
| 8346 | <key>name</key> | |
| 8347 | <string>meta.template.expression.ts</string> | |
| 8348 | <key>begin</key> | |
| 8349 | <string>\$\{</string> | |
| 8350 | <key>beginCaptures</key> | |
| 8351 | <dict> | |
| 8352 | <key>0</key> | |
| 8353 | <dict> | |
| 8354 | <key>name</key> | |
| 8355 | <string>punctuation.definition.template-expression.begin.ts</string> | |
| 8356 | </dict> | |
| 8357 | </dict> | |
| 8358 | <key>end</key> | |
| 8359 | <string>\}</string> | |
| 8360 | <key>endCaptures</key> | |
| 8361 | <dict> | |
| 8362 | <key>0</key> | |
| 8363 | <dict> | |
| 8364 | <key>name</key> | |
| 8365 | <string>punctuation.definition.template-expression.end.ts</string> | |
| 8366 | </dict> | |
| 8367 | </dict> | |
| 8368 | <key>patterns</key> | |
| 8369 | <array> | |
| 8370 | <dict> | |
| 8371 | <key>include</key> | |
| 8372 | <string>#expression</string> | |
| 8373 | </dict> | |
| 8374 | </array> | |
| 8375 | <key>contentName</key> | |
| 8376 | <string>meta.embedded.line.ts</string> | |
| 8377 | </dict> | |
| 8378 | <key>type-string</key> | |
| 8379 | <dict> | |
| 8380 | <key>patterns</key> | |
| 8381 | <array> | |
| 8382 | <dict> | |
| 8383 | <key>include</key> | |
| 8384 | <string>#qstring-single</string> | |
| 8385 | </dict> | |
| 8386 | <dict> | |
| 8387 | <key>include</key> | |
| 8388 | <string>#qstring-double</string> | |
| 8389 | </dict> | |
| 8390 | <dict> | |
| 8391 | <key>include</key> | |
| 8392 | <string>#template-type</string> | |
| 8393 | </dict> | |
| 8394 | </array> | |
| 8395 | </dict> | |
| 8396 | <key>template-type</key> | |
| 8397 | <dict> | |
| 8398 | <key>patterns</key> | |
| 8399 | <array> | |
| 8400 | <dict> | |
| 8401 | <key>include</key> | |
| 8402 | <string>#template-call</string> | |
| 8403 | </dict> | |
| 8404 | <dict> | |
| 8405 | <key>contentName</key> | |
| 8406 | <string>string.template.ts</string> | |
| 8407 | <key>begin</key> | |
| 8408 | <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string> | |
| 8409 | <key>beginCaptures</key> | |
| 8410 | <dict> | |
| 8411 | <key>1</key> | |
| 8412 | <dict> | |
| 8413 | <key>name</key> | |
| 8414 | <string>entity.name.function.tagged-template.ts</string> | |
| 8415 | </dict> | |
| 8416 | <key>2</key> | |
| 8417 | <dict> | |
| 8418 | <key>name</key> | |
| 8419 | <string>string.template.ts punctuation.definition.string.template.begin.ts</string> | |
| 8420 | </dict> | |
| 8421 | </dict> | |
| 8422 | <key>end</key> | |
| 8423 | <string>`</string> | |
| 8424 | <key>endCaptures</key> | |
| 8425 | <dict> | |
| 8426 | <key>0</key> | |
| 8427 | <dict> | |
| 8428 | <key>name</key> | |
| 8429 | <string>string.template.ts punctuation.definition.string.template.end.ts</string> | |
| 8430 | </dict> | |
| 8431 | </dict> | |
| 8432 | <key>patterns</key> | |
| 8433 | <array> | |
| 8434 | <dict> | |
| 8435 | <key>include</key> | |
| 8436 | <string>#template-type-substitution-element</string> | |
| 8437 | </dict> | |
| 8438 | <dict> | |
| 8439 | <key>include</key> | |
| 8440 | <string>#string-character-escape</string> | |
| 8441 | </dict> | |
| 8442 | </array> | |
| 8443 | </dict> | |
| 8444 | </array> | |
| 8445 | </dict> | |
| 8446 | <key>template-type-substitution-element</key> | |
| 8447 | <dict> | |
| 8448 | <key>name</key> | |
| 8449 | <string>meta.template.expression.ts</string> | |
| 8450 | <key>begin</key> | |
| 8451 | <string>\$\{</string> | |
| 8452 | <key>beginCaptures</key> | |
| 8453 | <dict> | |
| 8454 | <key>0</key> | |
| 8455 | <dict> | |
| 8456 | <key>name</key> | |
| 8457 | <string>punctuation.definition.template-expression.begin.ts</string> | |
| 8458 | </dict> | |
| 8459 | </dict> | |
| 8460 | <key>end</key> | |
| 8461 | <string>\}</string> | |
| 8462 | <key>endCaptures</key> | |
| 8463 | <dict> | |
| 8464 | <key>0</key> | |
| 8465 | <dict> | |
| 8466 | <key>name</key> | |
| 8467 | <string>punctuation.definition.template-expression.end.ts</string> | |
| 8468 | </dict> | |
| 8469 | </dict> | |
| 8470 | <key>patterns</key> | |
| 8471 | <array> | |
| 8472 | <dict> | |
| 8473 | <key>include</key> | |
| 8474 | <string>#type</string> | |
| 8475 | </dict> | |
| 8476 | </array> | |
| 8477 | <key>contentName</key> | |
| 8478 | <string>meta.embedded.line.ts</string> | |
| 8479 | </dict> | |
| 8480 | <key>regex</key> | |
| 8481 | <dict> | |
| 8482 | <key>patterns</key> | |
| 8483 | <array> | |
| 8484 | <dict> | |
| 8485 | <key>name</key> | |
| 8486 | <string>string.regexp.ts</string> | |
| 8487 | <key>begin</key> | |
| 8488 | <string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 8489 | <key>beginCaptures</key> | |
| 8490 | <dict> | |
| 8491 | <key>1</key> | |
| 8492 | <dict> | |
| 8493 | <key>name</key> | |
| 8494 | <string>punctuation.definition.string.begin.ts</string> | |
| 8495 | </dict> | |
| 8496 | </dict> | |
| 8497 | <key>end</key> | |
| 8498 | <string>(/)([dgimsuvy]*)</string> | |
| 8499 | <key>endCaptures</key> | |
| 8500 | <dict> | |
| 8501 | <key>1</key> | |
| 8502 | <dict> | |
| 8503 | <key>name</key> | |
| 8504 | <string>punctuation.definition.string.end.ts</string> | |
| 8505 | </dict> | |
| 8506 | <key>2</key> | |
| 8507 | <dict> | |
| 8508 | <key>name</key> | |
| 8509 | <string>keyword.other.ts</string> | |
| 8510 | </dict> | |
| 8511 | </dict> | |
| 8512 | <key>patterns</key> | |
| 8513 | <array> | |
| 8514 | <dict> | |
| 8515 | <key>include</key> | |
| 8516 | <string>#regexp</string> | |
| 8517 | </dict> | |
| 8518 | </array> | |
| 8519 | </dict> | |
| 8520 | <dict> | |
| 8521 | <key>name</key> | |
| 8522 | <string>string.regexp.ts</string> | |
| 8523 | <key>begin</key> | |
| 8524 | <string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 8525 | <key>beginCaptures</key> | |
| 8526 | <dict> | |
| 8527 | <key>0</key> | |
| 8528 | <dict> | |
| 8529 | <key>name</key> | |
| 8530 | <string>punctuation.definition.string.begin.ts</string> | |
| 8531 | </dict> | |
| 8532 | </dict> | |
| 8533 | <key>end</key> | |
| 8534 | <string>(/)([dgimsuvy]*)</string> | |
| 8535 | <key>endCaptures</key> | |
| 8536 | <dict> | |
| 8537 | <key>1</key> | |
| 8538 | <dict> | |
| 8539 | <key>name</key> | |
| 8540 | <string>punctuation.definition.string.end.ts</string> | |
| 8541 | </dict> | |
| 8542 | <key>2</key> | |
| 8543 | <dict> | |
| 8544 | <key>name</key> | |
| 8545 | <string>keyword.other.ts</string> | |
| 8546 | </dict> | |
| 8547 | </dict> | |
| 8548 | <key>patterns</key> | |
| 8549 | <array> | |
| 8550 | <dict> | |
| 8551 | <key>include</key> | |
| 8552 | <string>#regexp</string> | |
| 8553 | </dict> | |
| 8554 | </array> | |
| 8555 | </dict> | |
| 8556 | </array> | |
| 8557 | </dict> | |
| 8558 | <key>regexp</key> | |
| 8559 | <dict> | |
| 8560 | <key>patterns</key> | |
| 8561 | <array> | |
| 8562 | <dict> | |
| 8563 | <key>name</key> | |
| 8564 | <string>keyword.control.anchor.regexp</string> | |
| 8565 | <key>match</key> | |
| 8566 | <string>\\[bB]|\^|\$</string> | |
| 8567 | </dict> | |
| 8568 | <dict> | |
| 8569 | <key>match</key> | |
| 8570 | <string>\\[1-9]\d*|\\k&lt;([a-zA-Z_$][\w$]*)&gt;</string> | |
| 8571 | <key>captures</key> | |
| 8572 | <dict> | |
| 8573 | <key>0</key> | |
| 8574 | <dict> | |
| 8575 | <key>name</key> | |
| 8576 | <string>keyword.other.back-reference.regexp</string> | |
| 8577 | </dict> | |
| 8578 | <key>1</key> | |
| 8579 | <dict> | |
| 8580 | <key>name</key> | |
| 8581 | <string>variable.other.regexp</string> | |
| 8582 | </dict> | |
| 8583 | </dict> | |
| 8584 | </dict> | |
| 8585 | <dict> | |
| 8586 | <key>name</key> | |
| 8587 | <string>keyword.operator.quantifier.regexp</string> | |
| 8588 | <key>match</key> | |
| 8589 | <string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string> | |
| 8590 | </dict> | |
| 8591 | <dict> | |
| 8592 | <key>name</key> | |
| 8593 | <string>keyword.operator.or.regexp</string> | |
| 8594 | <key>match</key> | |
| 8595 | <string>\|</string> | |
| 8596 | </dict> | |
| 8597 | <dict> | |
| 8598 | <key>name</key> | |
| 8599 | <string>meta.group.assertion.regexp</string> | |
| 8600 | <key>begin</key> | |
| 8601 | <string>(\()((\?=)|(\?!)|(\?&lt;=)|(\?&lt;!))</string> | |
| 8602 | <key>beginCaptures</key> | |
| 8603 | <dict> | |
| 8604 | <key>1</key> | |
| 8605 | <dict> | |
| 8606 | <key>name</key> | |
| 8607 | <string>punctuation.definition.group.regexp</string> | |
| 8608 | </dict> | |
| 8609 | <key>2</key> | |
| 8610 | <dict> | |
| 8611 | <key>name</key> | |
| 8612 | <string>punctuation.definition.group.assertion.regexp</string> | |
| 8613 | </dict> | |
| 8614 | <key>3</key> | |
| 8615 | <dict> | |
| 8616 | <key>name</key> | |
| 8617 | <string>meta.assertion.look-ahead.regexp</string> | |
| 8618 | </dict> | |
| 8619 | <key>4</key> | |
| 8620 | <dict> | |
| 8621 | <key>name</key> | |
| 8622 | <string>meta.assertion.negative-look-ahead.regexp</string> | |
| 8623 | </dict> | |
| 8624 | <key>5</key> | |
| 8625 | <dict> | |
| 8626 | <key>name</key> | |
| 8627 | <string>meta.assertion.look-behind.regexp</string> | |
| 8628 | </dict> | |
| 8629 | <key>6</key> | |
| 8630 | <dict> | |
| 8631 | <key>name</key> | |
| 8632 | <string>meta.assertion.negative-look-behind.regexp</string> | |
| 8633 | </dict> | |
| 8634 | </dict> | |
| 8635 | <key>end</key> | |
| 8636 | <string>(\))</string> | |
| 8637 | <key>endCaptures</key> | |
| 8638 | <dict> | |
| 8639 | <key>1</key> | |
| 8640 | <dict> | |
| 8641 | <key>name</key> | |
| 8642 | <string>punctuation.definition.group.regexp</string> | |
| 8643 | </dict> | |
| 8644 | </dict> | |
| 8645 | <key>patterns</key> | |
| 8646 | <array> | |
| 8647 | <dict> | |
| 8648 | <key>include</key> | |
| 8649 | <string>#regexp</string> | |
| 8650 | </dict> | |
| 8651 | </array> | |
| 8652 | </dict> | |
| 8653 | <dict> | |
| 8654 | <key>name</key> | |
| 8655 | <string>meta.group.regexp</string> | |
| 8656 | <key>begin</key> | |
| 8657 | <string>\((?:(\?:)|(?:\?&lt;([a-zA-Z_$][\w$]*)&gt;))?</string> | |
| 8658 | <key>beginCaptures</key> | |
| 8659 | <dict> | |
| 8660 | <key>0</key> | |
| 8661 | <dict> | |
| 8662 | <key>name</key> | |
| 8663 | <string>punctuation.definition.group.regexp</string> | |
| 8664 | </dict> | |
| 8665 | <key>1</key> | |
| 8666 | <dict> | |
| 8667 | <key>name</key> | |
| 8668 | <string>punctuation.definition.group.no-capture.regexp</string> | |
| 8669 | </dict> | |
| 8670 | <key>2</key> | |
| 8671 | <dict> | |
| 8672 | <key>name</key> | |
| 8673 | <string>variable.other.regexp</string> | |
| 8674 | </dict> | |
| 8675 | </dict> | |
| 8676 | <key>end</key> | |
| 8677 | <string>\)</string> | |
| 8678 | <key>endCaptures</key> | |
| 8679 | <dict> | |
| 8680 | <key>0</key> | |
| 8681 | <dict> | |
| 8682 | <key>name</key> | |
| 8683 | <string>punctuation.definition.group.regexp</string> | |
| 8684 | </dict> | |
| 8685 | </dict> | |
| 8686 | <key>patterns</key> | |
| 8687 | <array> | |
| 8688 | <dict> | |
| 8689 | <key>include</key> | |
| 8690 | <string>#regexp</string> | |
| 8691 | </dict> | |
| 8692 | </array> | |
| 8693 | </dict> | |
| 8694 | <dict> | |
| 8695 | <key>name</key> | |
| 8696 | <string>constant.other.character-class.set.regexp</string> | |
| 8697 | <key>begin</key> | |
| 8698 | <string>(\[)(\^)?</string> | |
| 8699 | <key>beginCaptures</key> | |
| 8700 | <dict> | |
| 8701 | <key>1</key> | |
| 8702 | <dict> | |
| 8703 | <key>name</key> | |
| 8704 | <string>punctuation.definition.character-class.regexp</string> | |
| 8705 | </dict> | |
| 8706 | <key>2</key> | |
| 8707 | <dict> | |
| 8708 | <key>name</key> | |
| 8709 | <string>keyword.operator.negation.regexp</string> | |
| 8710 | </dict> | |
| 8711 | </dict> | |
| 8712 | <key>end</key> | |
| 8713 | <string>(\])</string> | |
| 8714 | <key>endCaptures</key> | |
| 8715 | <dict> | |
| 8716 | <key>1</key> | |
| 8717 | <dict> | |
| 8718 | <key>name</key> | |
| 8719 | <string>punctuation.definition.character-class.regexp</string> | |
| 8720 | </dict> | |
| 8721 | </dict> | |
| 8722 | <key>patterns</key> | |
| 8723 | <array> | |
| 8724 | <dict> | |
| 8725 | <key>name</key> | |
| 8726 | <string>constant.other.character-class.range.regexp</string> | |
| 8727 | <key>match</key> | |
| 8728 | <string>(?:.|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))</string> | |
| 8729 | <key>captures</key> | |
| 8730 | <dict> | |
| 8731 | <key>1</key> | |
| 8732 | <dict> | |
| 8733 | <key>name</key> | |
| 8734 | <string>constant.character.numeric.regexp</string> | |
| 8735 | </dict> | |
| 8736 | <key>2</key> | |
| 8737 | <dict> | |
| 8738 | <key>name</key> | |
| 8739 | <string>constant.character.control.regexp</string> | |
| 8740 | </dict> | |
| 8741 | <key>3</key> | |
| 8742 | <dict> | |
| 8743 | <key>name</key> | |
| 8744 | <string>constant.character.escape.backslash.regexp</string> | |
| 8745 | </dict> | |
| 8746 | <key>4</key> | |
| 8747 | <dict> | |
| 8748 | <key>name</key> | |
| 8749 | <string>constant.character.numeric.regexp</string> | |
| 8750 | </dict> | |
| 8751 | <key>5</key> | |
| 8752 | <dict> | |
| 8753 | <key>name</key> | |
| 8754 | <string>constant.character.control.regexp</string> | |
| 8755 | </dict> | |
| 8756 | <key>6</key> | |
| 8757 | <dict> | |
| 8758 | <key>name</key> | |
| 8759 | <string>constant.character.escape.backslash.regexp</string> | |
| 8760 | </dict> | |
| 8761 | </dict> | |
| 8762 | </dict> | |
| 8763 | <dict> | |
| 8764 | <key>include</key> | |
| 8765 | <string>#regex-character-class</string> | |
| 8766 | </dict> | |
| 8767 | </array> | |
| 8768 | </dict> | |
| 8769 | <dict> | |
| 8770 | <key>include</key> | |
| 8771 | <string>#regex-character-class</string> | |
| 8772 | </dict> | |
| 8773 | </array> | |
| 8774 | </dict> | |
| 8775 | <key>regex-character-class</key> | |
| 8776 | <dict> | |
| 8777 | <key>patterns</key> | |
| 8778 | <array> | |
| 8779 | <dict> | |
| 8780 | <key>name</key> | |
| 8781 | <string>constant.other.character-class.regexp</string> | |
| 8782 | <key>match</key> | |
| 8783 | <string>\\[wWsSdDtrnvf]|\.</string> | |
| 8784 | </dict> | |
| 8785 | <dict> | |
| 8786 | <key>name</key> | |
| 8787 | <string>constant.character.numeric.regexp</string> | |
| 8788 | <key>match</key> | |
| 8789 | <string>\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})</string> | |
| 8790 | </dict> | |
| 8791 | <dict> | |
| 8792 | <key>name</key> | |
| 8793 | <string>constant.character.control.regexp</string> | |
| 8794 | <key>match</key> | |
| 8795 | <string>\\c[A-Z]</string> | |
| 8796 | </dict> | |
| 8797 | <dict> | |
| 8798 | <key>name</key> | |
| 8799 | <string>constant.character.escape.backslash.regexp</string> | |
| 8800 | <key>match</key> | |
| 8801 | <string>\\.</string> | |
| 8802 | </dict> | |
| 8803 | </array> | |
| 8804 | </dict> | |
| 8805 | <key>comment</key> | |
| 8806 | <dict> | |
| 8807 | <key>patterns</key> | |
| 8808 | <array> | |
| 8809 | <dict> | |
| 8810 | <key>name</key> | |
| 8811 | <string>comment.block.documentation.ts</string> | |
| 8812 | <key>begin</key> | |
| 8813 | <string>/\*\*(?!/)</string> | |
| 8814 | <key>beginCaptures</key> | |
| 8815 | <dict> | |
| 8816 | <key>0</key> | |
| 8817 | <dict> | |
| 8818 | <key>name</key> | |
| 8819 | <string>punctuation.definition.comment.ts</string> | |
| 8820 | </dict> | |
| 8821 | </dict> | |
| 8822 | <key>end</key> | |
| 8823 | <string>\*/</string> | |
| 8824 | <key>endCaptures</key> | |
| 8825 | <dict> | |
| 8826 | <key>0</key> | |
| 8827 | <dict> | |
| 8828 | <key>name</key> | |
| 8829 | <string>punctuation.definition.comment.ts</string> | |
| 8830 | </dict> | |
| 8831 | </dict> | |
| 8832 | <key>patterns</key> | |
| 8833 | <array> | |
| 8834 | <dict> | |
| 8835 | <key>include</key> | |
| 8836 | <string>#docblock</string> | |
| 8837 | </dict> | |
| 8838 | </array> | |
| 8839 | </dict> | |
| 8840 | <dict> | |
| 8841 | <key>name</key> | |
| 8842 | <string>comment.block.ts</string> | |
| 8843 | <key>begin</key> | |
| 8844 | <string>(/\*)(?:\s*((@)internal)(?=\s|(\*/)))?</string> | |
| 8845 | <key>beginCaptures</key> | |
| 8846 | <dict> | |
| 8847 | <key>1</key> | |
| 8848 | <dict> | |
| 8849 | <key>name</key> | |
| 8850 | <string>punctuation.definition.comment.ts</string> | |
| 8851 | </dict> | |
| 8852 | <key>2</key> | |
| 8853 | <dict> | |
| 8854 | <key>name</key> | |
| 8855 | <string>storage.type.internaldeclaration.ts</string> | |
| 8856 | </dict> | |
| 8857 | <key>3</key> | |
| 8858 | <dict> | |
| 8859 | <key>name</key> | |
| 8860 | <string>punctuation.decorator.internaldeclaration.ts</string> | |
| 8861 | </dict> | |
| 8862 | </dict> | |
| 8863 | <key>end</key> | |
| 8864 | <string>\*/</string> | |
| 8865 | <key>endCaptures</key> | |
| 8866 | <dict> | |
| 8867 | <key>0</key> | |
| 8868 | <dict> | |
| 8869 | <key>name</key> | |
| 8870 | <string>punctuation.definition.comment.ts</string> | |
| 8871 | </dict> | |
| 8872 | </dict> | |
| 8873 | </dict> | |
| 8874 | <dict> | |
| 8875 | <key>begin</key> | |
| 8876 | <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string> | |
| 8877 | <key>beginCaptures</key> | |
| 8878 | <dict> | |
| 8879 | <key>1</key> | |
| 8880 | <dict> | |
| 8881 | <key>name</key> | |
| 8882 | <string>punctuation.whitespace.comment.leading.ts</string> | |
| 8883 | </dict> | |
| 8884 | <key>2</key> | |
| 8885 | <dict> | |
| 8886 | <key>name</key> | |
| 8887 | <string>comment.line.double-slash.ts</string> | |
| 8888 | </dict> | |
| 8889 | <key>3</key> | |
| 8890 | <dict> | |
| 8891 | <key>name</key> | |
| 8892 | <string>punctuation.definition.comment.ts</string> | |
| 8893 | </dict> | |
| 8894 | <key>4</key> | |
| 8895 | <dict> | |
| 8896 | <key>name</key> | |
| 8897 | <string>storage.type.internaldeclaration.ts</string> | |
| 8898 | </dict> | |
| 8899 | <key>5</key> | |
| 8900 | <dict> | |
| 8901 | <key>name</key> | |
| 8902 | <string>punctuation.decorator.internaldeclaration.ts</string> | |
| 8903 | </dict> | |
| 8904 | </dict> | |
| 8905 | <key>end</key> | |
| 8906 | <string>(?=$)</string> | |
| 8907 | <key>contentName</key> | |
| 8908 | <string>comment.line.double-slash.ts</string> | |
| 8909 | </dict> | |
| 8910 | </array> | |
| 8911 | </dict> | |
| 8912 | <key>single-line-comment-consuming-line-ending</key> | |
| 8913 | <dict> | |
| 8914 | <key>begin</key> | |
| 8915 | <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string> | |
| 8916 | <key>beginCaptures</key> | |
| 8917 | <dict> | |
| 8918 | <key>1</key> | |
| 8919 | <dict> | |
| 8920 | <key>name</key> | |
| 8921 | <string>punctuation.whitespace.comment.leading.ts</string> | |
| 8922 | </dict> | |
| 8923 | <key>2</key> | |
| 8924 | <dict> | |
| 8925 | <key>name</key> | |
| 8926 | <string>comment.line.double-slash.ts</string> | |
| 8927 | </dict> | |
| 8928 | <key>3</key> | |
| 8929 | <dict> | |
| 8930 | <key>name</key> | |
| 8931 | <string>punctuation.definition.comment.ts</string> | |
| 8932 | </dict> | |
| 8933 | <key>4</key> | |
| 8934 | <dict> | |
| 8935 | <key>name</key> | |
| 8936 | <string>storage.type.internaldeclaration.ts</string> | |
| 8937 | </dict> | |
| 8938 | <key>5</key> | |
| 8939 | <dict> | |
| 8940 | <key>name</key> | |
| 8941 | <string>punctuation.decorator.internaldeclaration.ts</string> | |
| 8942 | </dict> | |
| 8943 | </dict> | |
| 8944 | <key>end</key> | |
| 8945 | <string>(?=^)</string> | |
| 8946 | <key>contentName</key> | |
| 8947 | <string>comment.line.double-slash.ts</string> | |
| 8948 | </dict> | |
| 8949 | <key>directives</key> | |
| 8950 | <dict> | |
| 8951 | <key>name</key> | |
| 8952 | <string>comment.line.triple-slash.directive.ts</string> | |
| 8953 | <key>begin</key> | |
| 8954 | <string>^(///)\s*(?=&lt;(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/&gt;\s*$)</string> | |
| 8955 | <key>beginCaptures</key> | |
| 8956 | <dict> | |
| 8957 | <key>1</key> | |
| 8958 | <dict> | |
| 8959 | <key>name</key> | |
| 8960 | <string>punctuation.definition.comment.ts</string> | |
| 8961 | </dict> | |
| 8962 | </dict> | |
| 8963 | <key>end</key> | |
| 8964 | <string>(?=$)</string> | |
| 8965 | <key>patterns</key> | |
| 8966 | <array> | |
| 8967 | <dict> | |
| 8968 | <key>name</key> | |
| 8969 | <string>meta.tag.ts</string> | |
| 8970 | <key>begin</key> | |
| 8971 | <string>(&lt;)(reference|amd-dependency|amd-module)</string> | |
| 8972 | <key>beginCaptures</key> | |
| 8973 | <dict> | |
| 8974 | <key>1</key> | |
| 8975 | <dict> | |
| 8976 | <key>name</key> | |
| 8977 | <string>punctuation.definition.tag.directive.ts</string> | |
| 8978 | </dict> | |
| 8979 | <key>2</key> | |
| 8980 | <dict> | |
| 8981 | <key>name</key> | |
| 8982 | <string>entity.name.tag.directive.ts</string> | |
| 8983 | </dict> | |
| 8984 | </dict> | |
| 8985 | <key>end</key> | |
| 8986 | <string>/&gt;</string> | |
| 8987 | <key>endCaptures</key> | |
| 8988 | <dict> | |
| 8989 | <key>0</key> | |
| 8990 | <dict> | |
| 8991 | <key>name</key> | |
| 8992 | <string>punctuation.definition.tag.directive.ts</string> | |
| 8993 | </dict> | |
| 8994 | </dict> | |
| 8995 | <key>patterns</key> | |
| 8996 | <array> | |
| 8997 | <dict> | |
| 8998 | <key>name</key> | |
| 8999 | <string>entity.other.attribute-name.directive.ts</string> | |
| 9000 | <key>match</key> | |
| 9001 | <string>path|types|no-default-lib|lib|name|resolution-mode</string> | |
| 9002 | </dict> | |
| 9003 | <dict> | |
| 9004 | <key>name</key> | |
| 9005 | <string>keyword.operator.assignment.ts</string> | |
| 9006 | <key>match</key> | |
| 9007 | <string>=</string> | |
| 9008 | </dict> | |
| 9009 | <dict> | |
| 9010 | <key>include</key> | |
| 9011 | <string>#string</string> | |
| 9012 | </dict> | |
| 9013 | </array> | |
| 9014 | </dict> | |
| 9015 | </array> | |
| 9016 | </dict> | |
| 9017 | <key>docblock</key> | |
| 9018 | <dict> | |
| 9019 | <key>patterns</key> | |
| 9020 | <array> | |
| 9021 | <dict> | |
| 9022 | <key>match</key> | |
| 9023 | <string>(?x) | |
| 9024 | ((@)(?:access|api)) | |
| 9025 | \s+ | |
| 9026 | (private|protected|public) | |
| 9027 | \b</string> | |
| 9028 | <key>captures</key> | |
| 9029 | <dict> | |
| 9030 | <key>1</key> | |
| 9031 | <dict> | |
| 9032 | <key>name</key> | |
| 9033 | <string>storage.type.class.jsdoc</string> | |
| 9034 | </dict> | |
| 9035 | <key>2</key> | |
| 9036 | <dict> | |
| 9037 | <key>name</key> | |
| 9038 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9039 | </dict> | |
| 9040 | <key>3</key> | |
| 9041 | <dict> | |
| 9042 | <key>name</key> | |
| 9043 | <string>constant.language.access-type.jsdoc</string> | |
| 9044 | </dict> | |
| 9045 | </dict> | |
| 9046 | </dict> | |
| 9047 | <dict> | |
| 9048 | <key>match</key> | |
| 9049 | <string>(?x) | |
| 9050 | ((@)author) | |
| 9051 | \s+ | |
| 9052 | ( | |
| 9053 | [^@\s&lt;&gt;*/] | |
| 9054 | (?:[^@&lt;&gt;*/]|\*[^/])* | |
| 9055 | ) | |
| 9056 | (?: | |
| 9057 | \s* | |
| 9058 | (&lt;) | |
| 9059 | ([^&gt;\s]+) | |
| 9060 | (&gt;) | |
| 9061 | )?</string> | |
| 9062 | <key>captures</key> | |
| 9063 | <dict> | |
| 9064 | <key>1</key> | |
| 9065 | <dict> | |
| 9066 | <key>name</key> | |
| 9067 | <string>storage.type.class.jsdoc</string> | |
| 9068 | </dict> | |
| 9069 | <key>2</key> | |
| 9070 | <dict> | |
| 9071 | <key>name</key> | |
| 9072 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9073 | </dict> | |
| 9074 | <key>3</key> | |
| 9075 | <dict> | |
| 9076 | <key>name</key> | |
| 9077 | <string>entity.name.type.instance.jsdoc</string> | |
| 9078 | </dict> | |
| 9079 | <key>4</key> | |
| 9080 | <dict> | |
| 9081 | <key>name</key> | |
| 9082 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9083 | </dict> | |
| 9084 | <key>5</key> | |
| 9085 | <dict> | |
| 9086 | <key>name</key> | |
| 9087 | <string>constant.other.email.link.underline.jsdoc</string> | |
| 9088 | </dict> | |
| 9089 | <key>6</key> | |
| 9090 | <dict> | |
| 9091 | <key>name</key> | |
| 9092 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9093 | </dict> | |
| 9094 | </dict> | |
| 9095 | </dict> | |
| 9096 | <dict> | |
| 9097 | <key>match</key> | |
| 9098 | <string>(?x) | |
| 9099 | ((@)borrows) \s+ | |
| 9100 | ((?:[^@\s*/]|\*[^/])+) # &lt;that namepath&gt; | |
| 9101 | \s+ (as) \s+ # as | |
| 9102 | ((?:[^@\s*/]|\*[^/])+) # &lt;this namepath&gt;</string> | |
| 9103 | <key>captures</key> | |
| 9104 | <dict> | |
| 9105 | <key>1</key> | |
| 9106 | <dict> | |
| 9107 | <key>name</key> | |
| 9108 | <string>storage.type.class.jsdoc</string> | |
| 9109 | </dict> | |
| 9110 | <key>2</key> | |
| 9111 | <dict> | |
| 9112 | <key>name</key> | |
| 9113 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9114 | </dict> | |
| 9115 | <key>3</key> | |
| 9116 | <dict> | |
| 9117 | <key>name</key> | |
| 9118 | <string>entity.name.type.instance.jsdoc</string> | |
| 9119 | </dict> | |
| 9120 | <key>4</key> | |
| 9121 | <dict> | |
| 9122 | <key>name</key> | |
| 9123 | <string>keyword.operator.control.jsdoc</string> | |
| 9124 | </dict> | |
| 9125 | <key>5</key> | |
| 9126 | <dict> | |
| 9127 | <key>name</key> | |
| 9128 | <string>entity.name.type.instance.jsdoc</string> | |
| 9129 | </dict> | |
| 9130 | </dict> | |
| 9131 | </dict> | |
| 9132 | <dict> | |
| 9133 | <key>name</key> | |
| 9134 | <string>meta.example.jsdoc</string> | |
| 9135 | <key>begin</key> | |
| 9136 | <string>((@)example)\s+</string> | |
| 9137 | <key>end</key> | |
| 9138 | <string>(?=@|\*/)</string> | |
| 9139 | <key>beginCaptures</key> | |
| 9140 | <dict> | |
| 9141 | <key>1</key> | |
| 9142 | <dict> | |
| 9143 | <key>name</key> | |
| 9144 | <string>storage.type.class.jsdoc</string> | |
| 9145 | </dict> | |
| 9146 | <key>2</key> | |
| 9147 | <dict> | |
| 9148 | <key>name</key> | |
| 9149 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9150 | </dict> | |
| 9151 | </dict> | |
| 9152 | <key>patterns</key> | |
| 9153 | <array> | |
| 9154 | <dict> | |
| 9155 | <key>match</key> | |
| 9156 | <string>^\s\*\s+</string> | |
| 9157 | </dict> | |
| 9158 | <dict> | |
| 9159 | <key>contentName</key> | |
| 9160 | <string>constant.other.description.jsdoc</string> | |
| 9161 | <key>begin</key> | |
| 9162 | <string>\G(&lt;)caption(&gt;)</string> | |
| 9163 | <key>beginCaptures</key> | |
| 9164 | <dict> | |
| 9165 | <key>0</key> | |
| 9166 | <dict> | |
| 9167 | <key>name</key> | |
| 9168 | <string>entity.name.tag.inline.jsdoc</string> | |
| 9169 | </dict> | |
| 9170 | <key>1</key> | |
| 9171 | <dict> | |
| 9172 | <key>name</key> | |
| 9173 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9174 | </dict> | |
| 9175 | <key>2</key> | |
| 9176 | <dict> | |
| 9177 | <key>name</key> | |
| 9178 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9179 | </dict> | |
| 9180 | </dict> | |
| 9181 | <key>end</key> | |
| 9182 | <string>(&lt;/)caption(&gt;)|(?=\*/)</string> | |
| 9183 | <key>endCaptures</key> | |
| 9184 | <dict> | |
| 9185 | <key>0</key> | |
| 9186 | <dict> | |
| 9187 | <key>name</key> | |
| 9188 | <string>entity.name.tag.inline.jsdoc</string> | |
| 9189 | </dict> | |
| 9190 | <key>1</key> | |
| 9191 | <dict> | |
| 9192 | <key>name</key> | |
| 9193 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9194 | </dict> | |
| 9195 | <key>2</key> | |
| 9196 | <dict> | |
| 9197 | <key>name</key> | |
| 9198 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9199 | </dict> | |
| 9200 | </dict> | |
| 9201 | </dict> | |
| 9202 | <dict> | |
| 9203 | <key>match</key> | |
| 9204 | <string>[^\s@*](?:[^*]|\*[^/])*</string> | |
| 9205 | <key>captures</key> | |
| 9206 | <dict> | |
| 9207 | <key>0</key> | |
| 9208 | <dict> | |
| 9209 | <key>name</key> | |
| 9210 | <string>source.embedded.ts</string> | |
| 9211 | </dict> | |
| 9212 | </dict> | |
| 9213 | </dict> | |
| 9214 | </array> | |
| 9215 | </dict> | |
| 9216 | <dict> | |
| 9217 | <key>match</key> | |
| 9218 | <string>(?x) ((@)kind) \s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \b</string> | |
| 9219 | <key>captures</key> | |
| 9220 | <dict> | |
| 9221 | <key>1</key> | |
| 9222 | <dict> | |
| 9223 | <key>name</key> | |
| 9224 | <string>storage.type.class.jsdoc</string> | |
| 9225 | </dict> | |
| 9226 | <key>2</key> | |
| 9227 | <dict> | |
| 9228 | <key>name</key> | |
| 9229 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9230 | </dict> | |
| 9231 | <key>3</key> | |
| 9232 | <dict> | |
| 9233 | <key>name</key> | |
| 9234 | <string>constant.language.symbol-type.jsdoc</string> | |
| 9235 | </dict> | |
| 9236 | </dict> | |
| 9237 | </dict> | |
| 9238 | <dict> | |
| 9239 | <key>match</key> | |
| 9240 | <string>(?x) | |
| 9241 | ((@)see) | |
| 9242 | \s+ | |
| 9243 | (?: | |
| 9244 | # URL | |
| 9245 | ( | |
| 9246 | (?=https?://) | |
| 9247 | (?:[^\s*]|\*[^/])+ | |
| 9248 | ) | |
| 9249 | | | |
| 9250 | # JSDoc namepath | |
| 9251 | ( | |
| 9252 | (?! | |
| 9253 | # Avoid matching bare URIs (also acceptable as links) | |
| 9254 | https?:// | |
| 9255 | | | |
| 9256 | # Avoid matching {@inline tags}; we match those below | |
| 9257 | (?:\[[^\[\]]*\])? # Possible description [preceding]{@tag} | |
| 9258 | {@(?:link|linkcode|linkplain|tutorial)\b | |
| 9259 | ) | |
| 9260 | # Matched namepath | |
| 9261 | (?:[^@\s*/]|\*[^/])+ | |
| 9262 | ) | |
| 9263 | )</string> | |
| 9264 | <key>captures</key> | |
| 9265 | <dict> | |
| 9266 | <key>1</key> | |
| 9267 | <dict> | |
| 9268 | <key>name</key> | |
| 9269 | <string>storage.type.class.jsdoc</string> | |
| 9270 | </dict> | |
| 9271 | <key>2</key> | |
| 9272 | <dict> | |
| 9273 | <key>name</key> | |
| 9274 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9275 | </dict> | |
| 9276 | <key>3</key> | |
| 9277 | <dict> | |
| 9278 | <key>name</key> | |
| 9279 | <string>variable.other.link.underline.jsdoc</string> | |
| 9280 | </dict> | |
| 9281 | <key>4</key> | |
| 9282 | <dict> | |
| 9283 | <key>name</key> | |
| 9284 | <string>entity.name.type.instance.jsdoc</string> | |
| 9285 | </dict> | |
| 9286 | </dict> | |
| 9287 | </dict> | |
| 9288 | <dict> | |
| 9289 | <key>match</key> | |
| 9290 | <string>(?x) | |
| 9291 | ((@)template) | |
| 9292 | \s+ | |
| 9293 | # One or more valid identifiers | |
| 9294 | ( | |
| 9295 | [A-Za-z_$] # First character: non-numeric word character | |
| 9296 | [\w$.\[\]]* # Rest of identifier | |
| 9297 | (?: # Possible list of additional identifiers | |
| 9298 | \s* , \s* | |
| 9299 | [A-Za-z_$] | |
| 9300 | [\w$.\[\]]* | |
| 9301 | )* | |
| 9302 | )</string> | |
| 9303 | <key>captures</key> | |
| 9304 | <dict> | |
| 9305 | <key>1</key> | |
| 9306 | <dict> | |
| 9307 | <key>name</key> | |
| 9308 | <string>storage.type.class.jsdoc</string> | |
| 9309 | </dict> | |
| 9310 | <key>2</key> | |
| 9311 | <dict> | |
| 9312 | <key>name</key> | |
| 9313 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9314 | </dict> | |
| 9315 | <key>3</key> | |
| 9316 | <dict> | |
| 9317 | <key>name</key> | |
| 9318 | <string>variable.other.jsdoc</string> | |
| 9319 | </dict> | |
| 9320 | </dict> | |
| 9321 | </dict> | |
| 9322 | <dict> | |
| 9323 | <key>begin</key> | |
| 9324 | <string>(?x)((@)template)\s+(?={)</string> | |
| 9325 | <key>beginCaptures</key> | |
| 9326 | <dict> | |
| 9327 | <key>1</key> | |
| 9328 | <dict> | |
| 9329 | <key>name</key> | |
| 9330 | <string>storage.type.class.jsdoc</string> | |
| 9331 | </dict> | |
| 9332 | <key>2</key> | |
| 9333 | <dict> | |
| 9334 | <key>name</key> | |
| 9335 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9336 | </dict> | |
| 9337 | </dict> | |
| 9338 | <key>end</key> | |
| 9339 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9340 | <key>patterns</key> | |
| 9341 | <array> | |
| 9342 | <dict> | |
| 9343 | <key>include</key> | |
| 9344 | <string>#jsdoctype</string> | |
| 9345 | </dict> | |
| 9346 | <dict> | |
| 9347 | <key>name</key> | |
| 9348 | <string>variable.other.jsdoc</string> | |
| 9349 | <key>match</key> | |
| 9350 | <string>([A-Za-z_$][\w$.\[\]]*)</string> | |
| 9351 | </dict> | |
| 9352 | </array> | |
| 9353 | </dict> | |
| 9354 | <dict> | |
| 9355 | <key>match</key> | |
| 9356 | <string>(?x) | |
| 9357 | ( | |
| 9358 | (@) | |
| 9359 | (?:arg|argument|const|constant|member|namespace|param|var) | |
| 9360 | ) | |
| 9361 | \s+ | |
| 9362 | ( | |
| 9363 | [A-Za-z_$] | |
| 9364 | [\w$.\[\]]* | |
| 9365 | )</string> | |
| 9366 | <key>captures</key> | |
| 9367 | <dict> | |
| 9368 | <key>1</key> | |
| 9369 | <dict> | |
| 9370 | <key>name</key> | |
| 9371 | <string>storage.type.class.jsdoc</string> | |
| 9372 | </dict> | |
| 9373 | <key>2</key> | |
| 9374 | <dict> | |
| 9375 | <key>name</key> | |
| 9376 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9377 | </dict> | |
| 9378 | <key>3</key> | |
| 9379 | <dict> | |
| 9380 | <key>name</key> | |
| 9381 | <string>variable.other.jsdoc</string> | |
| 9382 | </dict> | |
| 9383 | </dict> | |
| 9384 | </dict> | |
| 9385 | <dict> | |
| 9386 | <key>begin</key> | |
| 9387 | <string>((@)typedef)\s+(?={)</string> | |
| 9388 | <key>beginCaptures</key> | |
| 9389 | <dict> | |
| 9390 | <key>1</key> | |
| 9391 | <dict> | |
| 9392 | <key>name</key> | |
| 9393 | <string>storage.type.class.jsdoc</string> | |
| 9394 | </dict> | |
| 9395 | <key>2</key> | |
| 9396 | <dict> | |
| 9397 | <key>name</key> | |
| 9398 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9399 | </dict> | |
| 9400 | </dict> | |
| 9401 | <key>end</key> | |
| 9402 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9403 | <key>patterns</key> | |
| 9404 | <array> | |
| 9405 | <dict> | |
| 9406 | <key>include</key> | |
| 9407 | <string>#jsdoctype</string> | |
| 9408 | </dict> | |
| 9409 | <dict> | |
| 9410 | <key>name</key> | |
| 9411 | <string>entity.name.type.instance.jsdoc</string> | |
| 9412 | <key>match</key> | |
| 9413 | <string>(?:[^@\s*/]|\*[^/])+</string> | |
| 9414 | </dict> | |
| 9415 | </array> | |
| 9416 | </dict> | |
| 9417 | <dict> | |
| 9418 | <key>begin</key> | |
| 9419 | <string>((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\s+(?={)</string> | |
| 9420 | <key>beginCaptures</key> | |
| 9421 | <dict> | |
| 9422 | <key>1</key> | |
| 9423 | <dict> | |
| 9424 | <key>name</key> | |
| 9425 | <string>storage.type.class.jsdoc</string> | |
| 9426 | </dict> | |
| 9427 | <key>2</key> | |
| 9428 | <dict> | |
| 9429 | <key>name</key> | |
| 9430 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9431 | </dict> | |
| 9432 | </dict> | |
| 9433 | <key>end</key> | |
| 9434 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9435 | <key>patterns</key> | |
| 9436 | <array> | |
| 9437 | <dict> | |
| 9438 | <key>include</key> | |
| 9439 | <string>#jsdoctype</string> | |
| 9440 | </dict> | |
| 9441 | <dict> | |
| 9442 | <key>name</key> | |
| 9443 | <string>variable.other.jsdoc</string> | |
| 9444 | <key>match</key> | |
| 9445 | <string>([A-Za-z_$][\w$.\[\]]*)</string> | |
| 9446 | </dict> | |
| 9447 | <dict> | |
| 9448 | <key>name</key> | |
| 9449 | <string>variable.other.jsdoc</string> | |
| 9450 | <key>match</key> | |
| 9451 | <string>(?x) | |
| 9452 | (\[)\s* | |
| 9453 | [\w$]+ | |
| 9454 | (?: | |
| 9455 | (?:\[\])? # Foo[ ].bar properties within an array | |
| 9456 | \. # Foo.Bar namespaced parameter | |
| 9457 | [\w$]+ | |
| 9458 | )* | |
| 9459 | (?: | |
| 9460 | \s* | |
| 9461 | (=) # [foo=bar] Default parameter value | |
| 9462 | \s* | |
| 9463 | ( | |
| 9464 | # The inner regexes are to stop the match early at */ and to not stop at escaped quotes | |
| 9465 | (?&gt; | |
| 9466 | "(?:(?:\*(?!/))|(?:\\(?!"))|[^*\\])*?" | # [foo="bar"] Double-quoted | |
| 9467 | '(?:(?:\*(?!/))|(?:\\(?!'))|[^*\\])*?' | # [foo='bar'] Single-quoted | |
| 9468 | \[ (?:(?:\*(?!/))|[^*])*? \] | # [foo=[1,2]] Array literal | |
| 9469 | (?:(?:\*(?!/))|\s(?!\s*\])|\[.*?(?:\]|(?=\*/))|[^*\s\[\]])* # Everything else | |
| 9470 | )* | |
| 9471 | ) | |
| 9472 | )? | |
| 9473 | \s*(?:(\])((?:[^*\s]|\*[^\s/])+)?|(?=\*/))</string> | |
| 9474 | <key>captures</key> | |
| 9475 | <dict> | |
| 9476 | <key>1</key> | |
| 9477 | <dict> | |
| 9478 | <key>name</key> | |
| 9479 | <string>punctuation.definition.optional-value.begin.bracket.square.jsdoc</string> | |
| 9480 | </dict> | |
| 9481 | <key>2</key> | |
| 9482 | <dict> | |
| 9483 | <key>name</key> | |
| 9484 | <string>keyword.operator.assignment.jsdoc</string> | |
| 9485 | </dict> | |
| 9486 | <key>3</key> | |
| 9487 | <dict> | |
| 9488 | <key>name</key> | |
| 9489 | <string>source.embedded.ts</string> | |
| 9490 | </dict> | |
| 9491 | <key>4</key> | |
| 9492 | <dict> | |
| 9493 | <key>name</key> | |
| 9494 | <string>punctuation.definition.optional-value.end.bracket.square.jsdoc</string> | |
| 9495 | </dict> | |
| 9496 | <key>5</key> | |
| 9497 | <dict> | |
| 9498 | <key>name</key> | |
| 9499 | <string>invalid.illegal.syntax.jsdoc</string> | |
| 9500 | </dict> | |
| 9501 | </dict> | |
| 9502 | </dict> | |
| 9503 | </array> | |
| 9504 | </dict> | |
| 9505 | <dict> | |
| 9506 | <key>begin</key> | |
| 9507 | <string>(?x) | |
| 9508 | ( | |
| 9509 | (@) | |
| 9510 | (?:define|enum|exception|export|extends|lends|implements|modifies | |
| 9511 | |namespace|private|protected|returns?|satisfies|suppress|this|throws|type | |
| 9512 | |yields?) | |
| 9513 | ) | |
| 9514 | \s+(?={)</string> | |
| 9515 | <key>beginCaptures</key> | |
| 9516 | <dict> | |
| 9517 | <key>1</key> | |
| 9518 | <dict> | |
| 9519 | <key>name</key> | |
| 9520 | <string>storage.type.class.jsdoc</string> | |
| 9521 | </dict> | |
| 9522 | <key>2</key> | |
| 9523 | <dict> | |
| 9524 | <key>name</key> | |
| 9525 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9526 | </dict> | |
| 9527 | </dict> | |
| 9528 | <key>end</key> | |
| 9529 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9530 | <key>patterns</key> | |
| 9531 | <array> | |
| 9532 | <dict> | |
| 9533 | <key>include</key> | |
| 9534 | <string>#jsdoctype</string> | |
| 9535 | </dict> | |
| 9536 | </array> | |
| 9537 | </dict> | |
| 9538 | <dict> | |
| 9539 | <key>match</key> | |
| 9540 | <string>(?x) | |
| 9541 | ( | |
| 9542 | (@) | |
| 9543 | (?:alias|augments|callback|constructs|emits|event|fires|exports? | |
| 9544 | |extends|external|function|func|host|lends|listens|interface|memberof!? | |
| 9545 | |method|module|mixes|mixin|name|requires|see|this|typedef|uses) | |
| 9546 | ) | |
| 9547 | \s+ | |
| 9548 | ( | |
| 9549 | (?: | |
| 9550 | [^{}@\s*] | \*[^/] | |
| 9551 | )+ | |
| 9552 | )</string> | |
| 9553 | <key>captures</key> | |
| 9554 | <dict> | |
| 9555 | <key>1</key> | |
| 9556 | <dict> | |
| 9557 | <key>name</key> | |
| 9558 | <string>storage.type.class.jsdoc</string> | |
| 9559 | </dict> | |
| 9560 | <key>2</key> | |
| 9561 | <dict> | |
| 9562 | <key>name</key> | |
| 9563 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9564 | </dict> | |
| 9565 | <key>3</key> | |
| 9566 | <dict> | |
| 9567 | <key>name</key> | |
| 9568 | <string>entity.name.type.instance.jsdoc</string> | |
| 9569 | </dict> | |
| 9570 | </dict> | |
| 9571 | </dict> | |
| 9572 | <dict> | |
| 9573 | <key>contentName</key> | |
| 9574 | <string>variable.other.jsdoc</string> | |
| 9575 | <key>begin</key> | |
| 9576 | <string>((@)(?:default(?:value)?|license|version))\s+(([''"]))</string> | |
| 9577 | <key>beginCaptures</key> | |
| 9578 | <dict> | |
| 9579 | <key>1</key> | |
| 9580 | <dict> | |
| 9581 | <key>name</key> | |
| 9582 | <string>storage.type.class.jsdoc</string> | |
| 9583 | </dict> | |
| 9584 | <key>2</key> | |
| 9585 | <dict> | |
| 9586 | <key>name</key> | |
| 9587 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9588 | </dict> | |
| 9589 | <key>3</key> | |
| 9590 | <dict> | |
| 9591 | <key>name</key> | |
| 9592 | <string>variable.other.jsdoc</string> | |
| 9593 | </dict> | |
| 9594 | <key>4</key> | |
| 9595 | <dict> | |
| 9596 | <key>name</key> | |
| 9597 | <string>punctuation.definition.string.begin.jsdoc</string> | |
| 9598 | </dict> | |
| 9599 | </dict> | |
| 9600 | <key>end</key> | |
| 9601 | <string>(\3)|(?=$|\*/)</string> | |
| 9602 | <key>endCaptures</key> | |
| 9603 | <dict> | |
| 9604 | <key>0</key> | |
| 9605 | <dict> | |
| 9606 | <key>name</key> | |
| 9607 | <string>variable.other.jsdoc</string> | |
| 9608 | </dict> | |
| 9609 | <key>1</key> | |
| 9610 | <dict> | |
| 9611 | <key>name</key> | |
| 9612 | <string>punctuation.definition.string.end.jsdoc</string> | |
| 9613 | </dict> | |
| 9614 | </dict> | |
| 9615 | </dict> | |
| 9616 | <dict> | |
| 9617 | <key>match</key> | |
| 9618 | <string>((@)(?:default(?:value)?|license|tutorial|variation|version))\s+([^\s*]+)</string> | |
| 9619 | <key>captures</key> | |
| 9620 | <dict> | |
| 9621 | <key>1</key> | |
| 9622 | <dict> | |
| 9623 | <key>name</key> | |
| 9624 | <string>storage.type.class.jsdoc</string> | |
| 9625 | </dict> | |
| 9626 | <key>2</key> | |
| 9627 | <dict> | |
| 9628 | <key>name</key> | |
| 9629 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9630 | </dict> | |
| 9631 | <key>3</key> | |
| 9632 | <dict> | |
| 9633 | <key>name</key> | |
| 9634 | <string>variable.other.jsdoc</string> | |
| 9635 | </dict> | |
| 9636 | </dict> | |
| 9637 | </dict> | |
| 9638 | <dict> | |
| 9639 | <key>name</key> | |
| 9640 | <string>storage.type.class.jsdoc</string> | |
| 9641 | <key>match</key> | |
| 9642 | <string>(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \b</string> | |
| 9643 | <key>captures</key> | |
| 9644 | <dict> | |
| 9645 | <key>1</key> | |
| 9646 | <dict> | |
| 9647 | <key>name</key> | |
| 9648 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9649 | </dict> | |
| 9650 | </dict> | |
| 9651 | </dict> | |
| 9652 | <dict> | |
| 9653 | <key>include</key> | |
| 9654 | <string>#inline-tags</string> | |
| 9655 | </dict> | |
| 9656 | <dict> | |
| 9657 | <key>match</key> | |
| 9658 | <string>((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\s+)</string> | |
| 9659 | <key>captures</key> | |
| 9660 | <dict> | |
| 9661 | <key>1</key> | |
| 9662 | <dict> | |
| 9663 | <key>name</key> | |
| 9664 | <string>storage.type.class.jsdoc</string> | |
| 9665 | </dict> | |
| 9666 | <key>2</key> | |
| 9667 | <dict> | |
| 9668 | <key>name</key> | |
| 9669 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9670 | </dict> | |
| 9671 | </dict> | |
| 9672 | </dict> | |
| 9673 | </array> | |
| 9674 | </dict> | |
| 9675 | <key>brackets</key> | |
| 9676 | <dict> | |
| 9677 | <key>patterns</key> | |
| 9678 | <array> | |
| 9679 | <dict> | |
| 9680 | <key>begin</key> | |
| 9681 | <string>{</string> | |
| 9682 | <key>end</key> | |
| 9683 | <string>}|(?=\*/)</string> | |
| 9684 | <key>patterns</key> | |
| 9685 | <array> | |
| 9686 | <dict> | |
| 9687 | <key>include</key> | |
| 9688 | <string>#brackets</string> | |
| 9689 | </dict> | |
| 9690 | </array> | |
| 9691 | </dict> | |
| 9692 | <dict> | |
| 9693 | <key>begin</key> | |
| 9694 | <string>\[</string> | |
| 9695 | <key>end</key> | |
| 9696 | <string>\]|(?=\*/)</string> | |
| 9697 | <key>patterns</key> | |
| 9698 | <array> | |
| 9699 | <dict> | |
| 9700 | <key>include</key> | |
| 9701 | <string>#brackets</string> | |
| 9702 | </dict> | |
| 9703 | </array> | |
| 9704 | </dict> | |
| 9705 | </array> | |
| 9706 | </dict> | |
| 9707 | <key>inline-tags</key> | |
| 9708 | <dict> | |
| 9709 | <key>patterns</key> | |
| 9710 | <array> | |
| 9711 | <dict> | |
| 9712 | <key>name</key> | |
| 9713 | <string>constant.other.description.jsdoc</string> | |
| 9714 | <key>match</key> | |
| 9715 | <string>(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))</string> | |
| 9716 | <key>captures</key> | |
| 9717 | <dict> | |
| 9718 | <key>1</key> | |
| 9719 | <dict> | |
| 9720 | <key>name</key> | |
| 9721 | <string>punctuation.definition.bracket.square.begin.jsdoc</string> | |
| 9722 | </dict> | |
| 9723 | <key>2</key> | |
| 9724 | <dict> | |
| 9725 | <key>name</key> | |
| 9726 | <string>punctuation.definition.bracket.square.end.jsdoc</string> | |
| 9727 | </dict> | |
| 9728 | </dict> | |
| 9729 | </dict> | |
| 9730 | <dict> | |
| 9731 | <key>name</key> | |
| 9732 | <string>entity.name.type.instance.jsdoc</string> | |
| 9733 | <key>begin</key> | |
| 9734 | <string>({)((@)(?:link(?:code|plain)?|tutorial))\s*</string> | |
| 9735 | <key>beginCaptures</key> | |
| 9736 | <dict> | |
| 9737 | <key>1</key> | |
| 9738 | <dict> | |
| 9739 | <key>name</key> | |
| 9740 | <string>punctuation.definition.bracket.curly.begin.jsdoc</string> | |
| 9741 | </dict> | |
| 9742 | <key>2</key> | |
| 9743 | <dict> | |
| 9744 | <key>name</key> | |
| 9745 | <string>storage.type.class.jsdoc</string> | |
| 9746 | </dict> | |
| 9747 | <key>3</key> | |
| 9748 | <dict> | |
| 9749 | <key>name</key> | |
| 9750 | <string>punctuation.definition.inline.tag.jsdoc</string> | |
| 9751 | </dict> | |
| 9752 | </dict> | |
| 9753 | <key>end</key> | |
| 9754 | <string>}|(?=\*/)</string> | |
| 9755 | <key>endCaptures</key> | |
| 9756 | <dict> | |
| 9757 | <key>0</key> | |
| 9758 | <dict> | |
| 9759 | <key>name</key> | |
| 9760 | <string>punctuation.definition.bracket.curly.end.jsdoc</string> | |
| 9761 | </dict> | |
| 9762 | </dict> | |
| 9763 | <key>patterns</key> | |
| 9764 | <array> | |
| 9765 | <dict> | |
| 9766 | <key>match</key> | |
| 9767 | <string>\G((?=https?://)(?:[^|}\s*]|\*[/])+)(\|)?</string> | |
| 9768 | <key>captures</key> | |
| 9769 | <dict> | |
| 9770 | <key>1</key> | |
| 9771 | <dict> | |
| 9772 | <key>name</key> | |
| 9773 | <string>variable.other.link.underline.jsdoc</string> | |
| 9774 | </dict> | |
| 9775 | <key>2</key> | |
| 9776 | <dict> | |
| 9777 | <key>name</key> | |
| 9778 | <string>punctuation.separator.pipe.jsdoc</string> | |
| 9779 | </dict> | |
| 9780 | </dict> | |
| 9781 | </dict> | |
| 9782 | <dict> | |
| 9783 | <key>match</key> | |
| 9784 | <string>\G((?:[^{}@\s|*]|\*[^/])+)(\|)?</string> | |
| 9785 | <key>captures</key> | |
| 9786 | <dict> | |
| 9787 | <key>1</key> | |
| 9788 | <dict> | |
| 9789 | <key>name</key> | |
| 9790 | <string>variable.other.description.jsdoc</string> | |
| 9791 | </dict> | |
| 9792 | <key>2</key> | |
| 9793 | <dict> | |
| 9794 | <key>name</key> | |
| 9795 | <string>punctuation.separator.pipe.jsdoc</string> | |
| 9796 | </dict> | |
| 9797 | </dict> | |
| 9798 | </dict> | |
| 9799 | </array> | |
| 9800 | </dict> | |
| 9801 | </array> | |
| 9802 | </dict> | |
| 9803 | <key>jsdoctype</key> | |
| 9804 | <dict> | |
| 9805 | <key>patterns</key> | |
| 9806 | <array> | |
| 9807 | <dict> | |
| 9808 | <key>name</key> | |
| 9809 | <string>invalid.illegal.type.jsdoc</string> | |
| 9810 | <key>match</key> | |
| 9811 | <string>\G{(?:[^}*]|\*[^/}])+$</string> | |
| 9812 | </dict> | |
| 9813 | <dict> | |
| 9814 | <key>contentName</key> | |
| 9815 | <string>entity.name.type.instance.jsdoc</string> | |
| 9816 | <key>begin</key> | |
| 9817 | <string>\G({)</string> | |
| 9818 | <key>beginCaptures</key> | |
| 9819 | <dict> | |
| 9820 | <key>0</key> | |
| 9821 | <dict> | |
| 9822 | <key>name</key> | |
| 9823 | <string>entity.name.type.instance.jsdoc</string> | |
| 9824 | </dict> | |
| 9825 | <key>1</key> | |
| 9826 | <dict> | |
| 9827 | <key>name</key> | |
| 9828 | <string>punctuation.definition.bracket.curly.begin.jsdoc</string> | |
| 9829 | </dict> | |
| 9830 | </dict> | |
| 9831 | <key>end</key> | |
| 9832 | <string>((}))\s*|(?=\*/)</string> | |
| 9833 | <key>endCaptures</key> | |
| 9834 | <dict> | |
| 9835 | <key>1</key> | |
| 9836 | <dict> | |
| 9837 | <key>name</key> | |
| 9838 | <string>entity.name.type.instance.jsdoc</string> | |
| 9839 | </dict> | |
| 9840 | <key>2</key> | |
| 9841 | <dict> | |
| 9842 | <key>name</key> | |
| 9843 | <string>punctuation.definition.bracket.curly.end.jsdoc</string> | |
| 9844 | </dict> | |
| 9845 | </dict> | |
| 9846 | <key>patterns</key> | |
| 9847 | <array> | |
| 9848 | <dict> | |
| 9849 | <key>include</key> | |
| 9850 | <string>#brackets</string> | |
| 9851 | </dict> | |
| 9852 | </array> | |
| 9853 | </dict> | |
| 9854 | </array> | |
| 9855 | </dict> | |
| 9856 | </dict> | |
| 9857 | </dict> | |
| 9858 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/tsx.plist created+10281| ... | ... | @@ -0,0 +1,10281 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | <key>name</key> | |
| 6 | <string>TypeScriptReact</string> | |
| 7 | <key>scopeName</key> | |
| 8 | <string>source.tsx</string> | |
| 9 | <key>fileTypes</key> | |
| 10 | <array> | |
| 11 | <string>tsx</string> | |
| 12 | </array> | |
| 13 | <key>uuid</key> | |
| 14 | <string>805375ec-d614-41f5-8993-5843fe63ea82</string> | |
| 15 | <key>patterns</key> | |
| 16 | <array> | |
| 17 | <dict> | |
| 18 | <key>include</key> | |
| 19 | <string>#directives</string> | |
| 20 | </dict> | |
| 21 | <dict> | |
| 22 | <key>include</key> | |
| 23 | <string>#statements</string> | |
| 24 | </dict> | |
| 25 | <dict> | |
| 26 | <key>include</key> | |
| 27 | <string>#shebang</string> | |
| 28 | </dict> | |
| 29 | </array> | |
| 30 | <key>repository</key> | |
| 31 | <dict> | |
| 32 | <key>shebang</key> | |
| 33 | <dict> | |
| 34 | <key>name</key> | |
| 35 | <string>comment.line.shebang.tsx</string> | |
| 36 | <key>match</key> | |
| 37 | <string>\A(#!).*(?=$)</string> | |
| 38 | <key>captures</key> | |
| 39 | <dict> | |
| 40 | <key>1</key> | |
| 41 | <dict> | |
| 42 | <key>name</key> | |
| 43 | <string>punctuation.definition.comment.tsx</string> | |
| 44 | </dict> | |
| 45 | </dict> | |
| 46 | </dict> | |
| 47 | <key>statements</key> | |
| 48 | <dict> | |
| 49 | <key>patterns</key> | |
| 50 | <array> | |
| 51 | <dict> | |
| 52 | <key>include</key> | |
| 53 | <string>#declaration</string> | |
| 54 | </dict> | |
| 55 | <dict> | |
| 56 | <key>include</key> | |
| 57 | <string>#control-statement</string> | |
| 58 | </dict> | |
| 59 | <dict> | |
| 60 | <key>include</key> | |
| 61 | <string>#after-operator-block-as-object-literal</string> | |
| 62 | </dict> | |
| 63 | <dict> | |
| 64 | <key>include</key> | |
| 65 | <string>#decl-block</string> | |
| 66 | </dict> | |
| 67 | <dict> | |
| 68 | <key>include</key> | |
| 69 | <string>#label</string> | |
| 70 | </dict> | |
| 71 | <dict> | |
| 72 | <key>include</key> | |
| 73 | <string>#expression</string> | |
| 74 | </dict> | |
| 75 | <dict> | |
| 76 | <key>include</key> | |
| 77 | <string>#punctuation-semicolon</string> | |
| 78 | </dict> | |
| 79 | <dict> | |
| 80 | <key>include</key> | |
| 81 | <string>#string</string> | |
| 82 | </dict> | |
| 83 | <dict> | |
| 84 | <key>include</key> | |
| 85 | <string>#comment</string> | |
| 86 | </dict> | |
| 87 | </array> | |
| 88 | </dict> | |
| 89 | <key>declaration</key> | |
| 90 | <dict> | |
| 91 | <key>patterns</key> | |
| 92 | <array> | |
| 93 | <dict> | |
| 94 | <key>include</key> | |
| 95 | <string>#decorator</string> | |
| 96 | </dict> | |
| 97 | <dict> | |
| 98 | <key>include</key> | |
| 99 | <string>#var-expr</string> | |
| 100 | </dict> | |
| 101 | <dict> | |
| 102 | <key>include</key> | |
| 103 | <string>#function-declaration</string> | |
| 104 | </dict> | |
| 105 | <dict> | |
| 106 | <key>include</key> | |
| 107 | <string>#class-declaration</string> | |
| 108 | </dict> | |
| 109 | <dict> | |
| 110 | <key>include</key> | |
| 111 | <string>#interface-declaration</string> | |
| 112 | </dict> | |
| 113 | <dict> | |
| 114 | <key>include</key> | |
| 115 | <string>#enum-declaration</string> | |
| 116 | </dict> | |
| 117 | <dict> | |
| 118 | <key>include</key> | |
| 119 | <string>#namespace-declaration</string> | |
| 120 | </dict> | |
| 121 | <dict> | |
| 122 | <key>include</key> | |
| 123 | <string>#type-alias-declaration</string> | |
| 124 | </dict> | |
| 125 | <dict> | |
| 126 | <key>include</key> | |
| 127 | <string>#import-equals-declaration</string> | |
| 128 | </dict> | |
| 129 | <dict> | |
| 130 | <key>include</key> | |
| 131 | <string>#import-declaration</string> | |
| 132 | </dict> | |
| 133 | <dict> | |
| 134 | <key>include</key> | |
| 135 | <string>#export-declaration</string> | |
| 136 | </dict> | |
| 137 | <dict> | |
| 138 | <key>name</key> | |
| 139 | <string>storage.modifier.tsx</string> | |
| 140 | <key>match</key> | |
| 141 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(declare|export)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 142 | </dict> | |
| 143 | </array> | |
| 144 | </dict> | |
| 145 | <key>control-statement</key> | |
| 146 | <dict> | |
| 147 | <key>patterns</key> | |
| 148 | <array> | |
| 149 | <dict> | |
| 150 | <key>include</key> | |
| 151 | <string>#switch-statement</string> | |
| 152 | </dict> | |
| 153 | <dict> | |
| 154 | <key>include</key> | |
| 155 | <string>#for-loop</string> | |
| 156 | </dict> | |
| 157 | <dict> | |
| 158 | <key>name</key> | |
| 159 | <string>keyword.control.trycatch.tsx</string> | |
| 160 | <key>match</key> | |
| 161 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 162 | </dict> | |
| 163 | <dict> | |
| 164 | <key>match</key> | |
| 165 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|goto)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 166 | <key>captures</key> | |
| 167 | <dict> | |
| 168 | <key>1</key> | |
| 169 | <dict> | |
| 170 | <key>name</key> | |
| 171 | <string>keyword.control.loop.tsx</string> | |
| 172 | </dict> | |
| 173 | <key>2</key> | |
| 174 | <dict> | |
| 175 | <key>name</key> | |
| 176 | <string>entity.name.label.tsx</string> | |
| 177 | </dict> | |
| 178 | </dict> | |
| 179 | </dict> | |
| 180 | <dict> | |
| 181 | <key>name</key> | |
| 182 | <string>keyword.control.loop.tsx</string> | |
| 183 | <key>match</key> | |
| 184 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 185 | </dict> | |
| 186 | <dict> | |
| 187 | <key>begin</key> | |
| 188 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 189 | <key>beginCaptures</key> | |
| 190 | <dict> | |
| 191 | <key>0</key> | |
| 192 | <dict> | |
| 193 | <key>name</key> | |
| 194 | <string>keyword.control.flow.tsx</string> | |
| 195 | </dict> | |
| 196 | </dict> | |
| 197 | <key>end</key> | |
| 198 | <string>(?=[;}]|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 199 | <key>patterns</key> | |
| 200 | <array> | |
| 201 | <dict> | |
| 202 | <key>include</key> | |
| 203 | <string>#expression</string> | |
| 204 | </dict> | |
| 205 | </array> | |
| 206 | </dict> | |
| 207 | <dict> | |
| 208 | <key>name</key> | |
| 209 | <string>keyword.control.switch.tsx</string> | |
| 210 | <key>match</key> | |
| 211 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 212 | </dict> | |
| 213 | <dict> | |
| 214 | <key>include</key> | |
| 215 | <string>#if-statement</string> | |
| 216 | </dict> | |
| 217 | <dict> | |
| 218 | <key>name</key> | |
| 219 | <string>keyword.control.conditional.tsx</string> | |
| 220 | <key>match</key> | |
| 221 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 222 | </dict> | |
| 223 | <dict> | |
| 224 | <key>name</key> | |
| 225 | <string>keyword.control.with.tsx</string> | |
| 226 | <key>match</key> | |
| 227 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 228 | </dict> | |
| 229 | <dict> | |
| 230 | <key>name</key> | |
| 231 | <string>keyword.control.tsx</string> | |
| 232 | <key>match</key> | |
| 233 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(package)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 234 | </dict> | |
| 235 | <dict> | |
| 236 | <key>name</key> | |
| 237 | <string>keyword.other.debugger.tsx</string> | |
| 238 | <key>match</key> | |
| 239 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 240 | </dict> | |
| 241 | </array> | |
| 242 | </dict> | |
| 243 | <key>label</key> | |
| 244 | <dict> | |
| 245 | <key>patterns</key> | |
| 246 | <array> | |
| 247 | <dict> | |
| 248 | <key>begin</key> | |
| 249 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*\{)</string> | |
| 250 | <key>beginCaptures</key> | |
| 251 | <dict> | |
| 252 | <key>1</key> | |
| 253 | <dict> | |
| 254 | <key>name</key> | |
| 255 | <string>entity.name.label.tsx</string> | |
| 256 | </dict> | |
| 257 | <key>2</key> | |
| 258 | <dict> | |
| 259 | <key>name</key> | |
| 260 | <string>punctuation.separator.label.tsx</string> | |
| 261 | </dict> | |
| 262 | </dict> | |
| 263 | <key>end</key> | |
| 264 | <string>(?&lt;=\})</string> | |
| 265 | <key>patterns</key> | |
| 266 | <array> | |
| 267 | <dict> | |
| 268 | <key>include</key> | |
| 269 | <string>#decl-block</string> | |
| 270 | </dict> | |
| 271 | </array> | |
| 272 | </dict> | |
| 273 | <dict> | |
| 274 | <key>match</key> | |
| 275 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)</string> | |
| 276 | <key>captures</key> | |
| 277 | <dict> | |
| 278 | <key>1</key> | |
| 279 | <dict> | |
| 280 | <key>name</key> | |
| 281 | <string>entity.name.label.tsx</string> | |
| 282 | </dict> | |
| 283 | <key>2</key> | |
| 284 | <dict> | |
| 285 | <key>name</key> | |
| 286 | <string>punctuation.separator.label.tsx</string> | |
| 287 | </dict> | |
| 288 | </dict> | |
| 289 | </dict> | |
| 290 | </array> | |
| 291 | </dict> | |
| 292 | <key>expression</key> | |
| 293 | <dict> | |
| 294 | <key>patterns</key> | |
| 295 | <array> | |
| 296 | <dict> | |
| 297 | <key>include</key> | |
| 298 | <string>#expressionWithoutIdentifiers</string> | |
| 299 | </dict> | |
| 300 | <dict> | |
| 301 | <key>include</key> | |
| 302 | <string>#identifiers</string> | |
| 303 | </dict> | |
| 304 | <dict> | |
| 305 | <key>include</key> | |
| 306 | <string>#expressionPunctuations</string> | |
| 307 | </dict> | |
| 308 | </array> | |
| 309 | </dict> | |
| 310 | <key>expressionWithoutIdentifiers</key> | |
| 311 | <dict> | |
| 312 | <key>patterns</key> | |
| 313 | <array> | |
| 314 | <dict> | |
| 315 | <key>include</key> | |
| 316 | <string>#jsx</string> | |
| 317 | </dict> | |
| 318 | <dict> | |
| 319 | <key>include</key> | |
| 320 | <string>#string</string> | |
| 321 | </dict> | |
| 322 | <dict> | |
| 323 | <key>include</key> | |
| 324 | <string>#regex</string> | |
| 325 | </dict> | |
| 326 | <dict> | |
| 327 | <key>include</key> | |
| 328 | <string>#comment</string> | |
| 329 | </dict> | |
| 330 | <dict> | |
| 331 | <key>include</key> | |
| 332 | <string>#function-expression</string> | |
| 333 | </dict> | |
| 334 | <dict> | |
| 335 | <key>include</key> | |
| 336 | <string>#class-expression</string> | |
| 337 | </dict> | |
| 338 | <dict> | |
| 339 | <key>include</key> | |
| 340 | <string>#arrow-function</string> | |
| 341 | </dict> | |
| 342 | <dict> | |
| 343 | <key>include</key> | |
| 344 | <string>#paren-expression-possibly-arrow</string> | |
| 345 | </dict> | |
| 346 | <dict> | |
| 347 | <key>include</key> | |
| 348 | <string>#cast</string> | |
| 349 | </dict> | |
| 350 | <dict> | |
| 351 | <key>include</key> | |
| 352 | <string>#ternary-expression</string> | |
| 353 | </dict> | |
| 354 | <dict> | |
| 355 | <key>include</key> | |
| 356 | <string>#new-expr</string> | |
| 357 | </dict> | |
| 358 | <dict> | |
| 359 | <key>include</key> | |
| 360 | <string>#instanceof-expr</string> | |
| 361 | </dict> | |
| 362 | <dict> | |
| 363 | <key>include</key> | |
| 364 | <string>#object-literal</string> | |
| 365 | </dict> | |
| 366 | <dict> | |
| 367 | <key>include</key> | |
| 368 | <string>#expression-operators</string> | |
| 369 | </dict> | |
| 370 | <dict> | |
| 371 | <key>include</key> | |
| 372 | <string>#function-call</string> | |
| 373 | </dict> | |
| 374 | <dict> | |
| 375 | <key>include</key> | |
| 376 | <string>#literal</string> | |
| 377 | </dict> | |
| 378 | <dict> | |
| 379 | <key>include</key> | |
| 380 | <string>#support-objects</string> | |
| 381 | </dict> | |
| 382 | <dict> | |
| 383 | <key>include</key> | |
| 384 | <string>#paren-expression</string> | |
| 385 | </dict> | |
| 386 | </array> | |
| 387 | </dict> | |
| 388 | <key>expressionPunctuations</key> | |
| 389 | <dict> | |
| 390 | <key>patterns</key> | |
| 391 | <array> | |
| 392 | <dict> | |
| 393 | <key>include</key> | |
| 394 | <string>#punctuation-comma</string> | |
| 395 | </dict> | |
| 396 | <dict> | |
| 397 | <key>include</key> | |
| 398 | <string>#punctuation-accessor</string> | |
| 399 | </dict> | |
| 400 | </array> | |
| 401 | </dict> | |
| 402 | <key>decorator</key> | |
| 403 | <dict> | |
| 404 | <key>name</key> | |
| 405 | <string>meta.decorator.tsx</string> | |
| 406 | <key>begin</key> | |
| 407 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))\@</string> | |
| 408 | <key>beginCaptures</key> | |
| 409 | <dict> | |
| 410 | <key>0</key> | |
| 411 | <dict> | |
| 412 | <key>name</key> | |
| 413 | <string>punctuation.decorator.tsx</string> | |
| 414 | </dict> | |
| 415 | </dict> | |
| 416 | <key>end</key> | |
| 417 | <string>(?=\s)</string> | |
| 418 | <key>patterns</key> | |
| 419 | <array> | |
| 420 | <dict> | |
| 421 | <key>include</key> | |
| 422 | <string>#expression</string> | |
| 423 | </dict> | |
| 424 | </array> | |
| 425 | </dict> | |
| 426 | <key>var-expr</key> | |
| 427 | <dict> | |
| 428 | <key>patterns</key> | |
| 429 | <array> | |
| 430 | <dict> | |
| 431 | <key>name</key> | |
| 432 | <string>meta.var.expr.tsx</string> | |
| 433 | <key>begin</key> | |
| 434 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 435 | <key>end</key> | |
| 436 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))</string> | |
| 437 | <key>patterns</key> | |
| 438 | <array> | |
| 439 | <dict> | |
| 440 | <key>begin</key> | |
| 441 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 442 | <key>beginCaptures</key> | |
| 443 | <dict> | |
| 444 | <key>1</key> | |
| 445 | <dict> | |
| 446 | <key>name</key> | |
| 447 | <string>keyword.control.export.tsx</string> | |
| 448 | </dict> | |
| 449 | <key>2</key> | |
| 450 | <dict> | |
| 451 | <key>name</key> | |
| 452 | <string>storage.modifier.tsx</string> | |
| 453 | </dict> | |
| 454 | <key>3</key> | |
| 455 | <dict> | |
| 456 | <key>name</key> | |
| 457 | <string>storage.type.tsx</string> | |
| 458 | </dict> | |
| 459 | </dict> | |
| 460 | <key>end</key> | |
| 461 | <string>(?=\S)</string> | |
| 462 | </dict> | |
| 463 | <dict> | |
| 464 | <key>include</key> | |
| 465 | <string>#destructuring-variable</string> | |
| 466 | </dict> | |
| 467 | <dict> | |
| 468 | <key>include</key> | |
| 469 | <string>#var-single-variable</string> | |
| 470 | </dict> | |
| 471 | <dict> | |
| 472 | <key>include</key> | |
| 473 | <string>#variable-initializer</string> | |
| 474 | </dict> | |
| 475 | <dict> | |
| 476 | <key>include</key> | |
| 477 | <string>#comment</string> | |
| 478 | </dict> | |
| 479 | <dict> | |
| 480 | <key>begin</key> | |
| 481 | <string>(,)\s*(?=$|\/\/)</string> | |
| 482 | <key>beginCaptures</key> | |
| 483 | <dict> | |
| 484 | <key>1</key> | |
| 485 | <dict> | |
| 486 | <key>name</key> | |
| 487 | <string>punctuation.separator.comma.tsx</string> | |
| 488 | </dict> | |
| 489 | </dict> | |
| 490 | <key>end</key> | |
| 491 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 492 | <key>patterns</key> | |
| 493 | <array> | |
| 494 | <dict> | |
| 495 | <key>include</key> | |
| 496 | <string>#single-line-comment-consuming-line-ending</string> | |
| 497 | </dict> | |
| 498 | <dict> | |
| 499 | <key>include</key> | |
| 500 | <string>#comment</string> | |
| 501 | </dict> | |
| 502 | <dict> | |
| 503 | <key>include</key> | |
| 504 | <string>#destructuring-variable</string> | |
| 505 | </dict> | |
| 506 | <dict> | |
| 507 | <key>include</key> | |
| 508 | <string>#var-single-variable</string> | |
| 509 | </dict> | |
| 510 | <dict> | |
| 511 | <key>include</key> | |
| 512 | <string>#punctuation-comma</string> | |
| 513 | </dict> | |
| 514 | </array> | |
| 515 | </dict> | |
| 516 | <dict> | |
| 517 | <key>include</key> | |
| 518 | <string>#punctuation-comma</string> | |
| 519 | </dict> | |
| 520 | </array> | |
| 521 | </dict> | |
| 522 | <dict> | |
| 523 | <key>name</key> | |
| 524 | <string>meta.var.expr.tsx</string> | |
| 525 | <key>begin</key> | |
| 526 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 527 | <key>beginCaptures</key> | |
| 528 | <dict> | |
| 529 | <key>1</key> | |
| 530 | <dict> | |
| 531 | <key>name</key> | |
| 532 | <string>keyword.control.export.tsx</string> | |
| 533 | </dict> | |
| 534 | <key>2</key> | |
| 535 | <dict> | |
| 536 | <key>name</key> | |
| 537 | <string>storage.modifier.tsx</string> | |
| 538 | </dict> | |
| 539 | <key>3</key> | |
| 540 | <dict> | |
| 541 | <key>name</key> | |
| 542 | <string>storage.type.tsx</string> | |
| 543 | </dict> | |
| 544 | </dict> | |
| 545 | <key>end</key> | |
| 546 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^const|[^\._$[:alnum:]]const)(?=\s*$)))</string> | |
| 547 | <key>patterns</key> | |
| 548 | <array> | |
| 549 | <dict> | |
| 550 | <key>begin</key> | |
| 551 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 552 | <key>beginCaptures</key> | |
| 553 | <dict> | |
| 554 | <key>1</key> | |
| 555 | <dict> | |
| 556 | <key>name</key> | |
| 557 | <string>keyword.control.export.tsx</string> | |
| 558 | </dict> | |
| 559 | <key>2</key> | |
| 560 | <dict> | |
| 561 | <key>name</key> | |
| 562 | <string>storage.modifier.tsx</string> | |
| 563 | </dict> | |
| 564 | <key>3</key> | |
| 565 | <dict> | |
| 566 | <key>name</key> | |
| 567 | <string>storage.type.tsx</string> | |
| 568 | </dict> | |
| 569 | </dict> | |
| 570 | <key>end</key> | |
| 571 | <string>(?=\S)</string> | |
| 572 | </dict> | |
| 573 | <dict> | |
| 574 | <key>include</key> | |
| 575 | <string>#destructuring-const</string> | |
| 576 | </dict> | |
| 577 | <dict> | |
| 578 | <key>include</key> | |
| 579 | <string>#var-single-const</string> | |
| 580 | </dict> | |
| 581 | <dict> | |
| 582 | <key>include</key> | |
| 583 | <string>#variable-initializer</string> | |
| 584 | </dict> | |
| 585 | <dict> | |
| 586 | <key>include</key> | |
| 587 | <string>#comment</string> | |
| 588 | </dict> | |
| 589 | <dict> | |
| 590 | <key>begin</key> | |
| 591 | <string>(,)\s*(?=$|\/\/)</string> | |
| 592 | <key>beginCaptures</key> | |
| 593 | <dict> | |
| 594 | <key>1</key> | |
| 595 | <dict> | |
| 596 | <key>name</key> | |
| 597 | <string>punctuation.separator.comma.tsx</string> | |
| 598 | </dict> | |
| 599 | </dict> | |
| 600 | <key>end</key> | |
| 601 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 602 | <key>patterns</key> | |
| 603 | <array> | |
| 604 | <dict> | |
| 605 | <key>include</key> | |
| 606 | <string>#single-line-comment-consuming-line-ending</string> | |
| 607 | </dict> | |
| 608 | <dict> | |
| 609 | <key>include</key> | |
| 610 | <string>#comment</string> | |
| 611 | </dict> | |
| 612 | <dict> | |
| 613 | <key>include</key> | |
| 614 | <string>#destructuring-const</string> | |
| 615 | </dict> | |
| 616 | <dict> | |
| 617 | <key>include</key> | |
| 618 | <string>#var-single-const</string> | |
| 619 | </dict> | |
| 620 | <dict> | |
| 621 | <key>include</key> | |
| 622 | <string>#punctuation-comma</string> | |
| 623 | </dict> | |
| 624 | </array> | |
| 625 | </dict> | |
| 626 | <dict> | |
| 627 | <key>include</key> | |
| 628 | <string>#punctuation-comma</string> | |
| 629 | </dict> | |
| 630 | </array> | |
| 631 | </dict> | |
| 632 | <dict> | |
| 633 | <key>name</key> | |
| 634 | <string>meta.var.expr.tsx</string> | |
| 635 | <key>begin</key> | |
| 636 | <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string> | |
| 637 | <key>beginCaptures</key> | |
| 638 | <dict> | |
| 639 | <key>1</key> | |
| 640 | <dict> | |
| 641 | <key>name</key> | |
| 642 | <string>keyword.control.export.tsx</string> | |
| 643 | </dict> | |
| 644 | <key>2</key> | |
| 645 | <dict> | |
| 646 | <key>name</key> | |
| 647 | <string>storage.modifier.tsx</string> | |
| 648 | </dict> | |
| 649 | <key>3</key> | |
| 650 | <dict> | |
| 651 | <key>name</key> | |
| 652 | <string>storage.type.tsx</string> | |
| 653 | </dict> | |
| 654 | </dict> | |
| 655 | <key>end</key> | |
| 656 | <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^using|[^\._$[:alnum:]]using|^await\s+using|[^\._$[:alnum:]]await\s+using)(?=\s*$)))</string> | |
| 657 | <key>patterns</key> | |
| 658 | <array> | |
| 659 | <dict> | |
| 660 | <key>begin</key> | |
| 661 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 662 | <key>beginCaptures</key> | |
| 663 | <dict> | |
| 664 | <key>1</key> | |
| 665 | <dict> | |
| 666 | <key>name</key> | |
| 667 | <string>keyword.control.export.tsx</string> | |
| 668 | </dict> | |
| 669 | <key>2</key> | |
| 670 | <dict> | |
| 671 | <key>name</key> | |
| 672 | <string>storage.modifier.tsx</string> | |
| 673 | </dict> | |
| 674 | <key>3</key> | |
| 675 | <dict> | |
| 676 | <key>name</key> | |
| 677 | <string>storage.type.tsx</string> | |
| 678 | </dict> | |
| 679 | </dict> | |
| 680 | <key>end</key> | |
| 681 | <string>(?=\S)</string> | |
| 682 | </dict> | |
| 683 | <dict> | |
| 684 | <key>include</key> | |
| 685 | <string>#var-single-const</string> | |
| 686 | </dict> | |
| 687 | <dict> | |
| 688 | <key>include</key> | |
| 689 | <string>#variable-initializer</string> | |
| 690 | </dict> | |
| 691 | <dict> | |
| 692 | <key>include</key> | |
| 693 | <string>#comment</string> | |
| 694 | </dict> | |
| 695 | <dict> | |
| 696 | <key>begin</key> | |
| 697 | <string>(,)\s*((?!\S)|(?=\/\/))</string> | |
| 698 | <key>beginCaptures</key> | |
| 699 | <dict> | |
| 700 | <key>1</key> | |
| 701 | <dict> | |
| 702 | <key>name</key> | |
| 703 | <string>punctuation.separator.comma.tsx</string> | |
| 704 | </dict> | |
| 705 | </dict> | |
| 706 | <key>end</key> | |
| 707 | <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string> | |
| 708 | <key>patterns</key> | |
| 709 | <array> | |
| 710 | <dict> | |
| 711 | <key>include</key> | |
| 712 | <string>#single-line-comment-consuming-line-ending</string> | |
| 713 | </dict> | |
| 714 | <dict> | |
| 715 | <key>include</key> | |
| 716 | <string>#comment</string> | |
| 717 | </dict> | |
| 718 | <dict> | |
| 719 | <key>include</key> | |
| 720 | <string>#var-single-const</string> | |
| 721 | </dict> | |
| 722 | <dict> | |
| 723 | <key>include</key> | |
| 724 | <string>#punctuation-comma</string> | |
| 725 | </dict> | |
| 726 | </array> | |
| 727 | </dict> | |
| 728 | <dict> | |
| 729 | <key>include</key> | |
| 730 | <string>#punctuation-comma</string> | |
| 731 | </dict> | |
| 732 | </array> | |
| 733 | </dict> | |
| 734 | </array> | |
| 735 | </dict> | |
| 736 | <key>var-single-variable</key> | |
| 737 | <dict> | |
| 738 | <key>patterns</key> | |
| 739 | <array> | |
| 740 | <dict> | |
| 741 | <key>name</key> | |
| 742 | <string>meta.var-single-variable.expr.tsx</string> | |
| 743 | <key>begin</key> | |
| 744 | <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(\!)?(?=\s* | |
| 745 | # function assignment | | |
| 746 | (=\s*( | |
| 747 | ((async\s+)?( | |
| 748 | (function\s*[(&lt;*]) | | |
| 749 | (function\s+) | | |
| 750 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 751 | )) | | |
| 752 | ((async\s*)?( | |
| 753 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 754 | # sure shot arrow functions even if =&gt; is on new line | |
| 755 | ( | |
| 756 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 757 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 758 | ( | |
| 759 | ([)]\s*:) | # (): | |
| 760 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 761 | ) | |
| 762 | ) | | |
| 763 | ( | |
| 764 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 765 | ) | | |
| 766 | # arrow function possible to detect only with =&gt; on same line | |
| 767 | ( | |
| 768 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 769 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 770 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 771 | \s*=&gt; # arrow operator | |
| 772 | ) | |
| 773 | )) | |
| 774 | )) | | |
| 775 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 776 | (:\s*( | |
| 777 | (&lt;) | | |
| 778 | ([(]\s*( | |
| 779 | ([)]) | | |
| 780 | (\.\.\.) | | |
| 781 | ([_$[:alnum:]]+\s*( | |
| 782 | ([:,?=])| | |
| 783 | ([)]\s*=&gt;) | |
| 784 | )) | |
| 785 | )) | |
| 786 | )) | | |
| 787 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 788 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 789 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 790 | ((async\s+)?( | |
| 791 | (function\s*[(&lt;*]) | | |
| 792 | (function\s+) | | |
| 793 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 794 | )) | | |
| 795 | ((async\s*)?( | |
| 796 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 797 | # sure shot arrow functions even if =&gt; is on new line | |
| 798 | ( | |
| 799 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 800 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 801 | ( | |
| 802 | ([)]\s*:) | # (): | |
| 803 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 804 | ) | |
| 805 | ) | | |
| 806 | ( | |
| 807 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 808 | ) | | |
| 809 | # arrow function possible to detect only with =&gt; on same line | |
| 810 | ( | |
| 811 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 812 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 813 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 814 | \s*=&gt; # arrow operator | |
| 815 | ) | |
| 816 | )) | |
| 817 | )))</string> | |
| 818 | <key>beginCaptures</key> | |
| 819 | <dict> | |
| 820 | <key>1</key> | |
| 821 | <dict> | |
| 822 | <key>name</key> | |
| 823 | <string>meta.definition.variable.tsx entity.name.function.tsx</string> | |
| 824 | </dict> | |
| 825 | <key>2</key> | |
| 826 | <dict> | |
| 827 | <key>name</key> | |
| 828 | <string>keyword.operator.definiteassignment.tsx</string> | |
| 829 | </dict> | |
| 830 | </dict> | |
| 831 | <key>end</key> | |
| 832 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 833 | <key>patterns</key> | |
| 834 | <array> | |
| 835 | <dict> | |
| 836 | <key>include</key> | |
| 837 | <string>#var-single-variable-type-annotation</string> | |
| 838 | </dict> | |
| 839 | </array> | |
| 840 | </dict> | |
| 841 | <dict> | |
| 842 | <key>name</key> | |
| 843 | <string>meta.var-single-variable.expr.tsx</string> | |
| 844 | <key>begin</key> | |
| 845 | <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\!)?</string> | |
| 846 | <key>beginCaptures</key> | |
| 847 | <dict> | |
| 848 | <key>1</key> | |
| 849 | <dict> | |
| 850 | <key>name</key> | |
| 851 | <string>meta.definition.variable.tsx variable.other.constant.tsx</string> | |
| 852 | </dict> | |
| 853 | <key>2</key> | |
| 854 | <dict> | |
| 855 | <key>name</key> | |
| 856 | <string>keyword.operator.definiteassignment.tsx</string> | |
| 857 | </dict> | |
| 858 | </dict> | |
| 859 | <key>end</key> | |
| 860 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 861 | <key>patterns</key> | |
| 862 | <array> | |
| 863 | <dict> | |
| 864 | <key>include</key> | |
| 865 | <string>#var-single-variable-type-annotation</string> | |
| 866 | </dict> | |
| 867 | </array> | |
| 868 | </dict> | |
| 869 | <dict> | |
| 870 | <key>name</key> | |
| 871 | <string>meta.var-single-variable.expr.tsx</string> | |
| 872 | <key>begin</key> | |
| 873 | <string>([_$[:alpha:]][_$[:alnum:]]*)(\!)?</string> | |
| 874 | <key>beginCaptures</key> | |
| 875 | <dict> | |
| 876 | <key>1</key> | |
| 877 | <dict> | |
| 878 | <key>name</key> | |
| 879 | <string>meta.definition.variable.tsx variable.other.readwrite.tsx</string> | |
| 880 | </dict> | |
| 881 | <key>2</key> | |
| 882 | <dict> | |
| 883 | <key>name</key> | |
| 884 | <string>keyword.operator.definiteassignment.tsx</string> | |
| 885 | </dict> | |
| 886 | </dict> | |
| 887 | <key>end</key> | |
| 888 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 889 | <key>patterns</key> | |
| 890 | <array> | |
| 891 | <dict> | |
| 892 | <key>include</key> | |
| 893 | <string>#var-single-variable-type-annotation</string> | |
| 894 | </dict> | |
| 895 | </array> | |
| 896 | </dict> | |
| 897 | </array> | |
| 898 | </dict> | |
| 899 | <key>var-single-const</key> | |
| 900 | <dict> | |
| 901 | <key>patterns</key> | |
| 902 | <array> | |
| 903 | <dict> | |
| 904 | <key>name</key> | |
| 905 | <string>meta.var-single-variable.expr.tsx</string> | |
| 906 | <key>begin</key> | |
| 907 | <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s* | |
| 908 | # function assignment | | |
| 909 | (=\s*( | |
| 910 | ((async\s+)?( | |
| 911 | (function\s*[(&lt;*]) | | |
| 912 | (function\s+) | | |
| 913 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 914 | )) | | |
| 915 | ((async\s*)?( | |
| 916 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 917 | # sure shot arrow functions even if =&gt; is on new line | |
| 918 | ( | |
| 919 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 920 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 921 | ( | |
| 922 | ([)]\s*:) | # (): | |
| 923 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 924 | ) | |
| 925 | ) | | |
| 926 | ( | |
| 927 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 928 | ) | | |
| 929 | # arrow function possible to detect only with =&gt; on same line | |
| 930 | ( | |
| 931 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 932 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 933 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 934 | \s*=&gt; # arrow operator | |
| 935 | ) | |
| 936 | )) | |
| 937 | )) | | |
| 938 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 939 | (:\s*( | |
| 940 | (&lt;) | | |
| 941 | ([(]\s*( | |
| 942 | ([)]) | | |
| 943 | (\.\.\.) | | |
| 944 | ([_$[:alnum:]]+\s*( | |
| 945 | ([:,?=])| | |
| 946 | ([)]\s*=&gt;) | |
| 947 | )) | |
| 948 | )) | |
| 949 | )) | | |
| 950 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 951 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 952 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 953 | ((async\s+)?( | |
| 954 | (function\s*[(&lt;*]) | | |
| 955 | (function\s+) | | |
| 956 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 957 | )) | | |
| 958 | ((async\s*)?( | |
| 959 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 960 | # sure shot arrow functions even if =&gt; is on new line | |
| 961 | ( | |
| 962 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 963 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 964 | ( | |
| 965 | ([)]\s*:) | # (): | |
| 966 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 967 | ) | |
| 968 | ) | | |
| 969 | ( | |
| 970 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 971 | ) | | |
| 972 | # arrow function possible to detect only with =&gt; on same line | |
| 973 | ( | |
| 974 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 975 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 976 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 977 | \s*=&gt; # arrow operator | |
| 978 | ) | |
| 979 | )) | |
| 980 | )))</string> | |
| 981 | <key>beginCaptures</key> | |
| 982 | <dict> | |
| 983 | <key>1</key> | |
| 984 | <dict> | |
| 985 | <key>name</key> | |
| 986 | <string>meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx</string> | |
| 987 | </dict> | |
| 988 | </dict> | |
| 989 | <key>end</key> | |
| 990 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 991 | <key>patterns</key> | |
| 992 | <array> | |
| 993 | <dict> | |
| 994 | <key>include</key> | |
| 995 | <string>#var-single-variable-type-annotation</string> | |
| 996 | </dict> | |
| 997 | </array> | |
| 998 | </dict> | |
| 999 | <dict> | |
| 1000 | <key>name</key> | |
| 1001 | <string>meta.var-single-variable.expr.tsx</string> | |
| 1002 | <key>begin</key> | |
| 1003 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1004 | <key>beginCaptures</key> | |
| 1005 | <dict> | |
| 1006 | <key>1</key> | |
| 1007 | <dict> | |
| 1008 | <key>name</key> | |
| 1009 | <string>meta.definition.variable.tsx variable.other.constant.tsx</string> | |
| 1010 | </dict> | |
| 1011 | </dict> | |
| 1012 | <key>end</key> | |
| 1013 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 1014 | <key>patterns</key> | |
| 1015 | <array> | |
| 1016 | <dict> | |
| 1017 | <key>include</key> | |
| 1018 | <string>#var-single-variable-type-annotation</string> | |
| 1019 | </dict> | |
| 1020 | </array> | |
| 1021 | </dict> | |
| 1022 | </array> | |
| 1023 | </dict> | |
| 1024 | <key>var-single-variable-type-annotation</key> | |
| 1025 | <dict> | |
| 1026 | <key>patterns</key> | |
| 1027 | <array> | |
| 1028 | <dict> | |
| 1029 | <key>include</key> | |
| 1030 | <string>#type-annotation</string> | |
| 1031 | </dict> | |
| 1032 | <dict> | |
| 1033 | <key>include</key> | |
| 1034 | <string>#string</string> | |
| 1035 | </dict> | |
| 1036 | <dict> | |
| 1037 | <key>include</key> | |
| 1038 | <string>#comment</string> | |
| 1039 | </dict> | |
| 1040 | </array> | |
| 1041 | </dict> | |
| 1042 | <key>destructuring-variable</key> | |
| 1043 | <dict> | |
| 1044 | <key>patterns</key> | |
| 1045 | <array> | |
| 1046 | <dict> | |
| 1047 | <key>name</key> | |
| 1048 | <string>meta.object-binding-pattern-variable.tsx</string> | |
| 1049 | <key>begin</key> | |
| 1050 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string> | |
| 1051 | <key>end</key> | |
| 1052 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1053 | <key>patterns</key> | |
| 1054 | <array> | |
| 1055 | <dict> | |
| 1056 | <key>include</key> | |
| 1057 | <string>#object-binding-pattern</string> | |
| 1058 | </dict> | |
| 1059 | <dict> | |
| 1060 | <key>include</key> | |
| 1061 | <string>#type-annotation</string> | |
| 1062 | </dict> | |
| 1063 | <dict> | |
| 1064 | <key>include</key> | |
| 1065 | <string>#comment</string> | |
| 1066 | </dict> | |
| 1067 | </array> | |
| 1068 | </dict> | |
| 1069 | <dict> | |
| 1070 | <key>name</key> | |
| 1071 | <string>meta.array-binding-pattern-variable.tsx</string> | |
| 1072 | <key>begin</key> | |
| 1073 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string> | |
| 1074 | <key>end</key> | |
| 1075 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1076 | <key>patterns</key> | |
| 1077 | <array> | |
| 1078 | <dict> | |
| 1079 | <key>include</key> | |
| 1080 | <string>#array-binding-pattern</string> | |
| 1081 | </dict> | |
| 1082 | <dict> | |
| 1083 | <key>include</key> | |
| 1084 | <string>#type-annotation</string> | |
| 1085 | </dict> | |
| 1086 | <dict> | |
| 1087 | <key>include</key> | |
| 1088 | <string>#comment</string> | |
| 1089 | </dict> | |
| 1090 | </array> | |
| 1091 | </dict> | |
| 1092 | </array> | |
| 1093 | </dict> | |
| 1094 | <key>destructuring-const</key> | |
| 1095 | <dict> | |
| 1096 | <key>patterns</key> | |
| 1097 | <array> | |
| 1098 | <dict> | |
| 1099 | <key>name</key> | |
| 1100 | <string>meta.object-binding-pattern-variable.tsx</string> | |
| 1101 | <key>begin</key> | |
| 1102 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string> | |
| 1103 | <key>end</key> | |
| 1104 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1105 | <key>patterns</key> | |
| 1106 | <array> | |
| 1107 | <dict> | |
| 1108 | <key>include</key> | |
| 1109 | <string>#object-binding-pattern-const</string> | |
| 1110 | </dict> | |
| 1111 | <dict> | |
| 1112 | <key>include</key> | |
| 1113 | <string>#type-annotation</string> | |
| 1114 | </dict> | |
| 1115 | <dict> | |
| 1116 | <key>include</key> | |
| 1117 | <string>#comment</string> | |
| 1118 | </dict> | |
| 1119 | </array> | |
| 1120 | </dict> | |
| 1121 | <dict> | |
| 1122 | <key>name</key> | |
| 1123 | <string>meta.array-binding-pattern-variable.tsx</string> | |
| 1124 | <key>begin</key> | |
| 1125 | <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string> | |
| 1126 | <key>end</key> | |
| 1127 | <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 1128 | <key>patterns</key> | |
| 1129 | <array> | |
| 1130 | <dict> | |
| 1131 | <key>include</key> | |
| 1132 | <string>#array-binding-pattern-const</string> | |
| 1133 | </dict> | |
| 1134 | <dict> | |
| 1135 | <key>include</key> | |
| 1136 | <string>#type-annotation</string> | |
| 1137 | </dict> | |
| 1138 | <dict> | |
| 1139 | <key>include</key> | |
| 1140 | <string>#comment</string> | |
| 1141 | </dict> | |
| 1142 | </array> | |
| 1143 | </dict> | |
| 1144 | </array> | |
| 1145 | </dict> | |
| 1146 | <key>object-binding-element</key> | |
| 1147 | <dict> | |
| 1148 | <key>patterns</key> | |
| 1149 | <array> | |
| 1150 | <dict> | |
| 1151 | <key>include</key> | |
| 1152 | <string>#comment</string> | |
| 1153 | </dict> | |
| 1154 | <dict> | |
| 1155 | <key>begin</key> | |
| 1156 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1157 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1158 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1159 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1160 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1161 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1162 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1163 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1164 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1165 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1166 | <key>end</key> | |
| 1167 | <string>(?=,|\})</string> | |
| 1168 | <key>patterns</key> | |
| 1169 | <array> | |
| 1170 | <dict> | |
| 1171 | <key>include</key> | |
| 1172 | <string>#object-binding-element-propertyName</string> | |
| 1173 | </dict> | |
| 1174 | <dict> | |
| 1175 | <key>include</key> | |
| 1176 | <string>#binding-element</string> | |
| 1177 | </dict> | |
| 1178 | </array> | |
| 1179 | </dict> | |
| 1180 | <dict> | |
| 1181 | <key>include</key> | |
| 1182 | <string>#object-binding-pattern</string> | |
| 1183 | </dict> | |
| 1184 | <dict> | |
| 1185 | <key>include</key> | |
| 1186 | <string>#destructuring-variable-rest</string> | |
| 1187 | </dict> | |
| 1188 | <dict> | |
| 1189 | <key>include</key> | |
| 1190 | <string>#variable-initializer</string> | |
| 1191 | </dict> | |
| 1192 | <dict> | |
| 1193 | <key>include</key> | |
| 1194 | <string>#punctuation-comma</string> | |
| 1195 | </dict> | |
| 1196 | </array> | |
| 1197 | </dict> | |
| 1198 | <key>object-binding-element-const</key> | |
| 1199 | <dict> | |
| 1200 | <key>patterns</key> | |
| 1201 | <array> | |
| 1202 | <dict> | |
| 1203 | <key>include</key> | |
| 1204 | <string>#comment</string> | |
| 1205 | </dict> | |
| 1206 | <dict> | |
| 1207 | <key>begin</key> | |
| 1208 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1209 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1210 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1211 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1212 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1213 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1214 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1215 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1216 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1217 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1218 | <key>end</key> | |
| 1219 | <string>(?=,|\})</string> | |
| 1220 | <key>patterns</key> | |
| 1221 | <array> | |
| 1222 | <dict> | |
| 1223 | <key>include</key> | |
| 1224 | <string>#object-binding-element-propertyName</string> | |
| 1225 | </dict> | |
| 1226 | <dict> | |
| 1227 | <key>include</key> | |
| 1228 | <string>#binding-element-const</string> | |
| 1229 | </dict> | |
| 1230 | </array> | |
| 1231 | </dict> | |
| 1232 | <dict> | |
| 1233 | <key>include</key> | |
| 1234 | <string>#object-binding-pattern-const</string> | |
| 1235 | </dict> | |
| 1236 | <dict> | |
| 1237 | <key>include</key> | |
| 1238 | <string>#destructuring-variable-rest-const</string> | |
| 1239 | </dict> | |
| 1240 | <dict> | |
| 1241 | <key>include</key> | |
| 1242 | <string>#variable-initializer</string> | |
| 1243 | </dict> | |
| 1244 | <dict> | |
| 1245 | <key>include</key> | |
| 1246 | <string>#punctuation-comma</string> | |
| 1247 | </dict> | |
| 1248 | </array> | |
| 1249 | </dict> | |
| 1250 | <key>object-binding-element-propertyName</key> | |
| 1251 | <dict> | |
| 1252 | <key>begin</key> | |
| 1253 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1254 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1255 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1256 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1257 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1258 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1259 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1260 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1261 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1262 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1263 | <key>end</key> | |
| 1264 | <string>(:)</string> | |
| 1265 | <key>endCaptures</key> | |
| 1266 | <dict> | |
| 1267 | <key>0</key> | |
| 1268 | <dict> | |
| 1269 | <key>name</key> | |
| 1270 | <string>punctuation.destructuring.tsx</string> | |
| 1271 | </dict> | |
| 1272 | </dict> | |
| 1273 | <key>patterns</key> | |
| 1274 | <array> | |
| 1275 | <dict> | |
| 1276 | <key>include</key> | |
| 1277 | <string>#string</string> | |
| 1278 | </dict> | |
| 1279 | <dict> | |
| 1280 | <key>include</key> | |
| 1281 | <string>#array-literal</string> | |
| 1282 | </dict> | |
| 1283 | <dict> | |
| 1284 | <key>include</key> | |
| 1285 | <string>#numeric-literal</string> | |
| 1286 | </dict> | |
| 1287 | <dict> | |
| 1288 | <key>name</key> | |
| 1289 | <string>variable.object.property.tsx</string> | |
| 1290 | <key>match</key> | |
| 1291 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1292 | </dict> | |
| 1293 | </array> | |
| 1294 | </dict> | |
| 1295 | <key>binding-element</key> | |
| 1296 | <dict> | |
| 1297 | <key>patterns</key> | |
| 1298 | <array> | |
| 1299 | <dict> | |
| 1300 | <key>include</key> | |
| 1301 | <string>#comment</string> | |
| 1302 | </dict> | |
| 1303 | <dict> | |
| 1304 | <key>include</key> | |
| 1305 | <string>#string</string> | |
| 1306 | </dict> | |
| 1307 | <dict> | |
| 1308 | <key>include</key> | |
| 1309 | <string>#numeric-literal</string> | |
| 1310 | </dict> | |
| 1311 | <dict> | |
| 1312 | <key>include</key> | |
| 1313 | <string>#regex</string> | |
| 1314 | </dict> | |
| 1315 | <dict> | |
| 1316 | <key>include</key> | |
| 1317 | <string>#object-binding-pattern</string> | |
| 1318 | </dict> | |
| 1319 | <dict> | |
| 1320 | <key>include</key> | |
| 1321 | <string>#array-binding-pattern</string> | |
| 1322 | </dict> | |
| 1323 | <dict> | |
| 1324 | <key>include</key> | |
| 1325 | <string>#destructuring-variable-rest</string> | |
| 1326 | </dict> | |
| 1327 | <dict> | |
| 1328 | <key>include</key> | |
| 1329 | <string>#variable-initializer</string> | |
| 1330 | </dict> | |
| 1331 | </array> | |
| 1332 | </dict> | |
| 1333 | <key>binding-element-const</key> | |
| 1334 | <dict> | |
| 1335 | <key>patterns</key> | |
| 1336 | <array> | |
| 1337 | <dict> | |
| 1338 | <key>include</key> | |
| 1339 | <string>#comment</string> | |
| 1340 | </dict> | |
| 1341 | <dict> | |
| 1342 | <key>include</key> | |
| 1343 | <string>#string</string> | |
| 1344 | </dict> | |
| 1345 | <dict> | |
| 1346 | <key>include</key> | |
| 1347 | <string>#numeric-literal</string> | |
| 1348 | </dict> | |
| 1349 | <dict> | |
| 1350 | <key>include</key> | |
| 1351 | <string>#regex</string> | |
| 1352 | </dict> | |
| 1353 | <dict> | |
| 1354 | <key>include</key> | |
| 1355 | <string>#object-binding-pattern-const</string> | |
| 1356 | </dict> | |
| 1357 | <dict> | |
| 1358 | <key>include</key> | |
| 1359 | <string>#array-binding-pattern-const</string> | |
| 1360 | </dict> | |
| 1361 | <dict> | |
| 1362 | <key>include</key> | |
| 1363 | <string>#destructuring-variable-rest-const</string> | |
| 1364 | </dict> | |
| 1365 | <dict> | |
| 1366 | <key>include</key> | |
| 1367 | <string>#variable-initializer</string> | |
| 1368 | </dict> | |
| 1369 | </array> | |
| 1370 | </dict> | |
| 1371 | <key>destructuring-variable-rest</key> | |
| 1372 | <dict> | |
| 1373 | <key>match</key> | |
| 1374 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1375 | <key>captures</key> | |
| 1376 | <dict> | |
| 1377 | <key>1</key> | |
| 1378 | <dict> | |
| 1379 | <key>name</key> | |
| 1380 | <string>keyword.operator.rest.tsx</string> | |
| 1381 | </dict> | |
| 1382 | <key>2</key> | |
| 1383 | <dict> | |
| 1384 | <key>name</key> | |
| 1385 | <string>meta.definition.variable.tsx variable.other.readwrite.tsx</string> | |
| 1386 | </dict> | |
| 1387 | </dict> | |
| 1388 | </dict> | |
| 1389 | <key>destructuring-variable-rest-const</key> | |
| 1390 | <dict> | |
| 1391 | <key>match</key> | |
| 1392 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1393 | <key>captures</key> | |
| 1394 | <dict> | |
| 1395 | <key>1</key> | |
| 1396 | <dict> | |
| 1397 | <key>name</key> | |
| 1398 | <string>keyword.operator.rest.tsx</string> | |
| 1399 | </dict> | |
| 1400 | <key>2</key> | |
| 1401 | <dict> | |
| 1402 | <key>name</key> | |
| 1403 | <string>meta.definition.variable.tsx variable.other.constant.tsx</string> | |
| 1404 | </dict> | |
| 1405 | </dict> | |
| 1406 | </dict> | |
| 1407 | <key>object-binding-pattern</key> | |
| 1408 | <dict> | |
| 1409 | <key>begin</key> | |
| 1410 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1411 | <key>beginCaptures</key> | |
| 1412 | <dict> | |
| 1413 | <key>1</key> | |
| 1414 | <dict> | |
| 1415 | <key>name</key> | |
| 1416 | <string>keyword.operator.rest.tsx</string> | |
| 1417 | </dict> | |
| 1418 | <key>2</key> | |
| 1419 | <dict> | |
| 1420 | <key>name</key> | |
| 1421 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1422 | </dict> | |
| 1423 | </dict> | |
| 1424 | <key>end</key> | |
| 1425 | <string>\}</string> | |
| 1426 | <key>endCaptures</key> | |
| 1427 | <dict> | |
| 1428 | <key>0</key> | |
| 1429 | <dict> | |
| 1430 | <key>name</key> | |
| 1431 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1432 | </dict> | |
| 1433 | </dict> | |
| 1434 | <key>patterns</key> | |
| 1435 | <array> | |
| 1436 | <dict> | |
| 1437 | <key>include</key> | |
| 1438 | <string>#object-binding-element</string> | |
| 1439 | </dict> | |
| 1440 | </array> | |
| 1441 | </dict> | |
| 1442 | <key>object-binding-pattern-const</key> | |
| 1443 | <dict> | |
| 1444 | <key>begin</key> | |
| 1445 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1446 | <key>beginCaptures</key> | |
| 1447 | <dict> | |
| 1448 | <key>1</key> | |
| 1449 | <dict> | |
| 1450 | <key>name</key> | |
| 1451 | <string>keyword.operator.rest.tsx</string> | |
| 1452 | </dict> | |
| 1453 | <key>2</key> | |
| 1454 | <dict> | |
| 1455 | <key>name</key> | |
| 1456 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1457 | </dict> | |
| 1458 | </dict> | |
| 1459 | <key>end</key> | |
| 1460 | <string>\}</string> | |
| 1461 | <key>endCaptures</key> | |
| 1462 | <dict> | |
| 1463 | <key>0</key> | |
| 1464 | <dict> | |
| 1465 | <key>name</key> | |
| 1466 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1467 | </dict> | |
| 1468 | </dict> | |
| 1469 | <key>patterns</key> | |
| 1470 | <array> | |
| 1471 | <dict> | |
| 1472 | <key>include</key> | |
| 1473 | <string>#object-binding-element-const</string> | |
| 1474 | </dict> | |
| 1475 | </array> | |
| 1476 | </dict> | |
| 1477 | <key>array-binding-pattern</key> | |
| 1478 | <dict> | |
| 1479 | <key>begin</key> | |
| 1480 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1481 | <key>beginCaptures</key> | |
| 1482 | <dict> | |
| 1483 | <key>1</key> | |
| 1484 | <dict> | |
| 1485 | <key>name</key> | |
| 1486 | <string>keyword.operator.rest.tsx</string> | |
| 1487 | </dict> | |
| 1488 | <key>2</key> | |
| 1489 | <dict> | |
| 1490 | <key>name</key> | |
| 1491 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1492 | </dict> | |
| 1493 | </dict> | |
| 1494 | <key>end</key> | |
| 1495 | <string>\]</string> | |
| 1496 | <key>endCaptures</key> | |
| 1497 | <dict> | |
| 1498 | <key>0</key> | |
| 1499 | <dict> | |
| 1500 | <key>name</key> | |
| 1501 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1502 | </dict> | |
| 1503 | </dict> | |
| 1504 | <key>patterns</key> | |
| 1505 | <array> | |
| 1506 | <dict> | |
| 1507 | <key>include</key> | |
| 1508 | <string>#binding-element</string> | |
| 1509 | </dict> | |
| 1510 | <dict> | |
| 1511 | <key>include</key> | |
| 1512 | <string>#punctuation-comma</string> | |
| 1513 | </dict> | |
| 1514 | </array> | |
| 1515 | </dict> | |
| 1516 | <key>array-binding-pattern-const</key> | |
| 1517 | <dict> | |
| 1518 | <key>begin</key> | |
| 1519 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1520 | <key>beginCaptures</key> | |
| 1521 | <dict> | |
| 1522 | <key>1</key> | |
| 1523 | <dict> | |
| 1524 | <key>name</key> | |
| 1525 | <string>keyword.operator.rest.tsx</string> | |
| 1526 | </dict> | |
| 1527 | <key>2</key> | |
| 1528 | <dict> | |
| 1529 | <key>name</key> | |
| 1530 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1531 | </dict> | |
| 1532 | </dict> | |
| 1533 | <key>end</key> | |
| 1534 | <string>\]</string> | |
| 1535 | <key>endCaptures</key> | |
| 1536 | <dict> | |
| 1537 | <key>0</key> | |
| 1538 | <dict> | |
| 1539 | <key>name</key> | |
| 1540 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1541 | </dict> | |
| 1542 | </dict> | |
| 1543 | <key>patterns</key> | |
| 1544 | <array> | |
| 1545 | <dict> | |
| 1546 | <key>include</key> | |
| 1547 | <string>#binding-element-const</string> | |
| 1548 | </dict> | |
| 1549 | <dict> | |
| 1550 | <key>include</key> | |
| 1551 | <string>#punctuation-comma</string> | |
| 1552 | </dict> | |
| 1553 | </array> | |
| 1554 | </dict> | |
| 1555 | <key>parameter-name</key> | |
| 1556 | <dict> | |
| 1557 | <key>patterns</key> | |
| 1558 | <array> | |
| 1559 | <dict> | |
| 1560 | <key>match</key> | |
| 1561 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string> | |
| 1562 | <key>captures</key> | |
| 1563 | <dict> | |
| 1564 | <key>1</key> | |
| 1565 | <dict> | |
| 1566 | <key>name</key> | |
| 1567 | <string>storage.modifier.tsx</string> | |
| 1568 | </dict> | |
| 1569 | </dict> | |
| 1570 | </dict> | |
| 1571 | <dict> | |
| 1572 | <key>match</key> | |
| 1573 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s* | |
| 1574 | # function assignment | | |
| 1575 | (=\s*( | |
| 1576 | ((async\s+)?( | |
| 1577 | (function\s*[(&lt;*]) | | |
| 1578 | (function\s+) | | |
| 1579 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 1580 | )) | | |
| 1581 | ((async\s*)?( | |
| 1582 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 1583 | # sure shot arrow functions even if =&gt; is on new line | |
| 1584 | ( | |
| 1585 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 1586 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 1587 | ( | |
| 1588 | ([)]\s*:) | # (): | |
| 1589 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 1590 | ) | |
| 1591 | ) | | |
| 1592 | ( | |
| 1593 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 1594 | ) | | |
| 1595 | # arrow function possible to detect only with =&gt; on same line | |
| 1596 | ( | |
| 1597 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 1598 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 1599 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 1600 | \s*=&gt; # arrow operator | |
| 1601 | ) | |
| 1602 | )) | |
| 1603 | )) | | |
| 1604 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 1605 | (:\s*( | |
| 1606 | (&lt;) | | |
| 1607 | ([(]\s*( | |
| 1608 | ([)]) | | |
| 1609 | (\.\.\.) | | |
| 1610 | ([_$[:alnum:]]+\s*( | |
| 1611 | ([:,?=])| | |
| 1612 | ([)]\s*=&gt;) | |
| 1613 | )) | |
| 1614 | )) | |
| 1615 | )) | | |
| 1616 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 1617 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 1618 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 1619 | ((async\s+)?( | |
| 1620 | (function\s*[(&lt;*]) | | |
| 1621 | (function\s+) | | |
| 1622 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 1623 | )) | | |
| 1624 | ((async\s*)?( | |
| 1625 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 1626 | # sure shot arrow functions even if =&gt; is on new line | |
| 1627 | ( | |
| 1628 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 1629 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 1630 | ( | |
| 1631 | ([)]\s*:) | # (): | |
| 1632 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 1633 | ) | |
| 1634 | ) | | |
| 1635 | ( | |
| 1636 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 1637 | ) | | |
| 1638 | # arrow function possible to detect only with =&gt; on same line | |
| 1639 | ( | |
| 1640 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 1641 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 1642 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 1643 | \s*=&gt; # arrow operator | |
| 1644 | ) | |
| 1645 | )) | |
| 1646 | )))</string> | |
| 1647 | <key>captures</key> | |
| 1648 | <dict> | |
| 1649 | <key>1</key> | |
| 1650 | <dict> | |
| 1651 | <key>name</key> | |
| 1652 | <string>storage.modifier.tsx</string> | |
| 1653 | </dict> | |
| 1654 | <key>2</key> | |
| 1655 | <dict> | |
| 1656 | <key>name</key> | |
| 1657 | <string>keyword.operator.rest.tsx</string> | |
| 1658 | </dict> | |
| 1659 | <key>3</key> | |
| 1660 | <dict> | |
| 1661 | <key>name</key> | |
| 1662 | <string>entity.name.function.tsx variable.language.this.tsx</string> | |
| 1663 | </dict> | |
| 1664 | <key>4</key> | |
| 1665 | <dict> | |
| 1666 | <key>name</key> | |
| 1667 | <string>entity.name.function.tsx</string> | |
| 1668 | </dict> | |
| 1669 | <key>5</key> | |
| 1670 | <dict> | |
| 1671 | <key>name</key> | |
| 1672 | <string>keyword.operator.optional.tsx</string> | |
| 1673 | </dict> | |
| 1674 | </dict> | |
| 1675 | </dict> | |
| 1676 | <dict> | |
| 1677 | <key>match</key> | |
| 1678 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string> | |
| 1679 | <key>captures</key> | |
| 1680 | <dict> | |
| 1681 | <key>1</key> | |
| 1682 | <dict> | |
| 1683 | <key>name</key> | |
| 1684 | <string>storage.modifier.tsx</string> | |
| 1685 | </dict> | |
| 1686 | <key>2</key> | |
| 1687 | <dict> | |
| 1688 | <key>name</key> | |
| 1689 | <string>keyword.operator.rest.tsx</string> | |
| 1690 | </dict> | |
| 1691 | <key>3</key> | |
| 1692 | <dict> | |
| 1693 | <key>name</key> | |
| 1694 | <string>variable.parameter.tsx variable.language.this.tsx</string> | |
| 1695 | </dict> | |
| 1696 | <key>4</key> | |
| 1697 | <dict> | |
| 1698 | <key>name</key> | |
| 1699 | <string>variable.parameter.tsx</string> | |
| 1700 | </dict> | |
| 1701 | <key>5</key> | |
| 1702 | <dict> | |
| 1703 | <key>name</key> | |
| 1704 | <string>keyword.operator.optional.tsx</string> | |
| 1705 | </dict> | |
| 1706 | </dict> | |
| 1707 | </dict> | |
| 1708 | </array> | |
| 1709 | </dict> | |
| 1710 | <key>destructuring-parameter</key> | |
| 1711 | <dict> | |
| 1712 | <key>patterns</key> | |
| 1713 | <array> | |
| 1714 | <dict> | |
| 1715 | <key>name</key> | |
| 1716 | <string>meta.parameter.object-binding-pattern.tsx</string> | |
| 1717 | <key>begin</key> | |
| 1718 | <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\{)</string> | |
| 1719 | <key>beginCaptures</key> | |
| 1720 | <dict> | |
| 1721 | <key>1</key> | |
| 1722 | <dict> | |
| 1723 | <key>name</key> | |
| 1724 | <string>keyword.operator.rest.tsx</string> | |
| 1725 | </dict> | |
| 1726 | <key>2</key> | |
| 1727 | <dict> | |
| 1728 | <key>name</key> | |
| 1729 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1730 | </dict> | |
| 1731 | </dict> | |
| 1732 | <key>end</key> | |
| 1733 | <string>\}</string> | |
| 1734 | <key>endCaptures</key> | |
| 1735 | <dict> | |
| 1736 | <key>0</key> | |
| 1737 | <dict> | |
| 1738 | <key>name</key> | |
| 1739 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1740 | </dict> | |
| 1741 | </dict> | |
| 1742 | <key>patterns</key> | |
| 1743 | <array> | |
| 1744 | <dict> | |
| 1745 | <key>include</key> | |
| 1746 | <string>#parameter-object-binding-element</string> | |
| 1747 | </dict> | |
| 1748 | </array> | |
| 1749 | </dict> | |
| 1750 | <dict> | |
| 1751 | <key>name</key> | |
| 1752 | <string>meta.paramter.array-binding-pattern.tsx</string> | |
| 1753 | <key>begin</key> | |
| 1754 | <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\[)</string> | |
| 1755 | <key>beginCaptures</key> | |
| 1756 | <dict> | |
| 1757 | <key>1</key> | |
| 1758 | <dict> | |
| 1759 | <key>name</key> | |
| 1760 | <string>keyword.operator.rest.tsx</string> | |
| 1761 | </dict> | |
| 1762 | <key>2</key> | |
| 1763 | <dict> | |
| 1764 | <key>name</key> | |
| 1765 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1766 | </dict> | |
| 1767 | </dict> | |
| 1768 | <key>end</key> | |
| 1769 | <string>\]</string> | |
| 1770 | <key>endCaptures</key> | |
| 1771 | <dict> | |
| 1772 | <key>0</key> | |
| 1773 | <dict> | |
| 1774 | <key>name</key> | |
| 1775 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1776 | </dict> | |
| 1777 | </dict> | |
| 1778 | <key>patterns</key> | |
| 1779 | <array> | |
| 1780 | <dict> | |
| 1781 | <key>include</key> | |
| 1782 | <string>#parameter-binding-element</string> | |
| 1783 | </dict> | |
| 1784 | <dict> | |
| 1785 | <key>include</key> | |
| 1786 | <string>#punctuation-comma</string> | |
| 1787 | </dict> | |
| 1788 | </array> | |
| 1789 | </dict> | |
| 1790 | </array> | |
| 1791 | </dict> | |
| 1792 | <key>parameter-object-binding-element</key> | |
| 1793 | <dict> | |
| 1794 | <key>patterns</key> | |
| 1795 | <array> | |
| 1796 | <dict> | |
| 1797 | <key>include</key> | |
| 1798 | <string>#comment</string> | |
| 1799 | </dict> | |
| 1800 | <dict> | |
| 1801 | <key>begin</key> | |
| 1802 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1803 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1804 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1805 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1806 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1807 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1808 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1809 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1810 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1811 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string> | |
| 1812 | <key>end</key> | |
| 1813 | <string>(?=,|\})</string> | |
| 1814 | <key>patterns</key> | |
| 1815 | <array> | |
| 1816 | <dict> | |
| 1817 | <key>include</key> | |
| 1818 | <string>#object-binding-element-propertyName</string> | |
| 1819 | </dict> | |
| 1820 | <dict> | |
| 1821 | <key>include</key> | |
| 1822 | <string>#parameter-binding-element</string> | |
| 1823 | </dict> | |
| 1824 | <dict> | |
| 1825 | <key>include</key> | |
| 1826 | <string>#paren-expression</string> | |
| 1827 | </dict> | |
| 1828 | </array> | |
| 1829 | </dict> | |
| 1830 | <dict> | |
| 1831 | <key>include</key> | |
| 1832 | <string>#parameter-object-binding-pattern</string> | |
| 1833 | </dict> | |
| 1834 | <dict> | |
| 1835 | <key>include</key> | |
| 1836 | <string>#destructuring-parameter-rest</string> | |
| 1837 | </dict> | |
| 1838 | <dict> | |
| 1839 | <key>include</key> | |
| 1840 | <string>#variable-initializer</string> | |
| 1841 | </dict> | |
| 1842 | <dict> | |
| 1843 | <key>include</key> | |
| 1844 | <string>#punctuation-comma</string> | |
| 1845 | </dict> | |
| 1846 | </array> | |
| 1847 | </dict> | |
| 1848 | <key>parameter-binding-element</key> | |
| 1849 | <dict> | |
| 1850 | <key>patterns</key> | |
| 1851 | <array> | |
| 1852 | <dict> | |
| 1853 | <key>include</key> | |
| 1854 | <string>#comment</string> | |
| 1855 | </dict> | |
| 1856 | <dict> | |
| 1857 | <key>include</key> | |
| 1858 | <string>#string</string> | |
| 1859 | </dict> | |
| 1860 | <dict> | |
| 1861 | <key>include</key> | |
| 1862 | <string>#numeric-literal</string> | |
| 1863 | </dict> | |
| 1864 | <dict> | |
| 1865 | <key>include</key> | |
| 1866 | <string>#regex</string> | |
| 1867 | </dict> | |
| 1868 | <dict> | |
| 1869 | <key>include</key> | |
| 1870 | <string>#parameter-object-binding-pattern</string> | |
| 1871 | </dict> | |
| 1872 | <dict> | |
| 1873 | <key>include</key> | |
| 1874 | <string>#parameter-array-binding-pattern</string> | |
| 1875 | </dict> | |
| 1876 | <dict> | |
| 1877 | <key>include</key> | |
| 1878 | <string>#destructuring-parameter-rest</string> | |
| 1879 | </dict> | |
| 1880 | <dict> | |
| 1881 | <key>include</key> | |
| 1882 | <string>#variable-initializer</string> | |
| 1883 | </dict> | |
| 1884 | </array> | |
| 1885 | </dict> | |
| 1886 | <key>destructuring-parameter-rest</key> | |
| 1887 | <dict> | |
| 1888 | <key>match</key> | |
| 1889 | <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 1890 | <key>captures</key> | |
| 1891 | <dict> | |
| 1892 | <key>1</key> | |
| 1893 | <dict> | |
| 1894 | <key>name</key> | |
| 1895 | <string>keyword.operator.rest.tsx</string> | |
| 1896 | </dict> | |
| 1897 | <key>2</key> | |
| 1898 | <dict> | |
| 1899 | <key>name</key> | |
| 1900 | <string>variable.parameter.tsx</string> | |
| 1901 | </dict> | |
| 1902 | </dict> | |
| 1903 | </dict> | |
| 1904 | <key>parameter-object-binding-pattern</key> | |
| 1905 | <dict> | |
| 1906 | <key>begin</key> | |
| 1907 | <string>(?:(\.\.\.)\s*)?(\{)</string> | |
| 1908 | <key>beginCaptures</key> | |
| 1909 | <dict> | |
| 1910 | <key>1</key> | |
| 1911 | <dict> | |
| 1912 | <key>name</key> | |
| 1913 | <string>keyword.operator.rest.tsx</string> | |
| 1914 | </dict> | |
| 1915 | <key>2</key> | |
| 1916 | <dict> | |
| 1917 | <key>name</key> | |
| 1918 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1919 | </dict> | |
| 1920 | </dict> | |
| 1921 | <key>end</key> | |
| 1922 | <string>\}</string> | |
| 1923 | <key>endCaptures</key> | |
| 1924 | <dict> | |
| 1925 | <key>0</key> | |
| 1926 | <dict> | |
| 1927 | <key>name</key> | |
| 1928 | <string>punctuation.definition.binding-pattern.object.tsx</string> | |
| 1929 | </dict> | |
| 1930 | </dict> | |
| 1931 | <key>patterns</key> | |
| 1932 | <array> | |
| 1933 | <dict> | |
| 1934 | <key>include</key> | |
| 1935 | <string>#parameter-object-binding-element</string> | |
| 1936 | </dict> | |
| 1937 | </array> | |
| 1938 | </dict> | |
| 1939 | <key>parameter-array-binding-pattern</key> | |
| 1940 | <dict> | |
| 1941 | <key>begin</key> | |
| 1942 | <string>(?:(\.\.\.)\s*)?(\[)</string> | |
| 1943 | <key>beginCaptures</key> | |
| 1944 | <dict> | |
| 1945 | <key>1</key> | |
| 1946 | <dict> | |
| 1947 | <key>name</key> | |
| 1948 | <string>keyword.operator.rest.tsx</string> | |
| 1949 | </dict> | |
| 1950 | <key>2</key> | |
| 1951 | <dict> | |
| 1952 | <key>name</key> | |
| 1953 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1954 | </dict> | |
| 1955 | </dict> | |
| 1956 | <key>end</key> | |
| 1957 | <string>\]</string> | |
| 1958 | <key>endCaptures</key> | |
| 1959 | <dict> | |
| 1960 | <key>0</key> | |
| 1961 | <dict> | |
| 1962 | <key>name</key> | |
| 1963 | <string>punctuation.definition.binding-pattern.array.tsx</string> | |
| 1964 | </dict> | |
| 1965 | </dict> | |
| 1966 | <key>patterns</key> | |
| 1967 | <array> | |
| 1968 | <dict> | |
| 1969 | <key>include</key> | |
| 1970 | <string>#parameter-binding-element</string> | |
| 1971 | </dict> | |
| 1972 | <dict> | |
| 1973 | <key>include</key> | |
| 1974 | <string>#punctuation-comma</string> | |
| 1975 | </dict> | |
| 1976 | </array> | |
| 1977 | </dict> | |
| 1978 | <key>field-declaration</key> | |
| 1979 | <dict> | |
| 1980 | <key>name</key> | |
| 1981 | <string>meta.field.declaration.tsx</string> | |
| 1982 | <key>begin</key> | |
| 1983 | <string>(?x)(?&lt;!\()(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s+)?(?=\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 1984 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 1985 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 1986 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 1987 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 1988 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 1989 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 1990 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 1991 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 1992 | )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|\}|$))</string> | |
| 1993 | <key>beginCaptures</key> | |
| 1994 | <dict> | |
| 1995 | <key>1</key> | |
| 1996 | <dict> | |
| 1997 | <key>name</key> | |
| 1998 | <string>storage.modifier.tsx</string> | |
| 1999 | </dict> | |
| 2000 | </dict> | |
| 2001 | <key>end</key> | |
| 2002 | <string>(?x)(?=\}|;|,|$|(^(?!\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2003 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2004 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2005 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2006 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2007 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2008 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2009 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2010 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2011 | )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|$))))|(?&lt;=\})</string> | |
| 2012 | <key>patterns</key> | |
| 2013 | <array> | |
| 2014 | <dict> | |
| 2015 | <key>include</key> | |
| 2016 | <string>#variable-initializer</string> | |
| 2017 | </dict> | |
| 2018 | <dict> | |
| 2019 | <key>include</key> | |
| 2020 | <string>#type-annotation</string> | |
| 2021 | </dict> | |
| 2022 | <dict> | |
| 2023 | <key>include</key> | |
| 2024 | <string>#string</string> | |
| 2025 | </dict> | |
| 2026 | <dict> | |
| 2027 | <key>include</key> | |
| 2028 | <string>#array-literal</string> | |
| 2029 | </dict> | |
| 2030 | <dict> | |
| 2031 | <key>include</key> | |
| 2032 | <string>#numeric-literal</string> | |
| 2033 | </dict> | |
| 2034 | <dict> | |
| 2035 | <key>include</key> | |
| 2036 | <string>#comment</string> | |
| 2037 | </dict> | |
| 2038 | <dict> | |
| 2039 | <key>match</key> | |
| 2040 | <string>(?x)(\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\?)|(\!))?(?=\s*\s* | |
| 2041 | # function assignment | | |
| 2042 | (=\s*( | |
| 2043 | ((async\s+)?( | |
| 2044 | (function\s*[(&lt;*]) | | |
| 2045 | (function\s+) | | |
| 2046 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 2047 | )) | | |
| 2048 | ((async\s*)?( | |
| 2049 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 2050 | # sure shot arrow functions even if =&gt; is on new line | |
| 2051 | ( | |
| 2052 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2053 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2054 | ( | |
| 2055 | ([)]\s*:) | # (): | |
| 2056 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2057 | ) | |
| 2058 | ) | | |
| 2059 | ( | |
| 2060 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 2061 | ) | | |
| 2062 | # arrow function possible to detect only with =&gt; on same line | |
| 2063 | ( | |
| 2064 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2065 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2066 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2067 | \s*=&gt; # arrow operator | |
| 2068 | ) | |
| 2069 | )) | |
| 2070 | )) | | |
| 2071 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 2072 | (:\s*( | |
| 2073 | (&lt;) | | |
| 2074 | ([(]\s*( | |
| 2075 | ([)]) | | |
| 2076 | (\.\.\.) | | |
| 2077 | ([_$[:alnum:]]+\s*( | |
| 2078 | ([:,?=])| | |
| 2079 | ([)]\s*=&gt;) | |
| 2080 | )) | |
| 2081 | )) | |
| 2082 | )) | | |
| 2083 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 2084 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 2085 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 2086 | ((async\s+)?( | |
| 2087 | (function\s*[(&lt;*]) | | |
| 2088 | (function\s+) | | |
| 2089 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 2090 | )) | | |
| 2091 | ((async\s*)?( | |
| 2092 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 2093 | # sure shot arrow functions even if =&gt; is on new line | |
| 2094 | ( | |
| 2095 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2096 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2097 | ( | |
| 2098 | ([)]\s*:) | # (): | |
| 2099 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2100 | ) | |
| 2101 | ) | | |
| 2102 | ( | |
| 2103 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 2104 | ) | | |
| 2105 | # arrow function possible to detect only with =&gt; on same line | |
| 2106 | ( | |
| 2107 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2108 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2109 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2110 | \s*=&gt; # arrow operator | |
| 2111 | ) | |
| 2112 | )) | |
| 2113 | )))</string> | |
| 2114 | <key>captures</key> | |
| 2115 | <dict> | |
| 2116 | <key>1</key> | |
| 2117 | <dict> | |
| 2118 | <key>name</key> | |
| 2119 | <string>meta.definition.property.tsx entity.name.function.tsx</string> | |
| 2120 | </dict> | |
| 2121 | <key>2</key> | |
| 2122 | <dict> | |
| 2123 | <key>name</key> | |
| 2124 | <string>keyword.operator.optional.tsx</string> | |
| 2125 | </dict> | |
| 2126 | <key>3</key> | |
| 2127 | <dict> | |
| 2128 | <key>name</key> | |
| 2129 | <string>keyword.operator.definiteassignment.tsx</string> | |
| 2130 | </dict> | |
| 2131 | </dict> | |
| 2132 | </dict> | |
| 2133 | <dict> | |
| 2134 | <key>name</key> | |
| 2135 | <string>meta.definition.property.tsx variable.object.property.tsx</string> | |
| 2136 | <key>match</key> | |
| 2137 | <string>\#?[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2138 | </dict> | |
| 2139 | <dict> | |
| 2140 | <key>name</key> | |
| 2141 | <string>keyword.operator.optional.tsx</string> | |
| 2142 | <key>match</key> | |
| 2143 | <string>\?</string> | |
| 2144 | </dict> | |
| 2145 | <dict> | |
| 2146 | <key>name</key> | |
| 2147 | <string>keyword.operator.definiteassignment.tsx</string> | |
| 2148 | <key>match</key> | |
| 2149 | <string>\!</string> | |
| 2150 | </dict> | |
| 2151 | </array> | |
| 2152 | </dict> | |
| 2153 | <key>variable-initializer</key> | |
| 2154 | <dict> | |
| 2155 | <key>patterns</key> | |
| 2156 | <array> | |
| 2157 | <dict> | |
| 2158 | <key>begin</key> | |
| 2159 | <string>(?&lt;!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=&gt;\s*$)</string> | |
| 2160 | <key>beginCaptures</key> | |
| 2161 | <dict> | |
| 2162 | <key>1</key> | |
| 2163 | <dict> | |
| 2164 | <key>name</key> | |
| 2165 | <string>keyword.operator.assignment.tsx</string> | |
| 2166 | </dict> | |
| 2167 | </dict> | |
| 2168 | <key>end</key> | |
| 2169 | <string>(?=$|^|[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string> | |
| 2170 | <key>patterns</key> | |
| 2171 | <array> | |
| 2172 | <dict> | |
| 2173 | <key>include</key> | |
| 2174 | <string>#expression</string> | |
| 2175 | </dict> | |
| 2176 | </array> | |
| 2177 | </dict> | |
| 2178 | <dict> | |
| 2179 | <key>begin</key> | |
| 2180 | <string>(?&lt;!=|!)(=)(?!=)</string> | |
| 2181 | <key>beginCaptures</key> | |
| 2182 | <dict> | |
| 2183 | <key>1</key> | |
| 2184 | <dict> | |
| 2185 | <key>name</key> | |
| 2186 | <string>keyword.operator.assignment.tsx</string> | |
| 2187 | </dict> | |
| 2188 | </dict> | |
| 2189 | <key>end</key> | |
| 2190 | <string>(?=[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))|(?=^\s*$)|(?&lt;![\|\&amp;\+\-\*\/])(?&lt;=\S)(?&lt;!=)(?=\s*$)</string> | |
| 2191 | <key>patterns</key> | |
| 2192 | <array> | |
| 2193 | <dict> | |
| 2194 | <key>include</key> | |
| 2195 | <string>#expression</string> | |
| 2196 | </dict> | |
| 2197 | </array> | |
| 2198 | </dict> | |
| 2199 | </array> | |
| 2200 | </dict> | |
| 2201 | <key>function-declaration</key> | |
| 2202 | <dict> | |
| 2203 | <key>name</key> | |
| 2204 | <string>meta.function.tsx</string> | |
| 2205 | <key>begin</key> | |
| 2206 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string> | |
| 2207 | <key>beginCaptures</key> | |
| 2208 | <dict> | |
| 2209 | <key>1</key> | |
| 2210 | <dict> | |
| 2211 | <key>name</key> | |
| 2212 | <string>keyword.control.export.tsx</string> | |
| 2213 | </dict> | |
| 2214 | <key>2</key> | |
| 2215 | <dict> | |
| 2216 | <key>name</key> | |
| 2217 | <string>storage.modifier.tsx</string> | |
| 2218 | </dict> | |
| 2219 | <key>3</key> | |
| 2220 | <dict> | |
| 2221 | <key>name</key> | |
| 2222 | <string>storage.modifier.async.tsx</string> | |
| 2223 | </dict> | |
| 2224 | <key>4</key> | |
| 2225 | <dict> | |
| 2226 | <key>name</key> | |
| 2227 | <string>storage.type.function.tsx</string> | |
| 2228 | </dict> | |
| 2229 | <key>5</key> | |
| 2230 | <dict> | |
| 2231 | <key>name</key> | |
| 2232 | <string>keyword.generator.asterisk.tsx</string> | |
| 2233 | </dict> | |
| 2234 | <key>6</key> | |
| 2235 | <dict> | |
| 2236 | <key>name</key> | |
| 2237 | <string>meta.definition.function.tsx entity.name.function.tsx</string> | |
| 2238 | </dict> | |
| 2239 | </dict> | |
| 2240 | <key>end</key> | |
| 2241 | <string>(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|(?&lt;=\})</string> | |
| 2242 | <key>patterns</key> | |
| 2243 | <array> | |
| 2244 | <dict> | |
| 2245 | <key>include</key> | |
| 2246 | <string>#function-name</string> | |
| 2247 | </dict> | |
| 2248 | <dict> | |
| 2249 | <key>include</key> | |
| 2250 | <string>#function-body</string> | |
| 2251 | </dict> | |
| 2252 | </array> | |
| 2253 | </dict> | |
| 2254 | <key>function-expression</key> | |
| 2255 | <dict> | |
| 2256 | <key>name</key> | |
| 2257 | <string>meta.function.expression.tsx</string> | |
| 2258 | <key>begin</key> | |
| 2259 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string> | |
| 2260 | <key>beginCaptures</key> | |
| 2261 | <dict> | |
| 2262 | <key>1</key> | |
| 2263 | <dict> | |
| 2264 | <key>name</key> | |
| 2265 | <string>storage.modifier.async.tsx</string> | |
| 2266 | </dict> | |
| 2267 | <key>2</key> | |
| 2268 | <dict> | |
| 2269 | <key>name</key> | |
| 2270 | <string>storage.type.function.tsx</string> | |
| 2271 | </dict> | |
| 2272 | <key>3</key> | |
| 2273 | <dict> | |
| 2274 | <key>name</key> | |
| 2275 | <string>keyword.generator.asterisk.tsx</string> | |
| 2276 | </dict> | |
| 2277 | <key>4</key> | |
| 2278 | <dict> | |
| 2279 | <key>name</key> | |
| 2280 | <string>meta.definition.function.tsx entity.name.function.tsx</string> | |
| 2281 | </dict> | |
| 2282 | </dict> | |
| 2283 | <key>end</key> | |
| 2284 | <string>(?=;)|(?&lt;=\})</string> | |
| 2285 | <key>patterns</key> | |
| 2286 | <array> | |
| 2287 | <dict> | |
| 2288 | <key>include</key> | |
| 2289 | <string>#function-name</string> | |
| 2290 | </dict> | |
| 2291 | <dict> | |
| 2292 | <key>include</key> | |
| 2293 | <string>#single-line-comment-consuming-line-ending</string> | |
| 2294 | </dict> | |
| 2295 | <dict> | |
| 2296 | <key>include</key> | |
| 2297 | <string>#function-body</string> | |
| 2298 | </dict> | |
| 2299 | </array> | |
| 2300 | </dict> | |
| 2301 | <key>function-name</key> | |
| 2302 | <dict> | |
| 2303 | <key>name</key> | |
| 2304 | <string>meta.definition.function.tsx entity.name.function.tsx</string> | |
| 2305 | <key>match</key> | |
| 2306 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2307 | </dict> | |
| 2308 | <key>function-body</key> | |
| 2309 | <dict> | |
| 2310 | <key>patterns</key> | |
| 2311 | <array> | |
| 2312 | <dict> | |
| 2313 | <key>include</key> | |
| 2314 | <string>#comment</string> | |
| 2315 | </dict> | |
| 2316 | <dict> | |
| 2317 | <key>include</key> | |
| 2318 | <string>#type-parameters</string> | |
| 2319 | </dict> | |
| 2320 | <dict> | |
| 2321 | <key>include</key> | |
| 2322 | <string>#function-parameters</string> | |
| 2323 | </dict> | |
| 2324 | <dict> | |
| 2325 | <key>include</key> | |
| 2326 | <string>#return-type</string> | |
| 2327 | </dict> | |
| 2328 | <dict> | |
| 2329 | <key>include</key> | |
| 2330 | <string>#type-function-return-type</string> | |
| 2331 | </dict> | |
| 2332 | <dict> | |
| 2333 | <key>include</key> | |
| 2334 | <string>#decl-block</string> | |
| 2335 | </dict> | |
| 2336 | <dict> | |
| 2337 | <key>name</key> | |
| 2338 | <string>keyword.generator.asterisk.tsx</string> | |
| 2339 | <key>match</key> | |
| 2340 | <string>\*</string> | |
| 2341 | </dict> | |
| 2342 | </array> | |
| 2343 | </dict> | |
| 2344 | <key>method-declaration</key> | |
| 2345 | <dict> | |
| 2346 | <key>patterns</key> | |
| 2347 | <array> | |
| 2348 | <dict> | |
| 2349 | <key>name</key> | |
| 2350 | <string>meta.method.declaration.tsx</string> | |
| 2351 | <key>begin</key> | |
| 2352 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 2353 | <key>beginCaptures</key> | |
| 2354 | <dict> | |
| 2355 | <key>1</key> | |
| 2356 | <dict> | |
| 2357 | <key>name</key> | |
| 2358 | <string>storage.modifier.tsx</string> | |
| 2359 | </dict> | |
| 2360 | <key>2</key> | |
| 2361 | <dict> | |
| 2362 | <key>name</key> | |
| 2363 | <string>storage.modifier.tsx</string> | |
| 2364 | </dict> | |
| 2365 | <key>3</key> | |
| 2366 | <dict> | |
| 2367 | <key>name</key> | |
| 2368 | <string>storage.modifier.tsx</string> | |
| 2369 | </dict> | |
| 2370 | <key>4</key> | |
| 2371 | <dict> | |
| 2372 | <key>name</key> | |
| 2373 | <string>storage.modifier.async.tsx</string> | |
| 2374 | </dict> | |
| 2375 | <key>5</key> | |
| 2376 | <dict> | |
| 2377 | <key>name</key> | |
| 2378 | <string>storage.type.tsx</string> | |
| 2379 | </dict> | |
| 2380 | </dict> | |
| 2381 | <key>end</key> | |
| 2382 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2383 | <key>patterns</key> | |
| 2384 | <array> | |
| 2385 | <dict> | |
| 2386 | <key>include</key> | |
| 2387 | <string>#method-declaration-name</string> | |
| 2388 | </dict> | |
| 2389 | <dict> | |
| 2390 | <key>include</key> | |
| 2391 | <string>#function-body</string> | |
| 2392 | </dict> | |
| 2393 | </array> | |
| 2394 | </dict> | |
| 2395 | <dict> | |
| 2396 | <key>name</key> | |
| 2397 | <string>meta.method.declaration.tsx</string> | |
| 2398 | <key>begin</key> | |
| 2399 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2400 | <key>beginCaptures</key> | |
| 2401 | <dict> | |
| 2402 | <key>1</key> | |
| 2403 | <dict> | |
| 2404 | <key>name</key> | |
| 2405 | <string>storage.modifier.tsx</string> | |
| 2406 | </dict> | |
| 2407 | <key>2</key> | |
| 2408 | <dict> | |
| 2409 | <key>name</key> | |
| 2410 | <string>storage.modifier.tsx</string> | |
| 2411 | </dict> | |
| 2412 | <key>3</key> | |
| 2413 | <dict> | |
| 2414 | <key>name</key> | |
| 2415 | <string>storage.modifier.tsx</string> | |
| 2416 | </dict> | |
| 2417 | <key>4</key> | |
| 2418 | <dict> | |
| 2419 | <key>name</key> | |
| 2420 | <string>storage.modifier.async.tsx</string> | |
| 2421 | </dict> | |
| 2422 | <key>5</key> | |
| 2423 | <dict> | |
| 2424 | <key>name</key> | |
| 2425 | <string>keyword.operator.new.tsx</string> | |
| 2426 | </dict> | |
| 2427 | <key>6</key> | |
| 2428 | <dict> | |
| 2429 | <key>name</key> | |
| 2430 | <string>keyword.generator.asterisk.tsx</string> | |
| 2431 | </dict> | |
| 2432 | </dict> | |
| 2433 | <key>end</key> | |
| 2434 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2435 | <key>patterns</key> | |
| 2436 | <array> | |
| 2437 | <dict> | |
| 2438 | <key>include</key> | |
| 2439 | <string>#method-declaration-name</string> | |
| 2440 | </dict> | |
| 2441 | <dict> | |
| 2442 | <key>include</key> | |
| 2443 | <string>#function-body</string> | |
| 2444 | </dict> | |
| 2445 | </array> | |
| 2446 | </dict> | |
| 2447 | <dict> | |
| 2448 | <key>name</key> | |
| 2449 | <string>meta.method.declaration.tsx</string> | |
| 2450 | <key>begin</key> | |
| 2451 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2452 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2453 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2454 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2455 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2456 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2457 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2458 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2459 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2460 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2461 | <key>beginCaptures</key> | |
| 2462 | <dict> | |
| 2463 | <key>1</key> | |
| 2464 | <dict> | |
| 2465 | <key>name</key> | |
| 2466 | <string>storage.modifier.tsx</string> | |
| 2467 | </dict> | |
| 2468 | <key>2</key> | |
| 2469 | <dict> | |
| 2470 | <key>name</key> | |
| 2471 | <string>storage.modifier.tsx</string> | |
| 2472 | </dict> | |
| 2473 | <key>3</key> | |
| 2474 | <dict> | |
| 2475 | <key>name</key> | |
| 2476 | <string>storage.modifier.tsx</string> | |
| 2477 | </dict> | |
| 2478 | <key>4</key> | |
| 2479 | <dict> | |
| 2480 | <key>name</key> | |
| 2481 | <string>storage.modifier.async.tsx</string> | |
| 2482 | </dict> | |
| 2483 | <key>5</key> | |
| 2484 | <dict> | |
| 2485 | <key>name</key> | |
| 2486 | <string>storage.type.property.tsx</string> | |
| 2487 | </dict> | |
| 2488 | <key>6</key> | |
| 2489 | <dict> | |
| 2490 | <key>name</key> | |
| 2491 | <string>keyword.generator.asterisk.tsx</string> | |
| 2492 | </dict> | |
| 2493 | </dict> | |
| 2494 | <key>end</key> | |
| 2495 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 2496 | <key>patterns</key> | |
| 2497 | <array> | |
| 2498 | <dict> | |
| 2499 | <key>include</key> | |
| 2500 | <string>#method-declaration-name</string> | |
| 2501 | </dict> | |
| 2502 | <dict> | |
| 2503 | <key>include</key> | |
| 2504 | <string>#function-body</string> | |
| 2505 | </dict> | |
| 2506 | </array> | |
| 2507 | </dict> | |
| 2508 | </array> | |
| 2509 | </dict> | |
| 2510 | <key>object-literal-method-declaration</key> | |
| 2511 | <dict> | |
| 2512 | <key>name</key> | |
| 2513 | <string>meta.method.declaration.tsx</string> | |
| 2514 | <key>begin</key> | |
| 2515 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2516 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2517 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2518 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2519 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2520 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2521 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2522 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2523 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2524 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2525 | <key>beginCaptures</key> | |
| 2526 | <dict> | |
| 2527 | <key>1</key> | |
| 2528 | <dict> | |
| 2529 | <key>name</key> | |
| 2530 | <string>storage.modifier.async.tsx</string> | |
| 2531 | </dict> | |
| 2532 | <key>2</key> | |
| 2533 | <dict> | |
| 2534 | <key>name</key> | |
| 2535 | <string>storage.type.property.tsx</string> | |
| 2536 | </dict> | |
| 2537 | <key>3</key> | |
| 2538 | <dict> | |
| 2539 | <key>name</key> | |
| 2540 | <string>keyword.generator.asterisk.tsx</string> | |
| 2541 | </dict> | |
| 2542 | </dict> | |
| 2543 | <key>end</key> | |
| 2544 | <string>(?=\}|;|,)|(?&lt;=\})</string> | |
| 2545 | <key>patterns</key> | |
| 2546 | <array> | |
| 2547 | <dict> | |
| 2548 | <key>include</key> | |
| 2549 | <string>#method-declaration-name</string> | |
| 2550 | </dict> | |
| 2551 | <dict> | |
| 2552 | <key>include</key> | |
| 2553 | <string>#function-body</string> | |
| 2554 | </dict> | |
| 2555 | <dict> | |
| 2556 | <key>begin</key> | |
| 2557 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2558 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2559 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2560 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2561 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2562 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2563 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2564 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2565 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2566 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string> | |
| 2567 | <key>beginCaptures</key> | |
| 2568 | <dict> | |
| 2569 | <key>1</key> | |
| 2570 | <dict> | |
| 2571 | <key>name</key> | |
| 2572 | <string>storage.modifier.async.tsx</string> | |
| 2573 | </dict> | |
| 2574 | <key>2</key> | |
| 2575 | <dict> | |
| 2576 | <key>name</key> | |
| 2577 | <string>storage.type.property.tsx</string> | |
| 2578 | </dict> | |
| 2579 | <key>3</key> | |
| 2580 | <dict> | |
| 2581 | <key>name</key> | |
| 2582 | <string>keyword.generator.asterisk.tsx</string> | |
| 2583 | </dict> | |
| 2584 | </dict> | |
| 2585 | <key>end</key> | |
| 2586 | <string>(?=\(|\&lt;)</string> | |
| 2587 | <key>patterns</key> | |
| 2588 | <array> | |
| 2589 | <dict> | |
| 2590 | <key>include</key> | |
| 2591 | <string>#method-declaration-name</string> | |
| 2592 | </dict> | |
| 2593 | </array> | |
| 2594 | </dict> | |
| 2595 | </array> | |
| 2596 | </dict> | |
| 2597 | <key>method-declaration-name</key> | |
| 2598 | <dict> | |
| 2599 | <key>begin</key> | |
| 2600 | <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 2601 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 2602 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 2603 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 2604 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 2605 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 2606 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 2607 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 2608 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 2609 | )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\&lt;])</string> | |
| 2610 | <key>end</key> | |
| 2611 | <string>(?=\(|\&lt;)</string> | |
| 2612 | <key>patterns</key> | |
| 2613 | <array> | |
| 2614 | <dict> | |
| 2615 | <key>include</key> | |
| 2616 | <string>#string</string> | |
| 2617 | </dict> | |
| 2618 | <dict> | |
| 2619 | <key>include</key> | |
| 2620 | <string>#array-literal</string> | |
| 2621 | </dict> | |
| 2622 | <dict> | |
| 2623 | <key>include</key> | |
| 2624 | <string>#numeric-literal</string> | |
| 2625 | </dict> | |
| 2626 | <dict> | |
| 2627 | <key>name</key> | |
| 2628 | <string>meta.definition.method.tsx entity.name.function.tsx</string> | |
| 2629 | <key>match</key> | |
| 2630 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 2631 | </dict> | |
| 2632 | <dict> | |
| 2633 | <key>name</key> | |
| 2634 | <string>keyword.operator.optional.tsx</string> | |
| 2635 | <key>match</key> | |
| 2636 | <string>\?</string> | |
| 2637 | </dict> | |
| 2638 | </array> | |
| 2639 | </dict> | |
| 2640 | <key>arrow-function</key> | |
| 2641 | <dict> | |
| 2642 | <key>patterns</key> | |
| 2643 | <array> | |
| 2644 | <dict> | |
| 2645 | <key>name</key> | |
| 2646 | <string>meta.arrow.tsx</string> | |
| 2647 | <key>match</key> | |
| 2648 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync)\s+)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?==&gt;)</string> | |
| 2649 | <key>captures</key> | |
| 2650 | <dict> | |
| 2651 | <key>1</key> | |
| 2652 | <dict> | |
| 2653 | <key>name</key> | |
| 2654 | <string>storage.modifier.async.tsx</string> | |
| 2655 | </dict> | |
| 2656 | <key>2</key> | |
| 2657 | <dict> | |
| 2658 | <key>name</key> | |
| 2659 | <string>variable.parameter.tsx</string> | |
| 2660 | </dict> | |
| 2661 | </dict> | |
| 2662 | </dict> | |
| 2663 | <dict> | |
| 2664 | <key>name</key> | |
| 2665 | <string>meta.arrow.tsx</string> | |
| 2666 | <key>begin</key> | |
| 2667 | <string>(?x) (?: | |
| 2668 | (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync) | |
| 2669 | )? ((?&lt;![})!\]])\s* | |
| 2670 | (?= | |
| 2671 | # sure shot arrow functions even if =&gt; is on new line | |
| 2672 | ( | |
| 2673 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 2674 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 2675 | ( | |
| 2676 | ([)]\s*:) | # (): | |
| 2677 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 2678 | ) | |
| 2679 | ) | | |
| 2680 | ( | |
| 2681 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 2682 | ) | | |
| 2683 | # arrow function possible to detect only with =&gt; on same line | |
| 2684 | ( | |
| 2685 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 2686 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 2687 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 2688 | \s*=&gt; # arrow operator | |
| 2689 | ) | |
| 2690 | ) | |
| 2691 | )</string> | |
| 2692 | <key>beginCaptures</key> | |
| 2693 | <dict> | |
| 2694 | <key>1</key> | |
| 2695 | <dict> | |
| 2696 | <key>name</key> | |
| 2697 | <string>storage.modifier.async.tsx</string> | |
| 2698 | </dict> | |
| 2699 | </dict> | |
| 2700 | <key>end</key> | |
| 2701 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 2702 | <key>patterns</key> | |
| 2703 | <array> | |
| 2704 | <dict> | |
| 2705 | <key>include</key> | |
| 2706 | <string>#comment</string> | |
| 2707 | </dict> | |
| 2708 | <dict> | |
| 2709 | <key>include</key> | |
| 2710 | <string>#type-parameters</string> | |
| 2711 | </dict> | |
| 2712 | <dict> | |
| 2713 | <key>include</key> | |
| 2714 | <string>#function-parameters</string> | |
| 2715 | </dict> | |
| 2716 | <dict> | |
| 2717 | <key>include</key> | |
| 2718 | <string>#arrow-return-type</string> | |
| 2719 | </dict> | |
| 2720 | <dict> | |
| 2721 | <key>include</key> | |
| 2722 | <string>#possibly-arrow-return-type</string> | |
| 2723 | </dict> | |
| 2724 | </array> | |
| 2725 | </dict> | |
| 2726 | <dict> | |
| 2727 | <key>name</key> | |
| 2728 | <string>meta.arrow.tsx</string> | |
| 2729 | <key>begin</key> | |
| 2730 | <string>=&gt;</string> | |
| 2731 | <key>beginCaptures</key> | |
| 2732 | <dict> | |
| 2733 | <key>0</key> | |
| 2734 | <dict> | |
| 2735 | <key>name</key> | |
| 2736 | <string>storage.type.function.arrow.tsx</string> | |
| 2737 | </dict> | |
| 2738 | </dict> | |
| 2739 | <key>end</key> | |
| 2740 | <string>((?&lt;=\}|\S)(?&lt;!=&gt;)|((?!\{)(?=\S)))(?!\/[\/\*])</string> | |
| 2741 | <key>patterns</key> | |
| 2742 | <array> | |
| 2743 | <dict> | |
| 2744 | <key>include</key> | |
| 2745 | <string>#single-line-comment-consuming-line-ending</string> | |
| 2746 | </dict> | |
| 2747 | <dict> | |
| 2748 | <key>include</key> | |
| 2749 | <string>#decl-block</string> | |
| 2750 | </dict> | |
| 2751 | <dict> | |
| 2752 | <key>include</key> | |
| 2753 | <string>#expression</string> | |
| 2754 | </dict> | |
| 2755 | </array> | |
| 2756 | </dict> | |
| 2757 | </array> | |
| 2758 | </dict> | |
| 2759 | <key>indexer-declaration</key> | |
| 2760 | <dict> | |
| 2761 | <key>name</key> | |
| 2762 | <string>meta.indexer.declaration.tsx</string> | |
| 2763 | <key>begin</key> | |
| 2764 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string> | |
| 2765 | <key>beginCaptures</key> | |
| 2766 | <dict> | |
| 2767 | <key>1</key> | |
| 2768 | <dict> | |
| 2769 | <key>name</key> | |
| 2770 | <string>storage.modifier.tsx</string> | |
| 2771 | </dict> | |
| 2772 | <key>2</key> | |
| 2773 | <dict> | |
| 2774 | <key>name</key> | |
| 2775 | <string>meta.brace.square.tsx</string> | |
| 2776 | </dict> | |
| 2777 | <key>3</key> | |
| 2778 | <dict> | |
| 2779 | <key>name</key> | |
| 2780 | <string>variable.parameter.tsx</string> | |
| 2781 | </dict> | |
| 2782 | </dict> | |
| 2783 | <key>end</key> | |
| 2784 | <string>(\])\s*(\?\s*)?|$</string> | |
| 2785 | <key>endCaptures</key> | |
| 2786 | <dict> | |
| 2787 | <key>1</key> | |
| 2788 | <dict> | |
| 2789 | <key>name</key> | |
| 2790 | <string>meta.brace.square.tsx</string> | |
| 2791 | </dict> | |
| 2792 | <key>2</key> | |
| 2793 | <dict> | |
| 2794 | <key>name</key> | |
| 2795 | <string>keyword.operator.optional.tsx</string> | |
| 2796 | </dict> | |
| 2797 | </dict> | |
| 2798 | <key>patterns</key> | |
| 2799 | <array> | |
| 2800 | <dict> | |
| 2801 | <key>include</key> | |
| 2802 | <string>#type-annotation</string> | |
| 2803 | </dict> | |
| 2804 | </array> | |
| 2805 | </dict> | |
| 2806 | <key>indexer-mapped-type-declaration</key> | |
| 2807 | <dict> | |
| 2808 | <key>name</key> | |
| 2809 | <string>meta.indexer.mappedtype.declaration.tsx</string> | |
| 2810 | <key>begin</key> | |
| 2811 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([+-])?(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s+(in)\s+</string> | |
| 2812 | <key>beginCaptures</key> | |
| 2813 | <dict> | |
| 2814 | <key>1</key> | |
| 2815 | <dict> | |
| 2816 | <key>name</key> | |
| 2817 | <string>keyword.operator.type.modifier.tsx</string> | |
| 2818 | </dict> | |
| 2819 | <key>2</key> | |
| 2820 | <dict> | |
| 2821 | <key>name</key> | |
| 2822 | <string>storage.modifier.tsx</string> | |
| 2823 | </dict> | |
| 2824 | <key>3</key> | |
| 2825 | <dict> | |
| 2826 | <key>name</key> | |
| 2827 | <string>meta.brace.square.tsx</string> | |
| 2828 | </dict> | |
| 2829 | <key>4</key> | |
| 2830 | <dict> | |
| 2831 | <key>name</key> | |
| 2832 | <string>entity.name.type.tsx</string> | |
| 2833 | </dict> | |
| 2834 | <key>5</key> | |
| 2835 | <dict> | |
| 2836 | <key>name</key> | |
| 2837 | <string>keyword.operator.expression.in.tsx</string> | |
| 2838 | </dict> | |
| 2839 | </dict> | |
| 2840 | <key>end</key> | |
| 2841 | <string>(\])([+-])?\s*(\?\s*)?|$</string> | |
| 2842 | <key>endCaptures</key> | |
| 2843 | <dict> | |
| 2844 | <key>1</key> | |
| 2845 | <dict> | |
| 2846 | <key>name</key> | |
| 2847 | <string>meta.brace.square.tsx</string> | |
| 2848 | </dict> | |
| 2849 | <key>2</key> | |
| 2850 | <dict> | |
| 2851 | <key>name</key> | |
| 2852 | <string>keyword.operator.type.modifier.tsx</string> | |
| 2853 | </dict> | |
| 2854 | <key>3</key> | |
| 2855 | <dict> | |
| 2856 | <key>name</key> | |
| 2857 | <string>keyword.operator.optional.tsx</string> | |
| 2858 | </dict> | |
| 2859 | </dict> | |
| 2860 | <key>patterns</key> | |
| 2861 | <array> | |
| 2862 | <dict> | |
| 2863 | <key>match</key> | |
| 2864 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string> | |
| 2865 | <key>captures</key> | |
| 2866 | <dict> | |
| 2867 | <key>1</key> | |
| 2868 | <dict> | |
| 2869 | <key>name</key> | |
| 2870 | <string>keyword.control.as.tsx</string> | |
| 2871 | </dict> | |
| 2872 | </dict> | |
| 2873 | </dict> | |
| 2874 | <dict> | |
| 2875 | <key>include</key> | |
| 2876 | <string>#type</string> | |
| 2877 | </dict> | |
| 2878 | </array> | |
| 2879 | </dict> | |
| 2880 | <key>function-parameters</key> | |
| 2881 | <dict> | |
| 2882 | <key>name</key> | |
| 2883 | <string>meta.parameters.tsx</string> | |
| 2884 | <key>begin</key> | |
| 2885 | <string>\(</string> | |
| 2886 | <key>beginCaptures</key> | |
| 2887 | <dict> | |
| 2888 | <key>0</key> | |
| 2889 | <dict> | |
| 2890 | <key>name</key> | |
| 2891 | <string>punctuation.definition.parameters.begin.tsx</string> | |
| 2892 | </dict> | |
| 2893 | </dict> | |
| 2894 | <key>end</key> | |
| 2895 | <string>\)</string> | |
| 2896 | <key>endCaptures</key> | |
| 2897 | <dict> | |
| 2898 | <key>0</key> | |
| 2899 | <dict> | |
| 2900 | <key>name</key> | |
| 2901 | <string>punctuation.definition.parameters.end.tsx</string> | |
| 2902 | </dict> | |
| 2903 | </dict> | |
| 2904 | <key>patterns</key> | |
| 2905 | <array> | |
| 2906 | <dict> | |
| 2907 | <key>include</key> | |
| 2908 | <string>#function-parameters-body</string> | |
| 2909 | </dict> | |
| 2910 | </array> | |
| 2911 | </dict> | |
| 2912 | <key>function-parameters-body</key> | |
| 2913 | <dict> | |
| 2914 | <key>patterns</key> | |
| 2915 | <array> | |
| 2916 | <dict> | |
| 2917 | <key>include</key> | |
| 2918 | <string>#comment</string> | |
| 2919 | </dict> | |
| 2920 | <dict> | |
| 2921 | <key>include</key> | |
| 2922 | <string>#string</string> | |
| 2923 | </dict> | |
| 2924 | <dict> | |
| 2925 | <key>include</key> | |
| 2926 | <string>#decorator</string> | |
| 2927 | </dict> | |
| 2928 | <dict> | |
| 2929 | <key>include</key> | |
| 2930 | <string>#destructuring-parameter</string> | |
| 2931 | </dict> | |
| 2932 | <dict> | |
| 2933 | <key>include</key> | |
| 2934 | <string>#parameter-name</string> | |
| 2935 | </dict> | |
| 2936 | <dict> | |
| 2937 | <key>include</key> | |
| 2938 | <string>#parameter-type-annotation</string> | |
| 2939 | </dict> | |
| 2940 | <dict> | |
| 2941 | <key>include</key> | |
| 2942 | <string>#variable-initializer</string> | |
| 2943 | </dict> | |
| 2944 | <dict> | |
| 2945 | <key>name</key> | |
| 2946 | <string>punctuation.separator.parameter.tsx</string> | |
| 2947 | <key>match</key> | |
| 2948 | <string>,</string> | |
| 2949 | </dict> | |
| 2950 | </array> | |
| 2951 | </dict> | |
| 2952 | <key>class-declaration</key> | |
| 2953 | <dict> | |
| 2954 | <key>name</key> | |
| 2955 | <string>meta.class.tsx</string> | |
| 2956 | <key>begin</key> | |
| 2957 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])</string> | |
| 2958 | <key>beginCaptures</key> | |
| 2959 | <dict> | |
| 2960 | <key>1</key> | |
| 2961 | <dict> | |
| 2962 | <key>name</key> | |
| 2963 | <string>keyword.control.export.tsx</string> | |
| 2964 | </dict> | |
| 2965 | <key>2</key> | |
| 2966 | <dict> | |
| 2967 | <key>name</key> | |
| 2968 | <string>storage.modifier.tsx</string> | |
| 2969 | </dict> | |
| 2970 | <key>3</key> | |
| 2971 | <dict> | |
| 2972 | <key>name</key> | |
| 2973 | <string>storage.modifier.tsx</string> | |
| 2974 | </dict> | |
| 2975 | <key>4</key> | |
| 2976 | <dict> | |
| 2977 | <key>name</key> | |
| 2978 | <string>storage.type.class.tsx</string> | |
| 2979 | </dict> | |
| 2980 | </dict> | |
| 2981 | <key>end</key> | |
| 2982 | <string>(?&lt;=\})</string> | |
| 2983 | <key>patterns</key> | |
| 2984 | <array> | |
| 2985 | <dict> | |
| 2986 | <key>include</key> | |
| 2987 | <string>#class-declaration-or-expression-patterns</string> | |
| 2988 | </dict> | |
| 2989 | </array> | |
| 2990 | </dict> | |
| 2991 | <key>class-expression</key> | |
| 2992 | <dict> | |
| 2993 | <key>name</key> | |
| 2994 | <string>meta.class.tsx</string> | |
| 2995 | <key>begin</key> | |
| 2996 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[&lt;{]|\/[\/*])</string> | |
| 2997 | <key>beginCaptures</key> | |
| 2998 | <dict> | |
| 2999 | <key>1</key> | |
| 3000 | <dict> | |
| 3001 | <key>name</key> | |
| 3002 | <string>storage.modifier.tsx</string> | |
| 3003 | </dict> | |
| 3004 | <key>2</key> | |
| 3005 | <dict> | |
| 3006 | <key>name</key> | |
| 3007 | <string>storage.type.class.tsx</string> | |
| 3008 | </dict> | |
| 3009 | </dict> | |
| 3010 | <key>end</key> | |
| 3011 | <string>(?&lt;=\})</string> | |
| 3012 | <key>patterns</key> | |
| 3013 | <array> | |
| 3014 | <dict> | |
| 3015 | <key>include</key> | |
| 3016 | <string>#class-declaration-or-expression-patterns</string> | |
| 3017 | </dict> | |
| 3018 | </array> | |
| 3019 | </dict> | |
| 3020 | <key>class-declaration-or-expression-patterns</key> | |
| 3021 | <dict> | |
| 3022 | <key>patterns</key> | |
| 3023 | <array> | |
| 3024 | <dict> | |
| 3025 | <key>include</key> | |
| 3026 | <string>#comment</string> | |
| 3027 | </dict> | |
| 3028 | <dict> | |
| 3029 | <key>include</key> | |
| 3030 | <string>#class-or-interface-heritage</string> | |
| 3031 | </dict> | |
| 3032 | <dict> | |
| 3033 | <key>match</key> | |
| 3034 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 3035 | <key>captures</key> | |
| 3036 | <dict> | |
| 3037 | <key>0</key> | |
| 3038 | <dict> | |
| 3039 | <key>name</key> | |
| 3040 | <string>entity.name.type.class.tsx</string> | |
| 3041 | </dict> | |
| 3042 | </dict> | |
| 3043 | </dict> | |
| 3044 | <dict> | |
| 3045 | <key>include</key> | |
| 3046 | <string>#type-parameters</string> | |
| 3047 | </dict> | |
| 3048 | <dict> | |
| 3049 | <key>include</key> | |
| 3050 | <string>#class-or-interface-body</string> | |
| 3051 | </dict> | |
| 3052 | </array> | |
| 3053 | </dict> | |
| 3054 | <key>interface-declaration</key> | |
| 3055 | <dict> | |
| 3056 | <key>name</key> | |
| 3057 | <string>meta.interface.tsx</string> | |
| 3058 | <key>begin</key> | |
| 3059 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])</string> | |
| 3060 | <key>beginCaptures</key> | |
| 3061 | <dict> | |
| 3062 | <key>1</key> | |
| 3063 | <dict> | |
| 3064 | <key>name</key> | |
| 3065 | <string>keyword.control.export.tsx</string> | |
| 3066 | </dict> | |
| 3067 | <key>2</key> | |
| 3068 | <dict> | |
| 3069 | <key>name</key> | |
| 3070 | <string>storage.modifier.tsx</string> | |
| 3071 | </dict> | |
| 3072 | <key>3</key> | |
| 3073 | <dict> | |
| 3074 | <key>name</key> | |
| 3075 | <string>storage.modifier.tsx</string> | |
| 3076 | </dict> | |
| 3077 | <key>4</key> | |
| 3078 | <dict> | |
| 3079 | <key>name</key> | |
| 3080 | <string>storage.type.interface.tsx</string> | |
| 3081 | </dict> | |
| 3082 | </dict> | |
| 3083 | <key>end</key> | |
| 3084 | <string>(?&lt;=\})</string> | |
| 3085 | <key>patterns</key> | |
| 3086 | <array> | |
| 3087 | <dict> | |
| 3088 | <key>include</key> | |
| 3089 | <string>#comment</string> | |
| 3090 | </dict> | |
| 3091 | <dict> | |
| 3092 | <key>include</key> | |
| 3093 | <string>#class-or-interface-heritage</string> | |
| 3094 | </dict> | |
| 3095 | <dict> | |
| 3096 | <key>match</key> | |
| 3097 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 3098 | <key>captures</key> | |
| 3099 | <dict> | |
| 3100 | <key>0</key> | |
| 3101 | <dict> | |
| 3102 | <key>name</key> | |
| 3103 | <string>entity.name.type.interface.tsx</string> | |
| 3104 | </dict> | |
| 3105 | </dict> | |
| 3106 | </dict> | |
| 3107 | <dict> | |
| 3108 | <key>include</key> | |
| 3109 | <string>#type-parameters</string> | |
| 3110 | </dict> | |
| 3111 | <dict> | |
| 3112 | <key>include</key> | |
| 3113 | <string>#class-or-interface-body</string> | |
| 3114 | </dict> | |
| 3115 | </array> | |
| 3116 | </dict> | |
| 3117 | <key>class-or-interface-heritage</key> | |
| 3118 | <dict> | |
| 3119 | <key>begin</key> | |
| 3120 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(extends|implements)\b)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3121 | <key>beginCaptures</key> | |
| 3122 | <dict> | |
| 3123 | <key>1</key> | |
| 3124 | <dict> | |
| 3125 | <key>name</key> | |
| 3126 | <string>storage.modifier.tsx</string> | |
| 3127 | </dict> | |
| 3128 | </dict> | |
| 3129 | <key>end</key> | |
| 3130 | <string>(?=\{)</string> | |
| 3131 | <key>patterns</key> | |
| 3132 | <array> | |
| 3133 | <dict> | |
| 3134 | <key>include</key> | |
| 3135 | <string>#comment</string> | |
| 3136 | </dict> | |
| 3137 | <dict> | |
| 3138 | <key>include</key> | |
| 3139 | <string>#class-or-interface-heritage</string> | |
| 3140 | </dict> | |
| 3141 | <dict> | |
| 3142 | <key>include</key> | |
| 3143 | <string>#type-parameters</string> | |
| 3144 | </dict> | |
| 3145 | <dict> | |
| 3146 | <key>include</key> | |
| 3147 | <string>#expressionWithoutIdentifiers</string> | |
| 3148 | </dict> | |
| 3149 | <dict> | |
| 3150 | <key>match</key> | |
| 3151 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)*\s*)</string> | |
| 3152 | <key>captures</key> | |
| 3153 | <dict> | |
| 3154 | <key>1</key> | |
| 3155 | <dict> | |
| 3156 | <key>name</key> | |
| 3157 | <string>entity.name.type.module.tsx</string> | |
| 3158 | </dict> | |
| 3159 | <key>2</key> | |
| 3160 | <dict> | |
| 3161 | <key>name</key> | |
| 3162 | <string>punctuation.accessor.tsx</string> | |
| 3163 | </dict> | |
| 3164 | <key>3</key> | |
| 3165 | <dict> | |
| 3166 | <key>name</key> | |
| 3167 | <string>punctuation.accessor.optional.tsx</string> | |
| 3168 | </dict> | |
| 3169 | </dict> | |
| 3170 | </dict> | |
| 3171 | <dict> | |
| 3172 | <key>match</key> | |
| 3173 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3174 | <key>captures</key> | |
| 3175 | <dict> | |
| 3176 | <key>1</key> | |
| 3177 | <dict> | |
| 3178 | <key>name</key> | |
| 3179 | <string>entity.other.inherited-class.tsx</string> | |
| 3180 | </dict> | |
| 3181 | </dict> | |
| 3182 | </dict> | |
| 3183 | <dict> | |
| 3184 | <key>include</key> | |
| 3185 | <string>#expressionPunctuations</string> | |
| 3186 | </dict> | |
| 3187 | </array> | |
| 3188 | </dict> | |
| 3189 | <key>class-or-interface-body</key> | |
| 3190 | <dict> | |
| 3191 | <key>begin</key> | |
| 3192 | <string>\{</string> | |
| 3193 | <key>beginCaptures</key> | |
| 3194 | <dict> | |
| 3195 | <key>0</key> | |
| 3196 | <dict> | |
| 3197 | <key>name</key> | |
| 3198 | <string>punctuation.definition.block.tsx</string> | |
| 3199 | </dict> | |
| 3200 | </dict> | |
| 3201 | <key>end</key> | |
| 3202 | <string>\}</string> | |
| 3203 | <key>endCaptures</key> | |
| 3204 | <dict> | |
| 3205 | <key>0</key> | |
| 3206 | <dict> | |
| 3207 | <key>name</key> | |
| 3208 | <string>punctuation.definition.block.tsx</string> | |
| 3209 | </dict> | |
| 3210 | </dict> | |
| 3211 | <key>patterns</key> | |
| 3212 | <array> | |
| 3213 | <dict> | |
| 3214 | <key>include</key> | |
| 3215 | <string>#comment</string> | |
| 3216 | </dict> | |
| 3217 | <dict> | |
| 3218 | <key>include</key> | |
| 3219 | <string>#decorator</string> | |
| 3220 | </dict> | |
| 3221 | <dict> | |
| 3222 | <key>begin</key> | |
| 3223 | <string>(?&lt;=:)\s*</string> | |
| 3224 | <key>end</key> | |
| 3225 | <string>(?=\s|[;),}\]:\-\+]|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3226 | <key>patterns</key> | |
| 3227 | <array> | |
| 3228 | <dict> | |
| 3229 | <key>include</key> | |
| 3230 | <string>#expression</string> | |
| 3231 | </dict> | |
| 3232 | </array> | |
| 3233 | </dict> | |
| 3234 | <dict> | |
| 3235 | <key>include</key> | |
| 3236 | <string>#method-declaration</string> | |
| 3237 | </dict> | |
| 3238 | <dict> | |
| 3239 | <key>include</key> | |
| 3240 | <string>#indexer-declaration</string> | |
| 3241 | </dict> | |
| 3242 | <dict> | |
| 3243 | <key>include</key> | |
| 3244 | <string>#field-declaration</string> | |
| 3245 | </dict> | |
| 3246 | <dict> | |
| 3247 | <key>include</key> | |
| 3248 | <string>#string</string> | |
| 3249 | </dict> | |
| 3250 | <dict> | |
| 3251 | <key>include</key> | |
| 3252 | <string>#type-annotation</string> | |
| 3253 | </dict> | |
| 3254 | <dict> | |
| 3255 | <key>include</key> | |
| 3256 | <string>#variable-initializer</string> | |
| 3257 | </dict> | |
| 3258 | <dict> | |
| 3259 | <key>include</key> | |
| 3260 | <string>#access-modifier</string> | |
| 3261 | </dict> | |
| 3262 | <dict> | |
| 3263 | <key>include</key> | |
| 3264 | <string>#property-accessor</string> | |
| 3265 | </dict> | |
| 3266 | <dict> | |
| 3267 | <key>include</key> | |
| 3268 | <string>#async-modifier</string> | |
| 3269 | </dict> | |
| 3270 | <dict> | |
| 3271 | <key>include</key> | |
| 3272 | <string>#after-operator-block-as-object-literal</string> | |
| 3273 | </dict> | |
| 3274 | <dict> | |
| 3275 | <key>include</key> | |
| 3276 | <string>#decl-block</string> | |
| 3277 | </dict> | |
| 3278 | <dict> | |
| 3279 | <key>include</key> | |
| 3280 | <string>#expression</string> | |
| 3281 | </dict> | |
| 3282 | <dict> | |
| 3283 | <key>include</key> | |
| 3284 | <string>#punctuation-comma</string> | |
| 3285 | </dict> | |
| 3286 | <dict> | |
| 3287 | <key>include</key> | |
| 3288 | <string>#punctuation-semicolon</string> | |
| 3289 | </dict> | |
| 3290 | </array> | |
| 3291 | </dict> | |
| 3292 | <key>access-modifier</key> | |
| 3293 | <dict> | |
| 3294 | <key>name</key> | |
| 3295 | <string>storage.modifier.tsx</string> | |
| 3296 | <key>match</key> | |
| 3297 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3298 | </dict> | |
| 3299 | <key>property-accessor</key> | |
| 3300 | <dict> | |
| 3301 | <key>name</key> | |
| 3302 | <string>storage.type.property.tsx</string> | |
| 3303 | <key>match</key> | |
| 3304 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3305 | </dict> | |
| 3306 | <key>async-modifier</key> | |
| 3307 | <dict> | |
| 3308 | <key>name</key> | |
| 3309 | <string>storage.modifier.async.tsx</string> | |
| 3310 | <key>match</key> | |
| 3311 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(async)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3312 | </dict> | |
| 3313 | <key>enum-declaration</key> | |
| 3314 | <dict> | |
| 3315 | <key>name</key> | |
| 3316 | <string>meta.enum.declaration.tsx</string> | |
| 3317 | <key>begin</key> | |
| 3318 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3319 | <key>beginCaptures</key> | |
| 3320 | <dict> | |
| 3321 | <key>1</key> | |
| 3322 | <dict> | |
| 3323 | <key>name</key> | |
| 3324 | <string>keyword.control.export.tsx</string> | |
| 3325 | </dict> | |
| 3326 | <key>2</key> | |
| 3327 | <dict> | |
| 3328 | <key>name</key> | |
| 3329 | <string>storage.modifier.tsx</string> | |
| 3330 | </dict> | |
| 3331 | <key>3</key> | |
| 3332 | <dict> | |
| 3333 | <key>name</key> | |
| 3334 | <string>storage.modifier.tsx</string> | |
| 3335 | </dict> | |
| 3336 | <key>4</key> | |
| 3337 | <dict> | |
| 3338 | <key>name</key> | |
| 3339 | <string>storage.type.enum.tsx</string> | |
| 3340 | </dict> | |
| 3341 | <key>5</key> | |
| 3342 | <dict> | |
| 3343 | <key>name</key> | |
| 3344 | <string>entity.name.type.enum.tsx</string> | |
| 3345 | </dict> | |
| 3346 | </dict> | |
| 3347 | <key>end</key> | |
| 3348 | <string>(?&lt;=\})</string> | |
| 3349 | <key>patterns</key> | |
| 3350 | <array> | |
| 3351 | <dict> | |
| 3352 | <key>include</key> | |
| 3353 | <string>#comment</string> | |
| 3354 | </dict> | |
| 3355 | <dict> | |
| 3356 | <key>begin</key> | |
| 3357 | <string>\{</string> | |
| 3358 | <key>beginCaptures</key> | |
| 3359 | <dict> | |
| 3360 | <key>0</key> | |
| 3361 | <dict> | |
| 3362 | <key>name</key> | |
| 3363 | <string>punctuation.definition.block.tsx</string> | |
| 3364 | </dict> | |
| 3365 | </dict> | |
| 3366 | <key>end</key> | |
| 3367 | <string>\}</string> | |
| 3368 | <key>endCaptures</key> | |
| 3369 | <dict> | |
| 3370 | <key>0</key> | |
| 3371 | <dict> | |
| 3372 | <key>name</key> | |
| 3373 | <string>punctuation.definition.block.tsx</string> | |
| 3374 | </dict> | |
| 3375 | </dict> | |
| 3376 | <key>patterns</key> | |
| 3377 | <array> | |
| 3378 | <dict> | |
| 3379 | <key>include</key> | |
| 3380 | <string>#comment</string> | |
| 3381 | </dict> | |
| 3382 | <dict> | |
| 3383 | <key>begin</key> | |
| 3384 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3385 | <key>beginCaptures</key> | |
| 3386 | <dict> | |
| 3387 | <key>0</key> | |
| 3388 | <dict> | |
| 3389 | <key>name</key> | |
| 3390 | <string>variable.other.enummember.tsx</string> | |
| 3391 | </dict> | |
| 3392 | </dict> | |
| 3393 | <key>end</key> | |
| 3394 | <string>(?=,|\}|$)</string> | |
| 3395 | <key>patterns</key> | |
| 3396 | <array> | |
| 3397 | <dict> | |
| 3398 | <key>include</key> | |
| 3399 | <string>#comment</string> | |
| 3400 | </dict> | |
| 3401 | <dict> | |
| 3402 | <key>include</key> | |
| 3403 | <string>#variable-initializer</string> | |
| 3404 | </dict> | |
| 3405 | </array> | |
| 3406 | </dict> | |
| 3407 | <dict> | |
| 3408 | <key>begin</key> | |
| 3409 | <string>(?=((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\])))</string> | |
| 3410 | <key>end</key> | |
| 3411 | <string>(?=,|\}|$)</string> | |
| 3412 | <key>patterns</key> | |
| 3413 | <array> | |
| 3414 | <dict> | |
| 3415 | <key>include</key> | |
| 3416 | <string>#string</string> | |
| 3417 | </dict> | |
| 3418 | <dict> | |
| 3419 | <key>include</key> | |
| 3420 | <string>#array-literal</string> | |
| 3421 | </dict> | |
| 3422 | <dict> | |
| 3423 | <key>include</key> | |
| 3424 | <string>#comment</string> | |
| 3425 | </dict> | |
| 3426 | <dict> | |
| 3427 | <key>include</key> | |
| 3428 | <string>#variable-initializer</string> | |
| 3429 | </dict> | |
| 3430 | </array> | |
| 3431 | </dict> | |
| 3432 | <dict> | |
| 3433 | <key>include</key> | |
| 3434 | <string>#punctuation-comma</string> | |
| 3435 | </dict> | |
| 3436 | </array> | |
| 3437 | </dict> | |
| 3438 | </array> | |
| 3439 | </dict> | |
| 3440 | <key>namespace-declaration</key> | |
| 3441 | <dict> | |
| 3442 | <key>name</key> | |
| 3443 | <string>meta.namespace.declaration.tsx</string> | |
| 3444 | <key>begin</key> | |
| 3445 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"'`]))</string> | |
| 3446 | <key>beginCaptures</key> | |
| 3447 | <dict> | |
| 3448 | <key>1</key> | |
| 3449 | <dict> | |
| 3450 | <key>name</key> | |
| 3451 | <string>keyword.control.export.tsx</string> | |
| 3452 | </dict> | |
| 3453 | <key>2</key> | |
| 3454 | <dict> | |
| 3455 | <key>name</key> | |
| 3456 | <string>storage.modifier.tsx</string> | |
| 3457 | </dict> | |
| 3458 | <key>3</key> | |
| 3459 | <dict> | |
| 3460 | <key>name</key> | |
| 3461 | <string>storage.type.namespace.tsx</string> | |
| 3462 | </dict> | |
| 3463 | </dict> | |
| 3464 | <key>end</key> | |
| 3465 | <string>(?&lt;=\})|(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3466 | <key>patterns</key> | |
| 3467 | <array> | |
| 3468 | <dict> | |
| 3469 | <key>include</key> | |
| 3470 | <string>#comment</string> | |
| 3471 | </dict> | |
| 3472 | <dict> | |
| 3473 | <key>include</key> | |
| 3474 | <string>#string</string> | |
| 3475 | </dict> | |
| 3476 | <dict> | |
| 3477 | <key>name</key> | |
| 3478 | <string>entity.name.type.module.tsx</string> | |
| 3479 | <key>match</key> | |
| 3480 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3481 | </dict> | |
| 3482 | <dict> | |
| 3483 | <key>include</key> | |
| 3484 | <string>#punctuation-accessor</string> | |
| 3485 | </dict> | |
| 3486 | <dict> | |
| 3487 | <key>include</key> | |
| 3488 | <string>#decl-block</string> | |
| 3489 | </dict> | |
| 3490 | </array> | |
| 3491 | </dict> | |
| 3492 | <key>type-alias-declaration</key> | |
| 3493 | <dict> | |
| 3494 | <key>name</key> | |
| 3495 | <string>meta.type.declaration.tsx</string> | |
| 3496 | <key>begin</key> | |
| 3497 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*</string> | |
| 3498 | <key>beginCaptures</key> | |
| 3499 | <dict> | |
| 3500 | <key>1</key> | |
| 3501 | <dict> | |
| 3502 | <key>name</key> | |
| 3503 | <string>keyword.control.export.tsx</string> | |
| 3504 | </dict> | |
| 3505 | <key>2</key> | |
| 3506 | <dict> | |
| 3507 | <key>name</key> | |
| 3508 | <string>storage.modifier.tsx</string> | |
| 3509 | </dict> | |
| 3510 | <key>3</key> | |
| 3511 | <dict> | |
| 3512 | <key>name</key> | |
| 3513 | <string>storage.type.type.tsx</string> | |
| 3514 | </dict> | |
| 3515 | <key>4</key> | |
| 3516 | <dict> | |
| 3517 | <key>name</key> | |
| 3518 | <string>entity.name.type.alias.tsx</string> | |
| 3519 | </dict> | |
| 3520 | </dict> | |
| 3521 | <key>end</key> | |
| 3522 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3523 | <key>patterns</key> | |
| 3524 | <array> | |
| 3525 | <dict> | |
| 3526 | <key>include</key> | |
| 3527 | <string>#comment</string> | |
| 3528 | </dict> | |
| 3529 | <dict> | |
| 3530 | <key>include</key> | |
| 3531 | <string>#type-parameters</string> | |
| 3532 | </dict> | |
| 3533 | <dict> | |
| 3534 | <key>begin</key> | |
| 3535 | <string>(=)\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3536 | <key>beginCaptures</key> | |
| 3537 | <dict> | |
| 3538 | <key>1</key> | |
| 3539 | <dict> | |
| 3540 | <key>name</key> | |
| 3541 | <string>keyword.operator.assignment.tsx</string> | |
| 3542 | </dict> | |
| 3543 | <key>2</key> | |
| 3544 | <dict> | |
| 3545 | <key>name</key> | |
| 3546 | <string>keyword.control.intrinsic.tsx</string> | |
| 3547 | </dict> | |
| 3548 | </dict> | |
| 3549 | <key>end</key> | |
| 3550 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3551 | <key>patterns</key> | |
| 3552 | <array> | |
| 3553 | <dict> | |
| 3554 | <key>include</key> | |
| 3555 | <string>#type</string> | |
| 3556 | </dict> | |
| 3557 | </array> | |
| 3558 | </dict> | |
| 3559 | <dict> | |
| 3560 | <key>begin</key> | |
| 3561 | <string>(=)\s*</string> | |
| 3562 | <key>beginCaptures</key> | |
| 3563 | <dict> | |
| 3564 | <key>1</key> | |
| 3565 | <dict> | |
| 3566 | <key>name</key> | |
| 3567 | <string>keyword.operator.assignment.tsx</string> | |
| 3568 | </dict> | |
| 3569 | </dict> | |
| 3570 | <key>end</key> | |
| 3571 | <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3572 | <key>patterns</key> | |
| 3573 | <array> | |
| 3574 | <dict> | |
| 3575 | <key>include</key> | |
| 3576 | <string>#type</string> | |
| 3577 | </dict> | |
| 3578 | </array> | |
| 3579 | </dict> | |
| 3580 | </array> | |
| 3581 | </dict> | |
| 3582 | <key>import-equals-declaration</key> | |
| 3583 | <dict> | |
| 3584 | <key>patterns</key> | |
| 3585 | <array> | |
| 3586 | <dict> | |
| 3587 | <key>name</key> | |
| 3588 | <string>meta.import-equals.external.tsx</string> | |
| 3589 | <key>begin</key> | |
| 3590 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()</string> | |
| 3591 | <key>beginCaptures</key> | |
| 3592 | <dict> | |
| 3593 | <key>1</key> | |
| 3594 | <dict> | |
| 3595 | <key>name</key> | |
| 3596 | <string>keyword.control.export.tsx</string> | |
| 3597 | </dict> | |
| 3598 | <key>2</key> | |
| 3599 | <dict> | |
| 3600 | <key>name</key> | |
| 3601 | <string>storage.modifier.tsx</string> | |
| 3602 | </dict> | |
| 3603 | <key>3</key> | |
| 3604 | <dict> | |
| 3605 | <key>name</key> | |
| 3606 | <string>keyword.control.import.tsx</string> | |
| 3607 | </dict> | |
| 3608 | <key>4</key> | |
| 3609 | <dict> | |
| 3610 | <key>name</key> | |
| 3611 | <string>keyword.control.type.tsx</string> | |
| 3612 | </dict> | |
| 3613 | <key>5</key> | |
| 3614 | <dict> | |
| 3615 | <key>name</key> | |
| 3616 | <string>variable.other.readwrite.alias.tsx</string> | |
| 3617 | </dict> | |
| 3618 | <key>6</key> | |
| 3619 | <dict> | |
| 3620 | <key>name</key> | |
| 3621 | <string>keyword.operator.assignment.tsx</string> | |
| 3622 | </dict> | |
| 3623 | <key>7</key> | |
| 3624 | <dict> | |
| 3625 | <key>name</key> | |
| 3626 | <string>keyword.control.require.tsx</string> | |
| 3627 | </dict> | |
| 3628 | <key>8</key> | |
| 3629 | <dict> | |
| 3630 | <key>name</key> | |
| 3631 | <string>meta.brace.round.tsx</string> | |
| 3632 | </dict> | |
| 3633 | </dict> | |
| 3634 | <key>end</key> | |
| 3635 | <string>\)</string> | |
| 3636 | <key>endCaptures</key> | |
| 3637 | <dict> | |
| 3638 | <key>0</key> | |
| 3639 | <dict> | |
| 3640 | <key>name</key> | |
| 3641 | <string>meta.brace.round.tsx</string> | |
| 3642 | </dict> | |
| 3643 | </dict> | |
| 3644 | <key>patterns</key> | |
| 3645 | <array> | |
| 3646 | <dict> | |
| 3647 | <key>include</key> | |
| 3648 | <string>#comment</string> | |
| 3649 | </dict> | |
| 3650 | <dict> | |
| 3651 | <key>include</key> | |
| 3652 | <string>#string</string> | |
| 3653 | </dict> | |
| 3654 | </array> | |
| 3655 | </dict> | |
| 3656 | <dict> | |
| 3657 | <key>name</key> | |
| 3658 | <string>meta.import-equals.internal.tsx</string> | |
| 3659 | <key>begin</key> | |
| 3660 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)</string> | |
| 3661 | <key>beginCaptures</key> | |
| 3662 | <dict> | |
| 3663 | <key>1</key> | |
| 3664 | <dict> | |
| 3665 | <key>name</key> | |
| 3666 | <string>keyword.control.export.tsx</string> | |
| 3667 | </dict> | |
| 3668 | <key>2</key> | |
| 3669 | <dict> | |
| 3670 | <key>name</key> | |
| 3671 | <string>storage.modifier.tsx</string> | |
| 3672 | </dict> | |
| 3673 | <key>3</key> | |
| 3674 | <dict> | |
| 3675 | <key>name</key> | |
| 3676 | <string>keyword.control.import.tsx</string> | |
| 3677 | </dict> | |
| 3678 | <key>4</key> | |
| 3679 | <dict> | |
| 3680 | <key>name</key> | |
| 3681 | <string>keyword.control.type.tsx</string> | |
| 3682 | </dict> | |
| 3683 | <key>5</key> | |
| 3684 | <dict> | |
| 3685 | <key>name</key> | |
| 3686 | <string>variable.other.readwrite.alias.tsx</string> | |
| 3687 | </dict> | |
| 3688 | <key>6</key> | |
| 3689 | <dict> | |
| 3690 | <key>name</key> | |
| 3691 | <string>keyword.operator.assignment.tsx</string> | |
| 3692 | </dict> | |
| 3693 | </dict> | |
| 3694 | <key>end</key> | |
| 3695 | <string>(?=;|$|^)</string> | |
| 3696 | <key>patterns</key> | |
| 3697 | <array> | |
| 3698 | <dict> | |
| 3699 | <key>include</key> | |
| 3700 | <string>#single-line-comment-consuming-line-ending</string> | |
| 3701 | </dict> | |
| 3702 | <dict> | |
| 3703 | <key>include</key> | |
| 3704 | <string>#comment</string> | |
| 3705 | </dict> | |
| 3706 | <dict> | |
| 3707 | <key>match</key> | |
| 3708 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 3709 | <key>captures</key> | |
| 3710 | <dict> | |
| 3711 | <key>1</key> | |
| 3712 | <dict> | |
| 3713 | <key>name</key> | |
| 3714 | <string>entity.name.type.module.tsx</string> | |
| 3715 | </dict> | |
| 3716 | <key>2</key> | |
| 3717 | <dict> | |
| 3718 | <key>name</key> | |
| 3719 | <string>punctuation.accessor.tsx</string> | |
| 3720 | </dict> | |
| 3721 | <key>3</key> | |
| 3722 | <dict> | |
| 3723 | <key>name</key> | |
| 3724 | <string>punctuation.accessor.optional.tsx</string> | |
| 3725 | </dict> | |
| 3726 | </dict> | |
| 3727 | </dict> | |
| 3728 | <dict> | |
| 3729 | <key>name</key> | |
| 3730 | <string>variable.other.readwrite.tsx</string> | |
| 3731 | <key>match</key> | |
| 3732 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3733 | </dict> | |
| 3734 | </array> | |
| 3735 | </dict> | |
| 3736 | </array> | |
| 3737 | </dict> | |
| 3738 | <key>import-declaration</key> | |
| 3739 | <dict> | |
| 3740 | <key>name</key> | |
| 3741 | <string>meta.import.tsx</string> | |
| 3742 | <key>begin</key> | |
| 3743 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type)(?!\s+from))?(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 3744 | <key>beginCaptures</key> | |
| 3745 | <dict> | |
| 3746 | <key>1</key> | |
| 3747 | <dict> | |
| 3748 | <key>name</key> | |
| 3749 | <string>keyword.control.export.tsx</string> | |
| 3750 | </dict> | |
| 3751 | <key>2</key> | |
| 3752 | <dict> | |
| 3753 | <key>name</key> | |
| 3754 | <string>storage.modifier.tsx</string> | |
| 3755 | </dict> | |
| 3756 | <key>3</key> | |
| 3757 | <dict> | |
| 3758 | <key>name</key> | |
| 3759 | <string>keyword.control.import.tsx</string> | |
| 3760 | </dict> | |
| 3761 | <key>4</key> | |
| 3762 | <dict> | |
| 3763 | <key>name</key> | |
| 3764 | <string>keyword.control.type.tsx</string> | |
| 3765 | </dict> | |
| 3766 | </dict> | |
| 3767 | <key>end</key> | |
| 3768 | <string>(?&lt;!^import|[^\._$[:alnum:]]import)(?=;|$|^)</string> | |
| 3769 | <key>patterns</key> | |
| 3770 | <array> | |
| 3771 | <dict> | |
| 3772 | <key>include</key> | |
| 3773 | <string>#single-line-comment-consuming-line-ending</string> | |
| 3774 | </dict> | |
| 3775 | <dict> | |
| 3776 | <key>include</key> | |
| 3777 | <string>#comment</string> | |
| 3778 | </dict> | |
| 3779 | <dict> | |
| 3780 | <key>include</key> | |
| 3781 | <string>#string</string> | |
| 3782 | </dict> | |
| 3783 | <dict> | |
| 3784 | <key>begin</key> | |
| 3785 | <string>(?&lt;=^import|[^\._$[:alnum:]]import)(?!\s*["'])</string> | |
| 3786 | <key>end</key> | |
| 3787 | <string>\bfrom\b</string> | |
| 3788 | <key>endCaptures</key> | |
| 3789 | <dict> | |
| 3790 | <key>0</key> | |
| 3791 | <dict> | |
| 3792 | <key>name</key> | |
| 3793 | <string>keyword.control.from.tsx</string> | |
| 3794 | </dict> | |
| 3795 | </dict> | |
| 3796 | <key>patterns</key> | |
| 3797 | <array> | |
| 3798 | <dict> | |
| 3799 | <key>include</key> | |
| 3800 | <string>#import-export-declaration</string> | |
| 3801 | </dict> | |
| 3802 | </array> | |
| 3803 | </dict> | |
| 3804 | <dict> | |
| 3805 | <key>include</key> | |
| 3806 | <string>#import-export-declaration</string> | |
| 3807 | </dict> | |
| 3808 | </array> | |
| 3809 | </dict> | |
| 3810 | <key>export-declaration</key> | |
| 3811 | <dict> | |
| 3812 | <key>patterns</key> | |
| 3813 | <array> | |
| 3814 | <dict> | |
| 3815 | <key>match</key> | |
| 3816 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\s+(as)\s+(namespace)\s+([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 3817 | <key>captures</key> | |
| 3818 | <dict> | |
| 3819 | <key>1</key> | |
| 3820 | <dict> | |
| 3821 | <key>name</key> | |
| 3822 | <string>keyword.control.export.tsx</string> | |
| 3823 | </dict> | |
| 3824 | <key>2</key> | |
| 3825 | <dict> | |
| 3826 | <key>name</key> | |
| 3827 | <string>keyword.control.as.tsx</string> | |
| 3828 | </dict> | |
| 3829 | <key>3</key> | |
| 3830 | <dict> | |
| 3831 | <key>name</key> | |
| 3832 | <string>storage.type.namespace.tsx</string> | |
| 3833 | </dict> | |
| 3834 | <key>4</key> | |
| 3835 | <dict> | |
| 3836 | <key>name</key> | |
| 3837 | <string>entity.name.type.module.tsx</string> | |
| 3838 | </dict> | |
| 3839 | </dict> | |
| 3840 | </dict> | |
| 3841 | <dict> | |
| 3842 | <key>name</key> | |
| 3843 | <string>meta.export.default.tsx</string> | |
| 3844 | <key>begin</key> | |
| 3845 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))</string> | |
| 3846 | <key>beginCaptures</key> | |
| 3847 | <dict> | |
| 3848 | <key>1</key> | |
| 3849 | <dict> | |
| 3850 | <key>name</key> | |
| 3851 | <string>keyword.control.export.tsx</string> | |
| 3852 | </dict> | |
| 3853 | <key>2</key> | |
| 3854 | <dict> | |
| 3855 | <key>name</key> | |
| 3856 | <string>keyword.control.type.tsx</string> | |
| 3857 | </dict> | |
| 3858 | <key>3</key> | |
| 3859 | <dict> | |
| 3860 | <key>name</key> | |
| 3861 | <string>keyword.operator.assignment.tsx</string> | |
| 3862 | </dict> | |
| 3863 | <key>4</key> | |
| 3864 | <dict> | |
| 3865 | <key>name</key> | |
| 3866 | <string>keyword.control.default.tsx</string> | |
| 3867 | </dict> | |
| 3868 | </dict> | |
| 3869 | <key>end</key> | |
| 3870 | <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3871 | <key>patterns</key> | |
| 3872 | <array> | |
| 3873 | <dict> | |
| 3874 | <key>include</key> | |
| 3875 | <string>#interface-declaration</string> | |
| 3876 | </dict> | |
| 3877 | <dict> | |
| 3878 | <key>include</key> | |
| 3879 | <string>#expression</string> | |
| 3880 | </dict> | |
| 3881 | </array> | |
| 3882 | </dict> | |
| 3883 | <dict> | |
| 3884 | <key>name</key> | |
| 3885 | <string>meta.export.tsx</string> | |
| 3886 | <key>begin</key> | |
| 3887 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string> | |
| 3888 | <key>beginCaptures</key> | |
| 3889 | <dict> | |
| 3890 | <key>1</key> | |
| 3891 | <dict> | |
| 3892 | <key>name</key> | |
| 3893 | <string>keyword.control.export.tsx</string> | |
| 3894 | </dict> | |
| 3895 | <key>2</key> | |
| 3896 | <dict> | |
| 3897 | <key>name</key> | |
| 3898 | <string>keyword.control.type.tsx</string> | |
| 3899 | </dict> | |
| 3900 | </dict> | |
| 3901 | <key>end</key> | |
| 3902 | <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 3903 | <key>patterns</key> | |
| 3904 | <array> | |
| 3905 | <dict> | |
| 3906 | <key>include</key> | |
| 3907 | <string>#import-export-declaration</string> | |
| 3908 | </dict> | |
| 3909 | </array> | |
| 3910 | </dict> | |
| 3911 | </array> | |
| 3912 | </dict> | |
| 3913 | <key>import-export-declaration</key> | |
| 3914 | <dict> | |
| 3915 | <key>patterns</key> | |
| 3916 | <array> | |
| 3917 | <dict> | |
| 3918 | <key>include</key> | |
| 3919 | <string>#comment</string> | |
| 3920 | </dict> | |
| 3921 | <dict> | |
| 3922 | <key>include</key> | |
| 3923 | <string>#string</string> | |
| 3924 | </dict> | |
| 3925 | <dict> | |
| 3926 | <key>include</key> | |
| 3927 | <string>#import-export-block</string> | |
| 3928 | </dict> | |
| 3929 | <dict> | |
| 3930 | <key>name</key> | |
| 3931 | <string>keyword.control.from.tsx</string> | |
| 3932 | <key>match</key> | |
| 3933 | <string>\bfrom\b</string> | |
| 3934 | </dict> | |
| 3935 | <dict> | |
| 3936 | <key>include</key> | |
| 3937 | <string>#import-export-assert-clause</string> | |
| 3938 | </dict> | |
| 3939 | <dict> | |
| 3940 | <key>include</key> | |
| 3941 | <string>#import-export-clause</string> | |
| 3942 | </dict> | |
| 3943 | </array> | |
| 3944 | </dict> | |
| 3945 | <key>import-export-assert-clause</key> | |
| 3946 | <dict> | |
| 3947 | <key>begin</key> | |
| 3948 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(with)|(assert))\s*(\{)</string> | |
| 3949 | <key>beginCaptures</key> | |
| 3950 | <dict> | |
| 3951 | <key>1</key> | |
| 3952 | <dict> | |
| 3953 | <key>name</key> | |
| 3954 | <string>keyword.control.with.tsx</string> | |
| 3955 | </dict> | |
| 3956 | <key>2</key> | |
| 3957 | <dict> | |
| 3958 | <key>name</key> | |
| 3959 | <string>keyword.control.assert.tsx</string> | |
| 3960 | </dict> | |
| 3961 | <key>3</key> | |
| 3962 | <dict> | |
| 3963 | <key>name</key> | |
| 3964 | <string>punctuation.definition.block.tsx</string> | |
| 3965 | </dict> | |
| 3966 | </dict> | |
| 3967 | <key>end</key> | |
| 3968 | <string>\}</string> | |
| 3969 | <key>endCaptures</key> | |
| 3970 | <dict> | |
| 3971 | <key>0</key> | |
| 3972 | <dict> | |
| 3973 | <key>name</key> | |
| 3974 | <string>punctuation.definition.block.tsx</string> | |
| 3975 | </dict> | |
| 3976 | </dict> | |
| 3977 | <key>patterns</key> | |
| 3978 | <array> | |
| 3979 | <dict> | |
| 3980 | <key>include</key> | |
| 3981 | <string>#comment</string> | |
| 3982 | </dict> | |
| 3983 | <dict> | |
| 3984 | <key>include</key> | |
| 3985 | <string>#string</string> | |
| 3986 | </dict> | |
| 3987 | <dict> | |
| 3988 | <key>name</key> | |
| 3989 | <string>meta.object-literal.key.tsx</string> | |
| 3990 | <key>match</key> | |
| 3991 | <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 3992 | </dict> | |
| 3993 | <dict> | |
| 3994 | <key>name</key> | |
| 3995 | <string>punctuation.separator.key-value.tsx</string> | |
| 3996 | <key>match</key> | |
| 3997 | <string>:</string> | |
| 3998 | </dict> | |
| 3999 | </array> | |
| 4000 | </dict> | |
| 4001 | <key>import-export-block</key> | |
| 4002 | <dict> | |
| 4003 | <key>name</key> | |
| 4004 | <string>meta.block.tsx</string> | |
| 4005 | <key>begin</key> | |
| 4006 | <string>\{</string> | |
| 4007 | <key>beginCaptures</key> | |
| 4008 | <dict> | |
| 4009 | <key>0</key> | |
| 4010 | <dict> | |
| 4011 | <key>name</key> | |
| 4012 | <string>punctuation.definition.block.tsx</string> | |
| 4013 | </dict> | |
| 4014 | </dict> | |
| 4015 | <key>end</key> | |
| 4016 | <string>\}</string> | |
| 4017 | <key>endCaptures</key> | |
| 4018 | <dict> | |
| 4019 | <key>0</key> | |
| 4020 | <dict> | |
| 4021 | <key>name</key> | |
| 4022 | <string>punctuation.definition.block.tsx</string> | |
| 4023 | </dict> | |
| 4024 | </dict> | |
| 4025 | <key>patterns</key> | |
| 4026 | <array> | |
| 4027 | <dict> | |
| 4028 | <key>include</key> | |
| 4029 | <string>#import-export-clause</string> | |
| 4030 | </dict> | |
| 4031 | </array> | |
| 4032 | </dict> | |
| 4033 | <key>import-export-clause</key> | |
| 4034 | <dict> | |
| 4035 | <key>patterns</key> | |
| 4036 | <array> | |
| 4037 | <dict> | |
| 4038 | <key>include</key> | |
| 4039 | <string>#comment</string> | |
| 4040 | </dict> | |
| 4041 | <dict> | |
| 4042 | <key>match</key> | |
| 4043 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string> | |
| 4044 | <key>captures</key> | |
| 4045 | <dict> | |
| 4046 | <key>1</key> | |
| 4047 | <dict> | |
| 4048 | <key>name</key> | |
| 4049 | <string>keyword.control.type.tsx</string> | |
| 4050 | </dict> | |
| 4051 | <key>2</key> | |
| 4052 | <dict> | |
| 4053 | <key>name</key> | |
| 4054 | <string>keyword.control.default.tsx</string> | |
| 4055 | </dict> | |
| 4056 | <key>3</key> | |
| 4057 | <dict> | |
| 4058 | <key>name</key> | |
| 4059 | <string>constant.language.import-export-all.tsx</string> | |
| 4060 | </dict> | |
| 4061 | <key>4</key> | |
| 4062 | <dict> | |
| 4063 | <key>name</key> | |
| 4064 | <string>variable.other.readwrite.tsx</string> | |
| 4065 | </dict> | |
| 4066 | <key>5</key> | |
| 4067 | <dict> | |
| 4068 | <key>name</key> | |
| 4069 | <string>string.quoted.alias.tsx</string> | |
| 4070 | </dict> | |
| 4071 | <key>12</key> | |
| 4072 | <dict> | |
| 4073 | <key>name</key> | |
| 4074 | <string>keyword.control.as.tsx</string> | |
| 4075 | </dict> | |
| 4076 | <key>13</key> | |
| 4077 | <dict> | |
| 4078 | <key>name</key> | |
| 4079 | <string>keyword.control.default.tsx</string> | |
| 4080 | </dict> | |
| 4081 | <key>14</key> | |
| 4082 | <dict> | |
| 4083 | <key>name</key> | |
| 4084 | <string>variable.other.readwrite.alias.tsx</string> | |
| 4085 | </dict> | |
| 4086 | <key>15</key> | |
| 4087 | <dict> | |
| 4088 | <key>name</key> | |
| 4089 | <string>string.quoted.alias.tsx</string> | |
| 4090 | </dict> | |
| 4091 | </dict> | |
| 4092 | </dict> | |
| 4093 | <dict> | |
| 4094 | <key>include</key> | |
| 4095 | <string>#punctuation-comma</string> | |
| 4096 | </dict> | |
| 4097 | <dict> | |
| 4098 | <key>name</key> | |
| 4099 | <string>constant.language.import-export-all.tsx</string> | |
| 4100 | <key>match</key> | |
| 4101 | <string>\*</string> | |
| 4102 | </dict> | |
| 4103 | <dict> | |
| 4104 | <key>name</key> | |
| 4105 | <string>keyword.control.default.tsx</string> | |
| 4106 | <key>match</key> | |
| 4107 | <string>\b(default)\b</string> | |
| 4108 | </dict> | |
| 4109 | <dict> | |
| 4110 | <key>match</key> | |
| 4111 | <string>(?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string> | |
| 4112 | <key>captures</key> | |
| 4113 | <dict> | |
| 4114 | <key>1</key> | |
| 4115 | <dict> | |
| 4116 | <key>name</key> | |
| 4117 | <string>keyword.control.type.tsx</string> | |
| 4118 | </dict> | |
| 4119 | <key>2</key> | |
| 4120 | <dict> | |
| 4121 | <key>name</key> | |
| 4122 | <string>variable.other.readwrite.alias.tsx</string> | |
| 4123 | </dict> | |
| 4124 | <key>3</key> | |
| 4125 | <dict> | |
| 4126 | <key>name</key> | |
| 4127 | <string>string.quoted.alias.tsx</string> | |
| 4128 | </dict> | |
| 4129 | </dict> | |
| 4130 | </dict> | |
| 4131 | </array> | |
| 4132 | </dict> | |
| 4133 | <key>switch-statement</key> | |
| 4134 | <dict> | |
| 4135 | <key>name</key> | |
| 4136 | <string>switch-statement.expr.tsx</string> | |
| 4137 | <key>begin</key> | |
| 4138 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bswitch\s*\()</string> | |
| 4139 | <key>end</key> | |
| 4140 | <string>\}</string> | |
| 4141 | <key>endCaptures</key> | |
| 4142 | <dict> | |
| 4143 | <key>0</key> | |
| 4144 | <dict> | |
| 4145 | <key>name</key> | |
| 4146 | <string>punctuation.definition.block.tsx</string> | |
| 4147 | </dict> | |
| 4148 | </dict> | |
| 4149 | <key>patterns</key> | |
| 4150 | <array> | |
| 4151 | <dict> | |
| 4152 | <key>include</key> | |
| 4153 | <string>#comment</string> | |
| 4154 | </dict> | |
| 4155 | <dict> | |
| 4156 | <key>name</key> | |
| 4157 | <string>switch-expression.expr.tsx</string> | |
| 4158 | <key>begin</key> | |
| 4159 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(switch)\s*(\()</string> | |
| 4160 | <key>beginCaptures</key> | |
| 4161 | <dict> | |
| 4162 | <key>1</key> | |
| 4163 | <dict> | |
| 4164 | <key>name</key> | |
| 4165 | <string>keyword.control.switch.tsx</string> | |
| 4166 | </dict> | |
| 4167 | <key>2</key> | |
| 4168 | <dict> | |
| 4169 | <key>name</key> | |
| 4170 | <string>meta.brace.round.tsx</string> | |
| 4171 | </dict> | |
| 4172 | </dict> | |
| 4173 | <key>end</key> | |
| 4174 | <string>\)</string> | |
| 4175 | <key>endCaptures</key> | |
| 4176 | <dict> | |
| 4177 | <key>0</key> | |
| 4178 | <dict> | |
| 4179 | <key>name</key> | |
| 4180 | <string>meta.brace.round.tsx</string> | |
| 4181 | </dict> | |
| 4182 | </dict> | |
| 4183 | <key>patterns</key> | |
| 4184 | <array> | |
| 4185 | <dict> | |
| 4186 | <key>include</key> | |
| 4187 | <string>#expression</string> | |
| 4188 | </dict> | |
| 4189 | </array> | |
| 4190 | </dict> | |
| 4191 | <dict> | |
| 4192 | <key>name</key> | |
| 4193 | <string>switch-block.expr.tsx</string> | |
| 4194 | <key>begin</key> | |
| 4195 | <string>\{</string> | |
| 4196 | <key>beginCaptures</key> | |
| 4197 | <dict> | |
| 4198 | <key>0</key> | |
| 4199 | <dict> | |
| 4200 | <key>name</key> | |
| 4201 | <string>punctuation.definition.block.tsx</string> | |
| 4202 | </dict> | |
| 4203 | </dict> | |
| 4204 | <key>end</key> | |
| 4205 | <string>(?=\})</string> | |
| 4206 | <key>patterns</key> | |
| 4207 | <array> | |
| 4208 | <dict> | |
| 4209 | <key>name</key> | |
| 4210 | <string>case-clause.expr.tsx</string> | |
| 4211 | <key>begin</key> | |
| 4212 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 4213 | <key>beginCaptures</key> | |
| 4214 | <dict> | |
| 4215 | <key>1</key> | |
| 4216 | <dict> | |
| 4217 | <key>name</key> | |
| 4218 | <string>keyword.control.switch.tsx</string> | |
| 4219 | </dict> | |
| 4220 | </dict> | |
| 4221 | <key>end</key> | |
| 4222 | <string>(?=:)</string> | |
| 4223 | <key>patterns</key> | |
| 4224 | <array> | |
| 4225 | <dict> | |
| 4226 | <key>include</key> | |
| 4227 | <string>#expression</string> | |
| 4228 | </dict> | |
| 4229 | </array> | |
| 4230 | </dict> | |
| 4231 | <dict> | |
| 4232 | <key>begin</key> | |
| 4233 | <string>(:)\s*(\{)</string> | |
| 4234 | <key>beginCaptures</key> | |
| 4235 | <dict> | |
| 4236 | <key>1</key> | |
| 4237 | <dict> | |
| 4238 | <key>name</key> | |
| 4239 | <string>case-clause.expr.tsx punctuation.definition.section.case-statement.tsx</string> | |
| 4240 | </dict> | |
| 4241 | <key>2</key> | |
| 4242 | <dict> | |
| 4243 | <key>name</key> | |
| 4244 | <string>meta.block.tsx punctuation.definition.block.tsx</string> | |
| 4245 | </dict> | |
| 4246 | </dict> | |
| 4247 | <key>end</key> | |
| 4248 | <string>\}</string> | |
| 4249 | <key>endCaptures</key> | |
| 4250 | <dict> | |
| 4251 | <key>0</key> | |
| 4252 | <dict> | |
| 4253 | <key>name</key> | |
| 4254 | <string>meta.block.tsx punctuation.definition.block.tsx</string> | |
| 4255 | </dict> | |
| 4256 | </dict> | |
| 4257 | <key>contentName</key> | |
| 4258 | <string>meta.block.tsx</string> | |
| 4259 | <key>patterns</key> | |
| 4260 | <array> | |
| 4261 | <dict> | |
| 4262 | <key>include</key> | |
| 4263 | <string>#statements</string> | |
| 4264 | </dict> | |
| 4265 | </array> | |
| 4266 | </dict> | |
| 4267 | <dict> | |
| 4268 | <key>match</key> | |
| 4269 | <string>(:)</string> | |
| 4270 | <key>captures</key> | |
| 4271 | <dict> | |
| 4272 | <key>0</key> | |
| 4273 | <dict> | |
| 4274 | <key>name</key> | |
| 4275 | <string>case-clause.expr.tsx punctuation.definition.section.case-statement.tsx</string> | |
| 4276 | </dict> | |
| 4277 | </dict> | |
| 4278 | </dict> | |
| 4279 | <dict> | |
| 4280 | <key>include</key> | |
| 4281 | <string>#statements</string> | |
| 4282 | </dict> | |
| 4283 | </array> | |
| 4284 | </dict> | |
| 4285 | </array> | |
| 4286 | </dict> | |
| 4287 | <key>for-loop</key> | |
| 4288 | <dict> | |
| 4289 | <key>begin</key> | |
| 4290 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())</string> | |
| 4291 | <key>beginCaptures</key> | |
| 4292 | <dict> | |
| 4293 | <key>0</key> | |
| 4294 | <dict> | |
| 4295 | <key>name</key> | |
| 4296 | <string>keyword.control.loop.tsx</string> | |
| 4297 | </dict> | |
| 4298 | </dict> | |
| 4299 | <key>end</key> | |
| 4300 | <string>(?&lt;=\))</string> | |
| 4301 | <key>patterns</key> | |
| 4302 | <array> | |
| 4303 | <dict> | |
| 4304 | <key>include</key> | |
| 4305 | <string>#comment</string> | |
| 4306 | </dict> | |
| 4307 | <dict> | |
| 4308 | <key>name</key> | |
| 4309 | <string>keyword.control.loop.tsx</string> | |
| 4310 | <key>match</key> | |
| 4311 | <string>await</string> | |
| 4312 | </dict> | |
| 4313 | <dict> | |
| 4314 | <key>begin</key> | |
| 4315 | <string>\(</string> | |
| 4316 | <key>beginCaptures</key> | |
| 4317 | <dict> | |
| 4318 | <key>0</key> | |
| 4319 | <dict> | |
| 4320 | <key>name</key> | |
| 4321 | <string>meta.brace.round.tsx</string> | |
| 4322 | </dict> | |
| 4323 | </dict> | |
| 4324 | <key>end</key> | |
| 4325 | <string>\)</string> | |
| 4326 | <key>endCaptures</key> | |
| 4327 | <dict> | |
| 4328 | <key>0</key> | |
| 4329 | <dict> | |
| 4330 | <key>name</key> | |
| 4331 | <string>meta.brace.round.tsx</string> | |
| 4332 | </dict> | |
| 4333 | </dict> | |
| 4334 | <key>patterns</key> | |
| 4335 | <array> | |
| 4336 | <dict> | |
| 4337 | <key>include</key> | |
| 4338 | <string>#var-expr</string> | |
| 4339 | </dict> | |
| 4340 | <dict> | |
| 4341 | <key>include</key> | |
| 4342 | <string>#expression</string> | |
| 4343 | </dict> | |
| 4344 | <dict> | |
| 4345 | <key>include</key> | |
| 4346 | <string>#punctuation-semicolon</string> | |
| 4347 | </dict> | |
| 4348 | </array> | |
| 4349 | </dict> | |
| 4350 | </array> | |
| 4351 | </dict> | |
| 4352 | <key>if-statement</key> | |
| 4353 | <dict> | |
| 4354 | <key>patterns</key> | |
| 4355 | <array> | |
| 4356 | <dict> | |
| 4357 | <key>begin</key> | |
| 4358 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bif\s*(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))\s*(?!\{))</string> | |
| 4359 | <key>end</key> | |
| 4360 | <string>(?=;|$|\})</string> | |
| 4361 | <key>patterns</key> | |
| 4362 | <array> | |
| 4363 | <dict> | |
| 4364 | <key>include</key> | |
| 4365 | <string>#comment</string> | |
| 4366 | </dict> | |
| 4367 | <dict> | |
| 4368 | <key>begin</key> | |
| 4369 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(if)\s*(\()</string> | |
| 4370 | <key>beginCaptures</key> | |
| 4371 | <dict> | |
| 4372 | <key>1</key> | |
| 4373 | <dict> | |
| 4374 | <key>name</key> | |
| 4375 | <string>keyword.control.conditional.tsx</string> | |
| 4376 | </dict> | |
| 4377 | <key>2</key> | |
| 4378 | <dict> | |
| 4379 | <key>name</key> | |
| 4380 | <string>meta.brace.round.tsx</string> | |
| 4381 | </dict> | |
| 4382 | </dict> | |
| 4383 | <key>end</key> | |
| 4384 | <string>\)</string> | |
| 4385 | <key>endCaptures</key> | |
| 4386 | <dict> | |
| 4387 | <key>0</key> | |
| 4388 | <dict> | |
| 4389 | <key>name</key> | |
| 4390 | <string>meta.brace.round.tsx</string> | |
| 4391 | </dict> | |
| 4392 | </dict> | |
| 4393 | <key>patterns</key> | |
| 4394 | <array> | |
| 4395 | <dict> | |
| 4396 | <key>include</key> | |
| 4397 | <string>#expression</string> | |
| 4398 | </dict> | |
| 4399 | </array> | |
| 4400 | </dict> | |
| 4401 | <dict> | |
| 4402 | <key>name</key> | |
| 4403 | <string>string.regexp.tsx</string> | |
| 4404 | <key>begin</key> | |
| 4405 | <string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 4406 | <key>beginCaptures</key> | |
| 4407 | <dict> | |
| 4408 | <key>0</key> | |
| 4409 | <dict> | |
| 4410 | <key>name</key> | |
| 4411 | <string>punctuation.definition.string.begin.tsx</string> | |
| 4412 | </dict> | |
| 4413 | </dict> | |
| 4414 | <key>end</key> | |
| 4415 | <string>(/)([dgimsuvy]*)</string> | |
| 4416 | <key>endCaptures</key> | |
| 4417 | <dict> | |
| 4418 | <key>1</key> | |
| 4419 | <dict> | |
| 4420 | <key>name</key> | |
| 4421 | <string>punctuation.definition.string.end.tsx</string> | |
| 4422 | </dict> | |
| 4423 | <key>2</key> | |
| 4424 | <dict> | |
| 4425 | <key>name</key> | |
| 4426 | <string>keyword.other.tsx</string> | |
| 4427 | </dict> | |
| 4428 | </dict> | |
| 4429 | <key>patterns</key> | |
| 4430 | <array> | |
| 4431 | <dict> | |
| 4432 | <key>include</key> | |
| 4433 | <string>#regexp</string> | |
| 4434 | </dict> | |
| 4435 | </array> | |
| 4436 | </dict> | |
| 4437 | <dict> | |
| 4438 | <key>include</key> | |
| 4439 | <string>#statements</string> | |
| 4440 | </dict> | |
| 4441 | </array> | |
| 4442 | </dict> | |
| 4443 | </array> | |
| 4444 | </dict> | |
| 4445 | <key>decl-block</key> | |
| 4446 | <dict> | |
| 4447 | <key>name</key> | |
| 4448 | <string>meta.block.tsx</string> | |
| 4449 | <key>begin</key> | |
| 4450 | <string>\{</string> | |
| 4451 | <key>beginCaptures</key> | |
| 4452 | <dict> | |
| 4453 | <key>0</key> | |
| 4454 | <dict> | |
| 4455 | <key>name</key> | |
| 4456 | <string>punctuation.definition.block.tsx</string> | |
| 4457 | </dict> | |
| 4458 | </dict> | |
| 4459 | <key>end</key> | |
| 4460 | <string>\}</string> | |
| 4461 | <key>endCaptures</key> | |
| 4462 | <dict> | |
| 4463 | <key>0</key> | |
| 4464 | <dict> | |
| 4465 | <key>name</key> | |
| 4466 | <string>punctuation.definition.block.tsx</string> | |
| 4467 | </dict> | |
| 4468 | </dict> | |
| 4469 | <key>patterns</key> | |
| 4470 | <array> | |
| 4471 | <dict> | |
| 4472 | <key>include</key> | |
| 4473 | <string>#statements</string> | |
| 4474 | </dict> | |
| 4475 | </array> | |
| 4476 | </dict> | |
| 4477 | <key>after-operator-block-as-object-literal</key> | |
| 4478 | <dict> | |
| 4479 | <key>name</key> | |
| 4480 | <string>meta.objectliteral.tsx</string> | |
| 4481 | <key>begin</key> | |
| 4482 | <string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!&gt;]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string> | |
| 4483 | <key>beginCaptures</key> | |
| 4484 | <dict> | |
| 4485 | <key>1</key> | |
| 4486 | <dict> | |
| 4487 | <key>name</key> | |
| 4488 | <string>punctuation.definition.block.tsx</string> | |
| 4489 | </dict> | |
| 4490 | </dict> | |
| 4491 | <key>end</key> | |
| 4492 | <string>\}</string> | |
| 4493 | <key>endCaptures</key> | |
| 4494 | <dict> | |
| 4495 | <key>0</key> | |
| 4496 | <dict> | |
| 4497 | <key>name</key> | |
| 4498 | <string>punctuation.definition.block.tsx</string> | |
| 4499 | </dict> | |
| 4500 | </dict> | |
| 4501 | <key>patterns</key> | |
| 4502 | <array> | |
| 4503 | <dict> | |
| 4504 | <key>include</key> | |
| 4505 | <string>#object-member</string> | |
| 4506 | </dict> | |
| 4507 | </array> | |
| 4508 | </dict> | |
| 4509 | <key>object-literal</key> | |
| 4510 | <dict> | |
| 4511 | <key>name</key> | |
| 4512 | <string>meta.objectliteral.tsx</string> | |
| 4513 | <key>begin</key> | |
| 4514 | <string>\{</string> | |
| 4515 | <key>beginCaptures</key> | |
| 4516 | <dict> | |
| 4517 | <key>0</key> | |
| 4518 | <dict> | |
| 4519 | <key>name</key> | |
| 4520 | <string>punctuation.definition.block.tsx</string> | |
| 4521 | </dict> | |
| 4522 | </dict> | |
| 4523 | <key>end</key> | |
| 4524 | <string>\}</string> | |
| 4525 | <key>endCaptures</key> | |
| 4526 | <dict> | |
| 4527 | <key>0</key> | |
| 4528 | <dict> | |
| 4529 | <key>name</key> | |
| 4530 | <string>punctuation.definition.block.tsx</string> | |
| 4531 | </dict> | |
| 4532 | </dict> | |
| 4533 | <key>patterns</key> | |
| 4534 | <array> | |
| 4535 | <dict> | |
| 4536 | <key>include</key> | |
| 4537 | <string>#object-member</string> | |
| 4538 | </dict> | |
| 4539 | </array> | |
| 4540 | </dict> | |
| 4541 | <key>object-member</key> | |
| 4542 | <dict> | |
| 4543 | <key>patterns</key> | |
| 4544 | <array> | |
| 4545 | <dict> | |
| 4546 | <key>include</key> | |
| 4547 | <string>#comment</string> | |
| 4548 | </dict> | |
| 4549 | <dict> | |
| 4550 | <key>include</key> | |
| 4551 | <string>#object-literal-method-declaration</string> | |
| 4552 | </dict> | |
| 4553 | <dict> | |
| 4554 | <key>name</key> | |
| 4555 | <string>meta.object.member.tsx meta.object-literal.key.tsx</string> | |
| 4556 | <key>begin</key> | |
| 4557 | <string>(?=\[)</string> | |
| 4558 | <key>end</key> | |
| 4559 | <string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string> | |
| 4560 | <key>patterns</key> | |
| 4561 | <array> | |
| 4562 | <dict> | |
| 4563 | <key>include</key> | |
| 4564 | <string>#comment</string> | |
| 4565 | </dict> | |
| 4566 | <dict> | |
| 4567 | <key>include</key> | |
| 4568 | <string>#array-literal</string> | |
| 4569 | </dict> | |
| 4570 | </array> | |
| 4571 | </dict> | |
| 4572 | <dict> | |
| 4573 | <key>name</key> | |
| 4574 | <string>meta.object.member.tsx meta.object-literal.key.tsx</string> | |
| 4575 | <key>begin</key> | |
| 4576 | <string>(?=[\'\"\`])</string> | |
| 4577 | <key>end</key> | |
| 4578 | <string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as|satisifies)\s+))))</string> | |
| 4579 | <key>patterns</key> | |
| 4580 | <array> | |
| 4581 | <dict> | |
| 4582 | <key>include</key> | |
| 4583 | <string>#comment</string> | |
| 4584 | </dict> | |
| 4585 | <dict> | |
| 4586 | <key>include</key> | |
| 4587 | <string>#string</string> | |
| 4588 | </dict> | |
| 4589 | </array> | |
| 4590 | </dict> | |
| 4591 | <dict> | |
| 4592 | <key>name</key> | |
| 4593 | <string>meta.object.member.tsx meta.object-literal.key.tsx</string> | |
| 4594 | <key>begin</key> | |
| 4595 | <string>(?x)(?=(\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?: | |
| 4596 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 4597 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 4598 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 4599 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 4600 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 4601 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 4602 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 4603 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 4604 | )(?!\$)))</string> | |
| 4605 | <key>end</key> | |
| 4606 | <string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as|satisifies\s+))</string> | |
| 4607 | <key>patterns</key> | |
| 4608 | <array> | |
| 4609 | <dict> | |
| 4610 | <key>include</key> | |
| 4611 | <string>#comment</string> | |
| 4612 | </dict> | |
| 4613 | <dict> | |
| 4614 | <key>include</key> | |
| 4615 | <string>#numeric-literal</string> | |
| 4616 | </dict> | |
| 4617 | </array> | |
| 4618 | </dict> | |
| 4619 | <dict> | |
| 4620 | <key>name</key> | |
| 4621 | <string>meta.method.declaration.tsx</string> | |
| 4622 | <key>begin</key> | |
| 4623 | <string>(?&lt;=[\]\'\"\`])(?=\s*[\(\&lt;])</string> | |
| 4624 | <key>end</key> | |
| 4625 | <string>(?=\}|;|,)|(?&lt;=\})</string> | |
| 4626 | <key>patterns</key> | |
| 4627 | <array> | |
| 4628 | <dict> | |
| 4629 | <key>include</key> | |
| 4630 | <string>#function-body</string> | |
| 4631 | </dict> | |
| 4632 | </array> | |
| 4633 | </dict> | |
| 4634 | <dict> | |
| 4635 | <key>name</key> | |
| 4636 | <string>meta.object.member.tsx</string> | |
| 4637 | <key>match</key> | |
| 4638 | <string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 4639 | <key>captures</key> | |
| 4640 | <dict> | |
| 4641 | <key>0</key> | |
| 4642 | <dict> | |
| 4643 | <key>name</key> | |
| 4644 | <string>meta.object-literal.key.tsx</string> | |
| 4645 | </dict> | |
| 4646 | <key>1</key> | |
| 4647 | <dict> | |
| 4648 | <key>name</key> | |
| 4649 | <string>constant.numeric.decimal.tsx</string> | |
| 4650 | </dict> | |
| 4651 | </dict> | |
| 4652 | </dict> | |
| 4653 | <dict> | |
| 4654 | <key>name</key> | |
| 4655 | <string>meta.object.member.tsx</string> | |
| 4656 | <key>match</key> | |
| 4657 | <string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*( | |
| 4658 | ((async\s+)?( | |
| 4659 | (function\s*[(&lt;*]) | | |
| 4660 | (function\s+) | | |
| 4661 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 4662 | )) | | |
| 4663 | ((async\s*)?( | |
| 4664 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 4665 | # sure shot arrow functions even if =&gt; is on new line | |
| 4666 | ( | |
| 4667 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 4668 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 4669 | ( | |
| 4670 | ([)]\s*:) | # (): | |
| 4671 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 4672 | ) | |
| 4673 | ) | | |
| 4674 | ( | |
| 4675 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 4676 | ) | | |
| 4677 | # arrow function possible to detect only with =&gt; on same line | |
| 4678 | ( | |
| 4679 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 4680 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 4681 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 4682 | \s*=&gt; # arrow operator | |
| 4683 | ) | |
| 4684 | )) | |
| 4685 | )))</string> | |
| 4686 | <key>captures</key> | |
| 4687 | <dict> | |
| 4688 | <key>0</key> | |
| 4689 | <dict> | |
| 4690 | <key>name</key> | |
| 4691 | <string>meta.object-literal.key.tsx</string> | |
| 4692 | </dict> | |
| 4693 | <key>1</key> | |
| 4694 | <dict> | |
| 4695 | <key>name</key> | |
| 4696 | <string>entity.name.function.tsx</string> | |
| 4697 | </dict> | |
| 4698 | </dict> | |
| 4699 | </dict> | |
| 4700 | <dict> | |
| 4701 | <key>name</key> | |
| 4702 | <string>meta.object.member.tsx</string> | |
| 4703 | <key>match</key> | |
| 4704 | <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string> | |
| 4705 | <key>captures</key> | |
| 4706 | <dict> | |
| 4707 | <key>0</key> | |
| 4708 | <dict> | |
| 4709 | <key>name</key> | |
| 4710 | <string>meta.object-literal.key.tsx</string> | |
| 4711 | </dict> | |
| 4712 | </dict> | |
| 4713 | </dict> | |
| 4714 | <dict> | |
| 4715 | <key>name</key> | |
| 4716 | <string>meta.object.member.tsx</string> | |
| 4717 | <key>begin</key> | |
| 4718 | <string>\.\.\.</string> | |
| 4719 | <key>beginCaptures</key> | |
| 4720 | <dict> | |
| 4721 | <key>0</key> | |
| 4722 | <dict> | |
| 4723 | <key>name</key> | |
| 4724 | <string>keyword.operator.spread.tsx</string> | |
| 4725 | </dict> | |
| 4726 | </dict> | |
| 4727 | <key>end</key> | |
| 4728 | <string>(?=,|\})</string> | |
| 4729 | <key>patterns</key> | |
| 4730 | <array> | |
| 4731 | <dict> | |
| 4732 | <key>include</key> | |
| 4733 | <string>#expression</string> | |
| 4734 | </dict> | |
| 4735 | </array> | |
| 4736 | </dict> | |
| 4737 | <dict> | |
| 4738 | <key>name</key> | |
| 4739 | <string>meta.object.member.tsx</string> | |
| 4740 | <key>match</key> | |
| 4741 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$|\/\/|\/\*)</string> | |
| 4742 | <key>captures</key> | |
| 4743 | <dict> | |
| 4744 | <key>1</key> | |
| 4745 | <dict> | |
| 4746 | <key>name</key> | |
| 4747 | <string>variable.other.readwrite.tsx</string> | |
| 4748 | </dict> | |
| 4749 | </dict> | |
| 4750 | </dict> | |
| 4751 | <dict> | |
| 4752 | <key>name</key> | |
| 4753 | <string>meta.object.member.tsx</string> | |
| 4754 | <key>match</key> | |
| 4755 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*([,}]|$))</string> | |
| 4756 | <key>captures</key> | |
| 4757 | <dict> | |
| 4758 | <key>1</key> | |
| 4759 | <dict> | |
| 4760 | <key>name</key> | |
| 4761 | <string>keyword.control.as.tsx</string> | |
| 4762 | </dict> | |
| 4763 | <key>2</key> | |
| 4764 | <dict> | |
| 4765 | <key>name</key> | |
| 4766 | <string>storage.modifier.tsx</string> | |
| 4767 | </dict> | |
| 4768 | </dict> | |
| 4769 | </dict> | |
| 4770 | <dict> | |
| 4771 | <key>name</key> | |
| 4772 | <string>meta.object.member.tsx</string> | |
| 4773 | <key>begin</key> | |
| 4774 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string> | |
| 4775 | <key>beginCaptures</key> | |
| 4776 | <dict> | |
| 4777 | <key>1</key> | |
| 4778 | <dict> | |
| 4779 | <key>name</key> | |
| 4780 | <string>keyword.control.as.tsx</string> | |
| 4781 | </dict> | |
| 4782 | <key>2</key> | |
| 4783 | <dict> | |
| 4784 | <key>name</key> | |
| 4785 | <string>keyword.control.satisfies.tsx</string> | |
| 4786 | </dict> | |
| 4787 | </dict> | |
| 4788 | <key>end</key> | |
| 4789 | <string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+))</string> | |
| 4790 | <key>patterns</key> | |
| 4791 | <array> | |
| 4792 | <dict> | |
| 4793 | <key>include</key> | |
| 4794 | <string>#type</string> | |
| 4795 | </dict> | |
| 4796 | </array> | |
| 4797 | </dict> | |
| 4798 | <dict> | |
| 4799 | <key>name</key> | |
| 4800 | <string>meta.object.member.tsx</string> | |
| 4801 | <key>begin</key> | |
| 4802 | <string>(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)</string> | |
| 4803 | <key>end</key> | |
| 4804 | <string>(?=,|\}|$|\/\/|\/\*)</string> | |
| 4805 | <key>patterns</key> | |
| 4806 | <array> | |
| 4807 | <dict> | |
| 4808 | <key>include</key> | |
| 4809 | <string>#expression</string> | |
| 4810 | </dict> | |
| 4811 | </array> | |
| 4812 | </dict> | |
| 4813 | <dict> | |
| 4814 | <key>name</key> | |
| 4815 | <string>meta.object.member.tsx</string> | |
| 4816 | <key>begin</key> | |
| 4817 | <string>:</string> | |
| 4818 | <key>beginCaptures</key> | |
| 4819 | <dict> | |
| 4820 | <key>0</key> | |
| 4821 | <dict> | |
| 4822 | <key>name</key> | |
| 4823 | <string>meta.object-literal.key.tsx punctuation.separator.key-value.tsx</string> | |
| 4824 | </dict> | |
| 4825 | </dict> | |
| 4826 | <key>end</key> | |
| 4827 | <string>(?=,|\})</string> | |
| 4828 | <key>patterns</key> | |
| 4829 | <array> | |
| 4830 | <dict> | |
| 4831 | <key>begin</key> | |
| 4832 | <string>(?&lt;=:)\s*(async)?(?=\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4833 | <key>beginCaptures</key> | |
| 4834 | <dict> | |
| 4835 | <key>1</key> | |
| 4836 | <dict> | |
| 4837 | <key>name</key> | |
| 4838 | <string>storage.modifier.async.tsx</string> | |
| 4839 | </dict> | |
| 4840 | </dict> | |
| 4841 | <key>end</key> | |
| 4842 | <string>(?&lt;=\))</string> | |
| 4843 | <key>patterns</key> | |
| 4844 | <array> | |
| 4845 | <dict> | |
| 4846 | <key>include</key> | |
| 4847 | <string>#type-parameters</string> | |
| 4848 | </dict> | |
| 4849 | <dict> | |
| 4850 | <key>begin</key> | |
| 4851 | <string>\(</string> | |
| 4852 | <key>beginCaptures</key> | |
| 4853 | <dict> | |
| 4854 | <key>0</key> | |
| 4855 | <dict> | |
| 4856 | <key>name</key> | |
| 4857 | <string>meta.brace.round.tsx</string> | |
| 4858 | </dict> | |
| 4859 | </dict> | |
| 4860 | <key>end</key> | |
| 4861 | <string>\)</string> | |
| 4862 | <key>endCaptures</key> | |
| 4863 | <dict> | |
| 4864 | <key>0</key> | |
| 4865 | <dict> | |
| 4866 | <key>name</key> | |
| 4867 | <string>meta.brace.round.tsx</string> | |
| 4868 | </dict> | |
| 4869 | </dict> | |
| 4870 | <key>patterns</key> | |
| 4871 | <array> | |
| 4872 | <dict> | |
| 4873 | <key>include</key> | |
| 4874 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4875 | </dict> | |
| 4876 | </array> | |
| 4877 | </dict> | |
| 4878 | </array> | |
| 4879 | </dict> | |
| 4880 | <dict> | |
| 4881 | <key>begin</key> | |
| 4882 | <string>(?&lt;=:)\s*(async)?\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4883 | <key>beginCaptures</key> | |
| 4884 | <dict> | |
| 4885 | <key>1</key> | |
| 4886 | <dict> | |
| 4887 | <key>name</key> | |
| 4888 | <string>storage.modifier.async.tsx</string> | |
| 4889 | </dict> | |
| 4890 | <key>2</key> | |
| 4891 | <dict> | |
| 4892 | <key>name</key> | |
| 4893 | <string>meta.brace.round.tsx</string> | |
| 4894 | </dict> | |
| 4895 | </dict> | |
| 4896 | <key>end</key> | |
| 4897 | <string>\)</string> | |
| 4898 | <key>endCaptures</key> | |
| 4899 | <dict> | |
| 4900 | <key>0</key> | |
| 4901 | <dict> | |
| 4902 | <key>name</key> | |
| 4903 | <string>meta.brace.round.tsx</string> | |
| 4904 | </dict> | |
| 4905 | </dict> | |
| 4906 | <key>patterns</key> | |
| 4907 | <array> | |
| 4908 | <dict> | |
| 4909 | <key>include</key> | |
| 4910 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4911 | </dict> | |
| 4912 | </array> | |
| 4913 | </dict> | |
| 4914 | <dict> | |
| 4915 | <key>begin</key> | |
| 4916 | <string>(?&lt;=:)\s*(async)?\s*(?=\&lt;\s*$)</string> | |
| 4917 | <key>beginCaptures</key> | |
| 4918 | <dict> | |
| 4919 | <key>1</key> | |
| 4920 | <dict> | |
| 4921 | <key>name</key> | |
| 4922 | <string>storage.modifier.async.tsx</string> | |
| 4923 | </dict> | |
| 4924 | </dict> | |
| 4925 | <key>end</key> | |
| 4926 | <string>(?&lt;=\&gt;)</string> | |
| 4927 | <key>patterns</key> | |
| 4928 | <array> | |
| 4929 | <dict> | |
| 4930 | <key>include</key> | |
| 4931 | <string>#type-parameters</string> | |
| 4932 | </dict> | |
| 4933 | </array> | |
| 4934 | </dict> | |
| 4935 | <dict> | |
| 4936 | <key>begin</key> | |
| 4937 | <string>(?&lt;=\&gt;)\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 4938 | <key>beginCaptures</key> | |
| 4939 | <dict> | |
| 4940 | <key>1</key> | |
| 4941 | <dict> | |
| 4942 | <key>name</key> | |
| 4943 | <string>meta.brace.round.tsx</string> | |
| 4944 | </dict> | |
| 4945 | </dict> | |
| 4946 | <key>end</key> | |
| 4947 | <string>\)</string> | |
| 4948 | <key>endCaptures</key> | |
| 4949 | <dict> | |
| 4950 | <key>0</key> | |
| 4951 | <dict> | |
| 4952 | <key>name</key> | |
| 4953 | <string>meta.brace.round.tsx</string> | |
| 4954 | </dict> | |
| 4955 | </dict> | |
| 4956 | <key>patterns</key> | |
| 4957 | <array> | |
| 4958 | <dict> | |
| 4959 | <key>include</key> | |
| 4960 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 4961 | </dict> | |
| 4962 | </array> | |
| 4963 | </dict> | |
| 4964 | <dict> | |
| 4965 | <key>include</key> | |
| 4966 | <string>#possibly-arrow-return-type</string> | |
| 4967 | </dict> | |
| 4968 | <dict> | |
| 4969 | <key>include</key> | |
| 4970 | <string>#expression</string> | |
| 4971 | </dict> | |
| 4972 | </array> | |
| 4973 | </dict> | |
| 4974 | <dict> | |
| 4975 | <key>include</key> | |
| 4976 | <string>#punctuation-comma</string> | |
| 4977 | </dict> | |
| 4978 | <dict> | |
| 4979 | <key>include</key> | |
| 4980 | <string>#decl-block</string> | |
| 4981 | </dict> | |
| 4982 | </array> | |
| 4983 | </dict> | |
| 4984 | <key>ternary-expression</key> | |
| 4985 | <dict> | |
| 4986 | <key>begin</key> | |
| 4987 | <string>(?!\?\.\s*[^[:digit:]])(\?)(?!\?)</string> | |
| 4988 | <key>beginCaptures</key> | |
| 4989 | <dict> | |
| 4990 | <key>1</key> | |
| 4991 | <dict> | |
| 4992 | <key>name</key> | |
| 4993 | <string>keyword.operator.ternary.tsx</string> | |
| 4994 | </dict> | |
| 4995 | </dict> | |
| 4996 | <key>end</key> | |
| 4997 | <string>\s*(:)</string> | |
| 4998 | <key>endCaptures</key> | |
| 4999 | <dict> | |
| 5000 | <key>1</key> | |
| 5001 | <dict> | |
| 5002 | <key>name</key> | |
| 5003 | <string>keyword.operator.ternary.tsx</string> | |
| 5004 | </dict> | |
| 5005 | </dict> | |
| 5006 | <key>patterns</key> | |
| 5007 | <array> | |
| 5008 | <dict> | |
| 5009 | <key>include</key> | |
| 5010 | <string>#expression</string> | |
| 5011 | </dict> | |
| 5012 | </array> | |
| 5013 | </dict> | |
| 5014 | <key>function-call</key> | |
| 5015 | <dict> | |
| 5016 | <key>patterns</key> | |
| 5017 | <array> | |
| 5018 | <dict> | |
| 5019 | <key>begin</key> | |
| 5020 | <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 5021 | <key>end</key> | |
| 5022 | <string>(?&lt;=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 5023 | <key>patterns</key> | |
| 5024 | <array> | |
| 5025 | <dict> | |
| 5026 | <key>name</key> | |
| 5027 | <string>meta.function-call.tsx</string> | |
| 5028 | <key>begin</key> | |
| 5029 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 5030 | <key>end</key> | |
| 5031 | <string>(?=\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string> | |
| 5032 | <key>patterns</key> | |
| 5033 | <array> | |
| 5034 | <dict> | |
| 5035 | <key>include</key> | |
| 5036 | <string>#function-call-target</string> | |
| 5037 | </dict> | |
| 5038 | </array> | |
| 5039 | </dict> | |
| 5040 | <dict> | |
| 5041 | <key>include</key> | |
| 5042 | <string>#comment</string> | |
| 5043 | </dict> | |
| 5044 | <dict> | |
| 5045 | <key>include</key> | |
| 5046 | <string>#function-call-optionals</string> | |
| 5047 | </dict> | |
| 5048 | <dict> | |
| 5049 | <key>include</key> | |
| 5050 | <string>#type-arguments</string> | |
| 5051 | </dict> | |
| 5052 | <dict> | |
| 5053 | <key>include</key> | |
| 5054 | <string>#paren-expression</string> | |
| 5055 | </dict> | |
| 5056 | </array> | |
| 5057 | </dict> | |
| 5058 | <dict> | |
| 5059 | <key>begin</key> | |
| 5060 | <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5061 | <key>end</key> | |
| 5062 | <string>(?&lt;=\&gt;)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5063 | <key>patterns</key> | |
| 5064 | <array> | |
| 5065 | <dict> | |
| 5066 | <key>name</key> | |
| 5067 | <string>meta.function-call.tsx</string> | |
| 5068 | <key>begin</key> | |
| 5069 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 5070 | <key>end</key> | |
| 5071 | <string>(?=(&lt;\s*[\{\[\(]\s*$))</string> | |
| 5072 | <key>patterns</key> | |
| 5073 | <array> | |
| 5074 | <dict> | |
| 5075 | <key>include</key> | |
| 5076 | <string>#function-call-target</string> | |
| 5077 | </dict> | |
| 5078 | </array> | |
| 5079 | </dict> | |
| 5080 | <dict> | |
| 5081 | <key>include</key> | |
| 5082 | <string>#comment</string> | |
| 5083 | </dict> | |
| 5084 | <dict> | |
| 5085 | <key>include</key> | |
| 5086 | <string>#function-call-optionals</string> | |
| 5087 | </dict> | |
| 5088 | <dict> | |
| 5089 | <key>include</key> | |
| 5090 | <string>#type-arguments</string> | |
| 5091 | </dict> | |
| 5092 | </array> | |
| 5093 | </dict> | |
| 5094 | </array> | |
| 5095 | </dict> | |
| 5096 | <key>function-call-target</key> | |
| 5097 | <dict> | |
| 5098 | <key>patterns</key> | |
| 5099 | <array> | |
| 5100 | <dict> | |
| 5101 | <key>include</key> | |
| 5102 | <string>#support-function-call-identifiers</string> | |
| 5103 | </dict> | |
| 5104 | <dict> | |
| 5105 | <key>name</key> | |
| 5106 | <string>entity.name.function.tsx</string> | |
| 5107 | <key>match</key> | |
| 5108 | <string>(\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 5109 | </dict> | |
| 5110 | </array> | |
| 5111 | </dict> | |
| 5112 | <key>function-call-optionals</key> | |
| 5113 | <dict> | |
| 5114 | <key>patterns</key> | |
| 5115 | <array> | |
| 5116 | <dict> | |
| 5117 | <key>name</key> | |
| 5118 | <string>meta.function-call.tsx punctuation.accessor.optional.tsx</string> | |
| 5119 | <key>match</key> | |
| 5120 | <string>\?\.</string> | |
| 5121 | </dict> | |
| 5122 | <dict> | |
| 5123 | <key>name</key> | |
| 5124 | <string>meta.function-call.tsx keyword.operator.definiteassignment.tsx</string> | |
| 5125 | <key>match</key> | |
| 5126 | <string>\!</string> | |
| 5127 | </dict> | |
| 5128 | </array> | |
| 5129 | </dict> | |
| 5130 | <key>support-function-call-identifiers</key> | |
| 5131 | <dict> | |
| 5132 | <key>patterns</key> | |
| 5133 | <array> | |
| 5134 | <dict> | |
| 5135 | <key>include</key> | |
| 5136 | <string>#literal</string> | |
| 5137 | </dict> | |
| 5138 | <dict> | |
| 5139 | <key>include</key> | |
| 5140 | <string>#support-objects</string> | |
| 5141 | </dict> | |
| 5142 | <dict> | |
| 5143 | <key>include</key> | |
| 5144 | <string>#object-identifiers</string> | |
| 5145 | </dict> | |
| 5146 | <dict> | |
| 5147 | <key>include</key> | |
| 5148 | <string>#punctuation-accessor</string> | |
| 5149 | </dict> | |
| 5150 | <dict> | |
| 5151 | <key>name</key> | |
| 5152 | <string>keyword.operator.expression.import.tsx</string> | |
| 5153 | <key>match</key> | |
| 5154 | <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*[\(]\s*[\"\'\`]))</string> | |
| 5155 | </dict> | |
| 5156 | </array> | |
| 5157 | </dict> | |
| 5158 | <key>new-expr</key> | |
| 5159 | <dict> | |
| 5160 | <key>name</key> | |
| 5161 | <string>new.expr.tsx</string> | |
| 5162 | <key>begin</key> | |
| 5163 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5164 | <key>beginCaptures</key> | |
| 5165 | <dict> | |
| 5166 | <key>1</key> | |
| 5167 | <dict> | |
| 5168 | <key>name</key> | |
| 5169 | <string>keyword.operator.new.tsx</string> | |
| 5170 | </dict> | |
| 5171 | </dict> | |
| 5172 | <key>end</key> | |
| 5173 | <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string> | |
| 5174 | <key>patterns</key> | |
| 5175 | <array> | |
| 5176 | <dict> | |
| 5177 | <key>include</key> | |
| 5178 | <string>#expression</string> | |
| 5179 | </dict> | |
| 5180 | </array> | |
| 5181 | </dict> | |
| 5182 | <key>instanceof-expr</key> | |
| 5183 | <dict> | |
| 5184 | <key>begin</key> | |
| 5185 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(instanceof)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5186 | <key>beginCaptures</key> | |
| 5187 | <dict> | |
| 5188 | <key>1</key> | |
| 5189 | <dict> | |
| 5190 | <key>name</key> | |
| 5191 | <string>keyword.operator.expression.instanceof.tsx</string> | |
| 5192 | </dict> | |
| 5193 | </dict> | |
| 5194 | <key>end</key> | |
| 5195 | <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|(===|!==|==|!=)|(([\&amp;\~\^\|]\s*)?[_$[:alpha:]][_$[:alnum:]]*\s+instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string> | |
| 5196 | <key>patterns</key> | |
| 5197 | <array> | |
| 5198 | <dict> | |
| 5199 | <key>include</key> | |
| 5200 | <string>#type</string> | |
| 5201 | </dict> | |
| 5202 | </array> | |
| 5203 | </dict> | |
| 5204 | <key>paren-expression-possibly-arrow</key> | |
| 5205 | <dict> | |
| 5206 | <key>patterns</key> | |
| 5207 | <array> | |
| 5208 | <dict> | |
| 5209 | <key>begin</key> | |
| 5210 | <string>(?&lt;=[(=,])\s*(async)?(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string> | |
| 5211 | <key>beginCaptures</key> | |
| 5212 | <dict> | |
| 5213 | <key>1</key> | |
| 5214 | <dict> | |
| 5215 | <key>name</key> | |
| 5216 | <string>storage.modifier.async.tsx</string> | |
| 5217 | </dict> | |
| 5218 | </dict> | |
| 5219 | <key>end</key> | |
| 5220 | <string>(?&lt;=\))</string> | |
| 5221 | <key>patterns</key> | |
| 5222 | <array> | |
| 5223 | <dict> | |
| 5224 | <key>include</key> | |
| 5225 | <string>#paren-expression-possibly-arrow-with-typeparameters</string> | |
| 5226 | </dict> | |
| 5227 | </array> | |
| 5228 | </dict> | |
| 5229 | <dict> | |
| 5230 | <key>begin</key> | |
| 5231 | <string>(?&lt;=[(=,]|=&gt;|^return|[^\._$[:alnum:]]return)\s*(async)?(?=\s*((((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\()|(&lt;)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)))\s*$)</string> | |
| 5232 | <key>beginCaptures</key> | |
| 5233 | <dict> | |
| 5234 | <key>1</key> | |
| 5235 | <dict> | |
| 5236 | <key>name</key> | |
| 5237 | <string>storage.modifier.async.tsx</string> | |
| 5238 | </dict> | |
| 5239 | </dict> | |
| 5240 | <key>end</key> | |
| 5241 | <string>(?&lt;=\))</string> | |
| 5242 | <key>patterns</key> | |
| 5243 | <array> | |
| 5244 | <dict> | |
| 5245 | <key>include</key> | |
| 5246 | <string>#paren-expression-possibly-arrow-with-typeparameters</string> | |
| 5247 | </dict> | |
| 5248 | </array> | |
| 5249 | </dict> | |
| 5250 | <dict> | |
| 5251 | <key>include</key> | |
| 5252 | <string>#possibly-arrow-return-type</string> | |
| 5253 | </dict> | |
| 5254 | </array> | |
| 5255 | </dict> | |
| 5256 | <key>paren-expression-possibly-arrow-with-typeparameters</key> | |
| 5257 | <dict> | |
| 5258 | <key>patterns</key> | |
| 5259 | <array> | |
| 5260 | <dict> | |
| 5261 | <key>include</key> | |
| 5262 | <string>#type-parameters</string> | |
| 5263 | </dict> | |
| 5264 | <dict> | |
| 5265 | <key>begin</key> | |
| 5266 | <string>\(</string> | |
| 5267 | <key>beginCaptures</key> | |
| 5268 | <dict> | |
| 5269 | <key>0</key> | |
| 5270 | <dict> | |
| 5271 | <key>name</key> | |
| 5272 | <string>meta.brace.round.tsx</string> | |
| 5273 | </dict> | |
| 5274 | </dict> | |
| 5275 | <key>end</key> | |
| 5276 | <string>\)</string> | |
| 5277 | <key>endCaptures</key> | |
| 5278 | <dict> | |
| 5279 | <key>0</key> | |
| 5280 | <dict> | |
| 5281 | <key>name</key> | |
| 5282 | <string>meta.brace.round.tsx</string> | |
| 5283 | </dict> | |
| 5284 | </dict> | |
| 5285 | <key>patterns</key> | |
| 5286 | <array> | |
| 5287 | <dict> | |
| 5288 | <key>include</key> | |
| 5289 | <string>#expression-inside-possibly-arrow-parens</string> | |
| 5290 | </dict> | |
| 5291 | </array> | |
| 5292 | </dict> | |
| 5293 | </array> | |
| 5294 | </dict> | |
| 5295 | <key>expression-inside-possibly-arrow-parens</key> | |
| 5296 | <dict> | |
| 5297 | <key>patterns</key> | |
| 5298 | <array> | |
| 5299 | <dict> | |
| 5300 | <key>include</key> | |
| 5301 | <string>#expressionWithoutIdentifiers</string> | |
| 5302 | </dict> | |
| 5303 | <dict> | |
| 5304 | <key>include</key> | |
| 5305 | <string>#comment</string> | |
| 5306 | </dict> | |
| 5307 | <dict> | |
| 5308 | <key>include</key> | |
| 5309 | <string>#string</string> | |
| 5310 | </dict> | |
| 5311 | <dict> | |
| 5312 | <key>include</key> | |
| 5313 | <string>#decorator</string> | |
| 5314 | </dict> | |
| 5315 | <dict> | |
| 5316 | <key>include</key> | |
| 5317 | <string>#destructuring-parameter</string> | |
| 5318 | </dict> | |
| 5319 | <dict> | |
| 5320 | <key>match</key> | |
| 5321 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string> | |
| 5322 | <key>captures</key> | |
| 5323 | <dict> | |
| 5324 | <key>1</key> | |
| 5325 | <dict> | |
| 5326 | <key>name</key> | |
| 5327 | <string>storage.modifier.tsx</string> | |
| 5328 | </dict> | |
| 5329 | </dict> | |
| 5330 | </dict> | |
| 5331 | <dict> | |
| 5332 | <key>match</key> | |
| 5333 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s* | |
| 5334 | # function assignment | | |
| 5335 | (=\s*( | |
| 5336 | ((async\s+)?( | |
| 5337 | (function\s*[(&lt;*]) | | |
| 5338 | (function\s+) | | |
| 5339 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 5340 | )) | | |
| 5341 | ((async\s*)?( | |
| 5342 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 5343 | # sure shot arrow functions even if =&gt; is on new line | |
| 5344 | ( | |
| 5345 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 5346 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 5347 | ( | |
| 5348 | ([)]\s*:) | # (): | |
| 5349 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 5350 | ) | |
| 5351 | ) | | |
| 5352 | ( | |
| 5353 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 5354 | ) | | |
| 5355 | # arrow function possible to detect only with =&gt; on same line | |
| 5356 | ( | |
| 5357 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 5358 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 5359 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 5360 | \s*=&gt; # arrow operator | |
| 5361 | ) | |
| 5362 | )) | |
| 5363 | )) | | |
| 5364 | # typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt; | |
| 5365 | (:\s*( | |
| 5366 | (&lt;) | | |
| 5367 | ([(]\s*( | |
| 5368 | ([)]) | | |
| 5369 | (\.\.\.) | | |
| 5370 | ([_$[:alnum:]]+\s*( | |
| 5371 | ([:,?=])| | |
| 5372 | ([)]\s*=&gt;) | |
| 5373 | )) | |
| 5374 | )) | |
| 5375 | )) | | |
| 5376 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 5377 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) | | |
| 5378 | (:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*( | |
| 5379 | ((async\s+)?( | |
| 5380 | (function\s*[(&lt;*]) | | |
| 5381 | (function\s+) | | |
| 5382 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 5383 | )) | | |
| 5384 | ((async\s*)?( | |
| 5385 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 5386 | # sure shot arrow functions even if =&gt; is on new line | |
| 5387 | ( | |
| 5388 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 5389 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 5390 | ( | |
| 5391 | ([)]\s*:) | # (): | |
| 5392 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 5393 | ) | |
| 5394 | ) | | |
| 5395 | ( | |
| 5396 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 5397 | ) | | |
| 5398 | # arrow function possible to detect only with =&gt; on same line | |
| 5399 | ( | |
| 5400 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 5401 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 5402 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 5403 | \s*=&gt; # arrow operator | |
| 5404 | ) | |
| 5405 | )) | |
| 5406 | )))</string> | |
| 5407 | <key>captures</key> | |
| 5408 | <dict> | |
| 5409 | <key>1</key> | |
| 5410 | <dict> | |
| 5411 | <key>name</key> | |
| 5412 | <string>storage.modifier.tsx</string> | |
| 5413 | </dict> | |
| 5414 | <key>2</key> | |
| 5415 | <dict> | |
| 5416 | <key>name</key> | |
| 5417 | <string>keyword.operator.rest.tsx</string> | |
| 5418 | </dict> | |
| 5419 | <key>3</key> | |
| 5420 | <dict> | |
| 5421 | <key>name</key> | |
| 5422 | <string>entity.name.function.tsx variable.language.this.tsx</string> | |
| 5423 | </dict> | |
| 5424 | <key>4</key> | |
| 5425 | <dict> | |
| 5426 | <key>name</key> | |
| 5427 | <string>entity.name.function.tsx</string> | |
| 5428 | </dict> | |
| 5429 | <key>5</key> | |
| 5430 | <dict> | |
| 5431 | <key>name</key> | |
| 5432 | <string>keyword.operator.optional.tsx</string> | |
| 5433 | </dict> | |
| 5434 | </dict> | |
| 5435 | </dict> | |
| 5436 | <dict> | |
| 5437 | <key>match</key> | |
| 5438 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)</string> | |
| 5439 | <key>captures</key> | |
| 5440 | <dict> | |
| 5441 | <key>1</key> | |
| 5442 | <dict> | |
| 5443 | <key>name</key> | |
| 5444 | <string>storage.modifier.tsx</string> | |
| 5445 | </dict> | |
| 5446 | <key>2</key> | |
| 5447 | <dict> | |
| 5448 | <key>name</key> | |
| 5449 | <string>keyword.operator.rest.tsx</string> | |
| 5450 | </dict> | |
| 5451 | <key>3</key> | |
| 5452 | <dict> | |
| 5453 | <key>name</key> | |
| 5454 | <string>variable.parameter.tsx variable.language.this.tsx</string> | |
| 5455 | </dict> | |
| 5456 | <key>4</key> | |
| 5457 | <dict> | |
| 5458 | <key>name</key> | |
| 5459 | <string>variable.parameter.tsx</string> | |
| 5460 | </dict> | |
| 5461 | <key>5</key> | |
| 5462 | <dict> | |
| 5463 | <key>name</key> | |
| 5464 | <string>keyword.operator.optional.tsx</string> | |
| 5465 | </dict> | |
| 5466 | </dict> | |
| 5467 | </dict> | |
| 5468 | <dict> | |
| 5469 | <key>include</key> | |
| 5470 | <string>#type-annotation</string> | |
| 5471 | </dict> | |
| 5472 | <dict> | |
| 5473 | <key>include</key> | |
| 5474 | <string>#variable-initializer</string> | |
| 5475 | </dict> | |
| 5476 | <dict> | |
| 5477 | <key>name</key> | |
| 5478 | <string>punctuation.separator.parameter.tsx</string> | |
| 5479 | <key>match</key> | |
| 5480 | <string>,</string> | |
| 5481 | </dict> | |
| 5482 | <dict> | |
| 5483 | <key>include</key> | |
| 5484 | <string>#identifiers</string> | |
| 5485 | </dict> | |
| 5486 | <dict> | |
| 5487 | <key>include</key> | |
| 5488 | <string>#expressionPunctuations</string> | |
| 5489 | </dict> | |
| 5490 | </array> | |
| 5491 | </dict> | |
| 5492 | <key>paren-expression</key> | |
| 5493 | <dict> | |
| 5494 | <key>begin</key> | |
| 5495 | <string>\(</string> | |
| 5496 | <key>beginCaptures</key> | |
| 5497 | <dict> | |
| 5498 | <key>0</key> | |
| 5499 | <dict> | |
| 5500 | <key>name</key> | |
| 5501 | <string>meta.brace.round.tsx</string> | |
| 5502 | </dict> | |
| 5503 | </dict> | |
| 5504 | <key>end</key> | |
| 5505 | <string>\)</string> | |
| 5506 | <key>endCaptures</key> | |
| 5507 | <dict> | |
| 5508 | <key>0</key> | |
| 5509 | <dict> | |
| 5510 | <key>name</key> | |
| 5511 | <string>meta.brace.round.tsx</string> | |
| 5512 | </dict> | |
| 5513 | </dict> | |
| 5514 | <key>patterns</key> | |
| 5515 | <array> | |
| 5516 | <dict> | |
| 5517 | <key>include</key> | |
| 5518 | <string>#expression</string> | |
| 5519 | </dict> | |
| 5520 | </array> | |
| 5521 | </dict> | |
| 5522 | <key>cast</key> | |
| 5523 | <dict> | |
| 5524 | <key>patterns</key> | |
| 5525 | <array> | |
| 5526 | <dict> | |
| 5527 | <key>include</key> | |
| 5528 | <string>#jsx</string> | |
| 5529 | </dict> | |
| 5530 | </array> | |
| 5531 | </dict> | |
| 5532 | <key>expression-operators</key> | |
| 5533 | <dict> | |
| 5534 | <key>patterns</key> | |
| 5535 | <array> | |
| 5536 | <dict> | |
| 5537 | <key>name</key> | |
| 5538 | <string>keyword.control.flow.tsx</string> | |
| 5539 | <key>match</key> | |
| 5540 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(await)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5541 | </dict> | |
| 5542 | <dict> | |
| 5543 | <key>begin</key> | |
| 5544 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?=\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*\*)</string> | |
| 5545 | <key>beginCaptures</key> | |
| 5546 | <dict> | |
| 5547 | <key>1</key> | |
| 5548 | <dict> | |
| 5549 | <key>name</key> | |
| 5550 | <string>keyword.control.flow.tsx</string> | |
| 5551 | </dict> | |
| 5552 | </dict> | |
| 5553 | <key>end</key> | |
| 5554 | <string>\*</string> | |
| 5555 | <key>endCaptures</key> | |
| 5556 | <dict> | |
| 5557 | <key>0</key> | |
| 5558 | <dict> | |
| 5559 | <key>name</key> | |
| 5560 | <string>keyword.generator.asterisk.tsx</string> | |
| 5561 | </dict> | |
| 5562 | </dict> | |
| 5563 | <key>patterns</key> | |
| 5564 | <array> | |
| 5565 | <dict> | |
| 5566 | <key>include</key> | |
| 5567 | <string>#comment</string> | |
| 5568 | </dict> | |
| 5569 | </array> | |
| 5570 | </dict> | |
| 5571 | <dict> | |
| 5572 | <key>match</key> | |
| 5573 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s*(\*))?</string> | |
| 5574 | <key>captures</key> | |
| 5575 | <dict> | |
| 5576 | <key>1</key> | |
| 5577 | <dict> | |
| 5578 | <key>name</key> | |
| 5579 | <string>keyword.control.flow.tsx</string> | |
| 5580 | </dict> | |
| 5581 | <key>2</key> | |
| 5582 | <dict> | |
| 5583 | <key>name</key> | |
| 5584 | <string>keyword.generator.asterisk.tsx</string> | |
| 5585 | </dict> | |
| 5586 | </dict> | |
| 5587 | </dict> | |
| 5588 | <dict> | |
| 5589 | <key>name</key> | |
| 5590 | <string>keyword.operator.expression.delete.tsx</string> | |
| 5591 | <key>match</key> | |
| 5592 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))delete(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5593 | </dict> | |
| 5594 | <dict> | |
| 5595 | <key>name</key> | |
| 5596 | <string>keyword.operator.expression.in.tsx</string> | |
| 5597 | <key>match</key> | |
| 5598 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))in(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string> | |
| 5599 | </dict> | |
| 5600 | <dict> | |
| 5601 | <key>name</key> | |
| 5602 | <string>keyword.operator.expression.of.tsx</string> | |
| 5603 | <key>match</key> | |
| 5604 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))of(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string> | |
| 5605 | </dict> | |
| 5606 | <dict> | |
| 5607 | <key>name</key> | |
| 5608 | <string>keyword.operator.expression.instanceof.tsx</string> | |
| 5609 | <key>match</key> | |
| 5610 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5611 | </dict> | |
| 5612 | <dict> | |
| 5613 | <key>name</key> | |
| 5614 | <string>keyword.operator.new.tsx</string> | |
| 5615 | <key>match</key> | |
| 5616 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5617 | </dict> | |
| 5618 | <dict> | |
| 5619 | <key>include</key> | |
| 5620 | <string>#typeof-operator</string> | |
| 5621 | </dict> | |
| 5622 | <dict> | |
| 5623 | <key>name</key> | |
| 5624 | <string>keyword.operator.expression.void.tsx</string> | |
| 5625 | <key>match</key> | |
| 5626 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5627 | </dict> | |
| 5628 | <dict> | |
| 5629 | <key>match</key> | |
| 5630 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))</string> | |
| 5631 | <key>captures</key> | |
| 5632 | <dict> | |
| 5633 | <key>1</key> | |
| 5634 | <dict> | |
| 5635 | <key>name</key> | |
| 5636 | <string>keyword.control.as.tsx</string> | |
| 5637 | </dict> | |
| 5638 | <key>2</key> | |
| 5639 | <dict> | |
| 5640 | <key>name</key> | |
| 5641 | <string>storage.modifier.tsx</string> | |
| 5642 | </dict> | |
| 5643 | </dict> | |
| 5644 | </dict> | |
| 5645 | <dict> | |
| 5646 | <key>begin</key> | |
| 5647 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string> | |
| 5648 | <key>beginCaptures</key> | |
| 5649 | <dict> | |
| 5650 | <key>1</key> | |
| 5651 | <dict> | |
| 5652 | <key>name</key> | |
| 5653 | <string>keyword.control.as.tsx</string> | |
| 5654 | </dict> | |
| 5655 | <key>2</key> | |
| 5656 | <dict> | |
| 5657 | <key>name</key> | |
| 5658 | <string>keyword.control.satisfies.tsx</string> | |
| 5659 | </dict> | |
| 5660 | </dict> | |
| 5661 | <key>end</key> | |
| 5662 | <string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisfies)\s+)|(\s+\&lt;))</string> | |
| 5663 | <key>patterns</key> | |
| 5664 | <array> | |
| 5665 | <dict> | |
| 5666 | <key>include</key> | |
| 5667 | <string>#type</string> | |
| 5668 | </dict> | |
| 5669 | </array> | |
| 5670 | </dict> | |
| 5671 | <dict> | |
| 5672 | <key>name</key> | |
| 5673 | <string>keyword.operator.spread.tsx</string> | |
| 5674 | <key>match</key> | |
| 5675 | <string>\.\.\.</string> | |
| 5676 | </dict> | |
| 5677 | <dict> | |
| 5678 | <key>name</key> | |
| 5679 | <string>keyword.operator.assignment.compound.tsx</string> | |
| 5680 | <key>match</key> | |
| 5681 | <string>\*=|(?&lt;!\()/=|%=|\+=|\-=</string> | |
| 5682 | </dict> | |
| 5683 | <dict> | |
| 5684 | <key>name</key> | |
| 5685 | <string>keyword.operator.assignment.compound.bitwise.tsx</string> | |
| 5686 | <key>match</key> | |
| 5687 | <string>\&amp;=|\^=|&lt;&lt;=|&gt;&gt;=|&gt;&gt;&gt;=|\|=</string> | |
| 5688 | </dict> | |
| 5689 | <dict> | |
| 5690 | <key>name</key> | |
| 5691 | <string>keyword.operator.bitwise.shift.tsx</string> | |
| 5692 | <key>match</key> | |
| 5693 | <string>&lt;&lt;|&gt;&gt;&gt;|&gt;&gt;</string> | |
| 5694 | </dict> | |
| 5695 | <dict> | |
| 5696 | <key>name</key> | |
| 5697 | <string>keyword.operator.comparison.tsx</string> | |
| 5698 | <key>match</key> | |
| 5699 | <string>===|!==|==|!=</string> | |
| 5700 | </dict> | |
| 5701 | <dict> | |
| 5702 | <key>name</key> | |
| 5703 | <string>keyword.operator.relational.tsx</string> | |
| 5704 | <key>match</key> | |
| 5705 | <string>&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;</string> | |
| 5706 | </dict> | |
| 5707 | <dict> | |
| 5708 | <key>match</key> | |
| 5709 | <string>(?&lt;=[_$[:alnum:]])(\!)\s*(?:(/=)|(?:(/)(?![/*])))</string> | |
| 5710 | <key>captures</key> | |
| 5711 | <dict> | |
| 5712 | <key>1</key> | |
| 5713 | <dict> | |
| 5714 | <key>name</key> | |
| 5715 | <string>keyword.operator.logical.tsx</string> | |
| 5716 | </dict> | |
| 5717 | <key>2</key> | |
| 5718 | <dict> | |
| 5719 | <key>name</key> | |
| 5720 | <string>keyword.operator.assignment.compound.tsx</string> | |
| 5721 | </dict> | |
| 5722 | <key>3</key> | |
| 5723 | <dict> | |
| 5724 | <key>name</key> | |
| 5725 | <string>keyword.operator.arithmetic.tsx</string> | |
| 5726 | </dict> | |
| 5727 | </dict> | |
| 5728 | </dict> | |
| 5729 | <dict> | |
| 5730 | <key>name</key> | |
| 5731 | <string>keyword.operator.logical.tsx</string> | |
| 5732 | <key>match</key> | |
| 5733 | <string>\!|&amp;&amp;|\|\||\?\?</string> | |
| 5734 | </dict> | |
| 5735 | <dict> | |
| 5736 | <key>name</key> | |
| 5737 | <string>keyword.operator.bitwise.tsx</string> | |
| 5738 | <key>match</key> | |
| 5739 | <string>\&amp;|~|\^|\|</string> | |
| 5740 | </dict> | |
| 5741 | <dict> | |
| 5742 | <key>name</key> | |
| 5743 | <string>keyword.operator.assignment.tsx</string> | |
| 5744 | <key>match</key> | |
| 5745 | <string>\=</string> | |
| 5746 | </dict> | |
| 5747 | <dict> | |
| 5748 | <key>name</key> | |
| 5749 | <string>keyword.operator.decrement.tsx</string> | |
| 5750 | <key>match</key> | |
| 5751 | <string>--</string> | |
| 5752 | </dict> | |
| 5753 | <dict> | |
| 5754 | <key>name</key> | |
| 5755 | <string>keyword.operator.increment.tsx</string> | |
| 5756 | <key>match</key> | |
| 5757 | <string>\+\+</string> | |
| 5758 | </dict> | |
| 5759 | <dict> | |
| 5760 | <key>name</key> | |
| 5761 | <string>keyword.operator.arithmetic.tsx</string> | |
| 5762 | <key>match</key> | |
| 5763 | <string>%|\*|/|-|\+</string> | |
| 5764 | </dict> | |
| 5765 | <dict> | |
| 5766 | <key>begin</key> | |
| 5767 | <string>(?&lt;=[_$[:alnum:])\]])\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)+(?:(/=)|(?:(/)(?![/*]))))</string> | |
| 5768 | <key>end</key> | |
| 5769 | <string>(?:(/=)|(?:(/)(?!\*([^\*]|(\*[^\/]))*\*\/)))</string> | |
| 5770 | <key>endCaptures</key> | |
| 5771 | <dict> | |
| 5772 | <key>1</key> | |
| 5773 | <dict> | |
| 5774 | <key>name</key> | |
| 5775 | <string>keyword.operator.assignment.compound.tsx</string> | |
| 5776 | </dict> | |
| 5777 | <key>2</key> | |
| 5778 | <dict> | |
| 5779 | <key>name</key> | |
| 5780 | <string>keyword.operator.arithmetic.tsx</string> | |
| 5781 | </dict> | |
| 5782 | </dict> | |
| 5783 | <key>patterns</key> | |
| 5784 | <array> | |
| 5785 | <dict> | |
| 5786 | <key>include</key> | |
| 5787 | <string>#comment</string> | |
| 5788 | </dict> | |
| 5789 | </array> | |
| 5790 | </dict> | |
| 5791 | <dict> | |
| 5792 | <key>match</key> | |
| 5793 | <string>(?&lt;=[_$[:alnum:])\]])\s*(?:(/=)|(?:(/)(?![/*])))</string> | |
| 5794 | <key>captures</key> | |
| 5795 | <dict> | |
| 5796 | <key>1</key> | |
| 5797 | <dict> | |
| 5798 | <key>name</key> | |
| 5799 | <string>keyword.operator.assignment.compound.tsx</string> | |
| 5800 | </dict> | |
| 5801 | <key>2</key> | |
| 5802 | <dict> | |
| 5803 | <key>name</key> | |
| 5804 | <string>keyword.operator.arithmetic.tsx</string> | |
| 5805 | </dict> | |
| 5806 | </dict> | |
| 5807 | </dict> | |
| 5808 | </array> | |
| 5809 | </dict> | |
| 5810 | <key>typeof-operator</key> | |
| 5811 | <dict> | |
| 5812 | <key>begin</key> | |
| 5813 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 5814 | <key>beginCaptures</key> | |
| 5815 | <dict> | |
| 5816 | <key>0</key> | |
| 5817 | <dict> | |
| 5818 | <key>name</key> | |
| 5819 | <string>keyword.operator.expression.typeof.tsx</string> | |
| 5820 | </dict> | |
| 5821 | </dict> | |
| 5822 | <key>end</key> | |
| 5823 | <string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string> | |
| 5824 | <key>patterns</key> | |
| 5825 | <array> | |
| 5826 | <dict> | |
| 5827 | <key>include</key> | |
| 5828 | <string>#type-arguments</string> | |
| 5829 | </dict> | |
| 5830 | <dict> | |
| 5831 | <key>include</key> | |
| 5832 | <string>#expression</string> | |
| 5833 | </dict> | |
| 5834 | </array> | |
| 5835 | </dict> | |
| 5836 | <key>literal</key> | |
| 5837 | <dict> | |
| 5838 | <key>patterns</key> | |
| 5839 | <array> | |
| 5840 | <dict> | |
| 5841 | <key>include</key> | |
| 5842 | <string>#numeric-literal</string> | |
| 5843 | </dict> | |
| 5844 | <dict> | |
| 5845 | <key>include</key> | |
| 5846 | <string>#boolean-literal</string> | |
| 5847 | </dict> | |
| 5848 | <dict> | |
| 5849 | <key>include</key> | |
| 5850 | <string>#null-literal</string> | |
| 5851 | </dict> | |
| 5852 | <dict> | |
| 5853 | <key>include</key> | |
| 5854 | <string>#undefined-literal</string> | |
| 5855 | </dict> | |
| 5856 | <dict> | |
| 5857 | <key>include</key> | |
| 5858 | <string>#numericConstant-literal</string> | |
| 5859 | </dict> | |
| 5860 | <dict> | |
| 5861 | <key>include</key> | |
| 5862 | <string>#array-literal</string> | |
| 5863 | </dict> | |
| 5864 | <dict> | |
| 5865 | <key>include</key> | |
| 5866 | <string>#this-literal</string> | |
| 5867 | </dict> | |
| 5868 | <dict> | |
| 5869 | <key>include</key> | |
| 5870 | <string>#super-literal</string> | |
| 5871 | </dict> | |
| 5872 | </array> | |
| 5873 | </dict> | |
| 5874 | <key>array-literal</key> | |
| 5875 | <dict> | |
| 5876 | <key>name</key> | |
| 5877 | <string>meta.array.literal.tsx</string> | |
| 5878 | <key>begin</key> | |
| 5879 | <string>\s*(\[)</string> | |
| 5880 | <key>beginCaptures</key> | |
| 5881 | <dict> | |
| 5882 | <key>1</key> | |
| 5883 | <dict> | |
| 5884 | <key>name</key> | |
| 5885 | <string>meta.brace.square.tsx</string> | |
| 5886 | </dict> | |
| 5887 | </dict> | |
| 5888 | <key>end</key> | |
| 5889 | <string>\]</string> | |
| 5890 | <key>endCaptures</key> | |
| 5891 | <dict> | |
| 5892 | <key>0</key> | |
| 5893 | <dict> | |
| 5894 | <key>name</key> | |
| 5895 | <string>meta.brace.square.tsx</string> | |
| 5896 | </dict> | |
| 5897 | </dict> | |
| 5898 | <key>patterns</key> | |
| 5899 | <array> | |
| 5900 | <dict> | |
| 5901 | <key>include</key> | |
| 5902 | <string>#expression</string> | |
| 5903 | </dict> | |
| 5904 | <dict> | |
| 5905 | <key>include</key> | |
| 5906 | <string>#punctuation-comma</string> | |
| 5907 | </dict> | |
| 5908 | </array> | |
| 5909 | </dict> | |
| 5910 | <key>numeric-literal</key> | |
| 5911 | <dict> | |
| 5912 | <key>patterns</key> | |
| 5913 | <array> | |
| 5914 | <dict> | |
| 5915 | <key>name</key> | |
| 5916 | <string>constant.numeric.hex.tsx</string> | |
| 5917 | <key>match</key> | |
| 5918 | <string>\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)</string> | |
| 5919 | <key>captures</key> | |
| 5920 | <dict> | |
| 5921 | <key>1</key> | |
| 5922 | <dict> | |
| 5923 | <key>name</key> | |
| 5924 | <string>storage.type.numeric.bigint.tsx</string> | |
| 5925 | </dict> | |
| 5926 | </dict> | |
| 5927 | </dict> | |
| 5928 | <dict> | |
| 5929 | <key>name</key> | |
| 5930 | <string>constant.numeric.binary.tsx</string> | |
| 5931 | <key>match</key> | |
| 5932 | <string>\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)</string> | |
| 5933 | <key>captures</key> | |
| 5934 | <dict> | |
| 5935 | <key>1</key> | |
| 5936 | <dict> | |
| 5937 | <key>name</key> | |
| 5938 | <string>storage.type.numeric.bigint.tsx</string> | |
| 5939 | </dict> | |
| 5940 | </dict> | |
| 5941 | </dict> | |
| 5942 | <dict> | |
| 5943 | <key>name</key> | |
| 5944 | <string>constant.numeric.octal.tsx</string> | |
| 5945 | <key>match</key> | |
| 5946 | <string>\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$)</string> | |
| 5947 | <key>captures</key> | |
| 5948 | <dict> | |
| 5949 | <key>1</key> | |
| 5950 | <dict> | |
| 5951 | <key>name</key> | |
| 5952 | <string>storage.type.numeric.bigint.tsx</string> | |
| 5953 | </dict> | |
| 5954 | </dict> | |
| 5955 | </dict> | |
| 5956 | <dict> | |
| 5957 | <key>match</key> | |
| 5958 | <string>(?x) | |
| 5959 | (?&lt;!\$)(?: | |
| 5960 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3 | |
| 5961 | (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3 | |
| 5962 | (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3 | |
| 5963 | (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3 | |
| 5964 | (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1 | |
| 5965 | (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1. | |
| 5966 | (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1 | |
| 5967 | (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1 | |
| 5968 | )(?!\$)</string> | |
| 5969 | <key>captures</key> | |
| 5970 | <dict> | |
| 5971 | <key>0</key> | |
| 5972 | <dict> | |
| 5973 | <key>name</key> | |
| 5974 | <string>constant.numeric.decimal.tsx</string> | |
| 5975 | </dict> | |
| 5976 | <key>1</key> | |
| 5977 | <dict> | |
| 5978 | <key>name</key> | |
| 5979 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 5980 | </dict> | |
| 5981 | <key>2</key> | |
| 5982 | <dict> | |
| 5983 | <key>name</key> | |
| 5984 | <string>storage.type.numeric.bigint.tsx</string> | |
| 5985 | </dict> | |
| 5986 | <key>3</key> | |
| 5987 | <dict> | |
| 5988 | <key>name</key> | |
| 5989 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 5990 | </dict> | |
| 5991 | <key>4</key> | |
| 5992 | <dict> | |
| 5993 | <key>name</key> | |
| 5994 | <string>storage.type.numeric.bigint.tsx</string> | |
| 5995 | </dict> | |
| 5996 | <key>5</key> | |
| 5997 | <dict> | |
| 5998 | <key>name</key> | |
| 5999 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 6000 | </dict> | |
| 6001 | <key>6</key> | |
| 6002 | <dict> | |
| 6003 | <key>name</key> | |
| 6004 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6005 | </dict> | |
| 6006 | <key>7</key> | |
| 6007 | <dict> | |
| 6008 | <key>name</key> | |
| 6009 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6010 | </dict> | |
| 6011 | <key>8</key> | |
| 6012 | <dict> | |
| 6013 | <key>name</key> | |
| 6014 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 6015 | </dict> | |
| 6016 | <key>9</key> | |
| 6017 | <dict> | |
| 6018 | <key>name</key> | |
| 6019 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6020 | </dict> | |
| 6021 | <key>10</key> | |
| 6022 | <dict> | |
| 6023 | <key>name</key> | |
| 6024 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 6025 | </dict> | |
| 6026 | <key>11</key> | |
| 6027 | <dict> | |
| 6028 | <key>name</key> | |
| 6029 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6030 | </dict> | |
| 6031 | <key>12</key> | |
| 6032 | <dict> | |
| 6033 | <key>name</key> | |
| 6034 | <string>meta.delimiter.decimal.period.tsx</string> | |
| 6035 | </dict> | |
| 6036 | <key>13</key> | |
| 6037 | <dict> | |
| 6038 | <key>name</key> | |
| 6039 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6040 | </dict> | |
| 6041 | <key>14</key> | |
| 6042 | <dict> | |
| 6043 | <key>name</key> | |
| 6044 | <string>storage.type.numeric.bigint.tsx</string> | |
| 6045 | </dict> | |
| 6046 | </dict> | |
| 6047 | </dict> | |
| 6048 | </array> | |
| 6049 | </dict> | |
| 6050 | <key>boolean-literal</key> | |
| 6051 | <dict> | |
| 6052 | <key>patterns</key> | |
| 6053 | <array> | |
| 6054 | <dict> | |
| 6055 | <key>name</key> | |
| 6056 | <string>constant.language.boolean.true.tsx</string> | |
| 6057 | <key>match</key> | |
| 6058 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))true(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6059 | </dict> | |
| 6060 | <dict> | |
| 6061 | <key>name</key> | |
| 6062 | <string>constant.language.boolean.false.tsx</string> | |
| 6063 | <key>match</key> | |
| 6064 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))false(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6065 | </dict> | |
| 6066 | </array> | |
| 6067 | </dict> | |
| 6068 | <key>null-literal</key> | |
| 6069 | <dict> | |
| 6070 | <key>name</key> | |
| 6071 | <string>constant.language.null.tsx</string> | |
| 6072 | <key>match</key> | |
| 6073 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6074 | </dict> | |
| 6075 | <key>this-literal</key> | |
| 6076 | <dict> | |
| 6077 | <key>name</key> | |
| 6078 | <string>variable.language.this.tsx</string> | |
| 6079 | <key>match</key> | |
| 6080 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))this\b(?!\$)</string> | |
| 6081 | </dict> | |
| 6082 | <key>super-literal</key> | |
| 6083 | <dict> | |
| 6084 | <key>name</key> | |
| 6085 | <string>variable.language.super.tsx</string> | |
| 6086 | <key>match</key> | |
| 6087 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))super\b(?!\$)</string> | |
| 6088 | </dict> | |
| 6089 | <key>undefined-literal</key> | |
| 6090 | <dict> | |
| 6091 | <key>name</key> | |
| 6092 | <string>constant.language.undefined.tsx</string> | |
| 6093 | <key>match</key> | |
| 6094 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6095 | </dict> | |
| 6096 | <key>numericConstant-literal</key> | |
| 6097 | <dict> | |
| 6098 | <key>patterns</key> | |
| 6099 | <array> | |
| 6100 | <dict> | |
| 6101 | <key>name</key> | |
| 6102 | <string>constant.language.nan.tsx</string> | |
| 6103 | <key>match</key> | |
| 6104 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6105 | </dict> | |
| 6106 | <dict> | |
| 6107 | <key>name</key> | |
| 6108 | <string>constant.language.infinity.tsx</string> | |
| 6109 | <key>match</key> | |
| 6110 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Infinity(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 6111 | </dict> | |
| 6112 | </array> | |
| 6113 | </dict> | |
| 6114 | <key>support-objects</key> | |
| 6115 | <dict> | |
| 6116 | <key>patterns</key> | |
| 6117 | <array> | |
| 6118 | <dict> | |
| 6119 | <key>name</key> | |
| 6120 | <string>variable.language.arguments.tsx</string> | |
| 6121 | <key>match</key> | |
| 6122 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(arguments)\b(?!\$)</string> | |
| 6123 | </dict> | |
| 6124 | <dict> | |
| 6125 | <key>name</key> | |
| 6126 | <string>support.class.builtin.tsx</string> | |
| 6127 | <key>match</key> | |
| 6128 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array | |
| 6129 | |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy | |
| 6130 | |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray | |
| 6131 | |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)</string> | |
| 6132 | </dict> | |
| 6133 | <dict> | |
| 6134 | <key>name</key> | |
| 6135 | <string>support.class.error.tsx</string> | |
| 6136 | <key>match</key> | |
| 6137 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\b(?!\$)</string> | |
| 6138 | </dict> | |
| 6139 | <dict> | |
| 6140 | <key>name</key> | |
| 6141 | <string>support.class.promise.tsx</string> | |
| 6142 | <key>match</key> | |
| 6143 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Promise)\b(?!\$)</string> | |
| 6144 | </dict> | |
| 6145 | <dict> | |
| 6146 | <key>name</key> | |
| 6147 | <string>support.function.tsx</string> | |
| 6148 | <key>match</key> | |
| 6149 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval| | |
| 6150 | isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\s*\()</string> | |
| 6151 | </dict> | |
| 6152 | <dict> | |
| 6153 | <key>match</key> | |
| 6154 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Math)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?: | |
| 6155 | (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp| | |
| 6156 | expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random| | |
| 6157 | round|sign|sin|sinh|sqrt|tan|tanh|trunc) | |
| 6158 | | | |
| 6159 | (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\b(?!\$)</string> | |
| 6160 | <key>captures</key> | |
| 6161 | <dict> | |
| 6162 | <key>1</key> | |
| 6163 | <dict> | |
| 6164 | <key>name</key> | |
| 6165 | <string>support.constant.math.tsx</string> | |
| 6166 | </dict> | |
| 6167 | <key>2</key> | |
| 6168 | <dict> | |
| 6169 | <key>name</key> | |
| 6170 | <string>punctuation.accessor.tsx</string> | |
| 6171 | </dict> | |
| 6172 | <key>3</key> | |
| 6173 | <dict> | |
| 6174 | <key>name</key> | |
| 6175 | <string>punctuation.accessor.optional.tsx</string> | |
| 6176 | </dict> | |
| 6177 | <key>4</key> | |
| 6178 | <dict> | |
| 6179 | <key>name</key> | |
| 6180 | <string>support.function.math.tsx</string> | |
| 6181 | </dict> | |
| 6182 | <key>5</key> | |
| 6183 | <dict> | |
| 6184 | <key>name</key> | |
| 6185 | <string>support.constant.property.math.tsx</string> | |
| 6186 | </dict> | |
| 6187 | </dict> | |
| 6188 | </dict> | |
| 6189 | <dict> | |
| 6190 | <key>match</key> | |
| 6191 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(console)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*( | |
| 6192 | assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log | |
| 6193 | |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\b(?!\$)</string> | |
| 6194 | <key>captures</key> | |
| 6195 | <dict> | |
| 6196 | <key>1</key> | |
| 6197 | <dict> | |
| 6198 | <key>name</key> | |
| 6199 | <string>support.class.console.tsx</string> | |
| 6200 | </dict> | |
| 6201 | <key>2</key> | |
| 6202 | <dict> | |
| 6203 | <key>name</key> | |
| 6204 | <string>punctuation.accessor.tsx</string> | |
| 6205 | </dict> | |
| 6206 | <key>3</key> | |
| 6207 | <dict> | |
| 6208 | <key>name</key> | |
| 6209 | <string>punctuation.accessor.optional.tsx</string> | |
| 6210 | </dict> | |
| 6211 | <key>4</key> | |
| 6212 | <dict> | |
| 6213 | <key>name</key> | |
| 6214 | <string>support.function.console.tsx</string> | |
| 6215 | </dict> | |
| 6216 | </dict> | |
| 6217 | </dict> | |
| 6218 | <dict> | |
| 6219 | <key>match</key> | |
| 6220 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(JSON)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(parse|stringify))?\b(?!\$)</string> | |
| 6221 | <key>captures</key> | |
| 6222 | <dict> | |
| 6223 | <key>1</key> | |
| 6224 | <dict> | |
| 6225 | <key>name</key> | |
| 6226 | <string>support.constant.json.tsx</string> | |
| 6227 | </dict> | |
| 6228 | <key>2</key> | |
| 6229 | <dict> | |
| 6230 | <key>name</key> | |
| 6231 | <string>punctuation.accessor.tsx</string> | |
| 6232 | </dict> | |
| 6233 | <key>3</key> | |
| 6234 | <dict> | |
| 6235 | <key>name</key> | |
| 6236 | <string>punctuation.accessor.optional.tsx</string> | |
| 6237 | </dict> | |
| 6238 | <key>4</key> | |
| 6239 | <dict> | |
| 6240 | <key>name</key> | |
| 6241 | <string>support.function.json.tsx</string> | |
| 6242 | </dict> | |
| 6243 | </dict> | |
| 6244 | </dict> | |
| 6245 | <dict> | |
| 6246 | <key>match</key> | |
| 6247 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(import)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(meta)\b(?!\$)</string> | |
| 6248 | <key>captures</key> | |
| 6249 | <dict> | |
| 6250 | <key>1</key> | |
| 6251 | <dict> | |
| 6252 | <key>name</key> | |
| 6253 | <string>keyword.control.import.tsx</string> | |
| 6254 | </dict> | |
| 6255 | <key>2</key> | |
| 6256 | <dict> | |
| 6257 | <key>name</key> | |
| 6258 | <string>punctuation.accessor.tsx</string> | |
| 6259 | </dict> | |
| 6260 | <key>3</key> | |
| 6261 | <dict> | |
| 6262 | <key>name</key> | |
| 6263 | <string>punctuation.accessor.optional.tsx</string> | |
| 6264 | </dict> | |
| 6265 | <key>4</key> | |
| 6266 | <dict> | |
| 6267 | <key>name</key> | |
| 6268 | <string>support.variable.property.importmeta.tsx</string> | |
| 6269 | </dict> | |
| 6270 | </dict> | |
| 6271 | </dict> | |
| 6272 | <dict> | |
| 6273 | <key>match</key> | |
| 6274 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(target)\b(?!\$)</string> | |
| 6275 | <key>captures</key> | |
| 6276 | <dict> | |
| 6277 | <key>1</key> | |
| 6278 | <dict> | |
| 6279 | <key>name</key> | |
| 6280 | <string>keyword.operator.new.tsx</string> | |
| 6281 | </dict> | |
| 6282 | <key>2</key> | |
| 6283 | <dict> | |
| 6284 | <key>name</key> | |
| 6285 | <string>punctuation.accessor.tsx</string> | |
| 6286 | </dict> | |
| 6287 | <key>3</key> | |
| 6288 | <dict> | |
| 6289 | <key>name</key> | |
| 6290 | <string>punctuation.accessor.optional.tsx</string> | |
| 6291 | </dict> | |
| 6292 | <key>4</key> | |
| 6293 | <dict> | |
| 6294 | <key>name</key> | |
| 6295 | <string>support.variable.property.target.tsx</string> | |
| 6296 | </dict> | |
| 6297 | </dict> | |
| 6298 | </dict> | |
| 6299 | <dict> | |
| 6300 | <key>match</key> | |
| 6301 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?: | |
| 6302 | (?:(constructor|length|prototype|__proto__)\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\()) | |
| 6303 | | | |
| 6304 | (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\b(?!\$)))</string> | |
| 6305 | <key>captures</key> | |
| 6306 | <dict> | |
| 6307 | <key>1</key> | |
| 6308 | <dict> | |
| 6309 | <key>name</key> | |
| 6310 | <string>punctuation.accessor.tsx</string> | |
| 6311 | </dict> | |
| 6312 | <key>2</key> | |
| 6313 | <dict> | |
| 6314 | <key>name</key> | |
| 6315 | <string>punctuation.accessor.optional.tsx</string> | |
| 6316 | </dict> | |
| 6317 | <key>3</key> | |
| 6318 | <dict> | |
| 6319 | <key>name</key> | |
| 6320 | <string>support.variable.property.tsx</string> | |
| 6321 | </dict> | |
| 6322 | <key>4</key> | |
| 6323 | <dict> | |
| 6324 | <key>name</key> | |
| 6325 | <string>support.constant.tsx</string> | |
| 6326 | </dict> | |
| 6327 | </dict> | |
| 6328 | </dict> | |
| 6329 | <dict> | |
| 6330 | <key>match</key> | |
| 6331 | <string>(?x) (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.)) \b (?: | |
| 6332 | (document|event|navigator|performance|screen|window) | |
| 6333 | | | |
| 6334 | (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener | |
| 6335 | |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule | |
| 6336 | |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration | |
| 6337 | |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern | |
| 6338 | |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent | |
| 6339 | |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException | |
| 6340 | |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer | |
| 6341 | |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry | |
| 6342 | |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent | |
| 6343 | |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential | |
| 6344 | |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync | |
| 6345 | |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement | |
| 6346 | |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement | |
| 6347 | |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement | |
| 6348 | |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement | |
| 6349 | |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement | |
| 6350 | |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement | |
| 6351 | |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement | |
| 6352 | |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement | |
| 6353 | |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement | |
| 6354 | |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement | |
| 6355 | |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement | |
| 6356 | |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase | |
| 6357 | |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction | |
| 6358 | |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities | |
| 6359 | |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess | |
| 6360 | |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent | |
| 6361 | |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream | |
| 6362 | |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent | |
| 6363 | |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID | |
| 6364 | |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification | |
| 6365 | |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential | |
| 6366 | |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark | |
| 6367 | |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList | |
| 6368 | |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent | |
| 6369 | |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList | |
| 6370 | |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager | |
| 6371 | |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource | |
| 6372 | |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement | |
| 6373 | |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength | |
| 6374 | |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio | |
| 6375 | |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement | |
| 6376 | |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement | |
| 6377 | |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement | |
| 6378 | |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength | |
| 6379 | |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement | |
| 6380 | |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio | |
| 6381 | |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList | |
| 6382 | |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement | |
| 6383 | |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement | |
| 6384 | |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState | |
| 6385 | |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet | |
| 6386 | |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable | |
| 6387 | |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer | |
| 6388 | |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat | |
| 6389 | |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES | |
| 6390 | |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope | |
| 6391 | |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult | |
| 6392 | |XSLTProcessor))\b(?!\$)</string> | |
| 6393 | <key>captures</key> | |
| 6394 | <dict> | |
| 6395 | <key>1</key> | |
| 6396 | <dict> | |
| 6397 | <key>name</key> | |
| 6398 | <string>support.variable.dom.tsx</string> | |
| 6399 | </dict> | |
| 6400 | <key>2</key> | |
| 6401 | <dict> | |
| 6402 | <key>name</key> | |
| 6403 | <string>support.class.dom.tsx</string> | |
| 6404 | </dict> | |
| 6405 | </dict> | |
| 6406 | </dict> | |
| 6407 | <dict> | |
| 6408 | <key>match</key> | |
| 6409 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?: | |
| 6410 | (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE | |
| 6411 | |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR | |
| 6412 | |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR | |
| 6413 | |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR) | |
| 6414 | | | |
| 6415 | (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName | |
| 6416 | |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop | |
| 6417 | |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor | |
| 6418 | |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption | |
| 6419 | |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear | |
| 6420 | |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete | |
| 6421 | |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset | |
| 6422 | |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight | |
| 6423 | |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds | |
| 6424 | |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize | |
| 6425 | |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host | |
| 6426 | |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth | |
| 6427 | |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext | |
| 6428 | |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom | |
| 6429 | |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple | |
| 6430 | |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName | |
| 6431 | |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight | |
| 6432 | |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer | |
| 6433 | |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling | |
| 6434 | |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText | |
| 6435 | |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts | |
| 6436 | |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove | |
| 6437 | |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary | |
| 6438 | |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead | |
| 6439 | |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile | |
| 6440 | |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\()</string> | |
| 6441 | <key>captures</key> | |
| 6442 | <dict> | |
| 6443 | <key>1</key> | |
| 6444 | <dict> | |
| 6445 | <key>name</key> | |
| 6446 | <string>punctuation.accessor.tsx</string> | |
| 6447 | </dict> | |
| 6448 | <key>2</key> | |
| 6449 | <dict> | |
| 6450 | <key>name</key> | |
| 6451 | <string>punctuation.accessor.optional.tsx</string> | |
| 6452 | </dict> | |
| 6453 | <key>3</key> | |
| 6454 | <dict> | |
| 6455 | <key>name</key> | |
| 6456 | <string>support.constant.dom.tsx</string> | |
| 6457 | </dict> | |
| 6458 | <key>4</key> | |
| 6459 | <dict> | |
| 6460 | <key>name</key> | |
| 6461 | <string>support.variable.property.dom.tsx</string> | |
| 6462 | </dict> | |
| 6463 | </dict> | |
| 6464 | </dict> | |
| 6465 | <dict> | |
| 6466 | <key>name</key> | |
| 6467 | <string>support.class.node.tsx</string> | |
| 6468 | <key>match</key> | |
| 6469 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream | |
| 6470 | |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\b(?!\$)</string> | |
| 6471 | </dict> | |
| 6472 | <dict> | |
| 6473 | <key>match</key> | |
| 6474 | <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(process)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?: | |
| 6475 | (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions) | |
| 6476 | | | |
| 6477 | (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime) | |
| 6478 | ))?\b(?!\$)</string> | |
| 6479 | <key>captures</key> | |
| 6480 | <dict> | |
| 6481 | <key>1</key> | |
| 6482 | <dict> | |
| 6483 | <key>name</key> | |
| 6484 | <string>support.variable.object.process.tsx</string> | |
| 6485 | </dict> | |
| 6486 | <key>2</key> | |
| 6487 | <dict> | |
| 6488 | <key>name</key> | |
| 6489 | <string>punctuation.accessor.tsx</string> | |
| 6490 | </dict> | |
| 6491 | <key>3</key> | |
| 6492 | <dict> | |
| 6493 | <key>name</key> | |
| 6494 | <string>punctuation.accessor.optional.tsx</string> | |
| 6495 | </dict> | |
| 6496 | <key>4</key> | |
| 6497 | <dict> | |
| 6498 | <key>name</key> | |
| 6499 | <string>support.variable.property.process.tsx</string> | |
| 6500 | </dict> | |
| 6501 | <key>5</key> | |
| 6502 | <dict> | |
| 6503 | <key>name</key> | |
| 6504 | <string>support.function.process.tsx</string> | |
| 6505 | </dict> | |
| 6506 | </dict> | |
| 6507 | </dict> | |
| 6508 | <dict> | |
| 6509 | <key>match</key> | |
| 6510 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(exports)|(module)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\b(?!\$)</string> | |
| 6511 | <key>captures</key> | |
| 6512 | <dict> | |
| 6513 | <key>1</key> | |
| 6514 | <dict> | |
| 6515 | <key>name</key> | |
| 6516 | <string>support.type.object.module.tsx</string> | |
| 6517 | </dict> | |
| 6518 | <key>2</key> | |
| 6519 | <dict> | |
| 6520 | <key>name</key> | |
| 6521 | <string>support.type.object.module.tsx</string> | |
| 6522 | </dict> | |
| 6523 | <key>3</key> | |
| 6524 | <dict> | |
| 6525 | <key>name</key> | |
| 6526 | <string>punctuation.accessor.tsx</string> | |
| 6527 | </dict> | |
| 6528 | <key>4</key> | |
| 6529 | <dict> | |
| 6530 | <key>name</key> | |
| 6531 | <string>punctuation.accessor.optional.tsx</string> | |
| 6532 | </dict> | |
| 6533 | <key>5</key> | |
| 6534 | <dict> | |
| 6535 | <key>name</key> | |
| 6536 | <string>support.type.object.module.tsx</string> | |
| 6537 | </dict> | |
| 6538 | </dict> | |
| 6539 | </dict> | |
| 6540 | <dict> | |
| 6541 | <key>name</key> | |
| 6542 | <string>support.variable.object.node.tsx</string> | |
| 6543 | <key>match</key> | |
| 6544 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(global|GLOBAL|root|__dirname|__filename)\b(?!\$)</string> | |
| 6545 | </dict> | |
| 6546 | <dict> | |
| 6547 | <key>match</key> | |
| 6548 | <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* | |
| 6549 | (?: | |
| 6550 | (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset| | |
| 6551 | Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove| | |
| 6552 | Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)| | |
| 6553 | Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help| | |
| 6554 | Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate| | |
| 6555 | Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover| | |
| 6556 | Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error| | |
| 6557 | Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort) | |
| 6558 | ) | | |
| 6559 | (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages| | |
| 6560 | scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort| | |
| 6561 | sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours| | |
| 6562 | Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)| | |
| 6563 | Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice| | |
| 6564 | savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat| | |
| 6565 | contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup| | |
| 6566 | createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)| | |
| 6567 | test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift| | |
| 6568 | untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse| | |
| 6569 | print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file| | |
| 6570 | fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor| | |
| 6571 | forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert| | |
| 6572 | abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload| | |
| 6573 | releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear| | |
| 6574 | Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)| | |
| 6575 | Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo| | |
| 6576 | moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back | |
| 6577 | ) | | |
| 6578 | (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append| | |
| 6579 | appendChild|appendData|before|blur|canPlayType|captureStream| | |
| 6580 | caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click| | |
| 6581 | cloneContents|cloneNode|cloneRange|close|closest|collapse| | |
| 6582 | compareBoundaryPoints|compareDocumentPosition|comparePoint|contains| | |
| 6583 | convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute| | |
| 6584 | createAttributeNS|createCaption|createCDATASection|createComment| | |
| 6585 | createContextualFragment|createDocument|createDocumentFragment| | |
| 6586 | createDocumentType|createElement|createElementNS|createEntityReference| | |
| 6587 | createEvent|createExpression|createHTMLDocument|createNodeIterator| | |
| 6588 | createNSResolver|createProcessingInstruction|createRange|createShadowRoot| | |
| 6589 | createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete| | |
| 6590 | deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot| | |
| 6591 | deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint| | |
| 6592 | enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen| | |
| 6593 | exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get| | |
| 6594 | getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode| | |
| 6595 | getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads| | |
| 6596 | getClientRects|getContext|getDestinationInsertionPoints|getElementById| | |
| 6597 | getElementsByClassName|getElementsByName|getElementsByTagName| | |
| 6598 | getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate| | |
| 6599 | getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes| | |
| 6600 | hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement| | |
| 6601 | insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData| | |
| 6602 | insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode| | |
| 6603 | isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI| | |
| 6604 | lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild| | |
| 6605 | moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open| | |
| 6606 | parentNode|pause|play|postMessage|prepend|preventDefault|previousNode| | |
| 6607 | previousSibling|probablySupportsContext|queryCommandEnabled| | |
| 6608 | queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue| | |
| 6609 | querySelector|querySelectorAll|registerContentHandler|registerElement| | |
| 6610 | registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute| | |
| 6611 | removeAttributeNode|removeAttributeNS|removeChild|removeEventListener| | |
| 6612 | removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity| | |
| 6613 | requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView| | |
| 6614 | scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute| | |
| 6615 | setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture| | |
| 6616 | setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem| | |
| 6617 | setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore| | |
| 6618 | slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation| | |
| 6619 | submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob| | |
| 6620 | toDataURL|toggle|toString|values|write|writeln | |
| 6621 | ) | | |
| 6622 | (all|catch|finally|race|reject|resolve|then | |
| 6623 | ) | |
| 6624 | )(?=\s*\()</string> | |
| 6625 | <key>captures</key> | |
| 6626 | <dict> | |
| 6627 | <key>1</key> | |
| 6628 | <dict> | |
| 6629 | <key>name</key> | |
| 6630 | <string>punctuation.accessor.tsx</string> | |
| 6631 | </dict> | |
| 6632 | <key>2</key> | |
| 6633 | <dict> | |
| 6634 | <key>name</key> | |
| 6635 | <string>punctuation.accessor.optional.tsx</string> | |
| 6636 | </dict> | |
| 6637 | <key>3</key> | |
| 6638 | <dict> | |
| 6639 | <key>name</key> | |
| 6640 | <string>support.function.event-handler.tsx</string> | |
| 6641 | </dict> | |
| 6642 | <key>4</key> | |
| 6643 | <dict> | |
| 6644 | <key>name</key> | |
| 6645 | <string>support.function.tsx</string> | |
| 6646 | </dict> | |
| 6647 | <key>5</key> | |
| 6648 | <dict> | |
| 6649 | <key>name</key> | |
| 6650 | <string>support.function.dom.tsx</string> | |
| 6651 | </dict> | |
| 6652 | <key>6</key> | |
| 6653 | <dict> | |
| 6654 | <key>name</key> | |
| 6655 | <string>support.function.promise.tsx</string> | |
| 6656 | </dict> | |
| 6657 | </dict> | |
| 6658 | </dict> | |
| 6659 | </array> | |
| 6660 | </dict> | |
| 6661 | <key>identifiers</key> | |
| 6662 | <dict> | |
| 6663 | <key>patterns</key> | |
| 6664 | <array> | |
| 6665 | <dict> | |
| 6666 | <key>include</key> | |
| 6667 | <string>#object-identifiers</string> | |
| 6668 | </dict> | |
| 6669 | <dict> | |
| 6670 | <key>match</key> | |
| 6671 | <string>(?x)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*( | |
| 6672 | ((async\s+)?( | |
| 6673 | (function\s*[(&lt;*]) | | |
| 6674 | (function\s+) | | |
| 6675 | ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;) | |
| 6676 | )) | | |
| 6677 | ((async\s*)?( | |
| 6678 | ((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) | | |
| 6679 | # sure shot arrow functions even if =&gt; is on new line | |
| 6680 | ( | |
| 6681 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? | |
| 6682 | [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)* | |
| 6683 | ( | |
| 6684 | ([)]\s*:) | # (): | |
| 6685 | ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: | |
| 6686 | ) | |
| 6687 | ) | | |
| 6688 | ( | |
| 6689 | [&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends | |
| 6690 | ) | | |
| 6691 | # arrow function possible to detect only with =&gt; on same line | |
| 6692 | ( | |
| 6693 | (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters | |
| 6694 | \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters | |
| 6695 | (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type | |
| 6696 | \s*=&gt; # arrow operator | |
| 6697 | ) | |
| 6698 | )) | |
| 6699 | ))</string> | |
| 6700 | <key>captures</key> | |
| 6701 | <dict> | |
| 6702 | <key>1</key> | |
| 6703 | <dict> | |
| 6704 | <key>name</key> | |
| 6705 | <string>punctuation.accessor.tsx</string> | |
| 6706 | </dict> | |
| 6707 | <key>2</key> | |
| 6708 | <dict> | |
| 6709 | <key>name</key> | |
| 6710 | <string>punctuation.accessor.optional.tsx</string> | |
| 6711 | </dict> | |
| 6712 | <key>3</key> | |
| 6713 | <dict> | |
| 6714 | <key>name</key> | |
| 6715 | <string>entity.name.function.tsx</string> | |
| 6716 | </dict> | |
| 6717 | </dict> | |
| 6718 | </dict> | |
| 6719 | <dict> | |
| 6720 | <key>match</key> | |
| 6721 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string> | |
| 6722 | <key>captures</key> | |
| 6723 | <dict> | |
| 6724 | <key>1</key> | |
| 6725 | <dict> | |
| 6726 | <key>name</key> | |
| 6727 | <string>punctuation.accessor.tsx</string> | |
| 6728 | </dict> | |
| 6729 | <key>2</key> | |
| 6730 | <dict> | |
| 6731 | <key>name</key> | |
| 6732 | <string>punctuation.accessor.optional.tsx</string> | |
| 6733 | </dict> | |
| 6734 | <key>3</key> | |
| 6735 | <dict> | |
| 6736 | <key>name</key> | |
| 6737 | <string>variable.other.constant.property.tsx</string> | |
| 6738 | </dict> | |
| 6739 | </dict> | |
| 6740 | </dict> | |
| 6741 | <dict> | |
| 6742 | <key>match</key> | |
| 6743 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6744 | <key>captures</key> | |
| 6745 | <dict> | |
| 6746 | <key>1</key> | |
| 6747 | <dict> | |
| 6748 | <key>name</key> | |
| 6749 | <string>punctuation.accessor.tsx</string> | |
| 6750 | </dict> | |
| 6751 | <key>2</key> | |
| 6752 | <dict> | |
| 6753 | <key>name</key> | |
| 6754 | <string>punctuation.accessor.optional.tsx</string> | |
| 6755 | </dict> | |
| 6756 | <key>3</key> | |
| 6757 | <dict> | |
| 6758 | <key>name</key> | |
| 6759 | <string>variable.other.property.tsx</string> | |
| 6760 | </dict> | |
| 6761 | </dict> | |
| 6762 | </dict> | |
| 6763 | <dict> | |
| 6764 | <key>name</key> | |
| 6765 | <string>variable.other.constant.tsx</string> | |
| 6766 | <key>match</key> | |
| 6767 | <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string> | |
| 6768 | </dict> | |
| 6769 | <dict> | |
| 6770 | <key>name</key> | |
| 6771 | <string>variable.other.readwrite.tsx</string> | |
| 6772 | <key>match</key> | |
| 6773 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 6774 | </dict> | |
| 6775 | </array> | |
| 6776 | </dict> | |
| 6777 | <key>object-identifiers</key> | |
| 6778 | <dict> | |
| 6779 | <key>patterns</key> | |
| 6780 | <array> | |
| 6781 | <dict> | |
| 6782 | <key>name</key> | |
| 6783 | <string>support.class.tsx</string> | |
| 6784 | <key>match</key> | |
| 6785 | <string>([_$[:alpha:]][_$[:alnum:]]*)(?=\s*\??\.\s*prototype\b(?!\$))</string> | |
| 6786 | </dict> | |
| 6787 | <dict> | |
| 6788 | <key>match</key> | |
| 6789 | <string>(?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?: | |
| 6790 | (\#?[[:upper:]][_$[:digit:][:upper:]]*) | | |
| 6791 | (\#?[_$[:alpha:]][_$[:alnum:]]*) | |
| 6792 | )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6793 | <key>captures</key> | |
| 6794 | <dict> | |
| 6795 | <key>1</key> | |
| 6796 | <dict> | |
| 6797 | <key>name</key> | |
| 6798 | <string>punctuation.accessor.tsx</string> | |
| 6799 | </dict> | |
| 6800 | <key>2</key> | |
| 6801 | <dict> | |
| 6802 | <key>name</key> | |
| 6803 | <string>punctuation.accessor.optional.tsx</string> | |
| 6804 | </dict> | |
| 6805 | <key>3</key> | |
| 6806 | <dict> | |
| 6807 | <key>name</key> | |
| 6808 | <string>variable.other.constant.object.property.tsx</string> | |
| 6809 | </dict> | |
| 6810 | <key>4</key> | |
| 6811 | <dict> | |
| 6812 | <key>name</key> | |
| 6813 | <string>variable.other.object.property.tsx</string> | |
| 6814 | </dict> | |
| 6815 | </dict> | |
| 6816 | </dict> | |
| 6817 | <dict> | |
| 6818 | <key>match</key> | |
| 6819 | <string>(?x)(?: | |
| 6820 | ([[:upper:]][_$[:digit:][:upper:]]*) | | |
| 6821 | ([_$[:alpha:]][_$[:alnum:]]*) | |
| 6822 | )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 6823 | <key>captures</key> | |
| 6824 | <dict> | |
| 6825 | <key>1</key> | |
| 6826 | <dict> | |
| 6827 | <key>name</key> | |
| 6828 | <string>variable.other.constant.object.tsx</string> | |
| 6829 | </dict> | |
| 6830 | <key>2</key> | |
| 6831 | <dict> | |
| 6832 | <key>name</key> | |
| 6833 | <string>variable.other.object.tsx</string> | |
| 6834 | </dict> | |
| 6835 | </dict> | |
| 6836 | </dict> | |
| 6837 | </array> | |
| 6838 | </dict> | |
| 6839 | <key>type-annotation</key> | |
| 6840 | <dict> | |
| 6841 | <key>patterns</key> | |
| 6842 | <array> | |
| 6843 | <dict> | |
| 6844 | <key>name</key> | |
| 6845 | <string>meta.type.annotation.tsx</string> | |
| 6846 | <key>begin</key> | |
| 6847 | <string>(:)(?=\s*\S)</string> | |
| 6848 | <key>beginCaptures</key> | |
| 6849 | <dict> | |
| 6850 | <key>1</key> | |
| 6851 | <dict> | |
| 6852 | <key>name</key> | |
| 6853 | <string>keyword.operator.type.annotation.tsx</string> | |
| 6854 | </dict> | |
| 6855 | </dict> | |
| 6856 | <key>end</key> | |
| 6857 | <string>(?&lt;![:|&amp;])(?!\s*[|&amp;]\s+)((?=^|[,);\}\]]|//)|(?==[^&gt;])|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string> | |
| 6858 | <key>patterns</key> | |
| 6859 | <array> | |
| 6860 | <dict> | |
| 6861 | <key>include</key> | |
| 6862 | <string>#type</string> | |
| 6863 | </dict> | |
| 6864 | </array> | |
| 6865 | </dict> | |
| 6866 | <dict> | |
| 6867 | <key>name</key> | |
| 6868 | <string>meta.type.annotation.tsx</string> | |
| 6869 | <key>begin</key> | |
| 6870 | <string>(:)</string> | |
| 6871 | <key>beginCaptures</key> | |
| 6872 | <dict> | |
| 6873 | <key>1</key> | |
| 6874 | <dict> | |
| 6875 | <key>name</key> | |
| 6876 | <string>keyword.operator.type.annotation.tsx</string> | |
| 6877 | </dict> | |
| 6878 | </dict> | |
| 6879 | <key>end</key> | |
| 6880 | <string>(?&lt;![:|&amp;])((?=[,);\}\]]|\/\/)|(?==[^&gt;])|(?=^\s*$)|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string> | |
| 6881 | <key>patterns</key> | |
| 6882 | <array> | |
| 6883 | <dict> | |
| 6884 | <key>include</key> | |
| 6885 | <string>#type</string> | |
| 6886 | </dict> | |
| 6887 | </array> | |
| 6888 | </dict> | |
| 6889 | </array> | |
| 6890 | </dict> | |
| 6891 | <key>parameter-type-annotation</key> | |
| 6892 | <dict> | |
| 6893 | <key>patterns</key> | |
| 6894 | <array> | |
| 6895 | <dict> | |
| 6896 | <key>name</key> | |
| 6897 | <string>meta.type.annotation.tsx</string> | |
| 6898 | <key>begin</key> | |
| 6899 | <string>(:)</string> | |
| 6900 | <key>beginCaptures</key> | |
| 6901 | <dict> | |
| 6902 | <key>1</key> | |
| 6903 | <dict> | |
| 6904 | <key>name</key> | |
| 6905 | <string>keyword.operator.type.annotation.tsx</string> | |
| 6906 | </dict> | |
| 6907 | </dict> | |
| 6908 | <key>end</key> | |
| 6909 | <string>(?=[,)])|(?==[^&gt;])</string> | |
| 6910 | <key>patterns</key> | |
| 6911 | <array> | |
| 6912 | <dict> | |
| 6913 | <key>include</key> | |
| 6914 | <string>#type</string> | |
| 6915 | </dict> | |
| 6916 | </array> | |
| 6917 | </dict> | |
| 6918 | </array> | |
| 6919 | </dict> | |
| 6920 | <key>return-type</key> | |
| 6921 | <dict> | |
| 6922 | <key>patterns</key> | |
| 6923 | <array> | |
| 6924 | <dict> | |
| 6925 | <key>name</key> | |
| 6926 | <string>meta.return.type.tsx</string> | |
| 6927 | <key>begin</key> | |
| 6928 | <string>(?&lt;=\))\s*(:)(?=\s*\S)</string> | |
| 6929 | <key>beginCaptures</key> | |
| 6930 | <dict> | |
| 6931 | <key>1</key> | |
| 6932 | <dict> | |
| 6933 | <key>name</key> | |
| 6934 | <string>keyword.operator.type.annotation.tsx</string> | |
| 6935 | </dict> | |
| 6936 | </dict> | |
| 6937 | <key>end</key> | |
| 6938 | <string>(?&lt;![:|&amp;])(?=$|^|[{};,]|//)</string> | |
| 6939 | <key>patterns</key> | |
| 6940 | <array> | |
| 6941 | <dict> | |
| 6942 | <key>include</key> | |
| 6943 | <string>#return-type-core</string> | |
| 6944 | </dict> | |
| 6945 | </array> | |
| 6946 | </dict> | |
| 6947 | <dict> | |
| 6948 | <key>name</key> | |
| 6949 | <string>meta.return.type.tsx</string> | |
| 6950 | <key>begin</key> | |
| 6951 | <string>(?&lt;=\))\s*(:)</string> | |
| 6952 | <key>beginCaptures</key> | |
| 6953 | <dict> | |
| 6954 | <key>1</key> | |
| 6955 | <dict> | |
| 6956 | <key>name</key> | |
| 6957 | <string>keyword.operator.type.annotation.tsx</string> | |
| 6958 | </dict> | |
| 6959 | </dict> | |
| 6960 | <key>end</key> | |
| 6961 | <string>(?&lt;![:|&amp;])((?=[{};,]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string> | |
| 6962 | <key>patterns</key> | |
| 6963 | <array> | |
| 6964 | <dict> | |
| 6965 | <key>include</key> | |
| 6966 | <string>#return-type-core</string> | |
| 6967 | </dict> | |
| 6968 | </array> | |
| 6969 | </dict> | |
| 6970 | </array> | |
| 6971 | </dict> | |
| 6972 | <key>return-type-core</key> | |
| 6973 | <dict> | |
| 6974 | <key>patterns</key> | |
| 6975 | <array> | |
| 6976 | <dict> | |
| 6977 | <key>include</key> | |
| 6978 | <string>#comment</string> | |
| 6979 | </dict> | |
| 6980 | <dict> | |
| 6981 | <key>begin</key> | |
| 6982 | <string>(?&lt;=[:|&amp;])(?=\s*\{)</string> | |
| 6983 | <key>end</key> | |
| 6984 | <string>(?&lt;=\})</string> | |
| 6985 | <key>patterns</key> | |
| 6986 | <array> | |
| 6987 | <dict> | |
| 6988 | <key>include</key> | |
| 6989 | <string>#type-object</string> | |
| 6990 | </dict> | |
| 6991 | </array> | |
| 6992 | </dict> | |
| 6993 | <dict> | |
| 6994 | <key>include</key> | |
| 6995 | <string>#type-predicate-operator</string> | |
| 6996 | </dict> | |
| 6997 | <dict> | |
| 6998 | <key>include</key> | |
| 6999 | <string>#type</string> | |
| 7000 | </dict> | |
| 7001 | </array> | |
| 7002 | </dict> | |
| 7003 | <key>arrow-return-type</key> | |
| 7004 | <dict> | |
| 7005 | <key>name</key> | |
| 7006 | <string>meta.return.type.arrow.tsx</string> | |
| 7007 | <key>begin</key> | |
| 7008 | <string>(?&lt;=\))\s*(:)</string> | |
| 7009 | <key>beginCaptures</key> | |
| 7010 | <dict> | |
| 7011 | <key>1</key> | |
| 7012 | <dict> | |
| 7013 | <key>name</key> | |
| 7014 | <string>keyword.operator.type.annotation.tsx</string> | |
| 7015 | </dict> | |
| 7016 | </dict> | |
| 7017 | <key>end</key> | |
| 7018 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 7019 | <key>patterns</key> | |
| 7020 | <array> | |
| 7021 | <dict> | |
| 7022 | <key>include</key> | |
| 7023 | <string>#arrow-return-type-body</string> | |
| 7024 | </dict> | |
| 7025 | </array> | |
| 7026 | </dict> | |
| 7027 | <key>possibly-arrow-return-type</key> | |
| 7028 | <dict> | |
| 7029 | <key>begin</key> | |
| 7030 | <string>(?&lt;=\)|^)\s*(:)(?=\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*=&gt;)</string> | |
| 7031 | <key>beginCaptures</key> | |
| 7032 | <dict> | |
| 7033 | <key>1</key> | |
| 7034 | <dict> | |
| 7035 | <key>name</key> | |
| 7036 | <string>meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx</string> | |
| 7037 | </dict> | |
| 7038 | </dict> | |
| 7039 | <key>end</key> | |
| 7040 | <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string> | |
| 7041 | <key>contentName</key> | |
| 7042 | <string>meta.arrow.tsx meta.return.type.arrow.tsx</string> | |
| 7043 | <key>patterns</key> | |
| 7044 | <array> | |
| 7045 | <dict> | |
| 7046 | <key>include</key> | |
| 7047 | <string>#arrow-return-type-body</string> | |
| 7048 | </dict> | |
| 7049 | </array> | |
| 7050 | </dict> | |
| 7051 | <key>arrow-return-type-body</key> | |
| 7052 | <dict> | |
| 7053 | <key>patterns</key> | |
| 7054 | <array> | |
| 7055 | <dict> | |
| 7056 | <key>begin</key> | |
| 7057 | <string>(?&lt;=[:])(?=\s*\{)</string> | |
| 7058 | <key>end</key> | |
| 7059 | <string>(?&lt;=\})</string> | |
| 7060 | <key>patterns</key> | |
| 7061 | <array> | |
| 7062 | <dict> | |
| 7063 | <key>include</key> | |
| 7064 | <string>#type-object</string> | |
| 7065 | </dict> | |
| 7066 | </array> | |
| 7067 | </dict> | |
| 7068 | <dict> | |
| 7069 | <key>include</key> | |
| 7070 | <string>#type-predicate-operator</string> | |
| 7071 | </dict> | |
| 7072 | <dict> | |
| 7073 | <key>include</key> | |
| 7074 | <string>#type</string> | |
| 7075 | </dict> | |
| 7076 | </array> | |
| 7077 | </dict> | |
| 7078 | <key>type-parameters</key> | |
| 7079 | <dict> | |
| 7080 | <key>name</key> | |
| 7081 | <string>meta.type.parameters.tsx</string> | |
| 7082 | <key>begin</key> | |
| 7083 | <string>(&lt;)</string> | |
| 7084 | <key>beginCaptures</key> | |
| 7085 | <dict> | |
| 7086 | <key>1</key> | |
| 7087 | <dict> | |
| 7088 | <key>name</key> | |
| 7089 | <string>punctuation.definition.typeparameters.begin.tsx</string> | |
| 7090 | </dict> | |
| 7091 | </dict> | |
| 7092 | <key>end</key> | |
| 7093 | <string>(&gt;)</string> | |
| 7094 | <key>endCaptures</key> | |
| 7095 | <dict> | |
| 7096 | <key>1</key> | |
| 7097 | <dict> | |
| 7098 | <key>name</key> | |
| 7099 | <string>punctuation.definition.typeparameters.end.tsx</string> | |
| 7100 | </dict> | |
| 7101 | </dict> | |
| 7102 | <key>patterns</key> | |
| 7103 | <array> | |
| 7104 | <dict> | |
| 7105 | <key>include</key> | |
| 7106 | <string>#comment</string> | |
| 7107 | </dict> | |
| 7108 | <dict> | |
| 7109 | <key>name</key> | |
| 7110 | <string>storage.modifier.tsx</string> | |
| 7111 | <key>match</key> | |
| 7112 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7113 | </dict> | |
| 7114 | <dict> | |
| 7115 | <key>include</key> | |
| 7116 | <string>#type</string> | |
| 7117 | </dict> | |
| 7118 | <dict> | |
| 7119 | <key>include</key> | |
| 7120 | <string>#punctuation-comma</string> | |
| 7121 | </dict> | |
| 7122 | <dict> | |
| 7123 | <key>name</key> | |
| 7124 | <string>keyword.operator.assignment.tsx</string> | |
| 7125 | <key>match</key> | |
| 7126 | <string>(=)(?!&gt;)</string> | |
| 7127 | </dict> | |
| 7128 | </array> | |
| 7129 | </dict> | |
| 7130 | <key>type-arguments</key> | |
| 7131 | <dict> | |
| 7132 | <key>name</key> | |
| 7133 | <string>meta.type.parameters.tsx</string> | |
| 7134 | <key>begin</key> | |
| 7135 | <string>\&lt;</string> | |
| 7136 | <key>beginCaptures</key> | |
| 7137 | <dict> | |
| 7138 | <key>0</key> | |
| 7139 | <dict> | |
| 7140 | <key>name</key> | |
| 7141 | <string>punctuation.definition.typeparameters.begin.tsx</string> | |
| 7142 | </dict> | |
| 7143 | </dict> | |
| 7144 | <key>end</key> | |
| 7145 | <string>\&gt;</string> | |
| 7146 | <key>endCaptures</key> | |
| 7147 | <dict> | |
| 7148 | <key>0</key> | |
| 7149 | <dict> | |
| 7150 | <key>name</key> | |
| 7151 | <string>punctuation.definition.typeparameters.end.tsx</string> | |
| 7152 | </dict> | |
| 7153 | </dict> | |
| 7154 | <key>patterns</key> | |
| 7155 | <array> | |
| 7156 | <dict> | |
| 7157 | <key>include</key> | |
| 7158 | <string>#type-arguments-body</string> | |
| 7159 | </dict> | |
| 7160 | </array> | |
| 7161 | </dict> | |
| 7162 | <key>type-arguments-body</key> | |
| 7163 | <dict> | |
| 7164 | <key>patterns</key> | |
| 7165 | <array> | |
| 7166 | <dict> | |
| 7167 | <key>match</key> | |
| 7168 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(_)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7169 | <key>captures</key> | |
| 7170 | <dict> | |
| 7171 | <key>0</key> | |
| 7172 | <dict> | |
| 7173 | <key>name</key> | |
| 7174 | <string>keyword.operator.type.tsx</string> | |
| 7175 | </dict> | |
| 7176 | </dict> | |
| 7177 | </dict> | |
| 7178 | <dict> | |
| 7179 | <key>include</key> | |
| 7180 | <string>#type</string> | |
| 7181 | </dict> | |
| 7182 | <dict> | |
| 7183 | <key>include</key> | |
| 7184 | <string>#punctuation-comma</string> | |
| 7185 | </dict> | |
| 7186 | </array> | |
| 7187 | </dict> | |
| 7188 | <key>type</key> | |
| 7189 | <dict> | |
| 7190 | <key>patterns</key> | |
| 7191 | <array> | |
| 7192 | <dict> | |
| 7193 | <key>include</key> | |
| 7194 | <string>#comment</string> | |
| 7195 | </dict> | |
| 7196 | <dict> | |
| 7197 | <key>include</key> | |
| 7198 | <string>#type-string</string> | |
| 7199 | </dict> | |
| 7200 | <dict> | |
| 7201 | <key>include</key> | |
| 7202 | <string>#numeric-literal</string> | |
| 7203 | </dict> | |
| 7204 | <dict> | |
| 7205 | <key>include</key> | |
| 7206 | <string>#type-primitive</string> | |
| 7207 | </dict> | |
| 7208 | <dict> | |
| 7209 | <key>include</key> | |
| 7210 | <string>#type-builtin-literals</string> | |
| 7211 | </dict> | |
| 7212 | <dict> | |
| 7213 | <key>include</key> | |
| 7214 | <string>#type-parameters</string> | |
| 7215 | </dict> | |
| 7216 | <dict> | |
| 7217 | <key>include</key> | |
| 7218 | <string>#type-tuple</string> | |
| 7219 | </dict> | |
| 7220 | <dict> | |
| 7221 | <key>include</key> | |
| 7222 | <string>#type-object</string> | |
| 7223 | </dict> | |
| 7224 | <dict> | |
| 7225 | <key>include</key> | |
| 7226 | <string>#type-operators</string> | |
| 7227 | </dict> | |
| 7228 | <dict> | |
| 7229 | <key>include</key> | |
| 7230 | <string>#type-conditional</string> | |
| 7231 | </dict> | |
| 7232 | <dict> | |
| 7233 | <key>include</key> | |
| 7234 | <string>#type-fn-type-parameters</string> | |
| 7235 | </dict> | |
| 7236 | <dict> | |
| 7237 | <key>include</key> | |
| 7238 | <string>#type-paren-or-function-parameters</string> | |
| 7239 | </dict> | |
| 7240 | <dict> | |
| 7241 | <key>include</key> | |
| 7242 | <string>#type-function-return-type</string> | |
| 7243 | </dict> | |
| 7244 | <dict> | |
| 7245 | <key>match</key> | |
| 7246 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string> | |
| 7247 | <key>captures</key> | |
| 7248 | <dict> | |
| 7249 | <key>1</key> | |
| 7250 | <dict> | |
| 7251 | <key>name</key> | |
| 7252 | <string>storage.modifier.tsx</string> | |
| 7253 | </dict> | |
| 7254 | </dict> | |
| 7255 | </dict> | |
| 7256 | <dict> | |
| 7257 | <key>include</key> | |
| 7258 | <string>#type-name</string> | |
| 7259 | </dict> | |
| 7260 | </array> | |
| 7261 | </dict> | |
| 7262 | <key>type-primitive</key> | |
| 7263 | <dict> | |
| 7264 | <key>name</key> | |
| 7265 | <string>support.type.primitive.tsx</string> | |
| 7266 | <key>match</key> | |
| 7267 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7268 | </dict> | |
| 7269 | <key>type-builtin-literals</key> | |
| 7270 | <dict> | |
| 7271 | <key>name</key> | |
| 7272 | <string>support.type.builtin.tsx</string> | |
| 7273 | <key>match</key> | |
| 7274 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7275 | </dict> | |
| 7276 | <key>type-tuple</key> | |
| 7277 | <dict> | |
| 7278 | <key>name</key> | |
| 7279 | <string>meta.type.tuple.tsx</string> | |
| 7280 | <key>begin</key> | |
| 7281 | <string>\[</string> | |
| 7282 | <key>beginCaptures</key> | |
| 7283 | <dict> | |
| 7284 | <key>0</key> | |
| 7285 | <dict> | |
| 7286 | <key>name</key> | |
| 7287 | <string>meta.brace.square.tsx</string> | |
| 7288 | </dict> | |
| 7289 | </dict> | |
| 7290 | <key>end</key> | |
| 7291 | <string>\]</string> | |
| 7292 | <key>endCaptures</key> | |
| 7293 | <dict> | |
| 7294 | <key>0</key> | |
| 7295 | <dict> | |
| 7296 | <key>name</key> | |
| 7297 | <string>meta.brace.square.tsx</string> | |
| 7298 | </dict> | |
| 7299 | </dict> | |
| 7300 | <key>patterns</key> | |
| 7301 | <array> | |
| 7302 | <dict> | |
| 7303 | <key>name</key> | |
| 7304 | <string>keyword.operator.rest.tsx</string> | |
| 7305 | <key>match</key> | |
| 7306 | <string>\.\.\.</string> | |
| 7307 | </dict> | |
| 7308 | <dict> | |
| 7309 | <key>match</key> | |
| 7310 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([_$[:alpha:]][_$[:alnum:]]*)\s*(\?)?\s*(:)</string> | |
| 7311 | <key>captures</key> | |
| 7312 | <dict> | |
| 7313 | <key>1</key> | |
| 7314 | <dict> | |
| 7315 | <key>name</key> | |
| 7316 | <string>entity.name.label.tsx</string> | |
| 7317 | </dict> | |
| 7318 | <key>2</key> | |
| 7319 | <dict> | |
| 7320 | <key>name</key> | |
| 7321 | <string>keyword.operator.optional.tsx</string> | |
| 7322 | </dict> | |
| 7323 | <key>3</key> | |
| 7324 | <dict> | |
| 7325 | <key>name</key> | |
| 7326 | <string>punctuation.separator.label.tsx</string> | |
| 7327 | </dict> | |
| 7328 | </dict> | |
| 7329 | </dict> | |
| 7330 | <dict> | |
| 7331 | <key>include</key> | |
| 7332 | <string>#type</string> | |
| 7333 | </dict> | |
| 7334 | <dict> | |
| 7335 | <key>include</key> | |
| 7336 | <string>#punctuation-comma</string> | |
| 7337 | </dict> | |
| 7338 | </array> | |
| 7339 | </dict> | |
| 7340 | <key>type-object</key> | |
| 7341 | <dict> | |
| 7342 | <key>name</key> | |
| 7343 | <string>meta.object.type.tsx</string> | |
| 7344 | <key>begin</key> | |
| 7345 | <string>\{</string> | |
| 7346 | <key>beginCaptures</key> | |
| 7347 | <dict> | |
| 7348 | <key>0</key> | |
| 7349 | <dict> | |
| 7350 | <key>name</key> | |
| 7351 | <string>punctuation.definition.block.tsx</string> | |
| 7352 | </dict> | |
| 7353 | </dict> | |
| 7354 | <key>end</key> | |
| 7355 | <string>\}</string> | |
| 7356 | <key>endCaptures</key> | |
| 7357 | <dict> | |
| 7358 | <key>0</key> | |
| 7359 | <dict> | |
| 7360 | <key>name</key> | |
| 7361 | <string>punctuation.definition.block.tsx</string> | |
| 7362 | </dict> | |
| 7363 | </dict> | |
| 7364 | <key>patterns</key> | |
| 7365 | <array> | |
| 7366 | <dict> | |
| 7367 | <key>include</key> | |
| 7368 | <string>#comment</string> | |
| 7369 | </dict> | |
| 7370 | <dict> | |
| 7371 | <key>include</key> | |
| 7372 | <string>#method-declaration</string> | |
| 7373 | </dict> | |
| 7374 | <dict> | |
| 7375 | <key>include</key> | |
| 7376 | <string>#indexer-declaration</string> | |
| 7377 | </dict> | |
| 7378 | <dict> | |
| 7379 | <key>include</key> | |
| 7380 | <string>#indexer-mapped-type-declaration</string> | |
| 7381 | </dict> | |
| 7382 | <dict> | |
| 7383 | <key>include</key> | |
| 7384 | <string>#field-declaration</string> | |
| 7385 | </dict> | |
| 7386 | <dict> | |
| 7387 | <key>include</key> | |
| 7388 | <string>#type-annotation</string> | |
| 7389 | </dict> | |
| 7390 | <dict> | |
| 7391 | <key>begin</key> | |
| 7392 | <string>\.\.\.</string> | |
| 7393 | <key>beginCaptures</key> | |
| 7394 | <dict> | |
| 7395 | <key>0</key> | |
| 7396 | <dict> | |
| 7397 | <key>name</key> | |
| 7398 | <string>keyword.operator.spread.tsx</string> | |
| 7399 | </dict> | |
| 7400 | </dict> | |
| 7401 | <key>end</key> | |
| 7402 | <string>(?=\}|;|,|$)|(?&lt;=\})</string> | |
| 7403 | <key>patterns</key> | |
| 7404 | <array> | |
| 7405 | <dict> | |
| 7406 | <key>include</key> | |
| 7407 | <string>#type</string> | |
| 7408 | </dict> | |
| 7409 | </array> | |
| 7410 | </dict> | |
| 7411 | <dict> | |
| 7412 | <key>include</key> | |
| 7413 | <string>#punctuation-comma</string> | |
| 7414 | </dict> | |
| 7415 | <dict> | |
| 7416 | <key>include</key> | |
| 7417 | <string>#punctuation-semicolon</string> | |
| 7418 | </dict> | |
| 7419 | <dict> | |
| 7420 | <key>include</key> | |
| 7421 | <string>#type</string> | |
| 7422 | </dict> | |
| 7423 | </array> | |
| 7424 | </dict> | |
| 7425 | <key>type-conditional</key> | |
| 7426 | <dict> | |
| 7427 | <key>patterns</key> | |
| 7428 | <array> | |
| 7429 | <dict> | |
| 7430 | <key>begin</key> | |
| 7431 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends)\s+</string> | |
| 7432 | <key>beginCaptures</key> | |
| 7433 | <dict> | |
| 7434 | <key>1</key> | |
| 7435 | <dict> | |
| 7436 | <key>name</key> | |
| 7437 | <string>storage.modifier.tsx</string> | |
| 7438 | </dict> | |
| 7439 | </dict> | |
| 7440 | <key>end</key> | |
| 7441 | <string>(?&lt;=:)</string> | |
| 7442 | <key>patterns</key> | |
| 7443 | <array> | |
| 7444 | <dict> | |
| 7445 | <key>begin</key> | |
| 7446 | <string>\?</string> | |
| 7447 | <key>beginCaptures</key> | |
| 7448 | <dict> | |
| 7449 | <key>0</key> | |
| 7450 | <dict> | |
| 7451 | <key>name</key> | |
| 7452 | <string>keyword.operator.ternary.tsx</string> | |
| 7453 | </dict> | |
| 7454 | </dict> | |
| 7455 | <key>end</key> | |
| 7456 | <string>:</string> | |
| 7457 | <key>endCaptures</key> | |
| 7458 | <dict> | |
| 7459 | <key>0</key> | |
| 7460 | <dict> | |
| 7461 | <key>name</key> | |
| 7462 | <string>keyword.operator.ternary.tsx</string> | |
| 7463 | </dict> | |
| 7464 | </dict> | |
| 7465 | <key>patterns</key> | |
| 7466 | <array> | |
| 7467 | <dict> | |
| 7468 | <key>include</key> | |
| 7469 | <string>#type</string> | |
| 7470 | </dict> | |
| 7471 | </array> | |
| 7472 | </dict> | |
| 7473 | <dict> | |
| 7474 | <key>include</key> | |
| 7475 | <string>#type</string> | |
| 7476 | </dict> | |
| 7477 | </array> | |
| 7478 | </dict> | |
| 7479 | </array> | |
| 7480 | </dict> | |
| 7481 | <key>type-paren-or-function-parameters</key> | |
| 7482 | <dict> | |
| 7483 | <key>name</key> | |
| 7484 | <string>meta.type.paren.cover.tsx</string> | |
| 7485 | <key>begin</key> | |
| 7486 | <string>\(</string> | |
| 7487 | <key>beginCaptures</key> | |
| 7488 | <dict> | |
| 7489 | <key>0</key> | |
| 7490 | <dict> | |
| 7491 | <key>name</key> | |
| 7492 | <string>meta.brace.round.tsx</string> | |
| 7493 | </dict> | |
| 7494 | </dict> | |
| 7495 | <key>end</key> | |
| 7496 | <string>\)</string> | |
| 7497 | <key>endCaptures</key> | |
| 7498 | <dict> | |
| 7499 | <key>0</key> | |
| 7500 | <dict> | |
| 7501 | <key>name</key> | |
| 7502 | <string>meta.brace.round.tsx</string> | |
| 7503 | </dict> | |
| 7504 | </dict> | |
| 7505 | <key>patterns</key> | |
| 7506 | <array> | |
| 7507 | <dict> | |
| 7508 | <key>match</key> | |
| 7509 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*( | |
| 7510 | (&lt;) | | |
| 7511 | ([(]\s*( | |
| 7512 | ([)]) | | |
| 7513 | (\.\.\.) | | |
| 7514 | ([_$[:alnum:]]+\s*( | |
| 7515 | ([:,?=])| | |
| 7516 | ([)]\s*=&gt;) | |
| 7517 | )) | |
| 7518 | )) | |
| 7519 | )) | | |
| 7520 | (:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) | | |
| 7521 | (:\s*((&lt;\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))))</string> | |
| 7522 | <key>captures</key> | |
| 7523 | <dict> | |
| 7524 | <key>1</key> | |
| 7525 | <dict> | |
| 7526 | <key>name</key> | |
| 7527 | <string>storage.modifier.tsx</string> | |
| 7528 | </dict> | |
| 7529 | <key>2</key> | |
| 7530 | <dict> | |
| 7531 | <key>name</key> | |
| 7532 | <string>keyword.operator.rest.tsx</string> | |
| 7533 | </dict> | |
| 7534 | <key>3</key> | |
| 7535 | <dict> | |
| 7536 | <key>name</key> | |
| 7537 | <string>entity.name.function.tsx variable.language.this.tsx</string> | |
| 7538 | </dict> | |
| 7539 | <key>4</key> | |
| 7540 | <dict> | |
| 7541 | <key>name</key> | |
| 7542 | <string>entity.name.function.tsx</string> | |
| 7543 | </dict> | |
| 7544 | <key>5</key> | |
| 7545 | <dict> | |
| 7546 | <key>name</key> | |
| 7547 | <string>keyword.operator.optional.tsx</string> | |
| 7548 | </dict> | |
| 7549 | </dict> | |
| 7550 | </dict> | |
| 7551 | <dict> | |
| 7552 | <key>match</key> | |
| 7553 | <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=:)</string> | |
| 7554 | <key>captures</key> | |
| 7555 | <dict> | |
| 7556 | <key>1</key> | |
| 7557 | <dict> | |
| 7558 | <key>name</key> | |
| 7559 | <string>storage.modifier.tsx</string> | |
| 7560 | </dict> | |
| 7561 | <key>2</key> | |
| 7562 | <dict> | |
| 7563 | <key>name</key> | |
| 7564 | <string>keyword.operator.rest.tsx</string> | |
| 7565 | </dict> | |
| 7566 | <key>3</key> | |
| 7567 | <dict> | |
| 7568 | <key>name</key> | |
| 7569 | <string>variable.parameter.tsx variable.language.this.tsx</string> | |
| 7570 | </dict> | |
| 7571 | <key>4</key> | |
| 7572 | <dict> | |
| 7573 | <key>name</key> | |
| 7574 | <string>variable.parameter.tsx</string> | |
| 7575 | </dict> | |
| 7576 | <key>5</key> | |
| 7577 | <dict> | |
| 7578 | <key>name</key> | |
| 7579 | <string>keyword.operator.optional.tsx</string> | |
| 7580 | </dict> | |
| 7581 | </dict> | |
| 7582 | </dict> | |
| 7583 | <dict> | |
| 7584 | <key>include</key> | |
| 7585 | <string>#type-annotation</string> | |
| 7586 | </dict> | |
| 7587 | <dict> | |
| 7588 | <key>name</key> | |
| 7589 | <string>punctuation.separator.parameter.tsx</string> | |
| 7590 | <key>match</key> | |
| 7591 | <string>,</string> | |
| 7592 | </dict> | |
| 7593 | <dict> | |
| 7594 | <key>include</key> | |
| 7595 | <string>#type</string> | |
| 7596 | </dict> | |
| 7597 | </array> | |
| 7598 | </dict> | |
| 7599 | <key>type-fn-type-parameters</key> | |
| 7600 | <dict> | |
| 7601 | <key>patterns</key> | |
| 7602 | <array> | |
| 7603 | <dict> | |
| 7604 | <key>begin</key> | |
| 7605 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b(?=\s*\&lt;)</string> | |
| 7606 | <key>beginCaptures</key> | |
| 7607 | <dict> | |
| 7608 | <key>1</key> | |
| 7609 | <dict> | |
| 7610 | <key>name</key> | |
| 7611 | <string>meta.type.constructor.tsx storage.modifier.tsx</string> | |
| 7612 | </dict> | |
| 7613 | <key>2</key> | |
| 7614 | <dict> | |
| 7615 | <key>name</key> | |
| 7616 | <string>meta.type.constructor.tsx keyword.control.new.tsx</string> | |
| 7617 | </dict> | |
| 7618 | </dict> | |
| 7619 | <key>end</key> | |
| 7620 | <string>(?&lt;=&gt;)</string> | |
| 7621 | <key>patterns</key> | |
| 7622 | <array> | |
| 7623 | <dict> | |
| 7624 | <key>include</key> | |
| 7625 | <string>#comment</string> | |
| 7626 | </dict> | |
| 7627 | <dict> | |
| 7628 | <key>include</key> | |
| 7629 | <string>#type-parameters</string> | |
| 7630 | </dict> | |
| 7631 | </array> | |
| 7632 | </dict> | |
| 7633 | <dict> | |
| 7634 | <key>name</key> | |
| 7635 | <string>meta.type.constructor.tsx</string> | |
| 7636 | <key>begin</key> | |
| 7637 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b\s*(?=\()</string> | |
| 7638 | <key>beginCaptures</key> | |
| 7639 | <dict> | |
| 7640 | <key>1</key> | |
| 7641 | <dict> | |
| 7642 | <key>name</key> | |
| 7643 | <string>storage.modifier.tsx</string> | |
| 7644 | </dict> | |
| 7645 | <key>2</key> | |
| 7646 | <dict> | |
| 7647 | <key>name</key> | |
| 7648 | <string>keyword.control.new.tsx</string> | |
| 7649 | </dict> | |
| 7650 | </dict> | |
| 7651 | <key>end</key> | |
| 7652 | <string>(?&lt;=\))</string> | |
| 7653 | <key>patterns</key> | |
| 7654 | <array> | |
| 7655 | <dict> | |
| 7656 | <key>include</key> | |
| 7657 | <string>#function-parameters</string> | |
| 7658 | </dict> | |
| 7659 | </array> | |
| 7660 | </dict> | |
| 7661 | <dict> | |
| 7662 | <key>name</key> | |
| 7663 | <string>meta.type.function.tsx</string> | |
| 7664 | <key>begin</key> | |
| 7665 | <string>(?x)( | |
| 7666 | (?= | |
| 7667 | [(]\s*( | |
| 7668 | ([)]) | | |
| 7669 | (\.\.\.) | | |
| 7670 | ([_$[:alnum:]]+\s*( | |
| 7671 | ([:,?=])| | |
| 7672 | ([)]\s*=&gt;) | |
| 7673 | )) | |
| 7674 | ) | |
| 7675 | ) | |
| 7676 | )</string> | |
| 7677 | <key>end</key> | |
| 7678 | <string>(?&lt;=\))</string> | |
| 7679 | <key>patterns</key> | |
| 7680 | <array> | |
| 7681 | <dict> | |
| 7682 | <key>include</key> | |
| 7683 | <string>#function-parameters</string> | |
| 7684 | </dict> | |
| 7685 | </array> | |
| 7686 | </dict> | |
| 7687 | </array> | |
| 7688 | </dict> | |
| 7689 | <key>type-function-return-type</key> | |
| 7690 | <dict> | |
| 7691 | <key>patterns</key> | |
| 7692 | <array> | |
| 7693 | <dict> | |
| 7694 | <key>name</key> | |
| 7695 | <string>meta.type.function.return.tsx</string> | |
| 7696 | <key>begin</key> | |
| 7697 | <string>(=&gt;)(?=\s*\S)</string> | |
| 7698 | <key>beginCaptures</key> | |
| 7699 | <dict> | |
| 7700 | <key>1</key> | |
| 7701 | <dict> | |
| 7702 | <key>name</key> | |
| 7703 | <string>storage.type.function.arrow.tsx</string> | |
| 7704 | </dict> | |
| 7705 | </dict> | |
| 7706 | <key>end</key> | |
| 7707 | <string>(?&lt;!=&gt;)(?&lt;![|&amp;])(?=[,\]\)\{\}=;&gt;:\?]|//|$)</string> | |
| 7708 | <key>patterns</key> | |
| 7709 | <array> | |
| 7710 | <dict> | |
| 7711 | <key>include</key> | |
| 7712 | <string>#type-function-return-type-core</string> | |
| 7713 | </dict> | |
| 7714 | </array> | |
| 7715 | </dict> | |
| 7716 | <dict> | |
| 7717 | <key>name</key> | |
| 7718 | <string>meta.type.function.return.tsx</string> | |
| 7719 | <key>begin</key> | |
| 7720 | <string>=&gt;</string> | |
| 7721 | <key>beginCaptures</key> | |
| 7722 | <dict> | |
| 7723 | <key>0</key> | |
| 7724 | <dict> | |
| 7725 | <key>name</key> | |
| 7726 | <string>storage.type.function.arrow.tsx</string> | |
| 7727 | </dict> | |
| 7728 | </dict> | |
| 7729 | <key>end</key> | |
| 7730 | <string>(?&lt;!=&gt;)(?&lt;![|&amp;])((?=[,\]\)\{\}=;:\?&gt;]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string> | |
| 7731 | <key>patterns</key> | |
| 7732 | <array> | |
| 7733 | <dict> | |
| 7734 | <key>include</key> | |
| 7735 | <string>#type-function-return-type-core</string> | |
| 7736 | </dict> | |
| 7737 | </array> | |
| 7738 | </dict> | |
| 7739 | </array> | |
| 7740 | </dict> | |
| 7741 | <key>type-function-return-type-core</key> | |
| 7742 | <dict> | |
| 7743 | <key>patterns</key> | |
| 7744 | <array> | |
| 7745 | <dict> | |
| 7746 | <key>include</key> | |
| 7747 | <string>#comment</string> | |
| 7748 | </dict> | |
| 7749 | <dict> | |
| 7750 | <key>begin</key> | |
| 7751 | <string>(?&lt;==&gt;)(?=\s*\{)</string> | |
| 7752 | <key>end</key> | |
| 7753 | <string>(?&lt;=\})</string> | |
| 7754 | <key>patterns</key> | |
| 7755 | <array> | |
| 7756 | <dict> | |
| 7757 | <key>include</key> | |
| 7758 | <string>#type-object</string> | |
| 7759 | </dict> | |
| 7760 | </array> | |
| 7761 | </dict> | |
| 7762 | <dict> | |
| 7763 | <key>include</key> | |
| 7764 | <string>#type-predicate-operator</string> | |
| 7765 | </dict> | |
| 7766 | <dict> | |
| 7767 | <key>include</key> | |
| 7768 | <string>#type</string> | |
| 7769 | </dict> | |
| 7770 | </array> | |
| 7771 | </dict> | |
| 7772 | <key>type-operators</key> | |
| 7773 | <dict> | |
| 7774 | <key>patterns</key> | |
| 7775 | <array> | |
| 7776 | <dict> | |
| 7777 | <key>include</key> | |
| 7778 | <string>#typeof-operator</string> | |
| 7779 | </dict> | |
| 7780 | <dict> | |
| 7781 | <key>include</key> | |
| 7782 | <string>#type-infer</string> | |
| 7783 | </dict> | |
| 7784 | <dict> | |
| 7785 | <key>begin</key> | |
| 7786 | <string>([&amp;|])(?=\s*\{)</string> | |
| 7787 | <key>beginCaptures</key> | |
| 7788 | <dict> | |
| 7789 | <key>0</key> | |
| 7790 | <dict> | |
| 7791 | <key>name</key> | |
| 7792 | <string>keyword.operator.type.tsx</string> | |
| 7793 | </dict> | |
| 7794 | </dict> | |
| 7795 | <key>end</key> | |
| 7796 | <string>(?&lt;=\})</string> | |
| 7797 | <key>patterns</key> | |
| 7798 | <array> | |
| 7799 | <dict> | |
| 7800 | <key>include</key> | |
| 7801 | <string>#type-object</string> | |
| 7802 | </dict> | |
| 7803 | </array> | |
| 7804 | </dict> | |
| 7805 | <dict> | |
| 7806 | <key>begin</key> | |
| 7807 | <string>[&amp;|]</string> | |
| 7808 | <key>beginCaptures</key> | |
| 7809 | <dict> | |
| 7810 | <key>0</key> | |
| 7811 | <dict> | |
| 7812 | <key>name</key> | |
| 7813 | <string>keyword.operator.type.tsx</string> | |
| 7814 | </dict> | |
| 7815 | </dict> | |
| 7816 | <key>end</key> | |
| 7817 | <string>(?=\S)</string> | |
| 7818 | </dict> | |
| 7819 | <dict> | |
| 7820 | <key>name</key> | |
| 7821 | <string>keyword.operator.expression.keyof.tsx</string> | |
| 7822 | <key>match</key> | |
| 7823 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))keyof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7824 | </dict> | |
| 7825 | <dict> | |
| 7826 | <key>name</key> | |
| 7827 | <string>keyword.operator.ternary.tsx</string> | |
| 7828 | <key>match</key> | |
| 7829 | <string>(\?|\:)</string> | |
| 7830 | </dict> | |
| 7831 | <dict> | |
| 7832 | <key>name</key> | |
| 7833 | <string>keyword.operator.expression.import.tsx</string> | |
| 7834 | <key>match</key> | |
| 7835 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string> | |
| 7836 | </dict> | |
| 7837 | </array> | |
| 7838 | </dict> | |
| 7839 | <key>type-infer</key> | |
| 7840 | <dict> | |
| 7841 | <key>patterns</key> | |
| 7842 | <array> | |
| 7843 | <dict> | |
| 7844 | <key>match</key> | |
| 7845 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(infer)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s+(extends)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))?</string> | |
| 7846 | <key>name</key> | |
| 7847 | <string>meta.type.infer.tsx</string> | |
| 7848 | <key>captures</key> | |
| 7849 | <dict> | |
| 7850 | <key>1</key> | |
| 7851 | <dict> | |
| 7852 | <key>name</key> | |
| 7853 | <string>keyword.operator.expression.infer.tsx</string> | |
| 7854 | </dict> | |
| 7855 | <key>2</key> | |
| 7856 | <dict> | |
| 7857 | <key>name</key> | |
| 7858 | <string>entity.name.type.tsx</string> | |
| 7859 | </dict> | |
| 7860 | <key>3</key> | |
| 7861 | <dict> | |
| 7862 | <key>name</key> | |
| 7863 | <string>keyword.operator.expression.extends.tsx</string> | |
| 7864 | </dict> | |
| 7865 | </dict> | |
| 7866 | </dict> | |
| 7867 | </array> | |
| 7868 | </dict> | |
| 7869 | <key>type-predicate-operator</key> | |
| 7870 | <dict> | |
| 7871 | <key>patterns</key> | |
| 7872 | <array> | |
| 7873 | <dict> | |
| 7874 | <key>match</key> | |
| 7875 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(asserts)\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s(is)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7876 | <key>captures</key> | |
| 7877 | <dict> | |
| 7878 | <key>1</key> | |
| 7879 | <dict> | |
| 7880 | <key>name</key> | |
| 7881 | <string>keyword.operator.type.asserts.tsx</string> | |
| 7882 | </dict> | |
| 7883 | <key>2</key> | |
| 7884 | <dict> | |
| 7885 | <key>name</key> | |
| 7886 | <string>variable.parameter.tsx variable.language.this.tsx</string> | |
| 7887 | </dict> | |
| 7888 | <key>3</key> | |
| 7889 | <dict> | |
| 7890 | <key>name</key> | |
| 7891 | <string>variable.parameter.tsx</string> | |
| 7892 | </dict> | |
| 7893 | <key>4</key> | |
| 7894 | <dict> | |
| 7895 | <key>name</key> | |
| 7896 | <string>keyword.operator.expression.is.tsx</string> | |
| 7897 | </dict> | |
| 7898 | </dict> | |
| 7899 | </dict> | |
| 7900 | <dict> | |
| 7901 | <key>match</key> | |
| 7902 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(asserts)\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7903 | <key>captures</key> | |
| 7904 | <dict> | |
| 7905 | <key>1</key> | |
| 7906 | <dict> | |
| 7907 | <key>name</key> | |
| 7908 | <string>keyword.operator.type.asserts.tsx</string> | |
| 7909 | </dict> | |
| 7910 | <key>2</key> | |
| 7911 | <dict> | |
| 7912 | <key>name</key> | |
| 7913 | <string>variable.parameter.tsx variable.language.this.tsx</string> | |
| 7914 | </dict> | |
| 7915 | <key>3</key> | |
| 7916 | <dict> | |
| 7917 | <key>name</key> | |
| 7918 | <string>variable.parameter.tsx</string> | |
| 7919 | </dict> | |
| 7920 | </dict> | |
| 7921 | </dict> | |
| 7922 | <dict> | |
| 7923 | <key>name</key> | |
| 7924 | <string>keyword.operator.type.asserts.tsx</string> | |
| 7925 | <key>match</key> | |
| 7926 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))asserts(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7927 | </dict> | |
| 7928 | <dict> | |
| 7929 | <key>name</key> | |
| 7930 | <string>keyword.operator.expression.is.tsx</string> | |
| 7931 | <key>match</key> | |
| 7932 | <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string> | |
| 7933 | </dict> | |
| 7934 | </array> | |
| 7935 | </dict> | |
| 7936 | <key>type-name</key> | |
| 7937 | <dict> | |
| 7938 | <key>patterns</key> | |
| 7939 | <array> | |
| 7940 | <dict> | |
| 7941 | <key>begin</key> | |
| 7942 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(&lt;)</string> | |
| 7943 | <key>captures</key> | |
| 7944 | <dict> | |
| 7945 | <key>1</key> | |
| 7946 | <dict> | |
| 7947 | <key>name</key> | |
| 7948 | <string>entity.name.type.module.tsx</string> | |
| 7949 | </dict> | |
| 7950 | <key>2</key> | |
| 7951 | <dict> | |
| 7952 | <key>name</key> | |
| 7953 | <string>punctuation.accessor.tsx</string> | |
| 7954 | </dict> | |
| 7955 | <key>3</key> | |
| 7956 | <dict> | |
| 7957 | <key>name</key> | |
| 7958 | <string>punctuation.accessor.optional.tsx</string> | |
| 7959 | </dict> | |
| 7960 | <key>4</key> | |
| 7961 | <dict> | |
| 7962 | <key>name</key> | |
| 7963 | <string>meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx</string> | |
| 7964 | </dict> | |
| 7965 | </dict> | |
| 7966 | <key>end</key> | |
| 7967 | <string>(&gt;)</string> | |
| 7968 | <key>endCaptures</key> | |
| 7969 | <dict> | |
| 7970 | <key>1</key> | |
| 7971 | <dict> | |
| 7972 | <key>name</key> | |
| 7973 | <string>meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx</string> | |
| 7974 | </dict> | |
| 7975 | </dict> | |
| 7976 | <key>contentName</key> | |
| 7977 | <string>meta.type.parameters.tsx</string> | |
| 7978 | <key>patterns</key> | |
| 7979 | <array> | |
| 7980 | <dict> | |
| 7981 | <key>include</key> | |
| 7982 | <string>#type-arguments-body</string> | |
| 7983 | </dict> | |
| 7984 | </array> | |
| 7985 | </dict> | |
| 7986 | <dict> | |
| 7987 | <key>begin</key> | |
| 7988 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(&lt;)</string> | |
| 7989 | <key>beginCaptures</key> | |
| 7990 | <dict> | |
| 7991 | <key>1</key> | |
| 7992 | <dict> | |
| 7993 | <key>name</key> | |
| 7994 | <string>entity.name.type.tsx</string> | |
| 7995 | </dict> | |
| 7996 | <key>2</key> | |
| 7997 | <dict> | |
| 7998 | <key>name</key> | |
| 7999 | <string>meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx</string> | |
| 8000 | </dict> | |
| 8001 | </dict> | |
| 8002 | <key>end</key> | |
| 8003 | <string>(&gt;)</string> | |
| 8004 | <key>endCaptures</key> | |
| 8005 | <dict> | |
| 8006 | <key>1</key> | |
| 8007 | <dict> | |
| 8008 | <key>name</key> | |
| 8009 | <string>meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx</string> | |
| 8010 | </dict> | |
| 8011 | </dict> | |
| 8012 | <key>contentName</key> | |
| 8013 | <string>meta.type.parameters.tsx</string> | |
| 8014 | <key>patterns</key> | |
| 8015 | <array> | |
| 8016 | <dict> | |
| 8017 | <key>include</key> | |
| 8018 | <string>#type-arguments-body</string> | |
| 8019 | </dict> | |
| 8020 | </array> | |
| 8021 | </dict> | |
| 8022 | <dict> | |
| 8023 | <key>match</key> | |
| 8024 | <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 8025 | <key>captures</key> | |
| 8026 | <dict> | |
| 8027 | <key>1</key> | |
| 8028 | <dict> | |
| 8029 | <key>name</key> | |
| 8030 | <string>entity.name.type.module.tsx</string> | |
| 8031 | </dict> | |
| 8032 | <key>2</key> | |
| 8033 | <dict> | |
| 8034 | <key>name</key> | |
| 8035 | <string>punctuation.accessor.tsx</string> | |
| 8036 | </dict> | |
| 8037 | <key>3</key> | |
| 8038 | <dict> | |
| 8039 | <key>name</key> | |
| 8040 | <string>punctuation.accessor.optional.tsx</string> | |
| 8041 | </dict> | |
| 8042 | </dict> | |
| 8043 | </dict> | |
| 8044 | <dict> | |
| 8045 | <key>name</key> | |
| 8046 | <string>entity.name.type.tsx</string> | |
| 8047 | <key>match</key> | |
| 8048 | <string>[_$[:alpha:]][_$[:alnum:]]*</string> | |
| 8049 | </dict> | |
| 8050 | </array> | |
| 8051 | </dict> | |
| 8052 | <key>punctuation-comma</key> | |
| 8053 | <dict> | |
| 8054 | <key>name</key> | |
| 8055 | <string>punctuation.separator.comma.tsx</string> | |
| 8056 | <key>match</key> | |
| 8057 | <string>,</string> | |
| 8058 | </dict> | |
| 8059 | <key>punctuation-semicolon</key> | |
| 8060 | <dict> | |
| 8061 | <key>name</key> | |
| 8062 | <string>punctuation.terminator.statement.tsx</string> | |
| 8063 | <key>match</key> | |
| 8064 | <string>;</string> | |
| 8065 | </dict> | |
| 8066 | <key>punctuation-accessor</key> | |
| 8067 | <dict> | |
| 8068 | <key>match</key> | |
| 8069 | <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string> | |
| 8070 | <key>captures</key> | |
| 8071 | <dict> | |
| 8072 | <key>1</key> | |
| 8073 | <dict> | |
| 8074 | <key>name</key> | |
| 8075 | <string>punctuation.accessor.tsx</string> | |
| 8076 | </dict> | |
| 8077 | <key>2</key> | |
| 8078 | <dict> | |
| 8079 | <key>name</key> | |
| 8080 | <string>punctuation.accessor.optional.tsx</string> | |
| 8081 | </dict> | |
| 8082 | </dict> | |
| 8083 | </dict> | |
| 8084 | <key>string</key> | |
| 8085 | <dict> | |
| 8086 | <key>patterns</key> | |
| 8087 | <array> | |
| 8088 | <dict> | |
| 8089 | <key>include</key> | |
| 8090 | <string>#qstring-single</string> | |
| 8091 | </dict> | |
| 8092 | <dict> | |
| 8093 | <key>include</key> | |
| 8094 | <string>#qstring-double</string> | |
| 8095 | </dict> | |
| 8096 | <dict> | |
| 8097 | <key>include</key> | |
| 8098 | <string>#template</string> | |
| 8099 | </dict> | |
| 8100 | </array> | |
| 8101 | </dict> | |
| 8102 | <key>qstring-double</key> | |
| 8103 | <dict> | |
| 8104 | <key>name</key> | |
| 8105 | <string>string.quoted.double.tsx</string> | |
| 8106 | <key>begin</key> | |
| 8107 | <string>"</string> | |
| 8108 | <key>beginCaptures</key> | |
| 8109 | <dict> | |
| 8110 | <key>0</key> | |
| 8111 | <dict> | |
| 8112 | <key>name</key> | |
| 8113 | <string>punctuation.definition.string.begin.tsx</string> | |
| 8114 | </dict> | |
| 8115 | </dict> | |
| 8116 | <key>end</key> | |
| 8117 | <string>(")|((?:[^\\\n])$)</string> | |
| 8118 | <key>endCaptures</key> | |
| 8119 | <dict> | |
| 8120 | <key>1</key> | |
| 8121 | <dict> | |
| 8122 | <key>name</key> | |
| 8123 | <string>punctuation.definition.string.end.tsx</string> | |
| 8124 | </dict> | |
| 8125 | <key>2</key> | |
| 8126 | <dict> | |
| 8127 | <key>name</key> | |
| 8128 | <string>invalid.illegal.newline.tsx</string> | |
| 8129 | </dict> | |
| 8130 | </dict> | |
| 8131 | <key>patterns</key> | |
| 8132 | <array> | |
| 8133 | <dict> | |
| 8134 | <key>include</key> | |
| 8135 | <string>#string-character-escape</string> | |
| 8136 | </dict> | |
| 8137 | </array> | |
| 8138 | </dict> | |
| 8139 | <key>qstring-single</key> | |
| 8140 | <dict> | |
| 8141 | <key>name</key> | |
| 8142 | <string>string.quoted.single.tsx</string> | |
| 8143 | <key>begin</key> | |
| 8144 | <string>'</string> | |
| 8145 | <key>beginCaptures</key> | |
| 8146 | <dict> | |
| 8147 | <key>0</key> | |
| 8148 | <dict> | |
| 8149 | <key>name</key> | |
| 8150 | <string>punctuation.definition.string.begin.tsx</string> | |
| 8151 | </dict> | |
| 8152 | </dict> | |
| 8153 | <key>end</key> | |
| 8154 | <string>(\')|((?:[^\\\n])$)</string> | |
| 8155 | <key>endCaptures</key> | |
| 8156 | <dict> | |
| 8157 | <key>1</key> | |
| 8158 | <dict> | |
| 8159 | <key>name</key> | |
| 8160 | <string>punctuation.definition.string.end.tsx</string> | |
| 8161 | </dict> | |
| 8162 | <key>2</key> | |
| 8163 | <dict> | |
| 8164 | <key>name</key> | |
| 8165 | <string>invalid.illegal.newline.tsx</string> | |
| 8166 | </dict> | |
| 8167 | </dict> | |
| 8168 | <key>patterns</key> | |
| 8169 | <array> | |
| 8170 | <dict> | |
| 8171 | <key>include</key> | |
| 8172 | <string>#string-character-escape</string> | |
| 8173 | </dict> | |
| 8174 | </array> | |
| 8175 | </dict> | |
| 8176 | <key>string-character-escape</key> | |
| 8177 | <dict> | |
| 8178 | <key>name</key> | |
| 8179 | <string>constant.character.escape.tsx</string> | |
| 8180 | <key>match</key> | |
| 8181 | <string>\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]+\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)</string> | |
| 8182 | </dict> | |
| 8183 | <key>template</key> | |
| 8184 | <dict> | |
| 8185 | <key>patterns</key> | |
| 8186 | <array> | |
| 8187 | <dict> | |
| 8188 | <key>include</key> | |
| 8189 | <string>#template-call</string> | |
| 8190 | </dict> | |
| 8191 | <dict> | |
| 8192 | <key>contentName</key> | |
| 8193 | <string>string.template.tsx</string> | |
| 8194 | <key>begin</key> | |
| 8195 | <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string> | |
| 8196 | <key>beginCaptures</key> | |
| 8197 | <dict> | |
| 8198 | <key>1</key> | |
| 8199 | <dict> | |
| 8200 | <key>name</key> | |
| 8201 | <string>entity.name.function.tagged-template.tsx</string> | |
| 8202 | </dict> | |
| 8203 | <key>2</key> | |
| 8204 | <dict> | |
| 8205 | <key>name</key> | |
| 8206 | <string>string.template.tsx punctuation.definition.string.template.begin.tsx</string> | |
| 8207 | </dict> | |
| 8208 | </dict> | |
| 8209 | <key>end</key> | |
| 8210 | <string>`</string> | |
| 8211 | <key>endCaptures</key> | |
| 8212 | <dict> | |
| 8213 | <key>0</key> | |
| 8214 | <dict> | |
| 8215 | <key>name</key> | |
| 8216 | <string>string.template.tsx punctuation.definition.string.template.end.tsx</string> | |
| 8217 | </dict> | |
| 8218 | </dict> | |
| 8219 | <key>patterns</key> | |
| 8220 | <array> | |
| 8221 | <dict> | |
| 8222 | <key>include</key> | |
| 8223 | <string>#template-substitution-element</string> | |
| 8224 | </dict> | |
| 8225 | <dict> | |
| 8226 | <key>include</key> | |
| 8227 | <string>#string-character-escape</string> | |
| 8228 | </dict> | |
| 8229 | </array> | |
| 8230 | </dict> | |
| 8231 | </array> | |
| 8232 | </dict> | |
| 8233 | <key>template-call</key> | |
| 8234 | <dict> | |
| 8235 | <key>patterns</key> | |
| 8236 | <array> | |
| 8237 | <dict> | |
| 8238 | <key>begin</key> | |
| 8239 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string> | |
| 8240 | <key>end</key> | |
| 8241 | <string>(?=`)</string> | |
| 8242 | <key>patterns</key> | |
| 8243 | <array> | |
| 8244 | <dict> | |
| 8245 | <key>begin</key> | |
| 8246 | <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))</string> | |
| 8247 | <key>end</key> | |
| 8248 | <string>(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string> | |
| 8249 | <key>patterns</key> | |
| 8250 | <array> | |
| 8251 | <dict> | |
| 8252 | <key>include</key> | |
| 8253 | <string>#support-function-call-identifiers</string> | |
| 8254 | </dict> | |
| 8255 | <dict> | |
| 8256 | <key>name</key> | |
| 8257 | <string>entity.name.function.tagged-template.tsx</string> | |
| 8258 | <key>match</key> | |
| 8259 | <string>([_$[:alpha:]][_$[:alnum:]]*)</string> | |
| 8260 | </dict> | |
| 8261 | </array> | |
| 8262 | </dict> | |
| 8263 | <dict> | |
| 8264 | <key>include</key> | |
| 8265 | <string>#type-arguments</string> | |
| 8266 | </dict> | |
| 8267 | </array> | |
| 8268 | </dict> | |
| 8269 | <dict> | |
| 8270 | <key>begin</key> | |
| 8271 | <string>([_$[:alpha:]][_$[:alnum:]]*)?\s*(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)`)</string> | |
| 8272 | <key>beginCaptures</key> | |
| 8273 | <dict> | |
| 8274 | <key>1</key> | |
| 8275 | <dict> | |
| 8276 | <key>name</key> | |
| 8277 | <string>entity.name.function.tagged-template.tsx</string> | |
| 8278 | </dict> | |
| 8279 | </dict> | |
| 8280 | <key>end</key> | |
| 8281 | <string>(?=`)</string> | |
| 8282 | <key>patterns</key> | |
| 8283 | <array> | |
| 8284 | <dict> | |
| 8285 | <key>include</key> | |
| 8286 | <string>#type-arguments</string> | |
| 8287 | </dict> | |
| 8288 | </array> | |
| 8289 | </dict> | |
| 8290 | </array> | |
| 8291 | </dict> | |
| 8292 | <key>template-substitution-element</key> | |
| 8293 | <dict> | |
| 8294 | <key>name</key> | |
| 8295 | <string>meta.template.expression.tsx</string> | |
| 8296 | <key>begin</key> | |
| 8297 | <string>\$\{</string> | |
| 8298 | <key>beginCaptures</key> | |
| 8299 | <dict> | |
| 8300 | <key>0</key> | |
| 8301 | <dict> | |
| 8302 | <key>name</key> | |
| 8303 | <string>punctuation.definition.template-expression.begin.tsx</string> | |
| 8304 | </dict> | |
| 8305 | </dict> | |
| 8306 | <key>end</key> | |
| 8307 | <string>\}</string> | |
| 8308 | <key>endCaptures</key> | |
| 8309 | <dict> | |
| 8310 | <key>0</key> | |
| 8311 | <dict> | |
| 8312 | <key>name</key> | |
| 8313 | <string>punctuation.definition.template-expression.end.tsx</string> | |
| 8314 | </dict> | |
| 8315 | </dict> | |
| 8316 | <key>patterns</key> | |
| 8317 | <array> | |
| 8318 | <dict> | |
| 8319 | <key>include</key> | |
| 8320 | <string>#expression</string> | |
| 8321 | </dict> | |
| 8322 | </array> | |
| 8323 | <key>contentName</key> | |
| 8324 | <string>meta.embedded.line.tsx</string> | |
| 8325 | </dict> | |
| 8326 | <key>type-string</key> | |
| 8327 | <dict> | |
| 8328 | <key>patterns</key> | |
| 8329 | <array> | |
| 8330 | <dict> | |
| 8331 | <key>include</key> | |
| 8332 | <string>#qstring-single</string> | |
| 8333 | </dict> | |
| 8334 | <dict> | |
| 8335 | <key>include</key> | |
| 8336 | <string>#qstring-double</string> | |
| 8337 | </dict> | |
| 8338 | <dict> | |
| 8339 | <key>include</key> | |
| 8340 | <string>#template-type</string> | |
| 8341 | </dict> | |
| 8342 | </array> | |
| 8343 | </dict> | |
| 8344 | <key>template-type</key> | |
| 8345 | <dict> | |
| 8346 | <key>patterns</key> | |
| 8347 | <array> | |
| 8348 | <dict> | |
| 8349 | <key>include</key> | |
| 8350 | <string>#template-call</string> | |
| 8351 | </dict> | |
| 8352 | <dict> | |
| 8353 | <key>contentName</key> | |
| 8354 | <string>string.template.tsx</string> | |
| 8355 | <key>begin</key> | |
| 8356 | <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string> | |
| 8357 | <key>beginCaptures</key> | |
| 8358 | <dict> | |
| 8359 | <key>1</key> | |
| 8360 | <dict> | |
| 8361 | <key>name</key> | |
| 8362 | <string>entity.name.function.tagged-template.tsx</string> | |
| 8363 | </dict> | |
| 8364 | <key>2</key> | |
| 8365 | <dict> | |
| 8366 | <key>name</key> | |
| 8367 | <string>string.template.tsx punctuation.definition.string.template.begin.tsx</string> | |
| 8368 | </dict> | |
| 8369 | </dict> | |
| 8370 | <key>end</key> | |
| 8371 | <string>`</string> | |
| 8372 | <key>endCaptures</key> | |
| 8373 | <dict> | |
| 8374 | <key>0</key> | |
| 8375 | <dict> | |
| 8376 | <key>name</key> | |
| 8377 | <string>string.template.tsx punctuation.definition.string.template.end.tsx</string> | |
| 8378 | </dict> | |
| 8379 | </dict> | |
| 8380 | <key>patterns</key> | |
| 8381 | <array> | |
| 8382 | <dict> | |
| 8383 | <key>include</key> | |
| 8384 | <string>#template-type-substitution-element</string> | |
| 8385 | </dict> | |
| 8386 | <dict> | |
| 8387 | <key>include</key> | |
| 8388 | <string>#string-character-escape</string> | |
| 8389 | </dict> | |
| 8390 | </array> | |
| 8391 | </dict> | |
| 8392 | </array> | |
| 8393 | </dict> | |
| 8394 | <key>template-type-substitution-element</key> | |
| 8395 | <dict> | |
| 8396 | <key>name</key> | |
| 8397 | <string>meta.template.expression.tsx</string> | |
| 8398 | <key>begin</key> | |
| 8399 | <string>\$\{</string> | |
| 8400 | <key>beginCaptures</key> | |
| 8401 | <dict> | |
| 8402 | <key>0</key> | |
| 8403 | <dict> | |
| 8404 | <key>name</key> | |
| 8405 | <string>punctuation.definition.template-expression.begin.tsx</string> | |
| 8406 | </dict> | |
| 8407 | </dict> | |
| 8408 | <key>end</key> | |
| 8409 | <string>\}</string> | |
| 8410 | <key>endCaptures</key> | |
| 8411 | <dict> | |
| 8412 | <key>0</key> | |
| 8413 | <dict> | |
| 8414 | <key>name</key> | |
| 8415 | <string>punctuation.definition.template-expression.end.tsx</string> | |
| 8416 | </dict> | |
| 8417 | </dict> | |
| 8418 | <key>patterns</key> | |
| 8419 | <array> | |
| 8420 | <dict> | |
| 8421 | <key>include</key> | |
| 8422 | <string>#type</string> | |
| 8423 | </dict> | |
| 8424 | </array> | |
| 8425 | <key>contentName</key> | |
| 8426 | <string>meta.embedded.line.tsx</string> | |
| 8427 | </dict> | |
| 8428 | <key>regex</key> | |
| 8429 | <dict> | |
| 8430 | <key>patterns</key> | |
| 8431 | <array> | |
| 8432 | <dict> | |
| 8433 | <key>name</key> | |
| 8434 | <string>string.regexp.tsx</string> | |
| 8435 | <key>begin</key> | |
| 8436 | <string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 8437 | <key>beginCaptures</key> | |
| 8438 | <dict> | |
| 8439 | <key>1</key> | |
| 8440 | <dict> | |
| 8441 | <key>name</key> | |
| 8442 | <string>punctuation.definition.string.begin.tsx</string> | |
| 8443 | </dict> | |
| 8444 | </dict> | |
| 8445 | <key>end</key> | |
| 8446 | <string>(/)([dgimsuvy]*)</string> | |
| 8447 | <key>endCaptures</key> | |
| 8448 | <dict> | |
| 8449 | <key>1</key> | |
| 8450 | <dict> | |
| 8451 | <key>name</key> | |
| 8452 | <string>punctuation.definition.string.end.tsx</string> | |
| 8453 | </dict> | |
| 8454 | <key>2</key> | |
| 8455 | <dict> | |
| 8456 | <key>name</key> | |
| 8457 | <string>keyword.other.tsx</string> | |
| 8458 | </dict> | |
| 8459 | </dict> | |
| 8460 | <key>patterns</key> | |
| 8461 | <array> | |
| 8462 | <dict> | |
| 8463 | <key>include</key> | |
| 8464 | <string>#regexp</string> | |
| 8465 | </dict> | |
| 8466 | </array> | |
| 8467 | </dict> | |
| 8468 | <dict> | |
| 8469 | <key>name</key> | |
| 8470 | <string>string.regexp.tsx</string> | |
| 8471 | <key>begin</key> | |
| 8472 | <string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string> | |
| 8473 | <key>beginCaptures</key> | |
| 8474 | <dict> | |
| 8475 | <key>0</key> | |
| 8476 | <dict> | |
| 8477 | <key>name</key> | |
| 8478 | <string>punctuation.definition.string.begin.tsx</string> | |
| 8479 | </dict> | |
| 8480 | </dict> | |
| 8481 | <key>end</key> | |
| 8482 | <string>(/)([dgimsuvy]*)</string> | |
| 8483 | <key>endCaptures</key> | |
| 8484 | <dict> | |
| 8485 | <key>1</key> | |
| 8486 | <dict> | |
| 8487 | <key>name</key> | |
| 8488 | <string>punctuation.definition.string.end.tsx</string> | |
| 8489 | </dict> | |
| 8490 | <key>2</key> | |
| 8491 | <dict> | |
| 8492 | <key>name</key> | |
| 8493 | <string>keyword.other.tsx</string> | |
| 8494 | </dict> | |
| 8495 | </dict> | |
| 8496 | <key>patterns</key> | |
| 8497 | <array> | |
| 8498 | <dict> | |
| 8499 | <key>include</key> | |
| 8500 | <string>#regexp</string> | |
| 8501 | </dict> | |
| 8502 | </array> | |
| 8503 | </dict> | |
| 8504 | </array> | |
| 8505 | </dict> | |
| 8506 | <key>regexp</key> | |
| 8507 | <dict> | |
| 8508 | <key>patterns</key> | |
| 8509 | <array> | |
| 8510 | <dict> | |
| 8511 | <key>name</key> | |
| 8512 | <string>keyword.control.anchor.regexp</string> | |
| 8513 | <key>match</key> | |
| 8514 | <string>\\[bB]|\^|\$</string> | |
| 8515 | </dict> | |
| 8516 | <dict> | |
| 8517 | <key>match</key> | |
| 8518 | <string>\\[1-9]\d*|\\k&lt;([a-zA-Z_$][\w$]*)&gt;</string> | |
| 8519 | <key>captures</key> | |
| 8520 | <dict> | |
| 8521 | <key>0</key> | |
| 8522 | <dict> | |
| 8523 | <key>name</key> | |
| 8524 | <string>keyword.other.back-reference.regexp</string> | |
| 8525 | </dict> | |
| 8526 | <key>1</key> | |
| 8527 | <dict> | |
| 8528 | <key>name</key> | |
| 8529 | <string>variable.other.regexp</string> | |
| 8530 | </dict> | |
| 8531 | </dict> | |
| 8532 | </dict> | |
| 8533 | <dict> | |
| 8534 | <key>name</key> | |
| 8535 | <string>keyword.operator.quantifier.regexp</string> | |
| 8536 | <key>match</key> | |
| 8537 | <string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string> | |
| 8538 | </dict> | |
| 8539 | <dict> | |
| 8540 | <key>name</key> | |
| 8541 | <string>keyword.operator.or.regexp</string> | |
| 8542 | <key>match</key> | |
| 8543 | <string>\|</string> | |
| 8544 | </dict> | |
| 8545 | <dict> | |
| 8546 | <key>name</key> | |
| 8547 | <string>meta.group.assertion.regexp</string> | |
| 8548 | <key>begin</key> | |
| 8549 | <string>(\()((\?=)|(\?!)|(\?&lt;=)|(\?&lt;!))</string> | |
| 8550 | <key>beginCaptures</key> | |
| 8551 | <dict> | |
| 8552 | <key>1</key> | |
| 8553 | <dict> | |
| 8554 | <key>name</key> | |
| 8555 | <string>punctuation.definition.group.regexp</string> | |
| 8556 | </dict> | |
| 8557 | <key>2</key> | |
| 8558 | <dict> | |
| 8559 | <key>name</key> | |
| 8560 | <string>punctuation.definition.group.assertion.regexp</string> | |
| 8561 | </dict> | |
| 8562 | <key>3</key> | |
| 8563 | <dict> | |
| 8564 | <key>name</key> | |
| 8565 | <string>meta.assertion.look-ahead.regexp</string> | |
| 8566 | </dict> | |
| 8567 | <key>4</key> | |
| 8568 | <dict> | |
| 8569 | <key>name</key> | |
| 8570 | <string>meta.assertion.negative-look-ahead.regexp</string> | |
| 8571 | </dict> | |
| 8572 | <key>5</key> | |
| 8573 | <dict> | |
| 8574 | <key>name</key> | |
| 8575 | <string>meta.assertion.look-behind.regexp</string> | |
| 8576 | </dict> | |
| 8577 | <key>6</key> | |
| 8578 | <dict> | |
| 8579 | <key>name</key> | |
| 8580 | <string>meta.assertion.negative-look-behind.regexp</string> | |
| 8581 | </dict> | |
| 8582 | </dict> | |
| 8583 | <key>end</key> | |
| 8584 | <string>(\))</string> | |
| 8585 | <key>endCaptures</key> | |
| 8586 | <dict> | |
| 8587 | <key>1</key> | |
| 8588 | <dict> | |
| 8589 | <key>name</key> | |
| 8590 | <string>punctuation.definition.group.regexp</string> | |
| 8591 | </dict> | |
| 8592 | </dict> | |
| 8593 | <key>patterns</key> | |
| 8594 | <array> | |
| 8595 | <dict> | |
| 8596 | <key>include</key> | |
| 8597 | <string>#regexp</string> | |
| 8598 | </dict> | |
| 8599 | </array> | |
| 8600 | </dict> | |
| 8601 | <dict> | |
| 8602 | <key>name</key> | |
| 8603 | <string>meta.group.regexp</string> | |
| 8604 | <key>begin</key> | |
| 8605 | <string>\((?:(\?:)|(?:\?&lt;([a-zA-Z_$][\w$]*)&gt;))?</string> | |
| 8606 | <key>beginCaptures</key> | |
| 8607 | <dict> | |
| 8608 | <key>0</key> | |
| 8609 | <dict> | |
| 8610 | <key>name</key> | |
| 8611 | <string>punctuation.definition.group.regexp</string> | |
| 8612 | </dict> | |
| 8613 | <key>1</key> | |
| 8614 | <dict> | |
| 8615 | <key>name</key> | |
| 8616 | <string>punctuation.definition.group.no-capture.regexp</string> | |
| 8617 | </dict> | |
| 8618 | <key>2</key> | |
| 8619 | <dict> | |
| 8620 | <key>name</key> | |
| 8621 | <string>variable.other.regexp</string> | |
| 8622 | </dict> | |
| 8623 | </dict> | |
| 8624 | <key>end</key> | |
| 8625 | <string>\)</string> | |
| 8626 | <key>endCaptures</key> | |
| 8627 | <dict> | |
| 8628 | <key>0</key> | |
| 8629 | <dict> | |
| 8630 | <key>name</key> | |
| 8631 | <string>punctuation.definition.group.regexp</string> | |
| 8632 | </dict> | |
| 8633 | </dict> | |
| 8634 | <key>patterns</key> | |
| 8635 | <array> | |
| 8636 | <dict> | |
| 8637 | <key>include</key> | |
| 8638 | <string>#regexp</string> | |
| 8639 | </dict> | |
| 8640 | </array> | |
| 8641 | </dict> | |
| 8642 | <dict> | |
| 8643 | <key>name</key> | |
| 8644 | <string>constant.other.character-class.set.regexp</string> | |
| 8645 | <key>begin</key> | |
| 8646 | <string>(\[)(\^)?</string> | |
| 8647 | <key>beginCaptures</key> | |
| 8648 | <dict> | |
| 8649 | <key>1</key> | |
| 8650 | <dict> | |
| 8651 | <key>name</key> | |
| 8652 | <string>punctuation.definition.character-class.regexp</string> | |
| 8653 | </dict> | |
| 8654 | <key>2</key> | |
| 8655 | <dict> | |
| 8656 | <key>name</key> | |
| 8657 | <string>keyword.operator.negation.regexp</string> | |
| 8658 | </dict> | |
| 8659 | </dict> | |
| 8660 | <key>end</key> | |
| 8661 | <string>(\])</string> | |
| 8662 | <key>endCaptures</key> | |
| 8663 | <dict> | |
| 8664 | <key>1</key> | |
| 8665 | <dict> | |
| 8666 | <key>name</key> | |
| 8667 | <string>punctuation.definition.character-class.regexp</string> | |
| 8668 | </dict> | |
| 8669 | </dict> | |
| 8670 | <key>patterns</key> | |
| 8671 | <array> | |
| 8672 | <dict> | |
| 8673 | <key>name</key> | |
| 8674 | <string>constant.other.character-class.range.regexp</string> | |
| 8675 | <key>match</key> | |
| 8676 | <string>(?:.|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))</string> | |
| 8677 | <key>captures</key> | |
| 8678 | <dict> | |
| 8679 | <key>1</key> | |
| 8680 | <dict> | |
| 8681 | <key>name</key> | |
| 8682 | <string>constant.character.numeric.regexp</string> | |
| 8683 | </dict> | |
| 8684 | <key>2</key> | |
| 8685 | <dict> | |
| 8686 | <key>name</key> | |
| 8687 | <string>constant.character.control.regexp</string> | |
| 8688 | </dict> | |
| 8689 | <key>3</key> | |
| 8690 | <dict> | |
| 8691 | <key>name</key> | |
| 8692 | <string>constant.character.escape.backslash.regexp</string> | |
| 8693 | </dict> | |
| 8694 | <key>4</key> | |
| 8695 | <dict> | |
| 8696 | <key>name</key> | |
| 8697 | <string>constant.character.numeric.regexp</string> | |
| 8698 | </dict> | |
| 8699 | <key>5</key> | |
| 8700 | <dict> | |
| 8701 | <key>name</key> | |
| 8702 | <string>constant.character.control.regexp</string> | |
| 8703 | </dict> | |
| 8704 | <key>6</key> | |
| 8705 | <dict> | |
| 8706 | <key>name</key> | |
| 8707 | <string>constant.character.escape.backslash.regexp</string> | |
| 8708 | </dict> | |
| 8709 | </dict> | |
| 8710 | </dict> | |
| 8711 | <dict> | |
| 8712 | <key>include</key> | |
| 8713 | <string>#regex-character-class</string> | |
| 8714 | </dict> | |
| 8715 | </array> | |
| 8716 | </dict> | |
| 8717 | <dict> | |
| 8718 | <key>include</key> | |
| 8719 | <string>#regex-character-class</string> | |
| 8720 | </dict> | |
| 8721 | </array> | |
| 8722 | </dict> | |
| 8723 | <key>regex-character-class</key> | |
| 8724 | <dict> | |
| 8725 | <key>patterns</key> | |
| 8726 | <array> | |
| 8727 | <dict> | |
| 8728 | <key>name</key> | |
| 8729 | <string>constant.other.character-class.regexp</string> | |
| 8730 | <key>match</key> | |
| 8731 | <string>\\[wWsSdDtrnvf]|\.</string> | |
| 8732 | </dict> | |
| 8733 | <dict> | |
| 8734 | <key>name</key> | |
| 8735 | <string>constant.character.numeric.regexp</string> | |
| 8736 | <key>match</key> | |
| 8737 | <string>\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})</string> | |
| 8738 | </dict> | |
| 8739 | <dict> | |
| 8740 | <key>name</key> | |
| 8741 | <string>constant.character.control.regexp</string> | |
| 8742 | <key>match</key> | |
| 8743 | <string>\\c[A-Z]</string> | |
| 8744 | </dict> | |
| 8745 | <dict> | |
| 8746 | <key>name</key> | |
| 8747 | <string>constant.character.escape.backslash.regexp</string> | |
| 8748 | <key>match</key> | |
| 8749 | <string>\\.</string> | |
| 8750 | </dict> | |
| 8751 | </array> | |
| 8752 | </dict> | |
| 8753 | <key>comment</key> | |
| 8754 | <dict> | |
| 8755 | <key>patterns</key> | |
| 8756 | <array> | |
| 8757 | <dict> | |
| 8758 | <key>name</key> | |
| 8759 | <string>comment.block.documentation.tsx</string> | |
| 8760 | <key>begin</key> | |
| 8761 | <string>/\*\*(?!/)</string> | |
| 8762 | <key>beginCaptures</key> | |
| 8763 | <dict> | |
| 8764 | <key>0</key> | |
| 8765 | <dict> | |
| 8766 | <key>name</key> | |
| 8767 | <string>punctuation.definition.comment.tsx</string> | |
| 8768 | </dict> | |
| 8769 | </dict> | |
| 8770 | <key>end</key> | |
| 8771 | <string>\*/</string> | |
| 8772 | <key>endCaptures</key> | |
| 8773 | <dict> | |
| 8774 | <key>0</key> | |
| 8775 | <dict> | |
| 8776 | <key>name</key> | |
| 8777 | <string>punctuation.definition.comment.tsx</string> | |
| 8778 | </dict> | |
| 8779 | </dict> | |
| 8780 | <key>patterns</key> | |
| 8781 | <array> | |
| 8782 | <dict> | |
| 8783 | <key>include</key> | |
| 8784 | <string>#docblock</string> | |
| 8785 | </dict> | |
| 8786 | </array> | |
| 8787 | </dict> | |
| 8788 | <dict> | |
| 8789 | <key>name</key> | |
| 8790 | <string>comment.block.tsx</string> | |
| 8791 | <key>begin</key> | |
| 8792 | <string>(/\*)(?:\s*((@)internal)(?=\s|(\*/)))?</string> | |
| 8793 | <key>beginCaptures</key> | |
| 8794 | <dict> | |
| 8795 | <key>1</key> | |
| 8796 | <dict> | |
| 8797 | <key>name</key> | |
| 8798 | <string>punctuation.definition.comment.tsx</string> | |
| 8799 | </dict> | |
| 8800 | <key>2</key> | |
| 8801 | <dict> | |
| 8802 | <key>name</key> | |
| 8803 | <string>storage.type.internaldeclaration.tsx</string> | |
| 8804 | </dict> | |
| 8805 | <key>3</key> | |
| 8806 | <dict> | |
| 8807 | <key>name</key> | |
| 8808 | <string>punctuation.decorator.internaldeclaration.tsx</string> | |
| 8809 | </dict> | |
| 8810 | </dict> | |
| 8811 | <key>end</key> | |
| 8812 | <string>\*/</string> | |
| 8813 | <key>endCaptures</key> | |
| 8814 | <dict> | |
| 8815 | <key>0</key> | |
| 8816 | <dict> | |
| 8817 | <key>name</key> | |
| 8818 | <string>punctuation.definition.comment.tsx</string> | |
| 8819 | </dict> | |
| 8820 | </dict> | |
| 8821 | </dict> | |
| 8822 | <dict> | |
| 8823 | <key>begin</key> | |
| 8824 | <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string> | |
| 8825 | <key>beginCaptures</key> | |
| 8826 | <dict> | |
| 8827 | <key>1</key> | |
| 8828 | <dict> | |
| 8829 | <key>name</key> | |
| 8830 | <string>punctuation.whitespace.comment.leading.tsx</string> | |
| 8831 | </dict> | |
| 8832 | <key>2</key> | |
| 8833 | <dict> | |
| 8834 | <key>name</key> | |
| 8835 | <string>comment.line.double-slash.tsx</string> | |
| 8836 | </dict> | |
| 8837 | <key>3</key> | |
| 8838 | <dict> | |
| 8839 | <key>name</key> | |
| 8840 | <string>punctuation.definition.comment.tsx</string> | |
| 8841 | </dict> | |
| 8842 | <key>4</key> | |
| 8843 | <dict> | |
| 8844 | <key>name</key> | |
| 8845 | <string>storage.type.internaldeclaration.tsx</string> | |
| 8846 | </dict> | |
| 8847 | <key>5</key> | |
| 8848 | <dict> | |
| 8849 | <key>name</key> | |
| 8850 | <string>punctuation.decorator.internaldeclaration.tsx</string> | |
| 8851 | </dict> | |
| 8852 | </dict> | |
| 8853 | <key>end</key> | |
| 8854 | <string>(?=$)</string> | |
| 8855 | <key>contentName</key> | |
| 8856 | <string>comment.line.double-slash.tsx</string> | |
| 8857 | </dict> | |
| 8858 | </array> | |
| 8859 | </dict> | |
| 8860 | <key>single-line-comment-consuming-line-ending</key> | |
| 8861 | <dict> | |
| 8862 | <key>begin</key> | |
| 8863 | <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string> | |
| 8864 | <key>beginCaptures</key> | |
| 8865 | <dict> | |
| 8866 | <key>1</key> | |
| 8867 | <dict> | |
| 8868 | <key>name</key> | |
| 8869 | <string>punctuation.whitespace.comment.leading.tsx</string> | |
| 8870 | </dict> | |
| 8871 | <key>2</key> | |
| 8872 | <dict> | |
| 8873 | <key>name</key> | |
| 8874 | <string>comment.line.double-slash.tsx</string> | |
| 8875 | </dict> | |
| 8876 | <key>3</key> | |
| 8877 | <dict> | |
| 8878 | <key>name</key> | |
| 8879 | <string>punctuation.definition.comment.tsx</string> | |
| 8880 | </dict> | |
| 8881 | <key>4</key> | |
| 8882 | <dict> | |
| 8883 | <key>name</key> | |
| 8884 | <string>storage.type.internaldeclaration.tsx</string> | |
| 8885 | </dict> | |
| 8886 | <key>5</key> | |
| 8887 | <dict> | |
| 8888 | <key>name</key> | |
| 8889 | <string>punctuation.decorator.internaldeclaration.tsx</string> | |
| 8890 | </dict> | |
| 8891 | </dict> | |
| 8892 | <key>end</key> | |
| 8893 | <string>(?=^)</string> | |
| 8894 | <key>contentName</key> | |
| 8895 | <string>comment.line.double-slash.tsx</string> | |
| 8896 | </dict> | |
| 8897 | <key>directives</key> | |
| 8898 | <dict> | |
| 8899 | <key>name</key> | |
| 8900 | <string>comment.line.triple-slash.directive.tsx</string> | |
| 8901 | <key>begin</key> | |
| 8902 | <string>^(///)\s*(?=&lt;(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/&gt;\s*$)</string> | |
| 8903 | <key>beginCaptures</key> | |
| 8904 | <dict> | |
| 8905 | <key>1</key> | |
| 8906 | <dict> | |
| 8907 | <key>name</key> | |
| 8908 | <string>punctuation.definition.comment.tsx</string> | |
| 8909 | </dict> | |
| 8910 | </dict> | |
| 8911 | <key>end</key> | |
| 8912 | <string>(?=$)</string> | |
| 8913 | <key>patterns</key> | |
| 8914 | <array> | |
| 8915 | <dict> | |
| 8916 | <key>name</key> | |
| 8917 | <string>meta.tag.tsx</string> | |
| 8918 | <key>begin</key> | |
| 8919 | <string>(&lt;)(reference|amd-dependency|amd-module)</string> | |
| 8920 | <key>beginCaptures</key> | |
| 8921 | <dict> | |
| 8922 | <key>1</key> | |
| 8923 | <dict> | |
| 8924 | <key>name</key> | |
| 8925 | <string>punctuation.definition.tag.directive.tsx</string> | |
| 8926 | </dict> | |
| 8927 | <key>2</key> | |
| 8928 | <dict> | |
| 8929 | <key>name</key> | |
| 8930 | <string>entity.name.tag.directive.tsx</string> | |
| 8931 | </dict> | |
| 8932 | </dict> | |
| 8933 | <key>end</key> | |
| 8934 | <string>/&gt;</string> | |
| 8935 | <key>endCaptures</key> | |
| 8936 | <dict> | |
| 8937 | <key>0</key> | |
| 8938 | <dict> | |
| 8939 | <key>name</key> | |
| 8940 | <string>punctuation.definition.tag.directive.tsx</string> | |
| 8941 | </dict> | |
| 8942 | </dict> | |
| 8943 | <key>patterns</key> | |
| 8944 | <array> | |
| 8945 | <dict> | |
| 8946 | <key>name</key> | |
| 8947 | <string>entity.other.attribute-name.directive.tsx</string> | |
| 8948 | <key>match</key> | |
| 8949 | <string>path|types|no-default-lib|lib|name|resolution-mode</string> | |
| 8950 | </dict> | |
| 8951 | <dict> | |
| 8952 | <key>name</key> | |
| 8953 | <string>keyword.operator.assignment.tsx</string> | |
| 8954 | <key>match</key> | |
| 8955 | <string>=</string> | |
| 8956 | </dict> | |
| 8957 | <dict> | |
| 8958 | <key>include</key> | |
| 8959 | <string>#string</string> | |
| 8960 | </dict> | |
| 8961 | </array> | |
| 8962 | </dict> | |
| 8963 | </array> | |
| 8964 | </dict> | |
| 8965 | <key>docblock</key> | |
| 8966 | <dict> | |
| 8967 | <key>patterns</key> | |
| 8968 | <array> | |
| 8969 | <dict> | |
| 8970 | <key>match</key> | |
| 8971 | <string>(?x) | |
| 8972 | ((@)(?:access|api)) | |
| 8973 | \s+ | |
| 8974 | (private|protected|public) | |
| 8975 | \b</string> | |
| 8976 | <key>captures</key> | |
| 8977 | <dict> | |
| 8978 | <key>1</key> | |
| 8979 | <dict> | |
| 8980 | <key>name</key> | |
| 8981 | <string>storage.type.class.jsdoc</string> | |
| 8982 | </dict> | |
| 8983 | <key>2</key> | |
| 8984 | <dict> | |
| 8985 | <key>name</key> | |
| 8986 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 8987 | </dict> | |
| 8988 | <key>3</key> | |
| 8989 | <dict> | |
| 8990 | <key>name</key> | |
| 8991 | <string>constant.language.access-type.jsdoc</string> | |
| 8992 | </dict> | |
| 8993 | </dict> | |
| 8994 | </dict> | |
| 8995 | <dict> | |
| 8996 | <key>match</key> | |
| 8997 | <string>(?x) | |
| 8998 | ((@)author) | |
| 8999 | \s+ | |
| 9000 | ( | |
| 9001 | [^@\s&lt;&gt;*/] | |
| 9002 | (?:[^@&lt;&gt;*/]|\*[^/])* | |
| 9003 | ) | |
| 9004 | (?: | |
| 9005 | \s* | |
| 9006 | (&lt;) | |
| 9007 | ([^&gt;\s]+) | |
| 9008 | (&gt;) | |
| 9009 | )?</string> | |
| 9010 | <key>captures</key> | |
| 9011 | <dict> | |
| 9012 | <key>1</key> | |
| 9013 | <dict> | |
| 9014 | <key>name</key> | |
| 9015 | <string>storage.type.class.jsdoc</string> | |
| 9016 | </dict> | |
| 9017 | <key>2</key> | |
| 9018 | <dict> | |
| 9019 | <key>name</key> | |
| 9020 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9021 | </dict> | |
| 9022 | <key>3</key> | |
| 9023 | <dict> | |
| 9024 | <key>name</key> | |
| 9025 | <string>entity.name.type.instance.jsdoc</string> | |
| 9026 | </dict> | |
| 9027 | <key>4</key> | |
| 9028 | <dict> | |
| 9029 | <key>name</key> | |
| 9030 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9031 | </dict> | |
| 9032 | <key>5</key> | |
| 9033 | <dict> | |
| 9034 | <key>name</key> | |
| 9035 | <string>constant.other.email.link.underline.jsdoc</string> | |
| 9036 | </dict> | |
| 9037 | <key>6</key> | |
| 9038 | <dict> | |
| 9039 | <key>name</key> | |
| 9040 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9041 | </dict> | |
| 9042 | </dict> | |
| 9043 | </dict> | |
| 9044 | <dict> | |
| 9045 | <key>match</key> | |
| 9046 | <string>(?x) | |
| 9047 | ((@)borrows) \s+ | |
| 9048 | ((?:[^@\s*/]|\*[^/])+) # &lt;that namepath&gt; | |
| 9049 | \s+ (as) \s+ # as | |
| 9050 | ((?:[^@\s*/]|\*[^/])+) # &lt;this namepath&gt;</string> | |
| 9051 | <key>captures</key> | |
| 9052 | <dict> | |
| 9053 | <key>1</key> | |
| 9054 | <dict> | |
| 9055 | <key>name</key> | |
| 9056 | <string>storage.type.class.jsdoc</string> | |
| 9057 | </dict> | |
| 9058 | <key>2</key> | |
| 9059 | <dict> | |
| 9060 | <key>name</key> | |
| 9061 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9062 | </dict> | |
| 9063 | <key>3</key> | |
| 9064 | <dict> | |
| 9065 | <key>name</key> | |
| 9066 | <string>entity.name.type.instance.jsdoc</string> | |
| 9067 | </dict> | |
| 9068 | <key>4</key> | |
| 9069 | <dict> | |
| 9070 | <key>name</key> | |
| 9071 | <string>keyword.operator.control.jsdoc</string> | |
| 9072 | </dict> | |
| 9073 | <key>5</key> | |
| 9074 | <dict> | |
| 9075 | <key>name</key> | |
| 9076 | <string>entity.name.type.instance.jsdoc</string> | |
| 9077 | </dict> | |
| 9078 | </dict> | |
| 9079 | </dict> | |
| 9080 | <dict> | |
| 9081 | <key>name</key> | |
| 9082 | <string>meta.example.jsdoc</string> | |
| 9083 | <key>begin</key> | |
| 9084 | <string>((@)example)\s+</string> | |
| 9085 | <key>end</key> | |
| 9086 | <string>(?=@|\*/)</string> | |
| 9087 | <key>beginCaptures</key> | |
| 9088 | <dict> | |
| 9089 | <key>1</key> | |
| 9090 | <dict> | |
| 9091 | <key>name</key> | |
| 9092 | <string>storage.type.class.jsdoc</string> | |
| 9093 | </dict> | |
| 9094 | <key>2</key> | |
| 9095 | <dict> | |
| 9096 | <key>name</key> | |
| 9097 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9098 | </dict> | |
| 9099 | </dict> | |
| 9100 | <key>patterns</key> | |
| 9101 | <array> | |
| 9102 | <dict> | |
| 9103 | <key>match</key> | |
| 9104 | <string>^\s\*\s+</string> | |
| 9105 | </dict> | |
| 9106 | <dict> | |
| 9107 | <key>contentName</key> | |
| 9108 | <string>constant.other.description.jsdoc</string> | |
| 9109 | <key>begin</key> | |
| 9110 | <string>\G(&lt;)caption(&gt;)</string> | |
| 9111 | <key>beginCaptures</key> | |
| 9112 | <dict> | |
| 9113 | <key>0</key> | |
| 9114 | <dict> | |
| 9115 | <key>name</key> | |
| 9116 | <string>entity.name.tag.inline.jsdoc</string> | |
| 9117 | </dict> | |
| 9118 | <key>1</key> | |
| 9119 | <dict> | |
| 9120 | <key>name</key> | |
| 9121 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9122 | </dict> | |
| 9123 | <key>2</key> | |
| 9124 | <dict> | |
| 9125 | <key>name</key> | |
| 9126 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9127 | </dict> | |
| 9128 | </dict> | |
| 9129 | <key>end</key> | |
| 9130 | <string>(&lt;/)caption(&gt;)|(?=\*/)</string> | |
| 9131 | <key>endCaptures</key> | |
| 9132 | <dict> | |
| 9133 | <key>0</key> | |
| 9134 | <dict> | |
| 9135 | <key>name</key> | |
| 9136 | <string>entity.name.tag.inline.jsdoc</string> | |
| 9137 | </dict> | |
| 9138 | <key>1</key> | |
| 9139 | <dict> | |
| 9140 | <key>name</key> | |
| 9141 | <string>punctuation.definition.bracket.angle.begin.jsdoc</string> | |
| 9142 | </dict> | |
| 9143 | <key>2</key> | |
| 9144 | <dict> | |
| 9145 | <key>name</key> | |
| 9146 | <string>punctuation.definition.bracket.angle.end.jsdoc</string> | |
| 9147 | </dict> | |
| 9148 | </dict> | |
| 9149 | </dict> | |
| 9150 | <dict> | |
| 9151 | <key>match</key> | |
| 9152 | <string>[^\s@*](?:[^*]|\*[^/])*</string> | |
| 9153 | <key>captures</key> | |
| 9154 | <dict> | |
| 9155 | <key>0</key> | |
| 9156 | <dict> | |
| 9157 | <key>name</key> | |
| 9158 | <string>source.embedded.tsx</string> | |
| 9159 | </dict> | |
| 9160 | </dict> | |
| 9161 | </dict> | |
| 9162 | </array> | |
| 9163 | </dict> | |
| 9164 | <dict> | |
| 9165 | <key>match</key> | |
| 9166 | <string>(?x) ((@)kind) \s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \b</string> | |
| 9167 | <key>captures</key> | |
| 9168 | <dict> | |
| 9169 | <key>1</key> | |
| 9170 | <dict> | |
| 9171 | <key>name</key> | |
| 9172 | <string>storage.type.class.jsdoc</string> | |
| 9173 | </dict> | |
| 9174 | <key>2</key> | |
| 9175 | <dict> | |
| 9176 | <key>name</key> | |
| 9177 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9178 | </dict> | |
| 9179 | <key>3</key> | |
| 9180 | <dict> | |
| 9181 | <key>name</key> | |
| 9182 | <string>constant.language.symbol-type.jsdoc</string> | |
| 9183 | </dict> | |
| 9184 | </dict> | |
| 9185 | </dict> | |
| 9186 | <dict> | |
| 9187 | <key>match</key> | |
| 9188 | <string>(?x) | |
| 9189 | ((@)see) | |
| 9190 | \s+ | |
| 9191 | (?: | |
| 9192 | # URL | |
| 9193 | ( | |
| 9194 | (?=https?://) | |
| 9195 | (?:[^\s*]|\*[^/])+ | |
| 9196 | ) | |
| 9197 | | | |
| 9198 | # JSDoc namepath | |
| 9199 | ( | |
| 9200 | (?! | |
| 9201 | # Avoid matching bare URIs (also acceptable as links) | |
| 9202 | https?:// | |
| 9203 | | | |
| 9204 | # Avoid matching {@inline tags}; we match those below | |
| 9205 | (?:\[[^\[\]]*\])? # Possible description [preceding]{@tag} | |
| 9206 | {@(?:link|linkcode|linkplain|tutorial)\b | |
| 9207 | ) | |
| 9208 | # Matched namepath | |
| 9209 | (?:[^@\s*/]|\*[^/])+ | |
| 9210 | ) | |
| 9211 | )</string> | |
| 9212 | <key>captures</key> | |
| 9213 | <dict> | |
| 9214 | <key>1</key> | |
| 9215 | <dict> | |
| 9216 | <key>name</key> | |
| 9217 | <string>storage.type.class.jsdoc</string> | |
| 9218 | </dict> | |
| 9219 | <key>2</key> | |
| 9220 | <dict> | |
| 9221 | <key>name</key> | |
| 9222 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9223 | </dict> | |
| 9224 | <key>3</key> | |
| 9225 | <dict> | |
| 9226 | <key>name</key> | |
| 9227 | <string>variable.other.link.underline.jsdoc</string> | |
| 9228 | </dict> | |
| 9229 | <key>4</key> | |
| 9230 | <dict> | |
| 9231 | <key>name</key> | |
| 9232 | <string>entity.name.type.instance.jsdoc</string> | |
| 9233 | </dict> | |
| 9234 | </dict> | |
| 9235 | </dict> | |
| 9236 | <dict> | |
| 9237 | <key>match</key> | |
| 9238 | <string>(?x) | |
| 9239 | ((@)template) | |
| 9240 | \s+ | |
| 9241 | # One or more valid identifiers | |
| 9242 | ( | |
| 9243 | [A-Za-z_$] # First character: non-numeric word character | |
| 9244 | [\w$.\[\]]* # Rest of identifier | |
| 9245 | (?: # Possible list of additional identifiers | |
| 9246 | \s* , \s* | |
| 9247 | [A-Za-z_$] | |
| 9248 | [\w$.\[\]]* | |
| 9249 | )* | |
| 9250 | )</string> | |
| 9251 | <key>captures</key> | |
| 9252 | <dict> | |
| 9253 | <key>1</key> | |
| 9254 | <dict> | |
| 9255 | <key>name</key> | |
| 9256 | <string>storage.type.class.jsdoc</string> | |
| 9257 | </dict> | |
| 9258 | <key>2</key> | |
| 9259 | <dict> | |
| 9260 | <key>name</key> | |
| 9261 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9262 | </dict> | |
| 9263 | <key>3</key> | |
| 9264 | <dict> | |
| 9265 | <key>name</key> | |
| 9266 | <string>variable.other.jsdoc</string> | |
| 9267 | </dict> | |
| 9268 | </dict> | |
| 9269 | </dict> | |
| 9270 | <dict> | |
| 9271 | <key>begin</key> | |
| 9272 | <string>(?x)((@)template)\s+(?={)</string> | |
| 9273 | <key>beginCaptures</key> | |
| 9274 | <dict> | |
| 9275 | <key>1</key> | |
| 9276 | <dict> | |
| 9277 | <key>name</key> | |
| 9278 | <string>storage.type.class.jsdoc</string> | |
| 9279 | </dict> | |
| 9280 | <key>2</key> | |
| 9281 | <dict> | |
| 9282 | <key>name</key> | |
| 9283 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9284 | </dict> | |
| 9285 | </dict> | |
| 9286 | <key>end</key> | |
| 9287 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9288 | <key>patterns</key> | |
| 9289 | <array> | |
| 9290 | <dict> | |
| 9291 | <key>include</key> | |
| 9292 | <string>#jsdoctype</string> | |
| 9293 | </dict> | |
| 9294 | <dict> | |
| 9295 | <key>name</key> | |
| 9296 | <string>variable.other.jsdoc</string> | |
| 9297 | <key>match</key> | |
| 9298 | <string>([A-Za-z_$][\w$.\[\]]*)</string> | |
| 9299 | </dict> | |
| 9300 | </array> | |
| 9301 | </dict> | |
| 9302 | <dict> | |
| 9303 | <key>match</key> | |
| 9304 | <string>(?x) | |
| 9305 | ( | |
| 9306 | (@) | |
| 9307 | (?:arg|argument|const|constant|member|namespace|param|var) | |
| 9308 | ) | |
| 9309 | \s+ | |
| 9310 | ( | |
| 9311 | [A-Za-z_$] | |
| 9312 | [\w$.\[\]]* | |
| 9313 | )</string> | |
| 9314 | <key>captures</key> | |
| 9315 | <dict> | |
| 9316 | <key>1</key> | |
| 9317 | <dict> | |
| 9318 | <key>name</key> | |
| 9319 | <string>storage.type.class.jsdoc</string> | |
| 9320 | </dict> | |
| 9321 | <key>2</key> | |
| 9322 | <dict> | |
| 9323 | <key>name</key> | |
| 9324 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9325 | </dict> | |
| 9326 | <key>3</key> | |
| 9327 | <dict> | |
| 9328 | <key>name</key> | |
| 9329 | <string>variable.other.jsdoc</string> | |
| 9330 | </dict> | |
| 9331 | </dict> | |
| 9332 | </dict> | |
| 9333 | <dict> | |
| 9334 | <key>begin</key> | |
| 9335 | <string>((@)typedef)\s+(?={)</string> | |
| 9336 | <key>beginCaptures</key> | |
| 9337 | <dict> | |
| 9338 | <key>1</key> | |
| 9339 | <dict> | |
| 9340 | <key>name</key> | |
| 9341 | <string>storage.type.class.jsdoc</string> | |
| 9342 | </dict> | |
| 9343 | <key>2</key> | |
| 9344 | <dict> | |
| 9345 | <key>name</key> | |
| 9346 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9347 | </dict> | |
| 9348 | </dict> | |
| 9349 | <key>end</key> | |
| 9350 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9351 | <key>patterns</key> | |
| 9352 | <array> | |
| 9353 | <dict> | |
| 9354 | <key>include</key> | |
| 9355 | <string>#jsdoctype</string> | |
| 9356 | </dict> | |
| 9357 | <dict> | |
| 9358 | <key>name</key> | |
| 9359 | <string>entity.name.type.instance.jsdoc</string> | |
| 9360 | <key>match</key> | |
| 9361 | <string>(?:[^@\s*/]|\*[^/])+</string> | |
| 9362 | </dict> | |
| 9363 | </array> | |
| 9364 | </dict> | |
| 9365 | <dict> | |
| 9366 | <key>begin</key> | |
| 9367 | <string>((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\s+(?={)</string> | |
| 9368 | <key>beginCaptures</key> | |
| 9369 | <dict> | |
| 9370 | <key>1</key> | |
| 9371 | <dict> | |
| 9372 | <key>name</key> | |
| 9373 | <string>storage.type.class.jsdoc</string> | |
| 9374 | </dict> | |
| 9375 | <key>2</key> | |
| 9376 | <dict> | |
| 9377 | <key>name</key> | |
| 9378 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9379 | </dict> | |
| 9380 | </dict> | |
| 9381 | <key>end</key> | |
| 9382 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9383 | <key>patterns</key> | |
| 9384 | <array> | |
| 9385 | <dict> | |
| 9386 | <key>include</key> | |
| 9387 | <string>#jsdoctype</string> | |
| 9388 | </dict> | |
| 9389 | <dict> | |
| 9390 | <key>name</key> | |
| 9391 | <string>variable.other.jsdoc</string> | |
| 9392 | <key>match</key> | |
| 9393 | <string>([A-Za-z_$][\w$.\[\]]*)</string> | |
| 9394 | </dict> | |
| 9395 | <dict> | |
| 9396 | <key>name</key> | |
| 9397 | <string>variable.other.jsdoc</string> | |
| 9398 | <key>match</key> | |
| 9399 | <string>(?x) | |
| 9400 | (\[)\s* | |
| 9401 | [\w$]+ | |
| 9402 | (?: | |
| 9403 | (?:\[\])? # Foo[ ].bar properties within an array | |
| 9404 | \. # Foo.Bar namespaced parameter | |
| 9405 | [\w$]+ | |
| 9406 | )* | |
| 9407 | (?: | |
| 9408 | \s* | |
| 9409 | (=) # [foo=bar] Default parameter value | |
| 9410 | \s* | |
| 9411 | ( | |
| 9412 | # The inner regexes are to stop the match early at */ and to not stop at escaped quotes | |
| 9413 | (?&gt; | |
| 9414 | "(?:(?:\*(?!/))|(?:\\(?!"))|[^*\\])*?" | # [foo="bar"] Double-quoted | |
| 9415 | '(?:(?:\*(?!/))|(?:\\(?!'))|[^*\\])*?' | # [foo='bar'] Single-quoted | |
| 9416 | \[ (?:(?:\*(?!/))|[^*])*? \] | # [foo=[1,2]] Array literal | |
| 9417 | (?:(?:\*(?!/))|\s(?!\s*\])|\[.*?(?:\]|(?=\*/))|[^*\s\[\]])* # Everything else | |
| 9418 | )* | |
| 9419 | ) | |
| 9420 | )? | |
| 9421 | \s*(?:(\])((?:[^*\s]|\*[^\s/])+)?|(?=\*/))</string> | |
| 9422 | <key>captures</key> | |
| 9423 | <dict> | |
| 9424 | <key>1</key> | |
| 9425 | <dict> | |
| 9426 | <key>name</key> | |
| 9427 | <string>punctuation.definition.optional-value.begin.bracket.square.jsdoc</string> | |
| 9428 | </dict> | |
| 9429 | <key>2</key> | |
| 9430 | <dict> | |
| 9431 | <key>name</key> | |
| 9432 | <string>keyword.operator.assignment.jsdoc</string> | |
| 9433 | </dict> | |
| 9434 | <key>3</key> | |
| 9435 | <dict> | |
| 9436 | <key>name</key> | |
| 9437 | <string>source.embedded.tsx</string> | |
| 9438 | </dict> | |
| 9439 | <key>4</key> | |
| 9440 | <dict> | |
| 9441 | <key>name</key> | |
| 9442 | <string>punctuation.definition.optional-value.end.bracket.square.jsdoc</string> | |
| 9443 | </dict> | |
| 9444 | <key>5</key> | |
| 9445 | <dict> | |
| 9446 | <key>name</key> | |
| 9447 | <string>invalid.illegal.syntax.jsdoc</string> | |
| 9448 | </dict> | |
| 9449 | </dict> | |
| 9450 | </dict> | |
| 9451 | </array> | |
| 9452 | </dict> | |
| 9453 | <dict> | |
| 9454 | <key>begin</key> | |
| 9455 | <string>(?x) | |
| 9456 | ( | |
| 9457 | (@) | |
| 9458 | (?:define|enum|exception|export|extends|lends|implements|modifies | |
| 9459 | |namespace|private|protected|returns?|satisfies|suppress|this|throws|type | |
| 9460 | |yields?) | |
| 9461 | ) | |
| 9462 | \s+(?={)</string> | |
| 9463 | <key>beginCaptures</key> | |
| 9464 | <dict> | |
| 9465 | <key>1</key> | |
| 9466 | <dict> | |
| 9467 | <key>name</key> | |
| 9468 | <string>storage.type.class.jsdoc</string> | |
| 9469 | </dict> | |
| 9470 | <key>2</key> | |
| 9471 | <dict> | |
| 9472 | <key>name</key> | |
| 9473 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9474 | </dict> | |
| 9475 | </dict> | |
| 9476 | <key>end</key> | |
| 9477 | <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string> | |
| 9478 | <key>patterns</key> | |
| 9479 | <array> | |
| 9480 | <dict> | |
| 9481 | <key>include</key> | |
| 9482 | <string>#jsdoctype</string> | |
| 9483 | </dict> | |
| 9484 | </array> | |
| 9485 | </dict> | |
| 9486 | <dict> | |
| 9487 | <key>match</key> | |
| 9488 | <string>(?x) | |
| 9489 | ( | |
| 9490 | (@) | |
| 9491 | (?:alias|augments|callback|constructs|emits|event|fires|exports? | |
| 9492 | |extends|external|function|func|host|lends|listens|interface|memberof!? | |
| 9493 | |method|module|mixes|mixin|name|requires|see|this|typedef|uses) | |
| 9494 | ) | |
| 9495 | \s+ | |
| 9496 | ( | |
| 9497 | (?: | |
| 9498 | [^{}@\s*] | \*[^/] | |
| 9499 | )+ | |
| 9500 | )</string> | |
| 9501 | <key>captures</key> | |
| 9502 | <dict> | |
| 9503 | <key>1</key> | |
| 9504 | <dict> | |
| 9505 | <key>name</key> | |
| 9506 | <string>storage.type.class.jsdoc</string> | |
| 9507 | </dict> | |
| 9508 | <key>2</key> | |
| 9509 | <dict> | |
| 9510 | <key>name</key> | |
| 9511 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9512 | </dict> | |
| 9513 | <key>3</key> | |
| 9514 | <dict> | |
| 9515 | <key>name</key> | |
| 9516 | <string>entity.name.type.instance.jsdoc</string> | |
| 9517 | </dict> | |
| 9518 | </dict> | |
| 9519 | </dict> | |
| 9520 | <dict> | |
| 9521 | <key>contentName</key> | |
| 9522 | <string>variable.other.jsdoc</string> | |
| 9523 | <key>begin</key> | |
| 9524 | <string>((@)(?:default(?:value)?|license|version))\s+(([''"]))</string> | |
| 9525 | <key>beginCaptures</key> | |
| 9526 | <dict> | |
| 9527 | <key>1</key> | |
| 9528 | <dict> | |
| 9529 | <key>name</key> | |
| 9530 | <string>storage.type.class.jsdoc</string> | |
| 9531 | </dict> | |
| 9532 | <key>2</key> | |
| 9533 | <dict> | |
| 9534 | <key>name</key> | |
| 9535 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9536 | </dict> | |
| 9537 | <key>3</key> | |
| 9538 | <dict> | |
| 9539 | <key>name</key> | |
| 9540 | <string>variable.other.jsdoc</string> | |
| 9541 | </dict> | |
| 9542 | <key>4</key> | |
| 9543 | <dict> | |
| 9544 | <key>name</key> | |
| 9545 | <string>punctuation.definition.string.begin.jsdoc</string> | |
| 9546 | </dict> | |
| 9547 | </dict> | |
| 9548 | <key>end</key> | |
| 9549 | <string>(\3)|(?=$|\*/)</string> | |
| 9550 | <key>endCaptures</key> | |
| 9551 | <dict> | |
| 9552 | <key>0</key> | |
| 9553 | <dict> | |
| 9554 | <key>name</key> | |
| 9555 | <string>variable.other.jsdoc</string> | |
| 9556 | </dict> | |
| 9557 | <key>1</key> | |
| 9558 | <dict> | |
| 9559 | <key>name</key> | |
| 9560 | <string>punctuation.definition.string.end.jsdoc</string> | |
| 9561 | </dict> | |
| 9562 | </dict> | |
| 9563 | </dict> | |
| 9564 | <dict> | |
| 9565 | <key>match</key> | |
| 9566 | <string>((@)(?:default(?:value)?|license|tutorial|variation|version))\s+([^\s*]+)</string> | |
| 9567 | <key>captures</key> | |
| 9568 | <dict> | |
| 9569 | <key>1</key> | |
| 9570 | <dict> | |
| 9571 | <key>name</key> | |
| 9572 | <string>storage.type.class.jsdoc</string> | |
| 9573 | </dict> | |
| 9574 | <key>2</key> | |
| 9575 | <dict> | |
| 9576 | <key>name</key> | |
| 9577 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9578 | </dict> | |
| 9579 | <key>3</key> | |
| 9580 | <dict> | |
| 9581 | <key>name</key> | |
| 9582 | <string>variable.other.jsdoc</string> | |
| 9583 | </dict> | |
| 9584 | </dict> | |
| 9585 | </dict> | |
| 9586 | <dict> | |
| 9587 | <key>name</key> | |
| 9588 | <string>storage.type.class.jsdoc</string> | |
| 9589 | <key>match</key> | |
| 9590 | <string>(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \b</string> | |
| 9591 | <key>captures</key> | |
| 9592 | <dict> | |
| 9593 | <key>1</key> | |
| 9594 | <dict> | |
| 9595 | <key>name</key> | |
| 9596 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9597 | </dict> | |
| 9598 | </dict> | |
| 9599 | </dict> | |
| 9600 | <dict> | |
| 9601 | <key>include</key> | |
| 9602 | <string>#inline-tags</string> | |
| 9603 | </dict> | |
| 9604 | <dict> | |
| 9605 | <key>match</key> | |
| 9606 | <string>((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\s+)</string> | |
| 9607 | <key>captures</key> | |
| 9608 | <dict> | |
| 9609 | <key>1</key> | |
| 9610 | <dict> | |
| 9611 | <key>name</key> | |
| 9612 | <string>storage.type.class.jsdoc</string> | |
| 9613 | </dict> | |
| 9614 | <key>2</key> | |
| 9615 | <dict> | |
| 9616 | <key>name</key> | |
| 9617 | <string>punctuation.definition.block.tag.jsdoc</string> | |
| 9618 | </dict> | |
| 9619 | </dict> | |
| 9620 | </dict> | |
| 9621 | </array> | |
| 9622 | </dict> | |
| 9623 | <key>brackets</key> | |
| 9624 | <dict> | |
| 9625 | <key>patterns</key> | |
| 9626 | <array> | |
| 9627 | <dict> | |
| 9628 | <key>begin</key> | |
| 9629 | <string>{</string> | |
| 9630 | <key>end</key> | |
| 9631 | <string>}|(?=\*/)</string> | |
| 9632 | <key>patterns</key> | |
| 9633 | <array> | |
| 9634 | <dict> | |
| 9635 | <key>include</key> | |
| 9636 | <string>#brackets</string> | |
| 9637 | </dict> | |
| 9638 | </array> | |
| 9639 | </dict> | |
| 9640 | <dict> | |
| 9641 | <key>begin</key> | |
| 9642 | <string>\[</string> | |
| 9643 | <key>end</key> | |
| 9644 | <string>\]|(?=\*/)</string> | |
| 9645 | <key>patterns</key> | |
| 9646 | <array> | |
| 9647 | <dict> | |
| 9648 | <key>include</key> | |
| 9649 | <string>#brackets</string> | |
| 9650 | </dict> | |
| 9651 | </array> | |
| 9652 | </dict> | |
| 9653 | </array> | |
| 9654 | </dict> | |
| 9655 | <key>inline-tags</key> | |
| 9656 | <dict> | |
| 9657 | <key>patterns</key> | |
| 9658 | <array> | |
| 9659 | <dict> | |
| 9660 | <key>name</key> | |
| 9661 | <string>constant.other.description.jsdoc</string> | |
| 9662 | <key>match</key> | |
| 9663 | <string>(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))</string> | |
| 9664 | <key>captures</key> | |
| 9665 | <dict> | |
| 9666 | <key>1</key> | |
| 9667 | <dict> | |
| 9668 | <key>name</key> | |
| 9669 | <string>punctuation.definition.bracket.square.begin.jsdoc</string> | |
| 9670 | </dict> | |
| 9671 | <key>2</key> | |
| 9672 | <dict> | |
| 9673 | <key>name</key> | |
| 9674 | <string>punctuation.definition.bracket.square.end.jsdoc</string> | |
| 9675 | </dict> | |
| 9676 | </dict> | |
| 9677 | </dict> | |
| 9678 | <dict> | |
| 9679 | <key>name</key> | |
| 9680 | <string>entity.name.type.instance.jsdoc</string> | |
| 9681 | <key>begin</key> | |
| 9682 | <string>({)((@)(?:link(?:code|plain)?|tutorial))\s*</string> | |
| 9683 | <key>beginCaptures</key> | |
| 9684 | <dict> | |
| 9685 | <key>1</key> | |
| 9686 | <dict> | |
| 9687 | <key>name</key> | |
| 9688 | <string>punctuation.definition.bracket.curly.begin.jsdoc</string> | |
| 9689 | </dict> | |
| 9690 | <key>2</key> | |
| 9691 | <dict> | |
| 9692 | <key>name</key> | |
| 9693 | <string>storage.type.class.jsdoc</string> | |
| 9694 | </dict> | |
| 9695 | <key>3</key> | |
| 9696 | <dict> | |
| 9697 | <key>name</key> | |
| 9698 | <string>punctuation.definition.inline.tag.jsdoc</string> | |
| 9699 | </dict> | |
| 9700 | </dict> | |
| 9701 | <key>end</key> | |
| 9702 | <string>}|(?=\*/)</string> | |
| 9703 | <key>endCaptures</key> | |
| 9704 | <dict> | |
| 9705 | <key>0</key> | |
| 9706 | <dict> | |
| 9707 | <key>name</key> | |
| 9708 | <string>punctuation.definition.bracket.curly.end.jsdoc</string> | |
| 9709 | </dict> | |
| 9710 | </dict> | |
| 9711 | <key>patterns</key> | |
| 9712 | <array> | |
| 9713 | <dict> | |
| 9714 | <key>match</key> | |
| 9715 | <string>\G((?=https?://)(?:[^|}\s*]|\*[/])+)(\|)?</string> | |
| 9716 | <key>captures</key> | |
| 9717 | <dict> | |
| 9718 | <key>1</key> | |
| 9719 | <dict> | |
| 9720 | <key>name</key> | |
| 9721 | <string>variable.other.link.underline.jsdoc</string> | |
| 9722 | </dict> | |
| 9723 | <key>2</key> | |
| 9724 | <dict> | |
| 9725 | <key>name</key> | |
| 9726 | <string>punctuation.separator.pipe.jsdoc</string> | |
| 9727 | </dict> | |
| 9728 | </dict> | |
| 9729 | </dict> | |
| 9730 | <dict> | |
| 9731 | <key>match</key> | |
| 9732 | <string>\G((?:[^{}@\s|*]|\*[^/])+)(\|)?</string> | |
| 9733 | <key>captures</key> | |
| 9734 | <dict> | |
| 9735 | <key>1</key> | |
| 9736 | <dict> | |
| 9737 | <key>name</key> | |
| 9738 | <string>variable.other.description.jsdoc</string> | |
| 9739 | </dict> | |
| 9740 | <key>2</key> | |
| 9741 | <dict> | |
| 9742 | <key>name</key> | |
| 9743 | <string>punctuation.separator.pipe.jsdoc</string> | |
| 9744 | </dict> | |
| 9745 | </dict> | |
| 9746 | </dict> | |
| 9747 | </array> | |
| 9748 | </dict> | |
| 9749 | </array> | |
| 9750 | </dict> | |
| 9751 | <key>jsdoctype</key> | |
| 9752 | <dict> | |
| 9753 | <key>patterns</key> | |
| 9754 | <array> | |
| 9755 | <dict> | |
| 9756 | <key>name</key> | |
| 9757 | <string>invalid.illegal.type.jsdoc</string> | |
| 9758 | <key>match</key> | |
| 9759 | <string>\G{(?:[^}*]|\*[^/}])+$</string> | |
| 9760 | </dict> | |
| 9761 | <dict> | |
| 9762 | <key>contentName</key> | |
| 9763 | <string>entity.name.type.instance.jsdoc</string> | |
| 9764 | <key>begin</key> | |
| 9765 | <string>\G({)</string> | |
| 9766 | <key>beginCaptures</key> | |
| 9767 | <dict> | |
| 9768 | <key>0</key> | |
| 9769 | <dict> | |
| 9770 | <key>name</key> | |
| 9771 | <string>entity.name.type.instance.jsdoc</string> | |
| 9772 | </dict> | |
| 9773 | <key>1</key> | |
| 9774 | <dict> | |
| 9775 | <key>name</key> | |
| 9776 | <string>punctuation.definition.bracket.curly.begin.jsdoc</string> | |
| 9777 | </dict> | |
| 9778 | </dict> | |
| 9779 | <key>end</key> | |
| 9780 | <string>((}))\s*|(?=\*/)</string> | |
| 9781 | <key>endCaptures</key> | |
| 9782 | <dict> | |
| 9783 | <key>1</key> | |
| 9784 | <dict> | |
| 9785 | <key>name</key> | |
| 9786 | <string>entity.name.type.instance.jsdoc</string> | |
| 9787 | </dict> | |
| 9788 | <key>2</key> | |
| 9789 | <dict> | |
| 9790 | <key>name</key> | |
| 9791 | <string>punctuation.definition.bracket.curly.end.jsdoc</string> | |
| 9792 | </dict> | |
| 9793 | </dict> | |
| 9794 | <key>patterns</key> | |
| 9795 | <array> | |
| 9796 | <dict> | |
| 9797 | <key>include</key> | |
| 9798 | <string>#brackets</string> | |
| 9799 | </dict> | |
| 9800 | </array> | |
| 9801 | </dict> | |
| 9802 | </array> | |
| 9803 | </dict> | |
| 9804 | <key>jsx</key> | |
| 9805 | <dict> | |
| 9806 | <key>patterns</key> | |
| 9807 | <array> | |
| 9808 | <dict> | |
| 9809 | <key>include</key> | |
| 9810 | <string>#jsx-tag-without-attributes-in-expression</string> | |
| 9811 | </dict> | |
| 9812 | <dict> | |
| 9813 | <key>include</key> | |
| 9814 | <string>#jsx-tag-in-expression</string> | |
| 9815 | </dict> | |
| 9816 | </array> | |
| 9817 | </dict> | |
| 9818 | <key>jsx-tag-without-attributes-in-expression</key> | |
| 9819 | <dict> | |
| 9820 | <key>begin</key> | |
| 9821 | <string>(?&lt;!\+\+|--)(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|\*\/|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*(?=(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))?\s*(&gt;))</string> | |
| 9822 | <key>end</key> | |
| 9823 | <string>(?!(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))?\s*(&gt;))</string> | |
| 9824 | <key>patterns</key> | |
| 9825 | <array> | |
| 9826 | <dict> | |
| 9827 | <key>include</key> | |
| 9828 | <string>#jsx-tag-without-attributes</string> | |
| 9829 | </dict> | |
| 9830 | </array> | |
| 9831 | </dict> | |
| 9832 | <key>jsx-tag-without-attributes</key> | |
| 9833 | <dict> | |
| 9834 | <key>name</key> | |
| 9835 | <string>meta.tag.without-attributes.tsx</string> | |
| 9836 | <key>begin</key> | |
| 9837 | <string>(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))?\s*(&gt;)</string> | |
| 9838 | <key>end</key> | |
| 9839 | <string>(&lt;/)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))?\s*(&gt;)</string> | |
| 9840 | <key>beginCaptures</key> | |
| 9841 | <dict> | |
| 9842 | <key>1</key> | |
| 9843 | <dict> | |
| 9844 | <key>name</key> | |
| 9845 | <string>punctuation.definition.tag.begin.tsx</string> | |
| 9846 | </dict> | |
| 9847 | <key>2</key> | |
| 9848 | <dict> | |
| 9849 | <key>name</key> | |
| 9850 | <string>entity.name.tag.namespace.tsx</string> | |
| 9851 | </dict> | |
| 9852 | <key>3</key> | |
| 9853 | <dict> | |
| 9854 | <key>name</key> | |
| 9855 | <string>punctuation.separator.namespace.tsx</string> | |
| 9856 | </dict> | |
| 9857 | <key>4</key> | |
| 9858 | <dict> | |
| 9859 | <key>name</key> | |
| 9860 | <string>entity.name.tag.tsx</string> | |
| 9861 | </dict> | |
| 9862 | <key>5</key> | |
| 9863 | <dict> | |
| 9864 | <key>name</key> | |
| 9865 | <string>support.class.component.tsx</string> | |
| 9866 | </dict> | |
| 9867 | <key>6</key> | |
| 9868 | <dict> | |
| 9869 | <key>name</key> | |
| 9870 | <string>punctuation.definition.tag.end.tsx</string> | |
| 9871 | </dict> | |
| 9872 | </dict> | |
| 9873 | <key>endCaptures</key> | |
| 9874 | <dict> | |
| 9875 | <key>1</key> | |
| 9876 | <dict> | |
| 9877 | <key>name</key> | |
| 9878 | <string>punctuation.definition.tag.begin.tsx</string> | |
| 9879 | </dict> | |
| 9880 | <key>2</key> | |
| 9881 | <dict> | |
| 9882 | <key>name</key> | |
| 9883 | <string>entity.name.tag.namespace.tsx</string> | |
| 9884 | </dict> | |
| 9885 | <key>3</key> | |
| 9886 | <dict> | |
| 9887 | <key>name</key> | |
| 9888 | <string>punctuation.separator.namespace.tsx</string> | |
| 9889 | </dict> | |
| 9890 | <key>4</key> | |
| 9891 | <dict> | |
| 9892 | <key>name</key> | |
| 9893 | <string>entity.name.tag.tsx</string> | |
| 9894 | </dict> | |
| 9895 | <key>5</key> | |
| 9896 | <dict> | |
| 9897 | <key>name</key> | |
| 9898 | <string>support.class.component.tsx</string> | |
| 9899 | </dict> | |
| 9900 | <key>6</key> | |
| 9901 | <dict> | |
| 9902 | <key>name</key> | |
| 9903 | <string>punctuation.definition.tag.end.tsx</string> | |
| 9904 | </dict> | |
| 9905 | </dict> | |
| 9906 | <key>contentName</key> | |
| 9907 | <string>meta.jsx.children.tsx</string> | |
| 9908 | <key>patterns</key> | |
| 9909 | <array> | |
| 9910 | <dict> | |
| 9911 | <key>include</key> | |
| 9912 | <string>#jsx-children</string> | |
| 9913 | </dict> | |
| 9914 | </array> | |
| 9915 | </dict> | |
| 9916 | <key>jsx-tag-in-expression</key> | |
| 9917 | <dict> | |
| 9918 | <key>begin</key> | |
| 9919 | <string>(?x) | |
| 9920 | (?&lt;!\+\+|--)(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|\*\/|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s* | |
| 9921 | (?!&lt;\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=&gt;])|,)) # look ahead is not type parameter of arrow | |
| 9922 | (?=(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))(?=((&lt;\s*)|(\s+))(?!\?)|\/?&gt;))</string> | |
| 9923 | <key>end</key> | |
| 9924 | <string>(?!(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))(?=((&lt;\s*)|(\s+))(?!\?)|\/?&gt;))</string> | |
| 9925 | <key>patterns</key> | |
| 9926 | <array> | |
| 9927 | <dict> | |
| 9928 | <key>include</key> | |
| 9929 | <string>#jsx-tag</string> | |
| 9930 | </dict> | |
| 9931 | </array> | |
| 9932 | </dict> | |
| 9933 | <key>jsx-tag</key> | |
| 9934 | <dict> | |
| 9935 | <key>name</key> | |
| 9936 | <string>meta.tag.tsx</string> | |
| 9937 | <key>begin</key> | |
| 9938 | <string>(?=(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))(?=((&lt;\s*)|(\s+))(?!\?)|\/?&gt;))</string> | |
| 9939 | <key>end</key> | |
| 9940 | <string>(/&gt;)|(?:(&lt;/)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))?\s*(&gt;))</string> | |
| 9941 | <key>endCaptures</key> | |
| 9942 | <dict> | |
| 9943 | <key>1</key> | |
| 9944 | <dict> | |
| 9945 | <key>name</key> | |
| 9946 | <string>punctuation.definition.tag.end.tsx</string> | |
| 9947 | </dict> | |
| 9948 | <key>2</key> | |
| 9949 | <dict> | |
| 9950 | <key>name</key> | |
| 9951 | <string>punctuation.definition.tag.begin.tsx</string> | |
| 9952 | </dict> | |
| 9953 | <key>3</key> | |
| 9954 | <dict> | |
| 9955 | <key>name</key> | |
| 9956 | <string>entity.name.tag.namespace.tsx</string> | |
| 9957 | </dict> | |
| 9958 | <key>4</key> | |
| 9959 | <dict> | |
| 9960 | <key>name</key> | |
| 9961 | <string>punctuation.separator.namespace.tsx</string> | |
| 9962 | </dict> | |
| 9963 | <key>5</key> | |
| 9964 | <dict> | |
| 9965 | <key>name</key> | |
| 9966 | <string>entity.name.tag.tsx</string> | |
| 9967 | </dict> | |
| 9968 | <key>6</key> | |
| 9969 | <dict> | |
| 9970 | <key>name</key> | |
| 9971 | <string>support.class.component.tsx</string> | |
| 9972 | </dict> | |
| 9973 | <key>7</key> | |
| 9974 | <dict> | |
| 9975 | <key>name</key> | |
| 9976 | <string>punctuation.definition.tag.end.tsx</string> | |
| 9977 | </dict> | |
| 9978 | </dict> | |
| 9979 | <key>patterns</key> | |
| 9980 | <array> | |
| 9981 | <dict> | |
| 9982 | <key>begin</key> | |
| 9983 | <string>(&lt;)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?&lt;!\.|-))(?=((&lt;\s*)|(\s+))(?!\?)|\/?&gt;)</string> | |
| 9984 | <key>beginCaptures</key> | |
| 9985 | <dict> | |
| 9986 | <key>1</key> | |
| 9987 | <dict> | |
| 9988 | <key>name</key> | |
| 9989 | <string>punctuation.definition.tag.begin.tsx</string> | |
| 9990 | </dict> | |
| 9991 | <key>2</key> | |
| 9992 | <dict> | |
| 9993 | <key>name</key> | |
| 9994 | <string>entity.name.tag.namespace.tsx</string> | |
| 9995 | </dict> | |
| 9996 | <key>3</key> | |
| 9997 | <dict> | |
| 9998 | <key>name</key> | |
| 9999 | <string>punctuation.separator.namespace.tsx</string> | |
| 10000 | </dict> | |
| 10001 | <key>4</key> | |
| 10002 | <dict> | |
| 10003 | <key>name</key> | |
| 10004 | <string>entity.name.tag.tsx</string> | |
| 10005 | </dict> | |
| 10006 | <key>5</key> | |
| 10007 | <dict> | |
| 10008 | <key>name</key> | |
| 10009 | <string>support.class.component.tsx</string> | |
| 10010 | </dict> | |
| 10011 | </dict> | |
| 10012 | <key>end</key> | |
| 10013 | <string>(?=[/]?&gt;)</string> | |
| 10014 | <key>patterns</key> | |
| 10015 | <array> | |
| 10016 | <dict> | |
| 10017 | <key>include</key> | |
| 10018 | <string>#comment</string> | |
| 10019 | </dict> | |
| 10020 | <dict> | |
| 10021 | <key>include</key> | |
| 10022 | <string>#type-arguments</string> | |
| 10023 | </dict> | |
| 10024 | <dict> | |
| 10025 | <key>include</key> | |
| 10026 | <string>#jsx-tag-attributes</string> | |
| 10027 | </dict> | |
| 10028 | </array> | |
| 10029 | </dict> | |
| 10030 | <dict> | |
| 10031 | <key>begin</key> | |
| 10032 | <string>(&gt;)</string> | |
| 10033 | <key>beginCaptures</key> | |
| 10034 | <dict> | |
| 10035 | <key>1</key> | |
| 10036 | <dict> | |
| 10037 | <key>name</key> | |
| 10038 | <string>punctuation.definition.tag.end.tsx</string> | |
| 10039 | </dict> | |
| 10040 | </dict> | |
| 10041 | <key>end</key> | |
| 10042 | <string>(?=&lt;/)</string> | |
| 10043 | <key>contentName</key> | |
| 10044 | <string>meta.jsx.children.tsx</string> | |
| 10045 | <key>patterns</key> | |
| 10046 | <array> | |
| 10047 | <dict> | |
| 10048 | <key>include</key> | |
| 10049 | <string>#jsx-children</string> | |
| 10050 | </dict> | |
| 10051 | </array> | |
| 10052 | </dict> | |
| 10053 | </array> | |
| 10054 | </dict> | |
| 10055 | <key>jsx-children</key> | |
| 10056 | <dict> | |
| 10057 | <key>patterns</key> | |
| 10058 | <array> | |
| 10059 | <dict> | |
| 10060 | <key>include</key> | |
| 10061 | <string>#jsx-tag-without-attributes</string> | |
| 10062 | </dict> | |
| 10063 | <dict> | |
| 10064 | <key>include</key> | |
| 10065 | <string>#jsx-tag</string> | |
| 10066 | </dict> | |
| 10067 | <dict> | |
| 10068 | <key>include</key> | |
| 10069 | <string>#jsx-evaluated-code</string> | |
| 10070 | </dict> | |
| 10071 | <dict> | |
| 10072 | <key>include</key> | |
| 10073 | <string>#jsx-entities</string> | |
| 10074 | </dict> | |
| 10075 | </array> | |
| 10076 | </dict> | |
| 10077 | <key>jsx-evaluated-code</key> | |
| 10078 | <dict> | |
| 10079 | <key>contentName</key> | |
| 10080 | <string>meta.embedded.expression.tsx</string> | |
| 10081 | <key>begin</key> | |
| 10082 | <string>\{</string> | |
| 10083 | <key>end</key> | |
| 10084 | <string>\}</string> | |
| 10085 | <key>beginCaptures</key> | |
| 10086 | <dict> | |
| 10087 | <key>0</key> | |
| 10088 | <dict> | |
| 10089 | <key>name</key> | |
| 10090 | <string>punctuation.section.embedded.begin.tsx</string> | |
| 10091 | </dict> | |
| 10092 | </dict> | |
| 10093 | <key>endCaptures</key> | |
| 10094 | <dict> | |
| 10095 | <key>0</key> | |
| 10096 | <dict> | |
| 10097 | <key>name</key> | |
| 10098 | <string>punctuation.section.embedded.end.tsx</string> | |
| 10099 | </dict> | |
| 10100 | </dict> | |
| 10101 | <key>patterns</key> | |
| 10102 | <array> | |
| 10103 | <dict> | |
| 10104 | <key>include</key> | |
| 10105 | <string>#expression</string> | |
| 10106 | </dict> | |
| 10107 | </array> | |
| 10108 | </dict> | |
| 10109 | <key>jsx-entities</key> | |
| 10110 | <dict> | |
| 10111 | <key>patterns</key> | |
| 10112 | <array> | |
| 10113 | <dict> | |
| 10114 | <key>name</key> | |
| 10115 | <string>constant.character.entity.tsx</string> | |
| 10116 | <key>match</key> | |
| 10117 | <string>(&amp;)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)</string> | |
| 10118 | <key>captures</key> | |
| 10119 | <dict> | |
| 10120 | <key>1</key> | |
| 10121 | <dict> | |
| 10122 | <key>name</key> | |
| 10123 | <string>punctuation.definition.entity.tsx</string> | |
| 10124 | </dict> | |
| 10125 | <key>3</key> | |
| 10126 | <dict> | |
| 10127 | <key>name</key> | |
| 10128 | <string>punctuation.definition.entity.tsx</string> | |
| 10129 | </dict> | |
| 10130 | </dict> | |
| 10131 | </dict> | |
| 10132 | </array> | |
| 10133 | </dict> | |
| 10134 | <key>jsx-tag-attributes</key> | |
| 10135 | <dict> | |
| 10136 | <key>name</key> | |
| 10137 | <string>meta.tag.attributes.tsx</string> | |
| 10138 | <key>begin</key> | |
| 10139 | <string>\s+</string> | |
| 10140 | <key>end</key> | |
| 10141 | <string>(?=[/]?&gt;)</string> | |
| 10142 | <key>patterns</key> | |
| 10143 | <array> | |
| 10144 | <dict> | |
| 10145 | <key>include</key> | |
| 10146 | <string>#comment</string> | |
| 10147 | </dict> | |
| 10148 | <dict> | |
| 10149 | <key>include</key> | |
| 10150 | <string>#jsx-tag-attribute-name</string> | |
| 10151 | </dict> | |
| 10152 | <dict> | |
| 10153 | <key>include</key> | |
| 10154 | <string>#jsx-tag-attribute-assignment</string> | |
| 10155 | </dict> | |
| 10156 | <dict> | |
| 10157 | <key>include</key> | |
| 10158 | <string>#jsx-string-double-quoted</string> | |
| 10159 | </dict> | |
| 10160 | <dict> | |
| 10161 | <key>include</key> | |
| 10162 | <string>#jsx-string-single-quoted</string> | |
| 10163 | </dict> | |
| 10164 | <dict> | |
| 10165 | <key>include</key> | |
| 10166 | <string>#jsx-evaluated-code</string> | |
| 10167 | </dict> | |
| 10168 | <dict> | |
| 10169 | <key>include</key> | |
| 10170 | <string>#jsx-tag-attributes-illegal</string> | |
| 10171 | </dict> | |
| 10172 | </array> | |
| 10173 | </dict> | |
| 10174 | <key>jsx-tag-attribute-name</key> | |
| 10175 | <dict> | |
| 10176 | <key>match</key> | |
| 10177 | <string>(?x) | |
| 10178 | \s* | |
| 10179 | (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))? | |
| 10180 | ([_$[:alpha:]][-_$[:alnum:]]*) | |
| 10181 | (?=\s|=|/?&gt;|/\*|//)</string> | |
| 10182 | <key>captures</key> | |
| 10183 | <dict> | |
| 10184 | <key>1</key> | |
| 10185 | <dict> | |
| 10186 | <key>name</key> | |
| 10187 | <string>entity.other.attribute-name.namespace.tsx</string> | |
| 10188 | </dict> | |
| 10189 | <key>2</key> | |
| 10190 | <dict> | |
| 10191 | <key>name</key> | |
| 10192 | <string>punctuation.separator.namespace.tsx</string> | |
| 10193 | </dict> | |
| 10194 | <key>3</key> | |
| 10195 | <dict> | |
| 10196 | <key>name</key> | |
| 10197 | <string>entity.other.attribute-name.tsx</string> | |
| 10198 | </dict> | |
| 10199 | </dict> | |
| 10200 | </dict> | |
| 10201 | <key>jsx-tag-attribute-assignment</key> | |
| 10202 | <dict> | |
| 10203 | <key>name</key> | |
| 10204 | <string>keyword.operator.assignment.tsx</string> | |
| 10205 | <key>match</key> | |
| 10206 | <string>=(?=\s*(?:'|"|{|/\*|//|\n))</string> | |
| 10207 | </dict> | |
| 10208 | <key>jsx-string-double-quoted</key> | |
| 10209 | <dict> | |
| 10210 | <key>name</key> | |
| 10211 | <string>string.quoted.double.tsx</string> | |
| 10212 | <key>begin</key> | |
| 10213 | <string>"</string> | |
| 10214 | <key>end</key> | |
| 10215 | <string>"</string> | |
| 10216 | <key>beginCaptures</key> | |
| 10217 | <dict> | |
| 10218 | <key>0</key> | |
| 10219 | <dict> | |
| 10220 | <key>name</key> | |
| 10221 | <string>punctuation.definition.string.begin.tsx</string> | |
| 10222 | </dict> | |
| 10223 | </dict> | |
| 10224 | <key>endCaptures</key> | |
| 10225 | <dict> | |
| 10226 | <key>0</key> | |
| 10227 | <dict> | |
| 10228 | <key>name</key> | |
| 10229 | <string>punctuation.definition.string.end.tsx</string> | |
| 10230 | </dict> | |
| 10231 | </dict> | |
| 10232 | <key>patterns</key> | |
| 10233 | <array> | |
| 10234 | <dict> | |
| 10235 | <key>include</key> | |
| 10236 | <string>#jsx-entities</string> | |
| 10237 | </dict> | |
| 10238 | </array> | |
| 10239 | </dict> | |
| 10240 | <key>jsx-string-single-quoted</key> | |
| 10241 | <dict> | |
| 10242 | <key>name</key> | |
| 10243 | <string>string.quoted.single.tsx</string> | |
| 10244 | <key>begin</key> | |
| 10245 | <string>'</string> | |
| 10246 | <key>end</key> | |
| 10247 | <string>'</string> | |
| 10248 | <key>beginCaptures</key> | |
| 10249 | <dict> | |
| 10250 | <key>0</key> | |
| 10251 | <dict> | |
| 10252 | <key>name</key> | |
| 10253 | <string>punctuation.definition.string.begin.tsx</string> | |
| 10254 | </dict> | |
| 10255 | </dict> | |
| 10256 | <key>endCaptures</key> | |
| 10257 | <dict> | |
| 10258 | <key>0</key> | |
| 10259 | <dict> | |
| 10260 | <key>name</key> | |
| 10261 | <string>punctuation.definition.string.end.tsx</string> | |
| 10262 | </dict> | |
| 10263 | </dict> | |
| 10264 | <key>patterns</key> | |
| 10265 | <array> | |
| 10266 | <dict> | |
| 10267 | <key>include</key> | |
| 10268 | <string>#jsx-entities</string> | |
| 10269 | </dict> | |
| 10270 | </array> | |
| 10271 | </dict> | |
| 10272 | <key>jsx-tag-attributes-illegal</key> | |
| 10273 | <dict> | |
| 10274 | <key>name</key> | |
| 10275 | <string>invalid.illegal.attribute.tsx</string> | |
| 10276 | <key>match</key> | |
| 10277 | <string>\S+</string> | |
| 10278 | </dict> | |
| 10279 | </dict> | |
| 10280 | </dict> | |
| 10281 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/xml.plist created+573| ... | ... | @@ -0,0 +1,573 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>xml</string> | |
| 8 | 		<string>xsd</string> | |
| 9 | 		<string>tld</string> | |
| 10 | 		<string>jsp</string> | |
| 11 | 		<string>pt</string> | |
| 12 | 		<string>cpt</string> | |
| 13 | 		<string>dtml</string> | |
| 14 | 		<string>rss</string> | |
| 15 | 		<string>opml</string> | |
| 16 | 	</array> | |
| 17 | 	<key>keyEquivalent</key> | |
| 18 | 	<string>^~X</string> | |
| 19 | 	<key>name</key> | |
| 20 | 	<string>XML</string> | |
| 21 | 	<key>patterns</key> | |
| 22 | 	<array> | |
| 23 | 		<dict> | |
| 24 | 			<key>begin</key> | |
| 25 | 			<string>(&lt;\?)\s*([-_a-zA-Z0-9]+)</string> | |
| 26 | 			<key>captures</key> | |
| 27 | 			<dict> | |
| 28 | 				<key>1</key> | |
| 29 | 				<dict> | |
| 30 | 					<key>name</key> | |
| 31 | 					<string>punctuation.definition.tag.xml</string> | |
| 32 | 				</dict> | |
| 33 | 				<key>2</key> | |
| 34 | 				<dict> | |
| 35 | 					<key>name</key> | |
| 36 | 					<string>entity.name.tag.xml</string> | |
| 37 | 				</dict> | |
| 38 | 			</dict> | |
| 39 | 			<key>end</key> | |
| 40 | 			<string>(\?&gt;)</string> | |
| 41 | 			<key>name</key> | |
| 42 | 			<string>meta.tag.metadata.processing.xml</string> | |
| 43 | 			<key>patterns</key> | |
| 44 | 			<array> | |
| 45 | 				<dict> | |
| 46 | 					<key>match</key> | |
| 47 | 					<string> ([a-zA-Z-]+)</string> | |
| 48 | 					<key>name</key> | |
| 49 | 					<string>entity.other.attribute-name.xml</string> | |
| 50 | 				</dict> | |
| 51 | 				<dict> | |
| 52 | 					<key>include</key> | |
| 53 | 					<string>#doublequotedString</string> | |
| 54 | 				</dict> | |
| 55 | 				<dict> | |
| 56 | 					<key>include</key> | |
| 57 | 					<string>#singlequotedString</string> | |
| 58 | 				</dict> | |
| 59 | 			</array> | |
| 60 | 		</dict> | |
| 61 | 		<dict> | |
| 62 | 			<key>begin</key> | |
| 63 | 			<string>(&lt;!)(DOCTYPE)\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)</string> | |
| 64 | 			<key>captures</key> | |
| 65 | 			<dict> | |
| 66 | 				<key>1</key> | |
| 67 | 				<dict> | |
| 68 | 					<key>name</key> | |
| 69 | 					<string>punctuation.definition.tag.xml</string> | |
| 70 | 				</dict> | |
| 71 | 				<key>2</key> | |
| 72 | 				<dict> | |
| 73 | 					<key>name</key> | |
| 74 | 					<string>entity.name.tag.xml</string> | |
| 75 | 				</dict> | |
| 76 | 				<key>3</key> | |
| 77 | 				<dict> | |
| 78 | 					<key>name</key> | |
| 79 | 					<string>entity.other.attribute-name.documentroot.xml</string> | |
| 80 | 				</dict> | |
| 81 | 			</dict> | |
| 82 | 			<key>end</key> | |
| 83 | 			<string>\s*(&gt;)</string> | |
| 84 | 			<key>name</key> | |
| 85 | 			<string>meta.tag.metadata.doctype.xml</string> | |
| 86 | 			<key>patterns</key> | |
| 87 | 			<array> | |
| 88 | 				<dict> | |
| 89 | 					<key>include</key> | |
| 90 | 					<string>#internalSubset</string> | |
| 91 | 				</dict> | |
| 92 | 			</array> | |
| 93 | 		</dict> | |
| 94 | 		<dict> | |
| 95 | 			<key>begin</key> | |
| 96 | 			<string>&lt;[!%]--</string> | |
| 97 | 			<key>captures</key> | |
| 98 | 			<dict> | |
| 99 | 				<key>0</key> | |
| 100 | 				<dict> | |
| 101 | 					<key>name</key> | |
| 102 | 					<string>punctuation.definition.comment.xml</string> | |
| 103 | 				</dict> | |
| 104 | 			</dict> | |
| 105 | 			<key>end</key> | |
| 106 | 			<string>--%?&gt;</string> | |
| 107 | 			<key>name</key> | |
| 108 | 			<string>comment.block.xml</string> | |
| 109 | 		</dict> | |
| 110 | 		<dict> | |
| 111 | 			<key>begin</key> | |
| 112 | 			<string>(&lt;)((?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+))(?=(\s[^&gt;]*)?&gt;&lt;/\2&gt;)</string> | |
| 113 | 			<key>beginCaptures</key> | |
| 114 | 			<dict> | |
| 115 | 				<key>1</key> | |
| 116 | 				<dict> | |
| 117 | 					<key>name</key> | |
| 118 | 					<string>punctuation.definition.tag.xml</string> | |
| 119 | 				</dict> | |
| 120 | 				<key>3</key> | |
| 121 | 				<dict> | |
| 122 | 					<key>name</key> | |
| 123 | 					<string>entity.name.tag.namespace.xml</string> | |
| 124 | 				</dict> | |
| 125 | 				<key>4</key> | |
| 126 | 				<dict> | |
| 127 | 					<key>name</key> | |
| 128 | 					<string>entity.name.tag.xml</string> | |
| 129 | 				</dict> | |
| 130 | 				<key>5</key> | |
| 131 | 				<dict> | |
| 132 | 					<key>name</key> | |
| 133 | 					<string>punctuation.separator.namespace.xml</string> | |
| 134 | 				</dict> | |
| 135 | 				<key>6</key> | |
| 136 | 				<dict> | |
| 137 | 					<key>name</key> | |
| 138 | 					<string>entity.name.tag.localname.xml</string> | |
| 139 | 				</dict> | |
| 140 | 			</dict> | |
| 141 | 			<key>end</key> | |
| 142 | 			<string>(&gt;(&lt;))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)(&gt;)</string> | |
| 143 | 			<key>endCaptures</key> | |
| 144 | 			<dict> | |
| 145 | 				<key>1</key> | |
| 146 | 				<dict> | |
| 147 | 					<key>name</key> | |
| 148 | 					<string>punctuation.definition.tag.xml</string> | |
| 149 | 				</dict> | |
| 150 | 				<key>2</key> | |
| 151 | 				<dict> | |
| 152 | 					<key>name</key> | |
| 153 | 					<string>meta.scope.between-tag-pair.xml</string> | |
| 154 | 				</dict> | |
| 155 | 				<key>3</key> | |
| 156 | 				<dict> | |
| 157 | 					<key>name</key> | |
| 158 | 					<string>entity.name.tag.namespace.xml</string> | |
| 159 | 				</dict> | |
| 160 | 				<key>4</key> | |
| 161 | 				<dict> | |
| 162 | 					<key>name</key> | |
| 163 | 					<string>entity.name.tag.xml</string> | |
| 164 | 				</dict> | |
| 165 | 				<key>5</key> | |
| 166 | 				<dict> | |
| 167 | 					<key>name</key> | |
| 168 | 					<string>punctuation.separator.namespace.xml</string> | |
| 169 | 				</dict> | |
| 170 | 				<key>6</key> | |
| 171 | 				<dict> | |
| 172 | 					<key>name</key> | |
| 173 | 					<string>entity.name.tag.localname.xml</string> | |
| 174 | 				</dict> | |
| 175 | 				<key>7</key> | |
| 176 | 				<dict> | |
| 177 | 					<key>name</key> | |
| 178 | 					<string>punctuation.definition.tag.xml</string> | |
| 179 | 				</dict> | |
| 180 | 			</dict> | |
| 181 | 			<key>name</key> | |
| 182 | 			<string>meta.tag.no-content.xml</string> | |
| 183 | 			<key>patterns</key> | |
| 184 | 			<array> | |
| 185 | 				<dict> | |
| 186 | 					<key>include</key> | |
| 187 | 					<string>#tagStuff</string> | |
| 188 | 				</dict> | |
| 189 | 			</array> | |
| 190 | 		</dict> | |
| 191 | 		<dict> | |
| 192 | 			<key>begin</key> | |
| 193 | 			<string>(&lt;/?)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)</string> | |
| 194 | 			<key>captures</key> | |
| 195 | 			<dict> | |
| 196 | 				<key>1</key> | |
| 197 | 				<dict> | |
| 198 | 					<key>name</key> | |
| 199 | 					<string>punctuation.definition.tag.xml</string> | |
| 200 | 				</dict> | |
| 201 | 				<key>2</key> | |
| 202 | 				<dict> | |
| 203 | 					<key>name</key> | |
| 204 | 					<string>entity.name.tag.namespace.xml</string> | |
| 205 | 				</dict> | |
| 206 | 				<key>3</key> | |
| 207 | 				<dict> | |
| 208 | 					<key>name</key> | |
| 209 | 					<string>entity.name.tag.xml</string> | |
| 210 | 				</dict> | |
| 211 | 				<key>4</key> | |
| 212 | 				<dict> | |
| 213 | 					<key>name</key> | |
| 214 | 					<string>punctuation.separator.namespace.xml</string> | |
| 215 | 				</dict> | |
| 216 | 				<key>5</key> | |
| 217 | 				<dict> | |
| 218 | 					<key>name</key> | |
| 219 | 					<string>entity.name.tag.localname.xml</string> | |
| 220 | 				</dict> | |
| 221 | 			</dict> | |
| 222 | 			<key>end</key> | |
| 223 | 			<string>(/?&gt;)</string> | |
| 224 | 			<key>name</key> | |
| 225 | 			<string>meta.tag.xml</string> | |
| 226 | 			<key>patterns</key> | |
| 227 | 			<array> | |
| 228 | 				<dict> | |
| 229 | 					<key>include</key> | |
| 230 | 					<string>#tagStuff</string> | |
| 231 | 				</dict> | |
| 232 | 			</array> | |
| 233 | 		</dict> | |
| 234 | 		<dict> | |
| 235 | 			<key>include</key> | |
| 236 | 			<string>#entity</string> | |
| 237 | 		</dict> | |
| 238 | 		<dict> | |
| 239 | 			<key>include</key> | |
| 240 | 			<string>#bare-ampersand</string> | |
| 241 | 		</dict> | |
| 242 | 		<dict> | |
| 243 | 			<key>begin</key> | |
| 244 | 			<string>&lt;%@</string> | |
| 245 | 			<key>beginCaptures</key> | |
| 246 | 			<dict> | |
| 247 | 				<key>0</key> | |
| 248 | 				<dict> | |
| 249 | 					<key>name</key> | |
| 250 | 					<string>punctuation.section.embedded.begin.xml</string> | |
| 251 | 				</dict> | |
| 252 | 			</dict> | |
| 253 | 			<key>end</key> | |
| 254 | 			<string>%&gt;</string> | |
| 255 | 			<key>endCaptures</key> | |
| 256 | 			<dict> | |
| 257 | 				<key>0</key> | |
| 258 | 				<dict> | |
| 259 | 					<key>name</key> | |
| 260 | 					<string>punctuation.section.embedded.end.xml</string> | |
| 261 | 				</dict> | |
| 262 | 			</dict> | |
| 263 | 			<key>name</key> | |
| 264 | 			<string>source.java-props.embedded.xml</string> | |
| 265 | 			<key>patterns</key> | |
| 266 | 			<array> | |
| 267 | 				<dict> | |
| 268 | 					<key>match</key> | |
| 269 | 					<string>page|include|taglib</string> | |
| 270 | 					<key>name</key> | |
| 271 | 					<string>keyword.other.page-props.xml</string> | |
| 272 | 				</dict> | |
| 273 | 			</array> | |
| 274 | 		</dict> | |
| 275 | 		<dict> | |
| 276 | 			<key>begin</key> | |
| 277 | 			<string>&lt;%[!=]?(?!--)</string> | |
| 278 | 			<key>beginCaptures</key> | |
| 279 | 			<dict> | |
| 280 | 				<key>0</key> | |
| 281 | 				<dict> | |
| 282 | 					<key>name</key> | |
| 283 | 					<string>punctuation.section.embedded.begin.xml</string> | |
| 284 | 				</dict> | |
| 285 | 			</dict> | |
| 286 | 			<key>end</key> | |
| 287 | 			<string>(?!--)%&gt;</string> | |
| 288 | 			<key>endCaptures</key> | |
| 289 | 			<dict> | |
| 290 | 				<key>0</key> | |
| 291 | 				<dict> | |
| 292 | 					<key>name</key> | |
| 293 | 					<string>punctuation.section.embedded.end.xml</string> | |
| 294 | 				</dict> | |
| 295 | 			</dict> | |
| 296 | 			<key>name</key> | |
| 297 | 			<string>source.java.embedded.xml</string> | |
| 298 | 			<key>patterns</key> | |
| 299 | 			<array> | |
| 300 | 				<dict> | |
| 301 | 					<key>include</key> | |
| 302 | 					<string>source.java</string> | |
| 303 | 				</dict> | |
| 304 | 			</array> | |
| 305 | 		</dict> | |
| 306 | 		<dict> | |
| 307 | 			<key>begin</key> | |
| 308 | 			<string>&lt;!\[CDATA\[</string> | |
| 309 | 			<key>beginCaptures</key> | |
| 310 | 			<dict> | |
| 311 | 				<key>0</key> | |
| 312 | 				<dict> | |
| 313 | 					<key>name</key> | |
| 314 | 					<string>punctuation.definition.string.begin.xml</string> | |
| 315 | 				</dict> | |
| 316 | 			</dict> | |
| 317 | 			<key>end</key> | |
| 318 | 			<string>]]&gt;</string> | |
| 319 | 			<key>endCaptures</key> | |
| 320 | 			<dict> | |
| 321 | 				<key>0</key> | |
| 322 | 				<dict> | |
| 323 | 					<key>name</key> | |
| 324 | 					<string>punctuation.definition.string.end.xml</string> | |
| 325 | 				</dict> | |
| 326 | 			</dict> | |
| 327 | 			<key>name</key> | |
| 328 | 			<string>string.unquoted.cdata.xml</string> | |
| 329 | 		</dict> | |
| 330 | 	</array> | |
| 331 | 	<key>repository</key> | |
| 332 | 	<dict> | |
| 333 | 		<key>EntityDecl</key> | |
| 334 | 		<dict> | |
| 335 | 			<key>begin</key> | |
| 336 | 			<string>(&lt;!)(ENTITY)\s+(%\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\s+(?:SYSTEM|PUBLIC)\s+)?</string> | |
| 337 | 			<key>captures</key> | |
| 338 | 			<dict> | |
| 339 | 				<key>1</key> | |
| 340 | 				<dict> | |
| 341 | 					<key>name</key> | |
| 342 | 					<string>punctuation.definition.tag.xml</string> | |
| 343 | 				</dict> | |
| 344 | 				<key>2</key> | |
| 345 | 				<dict> | |
| 346 | 					<key>name</key> | |
| 347 | 					<string>keyword.other.entity.xml</string> | |
| 348 | 				</dict> | |
| 349 | 				<key>3</key> | |
| 350 | 				<dict> | |
| 351 | 					<key>name</key> | |
| 352 | 					<string>punctuation.definition.entity.xml</string> | |
| 353 | 				</dict> | |
| 354 | 				<key>4</key> | |
| 355 | 				<dict> | |
| 356 | 					<key>name</key> | |
| 357 | 					<string>variable.language.entity.xml</string> | |
| 358 | 				</dict> | |
| 359 | 				<key>5</key> | |
| 360 | 				<dict> | |
| 361 | 					<key>name</key> | |
| 362 | 					<string>keyword.other.entitytype.xml</string> | |
| 363 | 				</dict> | |
| 364 | 			</dict> | |
| 365 | 			<key>end</key> | |
| 366 | 			<string>(&gt;)</string> | |
| 367 | 			<key>patterns</key> | |
| 368 | 			<array> | |
| 369 | 				<dict> | |
| 370 | 					<key>include</key> | |
| 371 | 					<string>#doublequotedString</string> | |
| 372 | 				</dict> | |
| 373 | 				<dict> | |
| 374 | 					<key>include</key> | |
| 375 | 					<string>#singlequotedString</string> | |
| 376 | 				</dict> | |
| 377 | 			</array> | |
| 378 | 		</dict> | |
| 379 | 		<key>bare-ampersand</key> | |
| 380 | 		<dict> | |
| 381 | 			<key>match</key> | |
| 382 | 			<string>&amp;</string> | |
| 383 | 			<key>name</key> | |
| 384 | 			<string>invalid.illegal.bad-ampersand.xml</string> | |
| 385 | 		</dict> | |
| 386 | 		<key>doublequotedString</key> | |
| 387 | 		<dict> | |
| 388 | 			<key>begin</key> | |
| 389 | 			<string>"</string> | |
| 390 | 			<key>beginCaptures</key> | |
| 391 | 			<dict> | |
| 392 | 				<key>0</key> | |
| 393 | 				<dict> | |
| 394 | 					<key>name</key> | |
| 395 | 					<string>punctuation.definition.string.begin.xml</string> | |
| 396 | 				</dict> | |
| 397 | 			</dict> | |
| 398 | 			<key>end</key> | |
| 399 | 			<string>"</string> | |
| 400 | 			<key>endCaptures</key> | |
| 401 | 			<dict> | |
| 402 | 				<key>0</key> | |
| 403 | 				<dict> | |
| 404 | 					<key>name</key> | |
| 405 | 					<string>punctuation.definition.string.end.xml</string> | |
| 406 | 				</dict> | |
| 407 | 			</dict> | |
| 408 | 			<key>name</key> | |
| 409 | 			<string>string.quoted.double.xml</string> | |
| 410 | 			<key>patterns</key> | |
| 411 | 			<array> | |
| 412 | 				<dict> | |
| 413 | 					<key>include</key> | |
| 414 | 					<string>#entity</string> | |
| 415 | 				</dict> | |
| 416 | 				<dict> | |
| 417 | 					<key>include</key> | |
| 418 | 					<string>#bare-ampersand</string> | |
| 419 | 				</dict> | |
| 420 | 			</array> | |
| 421 | 		</dict> | |
| 422 | 		<key>entity</key> | |
| 423 | 		<dict> | |
| 424 | 			<key>captures</key> | |
| 425 | 			<dict> | |
| 426 | 				<key>1</key> | |
| 427 | 				<dict> | |
| 428 | 					<key>name</key> | |
| 429 | 					<string>punctuation.definition.constant.xml</string> | |
| 430 | 				</dict> | |
| 431 | 				<key>3</key> | |
| 432 | 				<dict> | |
| 433 | 					<key>name</key> | |
| 434 | 					<string>punctuation.definition.constant.xml</string> | |
| 435 | 				</dict> | |
| 436 | 			</dict> | |
| 437 | 			<key>match</key> | |
| 438 | 			<string>(&amp;)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)</string> | |
| 439 | 			<key>name</key> | |
| 440 | 			<string>constant.character.entity.xml</string> | |
| 441 | 		</dict> | |
| 442 | 		<key>internalSubset</key> | |
| 443 | 		<dict> | |
| 444 | 			<key>begin</key> | |
| 445 | 			<string>(\[)</string> | |
| 446 | 			<key>captures</key> | |
| 447 | 			<dict> | |
| 448 | 				<key>1</key> | |
| 449 | 				<dict> | |
| 450 | 					<key>name</key> | |
| 451 | 					<string>punctuation.definition.constant.xml</string> | |
| 452 | 				</dict> | |
| 453 | 			</dict> | |
| 454 | 			<key>end</key> | |
| 455 | 			<string>(\])</string> | |
| 456 | 			<key>name</key> | |
| 457 | 			<string>meta.internalsubset.xml</string> | |
| 458 | 			<key>patterns</key> | |
| 459 | 			<array> | |
| 460 | 				<dict> | |
| 461 | 					<key>include</key> | |
| 462 | 					<string>#EntityDecl</string> | |
| 463 | 				</dict> | |
| 464 | 				<dict> | |
| 465 | 					<key>include</key> | |
| 466 | 					<string>#parameterEntity</string> | |
| 467 | 				</dict> | |
| 468 | 			</array> | |
| 469 | 		</dict> | |
| 470 | 		<key>parameterEntity</key> | |
| 471 | 		<dict> | |
| 472 | 			<key>captures</key> | |
| 473 | 			<dict> | |
| 474 | 				<key>1</key> | |
| 475 | 				<dict> | |
| 476 | 					<key>name</key> | |
| 477 | 					<string>punctuation.definition.constant.xml</string> | |
| 478 | 				</dict> | |
| 479 | 				<key>3</key> | |
| 480 | 				<dict> | |
| 481 | 					<key>name</key> | |
| 482 | 					<string>punctuation.definition.constant.xml</string> | |
| 483 | 				</dict> | |
| 484 | 			</dict> | |
| 485 | 			<key>match</key> | |
| 486 | 			<string>(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)</string> | |
| 487 | 			<key>name</key> | |
| 488 | 			<string>constant.character.parameter-entity.xml</string> | |
| 489 | 		</dict> | |
| 490 | 		<key>singlequotedString</key> | |
| 491 | 		<dict> | |
| 492 | 			<key>begin</key> | |
| 493 | 			<string>'</string> | |
| 494 | 			<key>beginCaptures</key> | |
| 495 | 			<dict> | |
| 496 | 				<key>0</key> | |
| 497 | 				<dict> | |
| 498 | 					<key>name</key> | |
| 499 | 					<string>punctuation.definition.string.begin.xml</string> | |
| 500 | 				</dict> | |
| 501 | 			</dict> | |
| 502 | 			<key>end</key> | |
| 503 | 			<string>'</string> | |
| 504 | 			<key>endCaptures</key> | |
| 505 | 			<dict> | |
| 506 | 				<key>0</key> | |
| 507 | 				<dict> | |
| 508 | 					<key>name</key> | |
| 509 | 					<string>punctuation.definition.string.end.xml</string> | |
| 510 | 				</dict> | |
| 511 | 			</dict> | |
| 512 | 			<key>name</key> | |
| 513 | 			<string>string.quoted.single.xml</string> | |
| 514 | 			<key>patterns</key> | |
| 515 | 			<array> | |
| 516 | 				<dict> | |
| 517 | 					<key>include</key> | |
| 518 | 					<string>#entity</string> | |
| 519 | 				</dict> | |
| 520 | 				<dict> | |
| 521 | 					<key>include</key> | |
| 522 | 					<string>#bare-ampersand</string> | |
| 523 | 				</dict> | |
| 524 | 			</array> | |
| 525 | 		</dict> | |
| 526 | 		<key>tagStuff</key> | |
| 527 | 		<dict> | |
| 528 | 			<key>patterns</key> | |
| 529 | 			<array> | |
| 530 | 				<dict> | |
| 531 | 					<key>captures</key> | |
| 532 | 					<dict> | |
| 533 | 						<key>1</key> | |
| 534 | 						<dict> | |
| 535 | 							<key>name</key> | |
| 536 | 							<string>entity.other.attribute-name.namespace.xml</string> | |
| 537 | 						</dict> | |
| 538 | 						<key>2</key> | |
| 539 | 						<dict> | |
| 540 | 							<key>name</key> | |
| 541 | 							<string>entity.other.attribute-name.xml</string> | |
| 542 | 						</dict> | |
| 543 | 						<key>3</key> | |
| 544 | 						<dict> | |
| 545 | 							<key>name</key> | |
| 546 | 							<string>punctuation.separator.namespace.xml</string> | |
| 547 | 						</dict> | |
| 548 | 						<key>4</key> | |
| 549 | 						<dict> | |
| 550 | 							<key>name</key> | |
| 551 | 							<string>entity.other.attribute-name.localname.xml</string> | |
| 552 | 						</dict> | |
| 553 | 					</dict> | |
| 554 | 					<key>match</key> | |
| 555 | 					<string> (?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9]+)=</string> | |
| 556 | 				</dict> | |
| 557 | 				<dict> | |
| 558 | 					<key>include</key> | |
| 559 | 					<string>#doublequotedString</string> | |
| 560 | 				</dict> | |
| 561 | 				<dict> | |
| 562 | 					<key>include</key> | |
| 563 | 					<string>#singlequotedString</string> | |
| 564 | 				</dict> | |
| 565 | 			</array> | |
| 566 | 		</dict> | |
| 567 | 	</dict> | |
| 568 | 	<key>scopeName</key> | |
| 569 | 	<string>text.xml</string> | |
| 570 | 	<key>uuid</key> | |
| 571 | 	<string>D3C4E6DA-6B1C-11D9-8CC2-000D93589AF6</string> | |
| 572 | </dict> | |
| 573 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/yaml.plist created+1164| ... | ... | @@ -0,0 +1,1164 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>yaml</string> | |
| 8 | 		<string>yml</string> | |
| 9 | 		<string>rviz</string> | |
| 10 | 		<string>reek</string> | |
| 11 | 		<string>clang-format</string> | |
| 12 | 		<string>yaml-tmlanguage</string> | |
| 13 | 		<string>syntax</string> | |
| 14 | 		<string>sublime-syntax</string> | |
| 15 | 	</array> | |
| 16 | 	<key>firstLineMatch</key> | |
| 17 | 	<string>^%YAML( ?1.\d+)?</string> | |
| 18 | 	<key>keyEquivalent</key> | |
| 19 | 	<string>^~Y</string> | |
| 20 | 	<key>name</key> | |
| 21 | 	<string>YAML</string> | |
| 22 | 	<key>patterns</key> | |
| 23 | 	<array> | |
| 24 | 		<dict> | |
| 25 | 			<key>include</key> | |
| 26 | 			<string>#comment</string> | |
| 27 | 		</dict> | |
| 28 | 		<dict> | |
| 29 | 			<key>include</key> | |
| 30 | 			<string>#property</string> | |
| 31 | 		</dict> | |
| 32 | 		<dict> | |
| 33 | 			<key>include</key> | |
| 34 | 			<string>#directive</string> | |
| 35 | 		</dict> | |
| 36 | 		<dict> | |
| 37 | 			<key>match</key> | |
| 38 | 			<string>^---</string> | |
| 39 | 			<key>name</key> | |
| 40 | 			<string>entity.other.document.begin.yaml</string> | |
| 41 | 		</dict> | |
| 42 | 		<dict> | |
| 43 | 			<key>match</key> | |
| 44 | 			<string>^\.{3}</string> | |
| 45 | 			<key>name</key> | |
| 46 | 			<string>entity.other.document.end.yaml</string> | |
| 47 | 		</dict> | |
| 48 | 		<dict> | |
| 49 | 			<key>include</key> | |
| 50 | 			<string>#node</string> | |
| 51 | 		</dict> | |
| 52 | 	</array> | |
| 53 | 	<key>repository</key> | |
| 54 | 	<dict> | |
| 55 | 		<key>block-collection</key> | |
| 56 | 		<dict> | |
| 57 | 			<key>patterns</key> | |
| 58 | 			<array> | |
| 59 | 				<dict> | |
| 60 | 					<key>include</key> | |
| 61 | 					<string>#block-sequence</string> | |
| 62 | 				</dict> | |
| 63 | 				<dict> | |
| 64 | 					<key>include</key> | |
| 65 | 					<string>#block-mapping</string> | |
| 66 | 				</dict> | |
| 67 | 			</array> | |
| 68 | 		</dict> | |
| 69 | 		<key>block-mapping</key> | |
| 70 | 		<dict> | |
| 71 | 			<key>patterns</key> | |
| 72 | 			<array> | |
| 73 | 				<dict> | |
| 74 | 					<key>include</key> | |
| 75 | 					<string>#block-pair</string> | |
| 76 | 				</dict> | |
| 77 | 			</array> | |
| 78 | 		</dict> | |
| 79 | 		<key>block-node</key> | |
| 80 | 		<dict> | |
| 81 | 			<key>patterns</key> | |
| 82 | 			<array> | |
| 83 | 				<dict> | |
| 84 | 					<key>include</key> | |
| 85 | 					<string>#prototype</string> | |
| 86 | 				</dict> | |
| 87 | 				<dict> | |
| 88 | 					<key>include</key> | |
| 89 | 					<string>#block-scalar</string> | |
| 90 | 				</dict> | |
| 91 | 				<dict> | |
| 92 | 					<key>include</key> | |
| 93 | 					<string>#block-collection</string> | |
| 94 | 				</dict> | |
| 95 | 				<dict> | |
| 96 | 					<key>include</key> | |
| 97 | 					<string>#flow-scalar-plain-out</string> | |
| 98 | 				</dict> | |
| 99 | 				<dict> | |
| 100 | 					<key>include</key> | |
| 101 | 					<string>#flow-node</string> | |
| 102 | 				</dict> | |
| 103 | 			</array> | |
| 104 | 		</dict> | |
| 105 | 		<key>block-pair</key> | |
| 106 | 		<dict> | |
| 107 | 			<key>patterns</key> | |
| 108 | 			<array> | |
| 109 | 				<dict> | |
| 110 | 					<key>begin</key> | |
| 111 | 					<string>\?</string> | |
| 112 | 					<key>beginCaptures</key> | |
| 113 | 					<dict> | |
| 114 | 						<key>1</key> | |
| 115 | 						<dict> | |
| 116 | 							<key>name</key> | |
| 117 | 							<string>punctuation.definition.key-value.begin.yaml</string> | |
| 118 | 						</dict> | |
| 119 | 					</dict> | |
| 120 | 					<key>end</key> | |
| 121 | 					<string>(?=\?)|^ *(:)|(:)</string> | |
| 122 | 					<key>endCaptures</key> | |
| 123 | 					<dict> | |
| 124 | 						<key>1</key> | |
| 125 | 						<dict> | |
| 126 | 							<key>name</key> | |
| 127 | 							<string>punctuation.separator.key-value.mapping.yaml</string> | |
| 128 | 						</dict> | |
| 129 | 						<key>2</key> | |
| 130 | 						<dict> | |
| 131 | 							<key>name</key> | |
| 132 | 							<string>invalid.illegal.expected-newline.yaml</string> | |
| 133 | 						</dict> | |
| 134 | 					</dict> | |
| 135 | 					<key>name</key> | |
| 136 | 					<string>meta.block-mapping.yaml</string> | |
| 137 | 					<key>patterns</key> | |
| 138 | 					<array> | |
| 139 | 						<dict> | |
| 140 | 							<key>include</key> | |
| 141 | 							<string>#block-node</string> | |
| 142 | 						</dict> | |
| 143 | 					</array> | |
| 144 | 				</dict> | |
| 145 | 				<dict> | |
| 146 | 					<key>begin</key> | |
| 147 | 					<string>(?x) | |
| 148 | (?= | |
| 149 | (?x: | |
| 150 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 151 | | [?:-] \S | |
| 152 | ) | |
| 153 | ( | |
| 154 | [^\s:] | |
| 155 | | : \S | |
| 156 | | \s+ (?![#\s]) | |
| 157 | )* | |
| 158 | \s* | |
| 159 | : | |
| 160 | 							(\s|$) | |
| 161 | ) | |
| 162 | </string> | |
| 163 | 					<key>end</key> | |
| 164 | 					<string>(?x) | |
| 165 | (?= | |
| 166 | \s* $ | |
| 167 | | \s+ \# | |
| 168 | | \s* : (\s|$) | |
| 169 | ) | |
| 170 | </string> | |
| 171 | 					<key>patterns</key> | |
| 172 | 					<array> | |
| 173 | 						<dict> | |
| 174 | 							<key>include</key> | |
| 175 | 							<string>#flow-scalar-plain-out-implicit-type</string> | |
| 176 | 						</dict> | |
| 177 | 						<dict> | |
| 178 | 							<key>begin</key> | |
| 179 | 							<string>(?x) | |
| 180 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 181 | | [?:-] \S | |
| 182 | </string> | |
| 183 | 							<key>beginCaptures</key> | |
| 184 | 							<dict> | |
| 185 | 								<key>0</key> | |
| 186 | 								<dict> | |
| 187 | 									<key>name</key> | |
| 188 | 									<string>entity.name.tag.yaml</string> | |
| 189 | 								</dict> | |
| 190 | 							</dict> | |
| 191 | 							<key>contentName</key> | |
| 192 | 							<string>entity.name.tag.yaml</string> | |
| 193 | 							<key>end</key> | |
| 194 | 							<string>(?x) | |
| 195 | (?= | |
| 196 | \s* $ | |
| 197 | | \s+ \# | |
| 198 | | \s* : (\s|$) | |
| 199 | ) | |
| 200 | </string> | |
| 201 | 							<key>name</key> | |
| 202 | 							<string>string.unquoted.plain.out.yaml</string> | |
| 203 | 						</dict> | |
| 204 | 					</array> | |
| 205 | 				</dict> | |
| 206 | 				<dict> | |
| 207 | 					<key>match</key> | |
| 208 | 					<string>:(?=\s|$)</string> | |
| 209 | 					<key>name</key> | |
| 210 | 					<string>punctuation.separator.key-value.mapping.yaml</string> | |
| 211 | 				</dict> | |
| 212 | 			</array> | |
| 213 | 		</dict> | |
| 214 | 		<key>block-scalar</key> | |
| 215 | 		<dict> | |
| 216 | 			<key>begin</key> | |
| 217 | 			<string>(?:(\|)|(&gt;))([1-9])?([-+])?(.*\n?)</string> | |
| 218 | 			<key>beginCaptures</key> | |
| 219 | 			<dict> | |
| 220 | 				<key>1</key> | |
| 221 | 				<dict> | |
| 222 | 					<key>name</key> | |
| 223 | 					<string>keyword.control.flow.block-scalar.literal.yaml</string> | |
| 224 | 				</dict> | |
| 225 | 				<key>2</key> | |
| 226 | 				<dict> | |
| 227 | 					<key>name</key> | |
| 228 | 					<string>keyword.control.flow.block-scalar.folded.yaml</string> | |
| 229 | 				</dict> | |
| 230 | 				<key>3</key> | |
| 231 | 				<dict> | |
| 232 | 					<key>name</key> | |
| 233 | 					<string>constant.numeric.indentation-indicator.yaml</string> | |
| 234 | 				</dict> | |
| 235 | 				<key>4</key> | |
| 236 | 				<dict> | |
| 237 | 					<key>name</key> | |
| 238 | 					<string>storage.modifier.chomping-indicator.yaml</string> | |
| 239 | 				</dict> | |
| 240 | 				<key>5</key> | |
| 241 | 				<dict> | |
| 242 | 					<key>patterns</key> | |
| 243 | 					<array> | |
| 244 | 						<dict> | |
| 245 | 							<key>include</key> | |
| 246 | 							<string>#comment</string> | |
| 247 | 						</dict> | |
| 248 | 						<dict> | |
| 249 | 							<key>match</key> | |
| 250 | 							<string>.+</string> | |
| 251 | 							<key>name</key> | |
| 252 | 							<string>invalid.illegal.expected-comment-or-newline.yaml</string> | |
| 253 | 						</dict> | |
| 254 | 					</array> | |
| 255 | 				</dict> | |
| 256 | 			</dict> | |
| 257 | 			<key>end</key> | |
| 258 | 			<string>^(?=\S)|(?!\G)</string> | |
| 259 | 			<key>patterns</key> | |
| 260 | 			<array> | |
| 261 | 				<dict> | |
| 262 | 					<key>begin</key> | |
| 263 | 					<string>^([ ]+)(?! )</string> | |
| 264 | 					<key>end</key> | |
| 265 | 					<string>^(?!\1|\s*$)</string> | |
| 266 | 					<key>name</key> | |
| 267 | 					<string>string.unquoted.block.yaml</string> | |
| 268 | 				</dict> | |
| 269 | 			</array> | |
| 270 | 		</dict> | |
| 271 | 		<key>block-sequence</key> | |
| 272 | 		<dict> | |
| 273 | 			<key>match</key> | |
| 274 | 			<string>(-)(?!\S)</string> | |
| 275 | 			<key>name</key> | |
| 276 | 			<string>punctuation.definition.block.sequence.item.yaml</string> | |
| 277 | 		</dict> | |
| 278 | 		<key>comment</key> | |
| 279 | 		<dict> | |
| 280 | 			<key>begin</key> | |
| 281 | 			<string>(?:(^[ \t]*)|[ \t]+)(?=#\p{Print}*$)</string> | |
| 282 | 			<key>beginCaptures</key> | |
| 283 | 			<dict> | |
| 284 | 				<key>1</key> | |
| 285 | 				<dict> | |
| 286 | 					<key>name</key> | |
| 287 | 					<string>punctuation.whitespace.comment.leading.yaml</string> | |
| 288 | 				</dict> | |
| 289 | 			</dict> | |
| 290 | 			<key>end</key> | |
| 291 | 			<string>(?!\G)</string> | |
| 292 | 			<key>patterns</key> | |
| 293 | 			<array> | |
| 294 | 				<dict> | |
| 295 | 					<key>begin</key> | |
| 296 | 					<string>#</string> | |
| 297 | 					<key>beginCaptures</key> | |
| 298 | 					<dict> | |
| 299 | 						<key>0</key> | |
| 300 | 						<dict> | |
| 301 | 							<key>name</key> | |
| 302 | 							<string>punctuation.definition.comment.yaml</string> | |
| 303 | 						</dict> | |
| 304 | 					</dict> | |
| 305 | 					<key>end</key> | |
| 306 | 					<string>\n</string> | |
| 307 | 					<key>name</key> | |
| 308 | 					<string>comment.line.number-sign.yaml</string> | |
| 309 | 				</dict> | |
| 310 | 			</array> | |
| 311 | 		</dict> | |
| 312 | 		<key>directive</key> | |
| 313 | 		<dict> | |
| 314 | 			<key>begin</key> | |
| 315 | 			<string>^%</string> | |
| 316 | 			<key>beginCaptures</key> | |
| 317 | 			<dict> | |
| 318 | 				<key>0</key> | |
| 319 | 				<dict> | |
| 320 | 					<key>name</key> | |
| 321 | 					<string>punctuation.definition.directive.begin.yaml</string> | |
| 322 | 				</dict> | |
| 323 | 			</dict> | |
| 324 | 			<key>end</key> | |
| 325 | 			<string>(?=$|[ \t]+($|#))</string> | |
| 326 | 			<key>name</key> | |
| 327 | 			<string>meta.directive.yaml</string> | |
| 328 | 			<key>patterns</key> | |
| 329 | 			<array> | |
| 330 | 				<dict> | |
| 331 | 					<key>captures</key> | |
| 332 | 					<dict> | |
| 333 | 						<key>1</key> | |
| 334 | 						<dict> | |
| 335 | 							<key>name</key> | |
| 336 | 							<string>keyword.other.directive.yaml.yaml</string> | |
| 337 | 						</dict> | |
| 338 | 						<key>2</key> | |
| 339 | 						<dict> | |
| 340 | 							<key>name</key> | |
| 341 | 							<string>constant.numeric.yaml-version.yaml</string> | |
| 342 | 						</dict> | |
| 343 | 					</dict> | |
| 344 | 					<key>match</key> | |
| 345 | 					<string>\G(YAML)[ \t]+(\d+\.\d+)</string> | |
| 346 | 				</dict> | |
| 347 | 				<dict> | |
| 348 | 					<key>captures</key> | |
| 349 | 					<dict> | |
| 350 | 						<key>1</key> | |
| 351 | 						<dict> | |
| 352 | 							<key>name</key> | |
| 353 | 							<string>keyword.other.directive.tag.yaml</string> | |
| 354 | 						</dict> | |
| 355 | 						<key>2</key> | |
| 356 | 						<dict> | |
| 357 | 							<key>name</key> | |
| 358 | 							<string>storage.type.tag-handle.yaml</string> | |
| 359 | 						</dict> | |
| 360 | 						<key>3</key> | |
| 361 | 						<dict> | |
| 362 | 							<key>name</key> | |
| 363 | 							<string>support.type.tag-prefix.yaml</string> | |
| 364 | 						</dict> | |
| 365 | 					</dict> | |
| 366 | 					<key>match</key> | |
| 367 | 					<string>(?x) | |
| 368 | \G | |
| 369 | (TAG) | |
| 370 | (?:[ \t]+ | |
| 371 | ((?:!(?:[0-9A-Za-z\-]*!)?)) | |
| 372 | (?:[ \t]+ ( | |
| 373 | ! (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&amp;=+$,_.!~*'()\[\]] )* | |
| 374 | | (?![,!\[\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&amp;=+$,_.!~*'()\[\]] )+ | |
| 375 | ) | |
| 376 | )? | |
| 377 | )? | |
| 378 | </string> | |
| 379 | 				</dict> | |
| 380 | 				<dict> | |
| 381 | 					<key>captures</key> | |
| 382 | 					<dict> | |
| 383 | 						<key>1</key> | |
| 384 | 						<dict> | |
| 385 | 							<key>name</key> | |
| 386 | 							<string>support.other.directive.reserved.yaml</string> | |
| 387 | 						</dict> | |
| 388 | 						<key>2</key> | |
| 389 | 						<dict> | |
| 390 | 							<key>name</key> | |
| 391 | 							<string>string.unquoted.directive-name.yaml</string> | |
| 392 | 						</dict> | |
| 393 | 						<key>3</key> | |
| 394 | 						<dict> | |
| 395 | 							<key>name</key> | |
| 396 | 							<string>string.unquoted.directive-parameter.yaml</string> | |
| 397 | 						</dict> | |
| 398 | 					</dict> | |
| 399 | 					<key>match</key> | |
| 400 | 					<string>(?x) \G (\w+) (?:[ \t]+ (\w+) (?:[ \t]+ (\w+))? )?</string> | |
| 401 | 				</dict> | |
| 402 | 				<dict> | |
| 403 | 					<key>match</key> | |
| 404 | 					<string>\S+</string> | |
| 405 | 					<key>name</key> | |
| 406 | 					<string>invalid.illegal.unrecognized.yaml</string> | |
| 407 | 				</dict> | |
| 408 | 			</array> | |
| 409 | 		</dict> | |
| 410 | 		<key>flow-alias</key> | |
| 411 | 		<dict> | |
| 412 | 			<key>captures</key> | |
| 413 | 			<dict> | |
| 414 | 				<key>1</key> | |
| 415 | 				<dict> | |
| 416 | 					<key>name</key> | |
| 417 | 					<string>keyword.control.flow.alias.yaml</string> | |
| 418 | 				</dict> | |
| 419 | 				<key>2</key> | |
| 420 | 				<dict> | |
| 421 | 					<key>name</key> | |
| 422 | 					<string>punctuation.definition.alias.yaml</string> | |
| 423 | 				</dict> | |
| 424 | 				<key>3</key> | |
| 425 | 				<dict> | |
| 426 | 					<key>name</key> | |
| 427 | 					<string>variable.other.alias.yaml</string> | |
| 428 | 				</dict> | |
| 429 | 				<key>4</key> | |
| 430 | 				<dict> | |
| 431 | 					<key>name</key> | |
| 432 | 					<string>invalid.illegal.character.anchor.yaml</string> | |
| 433 | 				</dict> | |
| 434 | 			</dict> | |
| 435 | 			<key>match</key> | |
| 436 | 			<string>((\*))([^\s\[\]/{/},]+)([^\s\]},]\S*)?</string> | |
| 437 | 		</dict> | |
| 438 | 		<key>flow-collection</key> | |
| 439 | 		<dict> | |
| 440 | 			<key>patterns</key> | |
| 441 | 			<array> | |
| 442 | 				<dict> | |
| 443 | 					<key>include</key> | |
| 444 | 					<string>#flow-sequence</string> | |
| 445 | 				</dict> | |
| 446 | 				<dict> | |
| 447 | 					<key>include</key> | |
| 448 | 					<string>#flow-mapping</string> | |
| 449 | 				</dict> | |
| 450 | 			</array> | |
| 451 | 		</dict> | |
| 452 | 		<key>flow-mapping</key> | |
| 453 | 		<dict> | |
| 454 | 			<key>begin</key> | |
| 455 | 			<string>\{</string> | |
| 456 | 			<key>beginCaptures</key> | |
| 457 | 			<dict> | |
| 458 | 				<key>0</key> | |
| 459 | 				<dict> | |
| 460 | 					<key>name</key> | |
| 461 | 					<string>punctuation.definition.mapping.begin.yaml</string> | |
| 462 | 				</dict> | |
| 463 | 			</dict> | |
| 464 | 			<key>end</key> | |
| 465 | 			<string>\}</string> | |
| 466 | 			<key>endCaptures</key> | |
| 467 | 			<dict> | |
| 468 | 				<key>0</key> | |
| 469 | 				<dict> | |
| 470 | 					<key>name</key> | |
| 471 | 					<string>punctuation.definition.mapping.end.yaml</string> | |
| 472 | 				</dict> | |
| 473 | 			</dict> | |
| 474 | 			<key>name</key> | |
| 475 | 			<string>meta.flow-mapping.yaml</string> | |
| 476 | 			<key>patterns</key> | |
| 477 | 			<array> | |
| 478 | 				<dict> | |
| 479 | 					<key>include</key> | |
| 480 | 					<string>#prototype</string> | |
| 481 | 				</dict> | |
| 482 | 				<dict> | |
| 483 | 					<key>match</key> | |
| 484 | 					<string>,</string> | |
| 485 | 					<key>name</key> | |
| 486 | 					<string>punctuation.separator.mapping.yaml</string> | |
| 487 | 				</dict> | |
| 488 | 				<dict> | |
| 489 | 					<key>include</key> | |
| 490 | 					<string>#flow-pair</string> | |
| 491 | 				</dict> | |
| 492 | 			</array> | |
| 493 | 		</dict> | |
| 494 | 		<key>flow-node</key> | |
| 495 | 		<dict> | |
| 496 | 			<key>patterns</key> | |
| 497 | 			<array> | |
| 498 | 				<dict> | |
| 499 | 					<key>include</key> | |
| 500 | 					<string>#prototype</string> | |
| 501 | 				</dict> | |
| 502 | 				<dict> | |
| 503 | 					<key>include</key> | |
| 504 | 					<string>#flow-alias</string> | |
| 505 | 				</dict> | |
| 506 | 				<dict> | |
| 507 | 					<key>include</key> | |
| 508 | 					<string>#flow-collection</string> | |
| 509 | 				</dict> | |
| 510 | 				<dict> | |
| 511 | 					<key>include</key> | |
| 512 | 					<string>#flow-scalar</string> | |
| 513 | 				</dict> | |
| 514 | 			</array> | |
| 515 | 		</dict> | |
| 516 | 		<key>flow-pair</key> | |
| 517 | 		<dict> | |
| 518 | 			<key>patterns</key> | |
| 519 | 			<array> | |
| 520 | 				<dict> | |
| 521 | 					<key>begin</key> | |
| 522 | 					<string>\?</string> | |
| 523 | 					<key>beginCaptures</key> | |
| 524 | 					<dict> | |
| 525 | 						<key>0</key> | |
| 526 | 						<dict> | |
| 527 | 							<key>name</key> | |
| 528 | 							<string>punctuation.definition.key-value.begin.yaml</string> | |
| 529 | 						</dict> | |
| 530 | 					</dict> | |
| 531 | 					<key>end</key> | |
| 532 | 					<string>(?=[},\]])</string> | |
| 533 | 					<key>name</key> | |
| 534 | 					<string>meta.flow-pair.explicit.yaml</string> | |
| 535 | 					<key>patterns</key> | |
| 536 | 					<array> | |
| 537 | 						<dict> | |
| 538 | 							<key>include</key> | |
| 539 | 							<string>#prototype</string> | |
| 540 | 						</dict> | |
| 541 | 						<dict> | |
| 542 | 							<key>include</key> | |
| 543 | 							<string>#flow-pair</string> | |
| 544 | 						</dict> | |
| 545 | 						<dict> | |
| 546 | 							<key>include</key> | |
| 547 | 							<string>#flow-node</string> | |
| 548 | 						</dict> | |
| 549 | 						<dict> | |
| 550 | 							<key>begin</key> | |
| 551 | 							<string>:(?=\s|$|[\[\]{},])</string> | |
| 552 | 							<key>beginCaptures</key> | |
| 553 | 							<dict> | |
| 554 | 								<key>0</key> | |
| 555 | 								<dict> | |
| 556 | 									<key>name</key> | |
| 557 | 									<string>punctuation.separator.key-value.mapping.yaml</string> | |
| 558 | 								</dict> | |
| 559 | 							</dict> | |
| 560 | 							<key>end</key> | |
| 561 | 							<string>(?=[},\]])</string> | |
| 562 | 							<key>patterns</key> | |
| 563 | 							<array> | |
| 564 | 								<dict> | |
| 565 | 									<key>include</key> | |
| 566 | 									<string>#flow-value</string> | |
| 567 | 								</dict> | |
| 568 | 							</array> | |
| 569 | 						</dict> | |
| 570 | 					</array> | |
| 571 | 				</dict> | |
| 572 | 				<dict> | |
| 573 | 					<key>begin</key> | |
| 574 | 					<string>(?x) | |
| 575 | (?= | |
| 576 | (?: | |
| 577 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 578 | | [?:-] [^\s[\[\]{},]] | |
| 579 | ) | |
| 580 | ( | |
| 581 | [^\s:[\[\]{},]] | |
| 582 | | : [^\s[\[\]{},]] | |
| 583 | | \s+ (?![#\s]) | |
| 584 | )* | |
| 585 | \s* | |
| 586 | : | |
| 587 | 							(\s|$) | |
| 588 | ) | |
| 589 | </string> | |
| 590 | 					<key>end</key> | |
| 591 | 					<string>(?x) | |
| 592 | (?= | |
| 593 | \s* $ | |
| 594 | | \s+ \# | |
| 595 | | \s* : (\s|$) | |
| 596 | | \s* : [\[\]{},] | |
| 597 | | \s* [\[\]{},] | |
| 598 | ) | |
| 599 | </string> | |
| 600 | 					<key>name</key> | |
| 601 | 					<string>meta.flow-pair.key.yaml</string> | |
| 602 | 					<key>patterns</key> | |
| 603 | 					<array> | |
| 604 | 						<dict> | |
| 605 | 							<key>include</key> | |
| 606 | 							<string>#flow-scalar-plain-in-implicit-type</string> | |
| 607 | 						</dict> | |
| 608 | 						<dict> | |
| 609 | 							<key>begin</key> | |
| 610 | 							<string>(?x) | |
| 611 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 612 | | [?:-] [^\s[\[\]{},]] | |
| 613 | </string> | |
| 614 | 							<key>beginCaptures</key> | |
| 615 | 							<dict> | |
| 616 | 								<key>0</key> | |
| 617 | 								<dict> | |
| 618 | 									<key>name</key> | |
| 619 | 									<string>entity.name.tag.yaml</string> | |
| 620 | 								</dict> | |
| 621 | 							</dict> | |
| 622 | 							<key>contentName</key> | |
| 623 | 							<string>entity.name.tag.yaml</string> | |
| 624 | 							<key>end</key> | |
| 625 | 							<string>(?x) | |
| 626 | (?= | |
| 627 | \s* $ | |
| 628 | | \s+ \# | |
| 629 | | \s* : (\s|$) | |
| 630 | | \s* : [\[\]{},] | |
| 631 | | \s* [\[\]{},] | |
| 632 | ) | |
| 633 | </string> | |
| 634 | 							<key>name</key> | |
| 635 | 							<string>string.unquoted.plain.in.yaml</string> | |
| 636 | 						</dict> | |
| 637 | 					</array> | |
| 638 | 				</dict> | |
| 639 | 				<dict> | |
| 640 | 					<key>include</key> | |
| 641 | 					<string>#flow-node</string> | |
| 642 | 				</dict> | |
| 643 | 				<dict> | |
| 644 | 					<key>begin</key> | |
| 645 | 					<string>:(?=\s|$|[\[\]{},])</string> | |
| 646 | 					<key>captures</key> | |
| 647 | 					<dict> | |
| 648 | 						<key>0</key> | |
| 649 | 						<dict> | |
| 650 | 							<key>name</key> | |
| 651 | 							<string>punctuation.separator.key-value.mapping.yaml</string> | |
| 652 | 						</dict> | |
| 653 | 					</dict> | |
| 654 | 					<key>end</key> | |
| 655 | 					<string>(?=[},\]])</string> | |
| 656 | 					<key>name</key> | |
| 657 | 					<string>meta.flow-pair.yaml</string> | |
| 658 | 					<key>patterns</key> | |
| 659 | 					<array> | |
| 660 | 						<dict> | |
| 661 | 							<key>include</key> | |
| 662 | 							<string>#flow-value</string> | |
| 663 | 						</dict> | |
| 664 | 					</array> | |
| 665 | 				</dict> | |
| 666 | 			</array> | |
| 667 | 		</dict> | |
| 668 | 		<key>flow-scalar</key> | |
| 669 | 		<dict> | |
| 670 | 			<key>patterns</key> | |
| 671 | 			<array> | |
| 672 | 				<dict> | |
| 673 | 					<key>include</key> | |
| 674 | 					<string>#flow-scalar-double-quoted</string> | |
| 675 | 				</dict> | |
| 676 | 				<dict> | |
| 677 | 					<key>include</key> | |
| 678 | 					<string>#flow-scalar-single-quoted</string> | |
| 679 | 				</dict> | |
| 680 | 				<dict> | |
| 681 | 					<key>include</key> | |
| 682 | 					<string>#flow-scalar-plain-in</string> | |
| 683 | 				</dict> | |
| 684 | 			</array> | |
| 685 | 		</dict> | |
| 686 | 		<key>flow-scalar-double-quoted</key> | |
| 687 | 		<dict> | |
| 688 | 			<key>begin</key> | |
| 689 | 			<string>"</string> | |
| 690 | 			<key>beginCaptures</key> | |
| 691 | 			<dict> | |
| 692 | 				<key>0</key> | |
| 693 | 				<dict> | |
| 694 | 					<key>name</key> | |
| 695 | 					<string>punctuation.definition.string.begin.yaml</string> | |
| 696 | 				</dict> | |
| 697 | 			</dict> | |
| 698 | 			<key>end</key> | |
| 699 | 			<string>"</string> | |
| 700 | 			<key>endCaptures</key> | |
| 701 | 			<dict> | |
| 702 | 				<key>0</key> | |
| 703 | 				<dict> | |
| 704 | 					<key>name</key> | |
| 705 | 					<string>punctuation.definition.string.end.yaml</string> | |
| 706 | 				</dict> | |
| 707 | 			</dict> | |
| 708 | 			<key>name</key> | |
| 709 | 			<string>string.quoted.double.yaml</string> | |
| 710 | 			<key>patterns</key> | |
| 711 | 			<array> | |
| 712 | 				<dict> | |
| 713 | 					<key>match</key> | |
| 714 | 					<string>\\([0abtnvfre "/\\N_Lp]|x\d\d|u\d{4}|U\d{8})</string> | |
| 715 | 					<key>name</key> | |
| 716 | 					<string>constant.character.escape.yaml</string> | |
| 717 | 				</dict> | |
| 718 | 				<dict> | |
| 719 | 					<key>match</key> | |
| 720 | 					<string>\\\n</string> | |
| 721 | 					<key>name</key> | |
| 722 | 					<string>constant.character.escape.double-quoted.newline.yaml</string> | |
| 723 | 				</dict> | |
| 724 | 			</array> | |
| 725 | 		</dict> | |
| 726 | 		<key>flow-scalar-plain-in</key> | |
| 727 | 		<dict> | |
| 728 | 			<key>patterns</key> | |
| 729 | 			<array> | |
| 730 | 				<dict> | |
| 731 | 					<key>include</key> | |
| 732 | 					<string>#flow-scalar-plain-in-implicit-type</string> | |
| 733 | 				</dict> | |
| 734 | 				<dict> | |
| 735 | 					<key>begin</key> | |
| 736 | 					<string>(?x) | |
| 737 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 738 | | [?:-] [^\s[\[\]{},]] | |
| 739 | </string> | |
| 740 | 					<key>end</key> | |
| 741 | 					<string>(?x) | |
| 742 | (?= | |
| 743 | \s* $ | |
| 744 | | \s+ \# | |
| 745 | | \s* : (\s|$) | |
| 746 | | \s* : [\[\]{},] | |
| 747 | | \s* [\[\]{},] | |
| 748 | ) | |
| 749 | </string> | |
| 750 | 					<key>name</key> | |
| 751 | 					<string>string.unquoted.plain.in.yaml</string> | |
| 752 | 				</dict> | |
| 753 | 			</array> | |
| 754 | 		</dict> | |
| 755 | 		<key>flow-scalar-plain-in-implicit-type</key> | |
| 756 | 		<dict> | |
| 757 | 			<key>patterns</key> | |
| 758 | 			<array> | |
| 759 | 				<dict> | |
| 760 | 					<key>captures</key> | |
| 761 | 					<dict> | |
| 762 | 						<key>1</key> | |
| 763 | 						<dict> | |
| 764 | 							<key>name</key> | |
| 765 | 							<string>constant.language.null.yaml</string> | |
| 766 | 						</dict> | |
| 767 | 						<key>2</key> | |
| 768 | 						<dict> | |
| 769 | 							<key>name</key> | |
| 770 | 							<string>constant.language.boolean.yaml</string> | |
| 771 | 						</dict> | |
| 772 | 						<key>3</key> | |
| 773 | 						<dict> | |
| 774 | 							<key>name</key> | |
| 775 | 							<string>constant.numeric.integer.yaml</string> | |
| 776 | 						</dict> | |
| 777 | 						<key>4</key> | |
| 778 | 						<dict> | |
| 779 | 							<key>name</key> | |
| 780 | 							<string>constant.numeric.float.yaml</string> | |
| 781 | 						</dict> | |
| 782 | 						<key>5</key> | |
| 783 | 						<dict> | |
| 784 | 							<key>name</key> | |
| 785 | 							<string>constant.other.timestamp.yaml</string> | |
| 786 | 						</dict> | |
| 787 | 						<key>6</key> | |
| 788 | 						<dict> | |
| 789 | 							<key>name</key> | |
| 790 | 							<string>constant.language.value.yaml</string> | |
| 791 | 						</dict> | |
| 792 | 						<key>7</key> | |
| 793 | 						<dict> | |
| 794 | 							<key>name</key> | |
| 795 | 							<string>constant.language.merge.yaml</string> | |
| 796 | 						</dict> | |
| 797 | 					</dict> | |
| 798 | 					<key>match</key> | |
| 799 | 					<string>(?x) | |
| 800 | (?x: | |
| 801 | (null|Null|NULL|~) | |
| 802 | | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) | |
| 803 | | ( | |
| 804 | (?: | |
| 805 | [-+]? 0b [0-1_]+ # (base 2) | |
| 806 | | [-+]? 0 [0-7_]+ # (base 8) | |
| 807 | | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) | |
| 808 | | [-+]? 0x [0-9a-fA-F_]+ # (base 16) | |
| 809 | | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) | |
| 810 | ) | |
| 811 | ) | |
| 812 | | ( | |
| 813 | (?x: | |
| 814 | [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) | |
| 815 | | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) | |
| 816 | | [-+]? \. (?: inf|Inf|INF) # (infinity) | |
| 817 | | \. (?: nan|NaN|NAN) # (not a number) | |
| 818 | ) | |
| 819 | ) | |
| 820 | | ( | |
| 821 | (?x: | |
| 822 | \d{4} - \d{2} - \d{2} # (y-m-d) | |
| 823 | | \d{4} # (year) | |
| 824 | - \d{1,2} # (month) | |
| 825 | - \d{1,2} # (day) | |
| 826 | (?: [Tt] | [ \t]+) \d{1,2} # (hour) | |
| 827 | : \d{2} # (minute) | |
| 828 | : \d{2} # (second) | |
| 829 | (?: \.\d*)? # (fraction) | |
| 830 | (?: | |
| 831 | (?:[ \t]*) Z | |
| 832 | | [-+] \d{1,2} (?: :\d{1,2})? | |
| 833 | )? # (time zone) | |
| 834 | ) | |
| 835 | ) | |
| 836 | | (=) | |
| 837 | | (&lt;&lt;) | |
| 838 | ) | |
| 839 | (?: | |
| 840 | (?= | |
| 841 | \s* $ | |
| 842 | | \s+ \# | |
| 843 | | \s* : (\s|$) | |
| 844 | | \s* : [\[\]{},] | |
| 845 | | \s* [\[\]{},] | |
| 846 | ) | |
| 847 | ) | |
| 848 | </string> | |
| 849 | 				</dict> | |
| 850 | 			</array> | |
| 851 | 		</dict> | |
| 852 | 		<key>flow-scalar-plain-out</key> | |
| 853 | 		<dict> | |
| 854 | 			<key>patterns</key> | |
| 855 | 			<array> | |
| 856 | 				<dict> | |
| 857 | 					<key>include</key> | |
| 858 | 					<string>#flow-scalar-plain-out-implicit-type</string> | |
| 859 | 				</dict> | |
| 860 | 				<dict> | |
| 861 | 					<key>begin</key> | |
| 862 | 					<string>(?x) | |
| 863 | [^\s[-?:,\[\]{}#&amp;*!|&gt;'"%@`]] | |
| 864 | | [?:-] \S | |
| 865 | </string> | |
| 866 | 					<key>end</key> | |
| 867 | 					<string>(?x) | |
| 868 | (?= | |
| 869 | \s* $ | |
| 870 | | \s+ \# | |
| 871 | | \s* : (\s|$) | |
| 872 | ) | |
| 873 | </string> | |
| 874 | 					<key>name</key> | |
| 875 | 					<string>string.unquoted.plain.out.yaml</string> | |
| 876 | 				</dict> | |
| 877 | 			</array> | |
| 878 | 		</dict> | |
| 879 | 		<key>flow-scalar-plain-out-implicit-type</key> | |
| 880 | 		<dict> | |
| 881 | 			<key>patterns</key> | |
| 882 | 			<array> | |
| 883 | 				<dict> | |
| 884 | 					<key>captures</key> | |
| 885 | 					<dict> | |
| 886 | 						<key>1</key> | |
| 887 | 						<dict> | |
| 888 | 							<key>name</key> | |
| 889 | 							<string>constant.language.null.yaml</string> | |
| 890 | 						</dict> | |
| 891 | 						<key>2</key> | |
| 892 | 						<dict> | |
| 893 | 							<key>name</key> | |
| 894 | 							<string>constant.language.boolean.yaml</string> | |
| 895 | 						</dict> | |
| 896 | 						<key>3</key> | |
| 897 | 						<dict> | |
| 898 | 							<key>name</key> | |
| 899 | 							<string>constant.numeric.integer.yaml</string> | |
| 900 | 						</dict> | |
| 901 | 						<key>4</key> | |
| 902 | 						<dict> | |
| 903 | 							<key>name</key> | |
| 904 | 							<string>constant.numeric.float.yaml</string> | |
| 905 | 						</dict> | |
| 906 | 						<key>5</key> | |
| 907 | 						<dict> | |
| 908 | 							<key>name</key> | |
| 909 | 							<string>constant.other.timestamp.yaml</string> | |
| 910 | 						</dict> | |
| 911 | 						<key>6</key> | |
| 912 | 						<dict> | |
| 913 | 							<key>name</key> | |
| 914 | 							<string>constant.language.value.yaml</string> | |
| 915 | 						</dict> | |
| 916 | 						<key>7</key> | |
| 917 | 						<dict> | |
| 918 | 							<key>name</key> | |
| 919 | 							<string>constant.language.merge.yaml</string> | |
| 920 | 						</dict> | |
| 921 | 					</dict> | |
| 922 | 					<key>match</key> | |
| 923 | 					<string>(?x) | |
| 924 | (?x: | |
| 925 | (null|Null|NULL|~) | |
| 926 | | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) | |
| 927 | | ( | |
| 928 | (?: | |
| 929 | [-+]? 0b [0-1_]+ # (base 2) | |
| 930 | | [-+]? 0 [0-7_]+ # (base 8) | |
| 931 | | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) | |
| 932 | | [-+]? 0x [0-9a-fA-F_]+ # (base 16) | |
| 933 | | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) | |
| 934 | ) | |
| 935 | ) | |
| 936 | | ( | |
| 937 | (?x: | |
| 938 | [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) | |
| 939 | | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) | |
| 940 | | [-+]? \. (?: inf|Inf|INF) # (infinity) | |
| 941 | | \. (?: nan|NaN|NAN) # (not a number) | |
| 942 | ) | |
| 943 | ) | |
| 944 | | ( | |
| 945 | (?x: | |
| 946 | \d{4} - \d{2} - \d{2} # (y-m-d) | |
| 947 | | \d{4} # (year) | |
| 948 | - \d{1,2} # (month) | |
| 949 | - \d{1,2} # (day) | |
| 950 | (?: [Tt] | [ \t]+) \d{1,2} # (hour) | |
| 951 | : \d{2} # (minute) | |
| 952 | : \d{2} # (second) | |
| 953 | (?: \.\d*)? # (fraction) | |
| 954 | (?: | |
| 955 | (?:[ \t]*) Z | |
| 956 | | [-+] \d{1,2} (?: :\d{1,2})? | |
| 957 | )? # (time zone) | |
| 958 | ) | |
| 959 | ) | |
| 960 | | (=) | |
| 961 | | (&lt;&lt;) | |
| 962 | ) | |
| 963 | (?x: | |
| 964 | (?= | |
| 965 | \s* $ | |
| 966 | | \s+ \# | |
| 967 | | \s* : (\s|$) | |
| 968 | ) | |
| 969 | ) | |
| 970 | </string> | |
| 971 | 				</dict> | |
| 972 | 			</array> | |
| 973 | 		</dict> | |
| 974 | 		<key>flow-scalar-single-quoted</key> | |
| 975 | 		<dict> | |
| 976 | 			<key>begin</key> | |
| 977 | 			<string>'</string> | |
| 978 | 			<key>beginCaptures</key> | |
| 979 | 			<dict> | |
| 980 | 				<key>0</key> | |
| 981 | 				<dict> | |
| 982 | 					<key>name</key> | |
| 983 | 					<string>punctuation.definition.string.begin.yaml</string> | |
| 984 | 				</dict> | |
| 985 | 			</dict> | |
| 986 | 			<key>end</key> | |
| 987 | 			<string>'(?!')</string> | |
| 988 | 			<key>endCaptures</key> | |
| 989 | 			<dict> | |
| 990 | 				<key>0</key> | |
| 991 | 				<dict> | |
| 992 | 					<key>name</key> | |
| 993 | 					<string>punctuation.definition.string.end.yaml</string> | |
| 994 | 				</dict> | |
| 995 | 			</dict> | |
| 996 | 			<key>name</key> | |
| 997 | 			<string>string.quoted.single.yaml</string> | |
| 998 | 			<key>patterns</key> | |
| 999 | 			<array> | |
| 1000 | 				<dict> | |
| 1001 | 					<key>match</key> | |
| 1002 | 					<string>''</string> | |
| 1003 | 					<key>name</key> | |
| 1004 | 					<string>constant.character.escape.single-quoted.yaml</string> | |
| 1005 | 				</dict> | |
| 1006 | 			</array> | |
| 1007 | 		</dict> | |
| 1008 | 		<key>flow-sequence</key> | |
| 1009 | 		<dict> | |
| 1010 | 			<key>begin</key> | |
| 1011 | 			<string>\[</string> | |
| 1012 | 			<key>beginCaptures</key> | |
| 1013 | 			<dict> | |
| 1014 | 				<key>0</key> | |
| 1015 | 				<dict> | |
| 1016 | 					<key>name</key> | |
| 1017 | 					<string>punctuation.definition.sequence.begin.yaml</string> | |
| 1018 | 				</dict> | |
| 1019 | 			</dict> | |
| 1020 | 			<key>end</key> | |
| 1021 | 			<string>\]</string> | |
| 1022 | 			<key>endCaptures</key> | |
| 1023 | 			<dict> | |
| 1024 | 				<key>0</key> | |
| 1025 | 				<dict> | |
| 1026 | 					<key>name</key> | |
| 1027 | 					<string>punctuation.definition.sequence.end.yaml</string> | |
| 1028 | 				</dict> | |
| 1029 | 			</dict> | |
| 1030 | 			<key>name</key> | |
| 1031 | 			<string>meta.flow-sequence.yaml</string> | |
| 1032 | 			<key>patterns</key> | |
| 1033 | 			<array> | |
| 1034 | 				<dict> | |
| 1035 | 					<key>include</key> | |
| 1036 | 					<string>#prototype</string> | |
| 1037 | 				</dict> | |
| 1038 | 				<dict> | |
| 1039 | 					<key>match</key> | |
| 1040 | 					<string>,</string> | |
| 1041 | 					<key>name</key> | |
| 1042 | 					<string>punctuation.separator.sequence.yaml</string> | |
| 1043 | 				</dict> | |
| 1044 | 				<dict> | |
| 1045 | 					<key>include</key> | |
| 1046 | 					<string>#flow-pair</string> | |
| 1047 | 				</dict> | |
| 1048 | 				<dict> | |
| 1049 | 					<key>include</key> | |
| 1050 | 					<string>#flow-node</string> | |
| 1051 | 				</dict> | |
| 1052 | 			</array> | |
| 1053 | 		</dict> | |
| 1054 | 		<key>flow-value</key> | |
| 1055 | 		<dict> | |
| 1056 | 			<key>patterns</key> | |
| 1057 | 			<array> | |
| 1058 | 				<dict> | |
| 1059 | 					<key>begin</key> | |
| 1060 | 					<string>\G(?![},\]])</string> | |
| 1061 | 					<key>end</key> | |
| 1062 | 					<string>(?=[},\]])</string> | |
| 1063 | 					<key>name</key> | |
| 1064 | 					<string>meta.flow-pair.value.yaml</string> | |
| 1065 | 					<key>patterns</key> | |
| 1066 | 					<array> | |
| 1067 | 						<dict> | |
| 1068 | 							<key>include</key> | |
| 1069 | 							<string>#flow-node</string> | |
| 1070 | 						</dict> | |
| 1071 | 					</array> | |
| 1072 | 				</dict> | |
| 1073 | 			</array> | |
| 1074 | 		</dict> | |
| 1075 | 		<key>node</key> | |
| 1076 | 		<dict> | |
| 1077 | 			<key>patterns</key> | |
| 1078 | 			<array> | |
| 1079 | 				<dict> | |
| 1080 | 					<key>include</key> | |
| 1081 | 					<string>#block-node</string> | |
| 1082 | 				</dict> | |
| 1083 | 			</array> | |
| 1084 | 		</dict> | |
| 1085 | 		<key>property</key> | |
| 1086 | 		<dict> | |
| 1087 | 			<key>begin</key> | |
| 1088 | 			<string>(?=!|&amp;)</string> | |
| 1089 | 			<key>end</key> | |
| 1090 | 			<string>(?!\G)</string> | |
| 1091 | 			<key>name</key> | |
| 1092 | 			<string>meta.property.yaml</string> | |
| 1093 | 			<key>patterns</key> | |
| 1094 | 			<array> | |
| 1095 | 				<dict> | |
| 1096 | 					<key>captures</key> | |
| 1097 | 					<dict> | |
| 1098 | 						<key>1</key> | |
| 1099 | 						<dict> | |
| 1100 | 							<key>name</key> | |
| 1101 | 							<string>keyword.control.property.anchor.yaml</string> | |
| 1102 | 						</dict> | |
| 1103 | 						<key>2</key> | |
| 1104 | 						<dict> | |
| 1105 | 							<key>name</key> | |
| 1106 | 							<string>punctuation.definition.anchor.yaml</string> | |
| 1107 | 						</dict> | |
| 1108 | 						<key>3</key> | |
| 1109 | 						<dict> | |
| 1110 | 							<key>name</key> | |
| 1111 | 							<string>entity.name.type.anchor.yaml</string> | |
| 1112 | 						</dict> | |
| 1113 | 						<key>4</key> | |
| 1114 | 						<dict> | |
| 1115 | 							<key>name</key> | |
| 1116 | 							<string>invalid.illegal.character.anchor.yaml</string> | |
| 1117 | 						</dict> | |
| 1118 | 					</dict> | |
| 1119 | 					<key>match</key> | |
| 1120 | 					<string>\G((&amp;))([^\s\[\]/{/},]+)(\S+)?</string> | |
| 1121 | 				</dict> | |
| 1122 | 				<dict> | |
| 1123 | 					<key>match</key> | |
| 1124 | 					<string>(?x) | |
| 1125 | \G | |
| 1126 | (?: | |
| 1127 | ! &lt; (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&amp;=+$,_.!~*'()\[\]] )+ &gt; | |
| 1128 | | (?:!(?:[0-9A-Za-z\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&amp;=+$_.~*'()] )+ | |
| 1129 | | ! | |
| 1130 | ) | |
| 1131 | (?=\ |\t|$) | |
| 1132 | </string> | |
| 1133 | 					<key>name</key> | |
| 1134 | 					<string>storage.type.tag-handle.yaml</string> | |
| 1135 | 				</dict> | |
| 1136 | 				<dict> | |
| 1137 | 					<key>match</key> | |
| 1138 | 					<string>\S+</string> | |
| 1139 | 					<key>name</key> | |
| 1140 | 					<string>invalid.illegal.tag-handle.yaml</string> | |
| 1141 | 				</dict> | |
| 1142 | 			</array> | |
| 1143 | 		</dict> | |
| 1144 | 		<key>prototype</key> | |
| 1145 | 		<dict> | |
| 1146 | 			<key>patterns</key> | |
| 1147 | 			<array> | |
| 1148 | 				<dict> | |
| 1149 | 					<key>include</key> | |
| 1150 | 					<string>#comment</string> | |
| 1151 | 				</dict> | |
| 1152 | 				<dict> | |
| 1153 | 					<key>include</key> | |
| 1154 | 					<string>#property</string> | |
| 1155 | 				</dict> | |
| 1156 | 			</array> | |
| 1157 | 		</dict> | |
| 1158 | 	</dict> | |
| 1159 | 	<key>scopeName</key> | |
| 1160 | 	<string>source.yaml</string> | |
| 1161 | 	<key>uuid</key> | |
| 1162 | 	<string>686AD6AE-33F3-4493-9512-9E9FC1D5417F</string> | |
| 1163 | </dict> | |
| 1164 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight-grammar/zig.plist created+846| ... | ... | @@ -0,0 +1,846 @@ |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | <plist version="1.0"> | |
| 4 | <dict> | |
| 5 | 	<key>fileTypes</key> | |
| 6 | 	<array> | |
| 7 | 		<string>zig</string> | |
| 8 | 	</array> | |
| 9 | 	<key>keyEquivalent</key> | |
| 10 | 	<string>^~Z</string> | |
| 11 | 	<key>name</key> | |
| 12 | 	<string>Zig</string> | |
| 13 | 	<key>patterns</key> | |
| 14 | 	<array> | |
| 15 | 		<dict> | |
| 16 | 			<key>include</key> | |
| 17 | 			<string>#dummy_main</string> | |
| 18 | 		</dict> | |
| 19 | 	</array> | |
| 20 | 	<key>repository</key> | |
| 21 | 	<dict> | |
| 22 | 		<key>block</key> | |
| 23 | 		<dict> | |
| 24 | 			<key>begin</key> | |
| 25 | 			<string>([a-zA-Z_][\w.]*|@\".+\")?\s*(\{)</string> | |
| 26 | 			<key>beginCaptures</key> | |
| 27 | 			<dict> | |
| 28 | 				<key>1</key> | |
| 29 | 				<dict> | |
| 30 | 					<key>name</key> | |
| 31 | 					<string>storage.type.zig</string> | |
| 32 | 				</dict> | |
| 33 | 				<key>2</key> | |
| 34 | 				<dict> | |
| 35 | 					<key>name</key> | |
| 36 | 					<string>punctuation.section.braces.begin.zig</string> | |
| 37 | 				</dict> | |
| 38 | 			</dict> | |
| 39 | 			<key>end</key> | |
| 40 | 			<string>(\})</string> | |
| 41 | 			<key>endCaptures</key> | |
| 42 | 			<dict> | |
| 43 | 				<key>1</key> | |
| 44 | 				<dict> | |
| 45 | 					<key>name</key> | |
| 46 | 					<string>punctuation.section.braces.end.zig</string> | |
| 47 | 				</dict> | |
| 48 | 			</dict> | |
| 49 | 			<key>patterns</key> | |
| 50 | 			<array> | |
| 51 | 				<dict> | |
| 52 | 					<key>include</key> | |
| 53 | 					<string>#dummy_main</string> | |
| 54 | 				</dict> | |
| 55 | 			</array> | |
| 56 | 		</dict> | |
| 57 | 		<key>character_escapes</key> | |
| 58 | 		<dict> | |
| 59 | 			<key>patterns</key> | |
| 60 | 			<array> | |
| 61 | 				<dict> | |
| 62 | 					<key>match</key> | |
| 63 | 					<string>\\n</string> | |
| 64 | 					<key>name</key> | |
| 65 | 					<string>constant.character.escape.newline.zig</string> | |
| 66 | 				</dict> | |
| 67 | 				<dict> | |
| 68 | 					<key>match</key> | |
| 69 | 					<string>\\r</string> | |
| 70 | 					<key>name</key> | |
| 71 | 					<string>constant.character.escape.carrigereturn.zig</string> | |
| 72 | 				</dict> | |
| 73 | 				<dict> | |
| 74 | 					<key>match</key> | |
| 75 | 					<string>\\t</string> | |
| 76 | 					<key>name</key> | |
| 77 | 					<string>constant.character.escape.tabulator.zig</string> | |
| 78 | 				</dict> | |
| 79 | 				<dict> | |
| 80 | 					<key>match</key> | |
| 81 | 					<string>\\\\</string> | |
| 82 | 					<key>name</key> | |
| 83 | 					<string>constant.character.escape.backslash.zig</string> | |
| 84 | 				</dict> | |
| 85 | 				<dict> | |
| 86 | 					<key>match</key> | |
| 87 | 					<string>\\'</string> | |
| 88 | 					<key>name</key> | |
| 89 | 					<string>constant.character.escape.single-quote.zig</string> | |
| 90 | 				</dict> | |
| 91 | 				<dict> | |
| 92 | 					<key>match</key> | |
| 93 | 					<string>\\\"</string> | |
| 94 | 					<key>name</key> | |
| 95 | 					<string>constant.character.escape.double-quote.zig</string> | |
| 96 | 				</dict> | |
| 97 | 				<dict> | |
| 98 | 					<key>match</key> | |
| 99 | 					<string>\\x[a-fA-F\d]{2}</string> | |
| 100 | 					<key>name</key> | |
| 101 | 					<string>constant.character.escape.hexidecimal.zig</string> | |
| 102 | 				</dict> | |
| 103 | 				<dict> | |
| 104 | 					<key>match</key> | |
| 105 | 					<string>\\u\{[a-fA-F\d]{1,6}\}</string> | |
| 106 | 					<key>name</key> | |
| 107 | 					<string>constant.character.escape.hexidecimal.zig</string> | |
| 108 | 				</dict> | |
| 109 | 			</array> | |
| 110 | 		</dict> | |
| 111 | 		<key>comments</key> | |
| 112 | 		<dict> | |
| 113 | 			<key>patterns</key> | |
| 114 | 			<array> | |
| 115 | 				<dict> | |
| 116 | 					<key>begin</key> | |
| 117 | 					<string>///</string> | |
| 118 | 					<key>end</key> | |
| 119 | 					<string>$\n?</string> | |
| 120 | 					<key>name</key> | |
| 121 | 					<string>comment.line.documentation.zig</string> | |
| 122 | 				</dict> | |
| 123 | 				<dict> | |
| 124 | 					<key>begin</key> | |
| 125 | 					<string>//[^/]\s*TODO</string> | |
| 126 | 					<key>end</key> | |
| 127 | 					<string>$\n?</string> | |
| 128 | 					<key>name</key> | |
| 129 | 					<string>comment.line.todo.zig</string> | |
| 130 | 				</dict> | |
| 131 | 				<dict> | |
| 132 | 					<key>begin</key> | |
| 133 | 					<string>//[^/]*</string> | |
| 134 | 					<key>end</key> | |
| 135 | 					<string>$\n?</string> | |
| 136 | 					<key>name</key> | |
| 137 | 					<string>comment.line.zig</string> | |
| 138 | 				</dict> | |
| 139 | 			</array> | |
| 140 | 		</dict> | |
| 141 | 		<key>constants</key> | |
| 142 | 		<dict> | |
| 143 | 			<key>patterns</key> | |
| 144 | 			<array> | |
| 145 | 				<dict> | |
| 146 | 					<key>match</key> | |
| 147 | 					<string>\b(null|undefined|true|false)\b</string> | |
| 148 | 					<key>name</key> | |
| 149 | 					<string>constant.language.zig</string> | |
| 150 | 				</dict> | |
| 151 | 				<dict> | |
| 152 | 					<key>match</key> | |
| 153 | 					<string>\b(?&lt;!\.)(-?[\d_]+)(?!\.)\b</string> | |
| 154 | 					<key>name</key> | |
| 155 | 					<string>constant.numeric.integer.zig</string> | |
| 156 | 				</dict> | |
| 157 | 				<dict> | |
| 158 | 					<key>match</key> | |
| 159 | 					<string>\b(?&lt;!\.)(0x[a-fA-F\d_]+)(?!\.)\b</string> | |
| 160 | 					<key>name</key> | |
| 161 | 					<string>constant.numeric.integer.hexadecimal.zig</string> | |
| 162 | 				</dict> | |
| 163 | 				<dict> | |
| 164 | 					<key>match</key> | |
| 165 | 					<string>\b(?&lt;!\.)(0o[0-7_]+)(?!\.)\b</string> | |
| 166 | 					<key>name</key> | |
| 167 | 					<string>constant.numeric.integer.octal.zig</string> | |
| 168 | 				</dict> | |
| 169 | 				<dict> | |
| 170 | 					<key>match</key> | |
| 171 | 					<string>\b(?&lt;!\.)(0b[01_]+)(?!\.)\b</string> | |
| 172 | 					<key>name</key> | |
| 173 | 					<string>constant.numeric.integer.binary.zig</string> | |
| 174 | 				</dict> | |
| 175 | 				<dict> | |
| 176 | 					<key>match</key> | |
| 177 | 					<string>(?&lt;!\.)(-?\b[\d_]+(?:\.[\d_]+)?(?:[eE][+-]?[\d_]+)?)(?!\.)\b</string> | |
| 178 | 					<key>name</key> | |
| 179 | 					<string>constant.numeric.float.zig</string> | |
| 180 | 				</dict> | |
| 181 | 				<dict> | |
| 182 | 					<key>match</key> | |
| 183 | 					<string>(?&lt;!\.)(-?\b0x[a-fA-F\d_]+(?:\.[a-fA-F\d_]+)?[pP]?(?:[+-]?[\d_]+)?)(?!\.)\b</string> | |
| 184 | 					<key>name</key> | |
| 185 | 					<string>constant.numeric.float.hexadecimal.zig</string> | |
| 186 | 				</dict> | |
| 187 | 			</array> | |
| 188 | 		</dict> | |
| 189 | 		<key>container_decl</key> | |
| 190 | 		<dict> | |
| 191 | 			<key>patterns</key> | |
| 192 | 			<array> | |
| 193 | 				<dict> | |
| 194 | 					<key>match</key> | |
| 195 | 					<string>\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:union)\s*[(\{])</string> | |
| 196 | 					<key>name</key> | |
| 197 | 					<string>entity.name.union.zig</string> | |
| 198 | 				</dict> | |
| 199 | 				<dict> | |
| 200 | 					<key>match</key> | |
| 201 | 					<string>\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:struct)\s*[(\{])</string> | |
| 202 | 					<key>name</key> | |
| 203 | 					<string>entity.name.struct.zig</string> | |
| 204 | 				</dict> | |
| 205 | 				<dict> | |
| 206 | 					<key>match</key> | |
| 207 | 					<string>\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:enum)\s*[(\{])</string> | |
| 208 | 					<key>name</key> | |
| 209 | 					<string>entity.name.enum.zig</string> | |
| 210 | 				</dict> | |
| 211 | 				<dict> | |
| 212 | 					<key>match</key> | |
| 213 | 					<string>\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:error)\s*[(\{])</string> | |
| 214 | 					<key>name</key> | |
| 215 | 					<string>entity.name.error.zig</string> | |
| 216 | 				</dict> | |
| 217 | 				<dict> | |
| 218 | 					<key>captures</key> | |
| 219 | 					<dict> | |
| 220 | 						<key>1</key> | |
| 221 | 						<dict> | |
| 222 | 							<key>name</key> | |
| 223 | 							<string>storage.type.error.zig</string> | |
| 224 | 						</dict> | |
| 225 | 						<key>2</key> | |
| 226 | 						<dict> | |
| 227 | 							<key>name</key> | |
| 228 | 							<string>punctuation.accessor.zig</string> | |
| 229 | 						</dict> | |
| 230 | 						<key>3</key> | |
| 231 | 						<dict> | |
| 232 | 							<key>name</key> | |
| 233 | 							<string>entity.name.error.zig</string> | |
| 234 | 						</dict> | |
| 235 | 					</dict> | |
| 236 | 					<key>match</key> | |
| 237 | 					<string>\b(error)(\.)([a-zA-Z_]\w*|@\".+\")</string> | |
| 238 | 				</dict> | |
| 239 | 			</array> | |
| 240 | 		</dict> | |
| 241 | 		<key>dummy_main</key> | |
| 242 | 		<dict> | |
| 243 | 			<key>patterns</key> | |
| 244 | 			<array> | |
| 245 | 				<dict> | |
| 246 | 					<key>include</key> | |
| 247 | 					<string>#label</string> | |
| 248 | 				</dict> | |
| 249 | 				<dict> | |
| 250 | 					<key>include</key> | |
| 251 | 					<string>#function_type</string> | |
| 252 | 				</dict> | |
| 253 | 				<dict> | |
| 254 | 					<key>include</key> | |
| 255 | 					<string>#punctuation</string> | |
| 256 | 				</dict> | |
| 257 | 				<dict> | |
| 258 | 					<key>include</key> | |
| 259 | 					<string>#storage_modifier</string> | |
| 260 | 				</dict> | |
| 261 | 				<dict> | |
| 262 | 					<key>include</key> | |
| 263 | 					<string>#container_decl</string> | |
| 264 | 				</dict> | |
| 265 | 				<dict> | |
| 266 | 					<key>include</key> | |
| 267 | 					<string>#constants</string> | |
| 268 | 				</dict> | |
| 269 | 				<dict> | |
| 270 | 					<key>include</key> | |
| 271 | 					<string>#comments</string> | |
| 272 | 				</dict> | |
| 273 | 				<dict> | |
| 274 | 					<key>include</key> | |
| 275 | 					<string>#strings</string> | |
| 276 | 				</dict> | |
| 277 | 				<dict> | |
| 278 | 					<key>include</key> | |
| 279 | 					<string>#storage</string> | |
| 280 | 				</dict> | |
| 281 | 				<dict> | |
| 282 | 					<key>include</key> | |
| 283 | 					<string>#keywords</string> | |
| 284 | 				</dict> | |
| 285 | 				<dict> | |
| 286 | 					<key>include</key> | |
| 287 | 					<string>#operators</string> | |
| 288 | 				</dict> | |
| 289 | 				<dict> | |
| 290 | 					<key>include</key> | |
| 291 | 					<string>#support</string> | |
| 292 | 				</dict> | |
| 293 | 				<dict> | |
| 294 | 					<key>include</key> | |
| 295 | 					<string>#field_decl</string> | |
| 296 | 				</dict> | |
| 297 | 				<dict> | |
| 298 | 					<key>include</key> | |
| 299 | 					<string>#block</string> | |
| 300 | 				</dict> | |
| 301 | 				<dict> | |
| 302 | 					<key>include</key> | |
| 303 | 					<string>#function_def</string> | |
| 304 | 				</dict> | |
| 305 | 				<dict> | |
| 306 | 					<key>include</key> | |
| 307 | 					<string>#function_call</string> | |
| 308 | 				</dict> | |
| 309 | 				<dict> | |
| 310 | 					<key>include</key> | |
| 311 | 					<string>#enum_literal</string> | |
| 312 | 				</dict> | |
| 313 | 			</array> | |
| 314 | 		</dict> | |
| 315 | 		<key>enum_literal</key> | |
| 316 | 		<dict> | |
| 317 | 			<key>match</key> | |
| 318 | 			<string>(?&lt;!\w|\)|\?|\}|\]|\*)(\.(?:[a-zA-Z_]\w*\b|@\"[^\"]*\"))(?!\(|\s*=[^=&gt;])</string> | |
| 319 | 			<key>name</key> | |
| 320 | 			<string>constant.language.enum</string> | |
| 321 | 		</dict> | |
| 322 | 		<key>field_decl</key> | |
| 323 | 		<dict> | |
| 324 | 			<key>begin</key> | |
| 325 | 			<string>([a-zA-Z_]\w*|@\".+\")\s*(:)\s*</string> | |
| 326 | 			<key>beginCaptures</key> | |
| 327 | 			<dict> | |
| 328 | 				<key>1</key> | |
| 329 | 				<dict> | |
| 330 | 					<key>name</key> | |
| 331 | 					<string>variable.other.member.zig</string> | |
| 332 | 				</dict> | |
| 333 | 				<key>2</key> | |
| 334 | 				<dict> | |
| 335 | 					<key>name</key> | |
| 336 | 					<string>punctuation.separator.zig</string> | |
| 337 | 				</dict> | |
| 338 | 			</dict> | |
| 339 | 			<key>end</key> | |
| 340 | 			<string>([a-zA-Z_][\w.]*|@\".+\")?\s*(?:(,)|(=)|$)</string> | |
| 341 | 			<key>endCaptures</key> | |
| 342 | 			<dict> | |
| 343 | 				<key>1</key> | |
| 344 | 				<dict> | |
| 345 | 					<key>name</key> | |
| 346 | 					<string>storage.type.zig</string> | |
| 347 | 				</dict> | |
| 348 | 				<key>2</key> | |
| 349 | 				<dict> | |
| 350 | 					<key>name</key> | |
| 351 | 					<string>punctuation.separator.zig</string> | |
| 352 | 				</dict> | |
| 353 | 				<key>3</key> | |
| 354 | 				<dict> | |
| 355 | 					<key>name</key> | |
| 356 | 					<string>keyword.operator.assignment.zig</string> | |
| 357 | 				</dict> | |
| 358 | 			</dict> | |
| 359 | 			<key>patterns</key> | |
| 360 | 			<array> | |
| 361 | 				<dict> | |
| 362 | 					<key>include</key> | |
| 363 | 					<string>#dummy_main</string> | |
| 364 | 				</dict> | |
| 365 | 			</array> | |
| 366 | 		</dict> | |
| 367 | 		<key>function_call</key> | |
| 368 | 		<dict> | |
| 369 | 			<key>match</key> | |
| 370 | 			<string>(?&lt;!fn)\b([a-zA-Z_]\w*|@\".+\")(?=\s*\()</string> | |
| 371 | 			<key>name</key> | |
| 372 | 			<string>variable.function.zig</string> | |
| 373 | 		</dict> | |
| 374 | 		<key>function_def</key> | |
| 375 | 		<dict> | |
| 376 | 			<key>begin</key> | |
| 377 | 			<string>(?&lt;=fn)\s+([a-zA-Z_]\w*|@\".+\")(\()</string> | |
| 378 | 			<key>beginCaptures</key> | |
| 379 | 			<dict> | |
| 380 | 				<key>1</key> | |
| 381 | 				<dict> | |
| 382 | 					<key>name</key> | |
| 383 | 					<string>entity.name.function</string> | |
| 384 | 				</dict> | |
| 385 | 				<key>2</key> | |
| 386 | 				<dict> | |
| 387 | 					<key>name</key> | |
| 388 | 					<string>punctuation.section.parens.begin.zig</string> | |
| 389 | 				</dict> | |
| 390 | 			</dict> | |
| 391 | 			<key>end</key> | |
| 392 | 			<string>(?&lt;=\)[^\)])\s*([a-zA-Z_][\w.]*|@\".+\")?(!)?\s*(?:([a-zA-Z_][\w.]*|@\".+\")\b(?!\s*\())?</string> | |
| 393 | 			<key>endCaptures</key> | |
| 394 | 			<dict> | |
| 395 | 				<key>1</key> | |
| 396 | 				<dict> | |
| 397 | 					<key>name</key> | |
| 398 | 					<string>storage.type.zig</string> | |
| 399 | 				</dict> | |
| 400 | 				<key>2</key> | |
| 401 | 				<dict> | |
| 402 | 					<key>name</key> | |
| 403 | 					<string>keyword.operator.zig</string> | |
| 404 | 				</dict> | |
| 405 | 				<key>3</key> | |
| 406 | 				<dict> | |
| 407 | 					<key>name</key> | |
| 408 | 					<string>storage.type.zig</string> | |
| 409 | 				</dict> | |
| 410 | 			</dict> | |
| 411 | 			<key>patterns</key> | |
| 412 | 			<array> | |
| 413 | 				<dict> | |
| 414 | 					<key>include</key> | |
| 415 | 					<string>#label</string> | |
| 416 | 				</dict> | |
| 417 | 				<dict> | |
| 418 | 					<key>include</key> | |
| 419 | 					<string>#param_list</string> | |
| 420 | 				</dict> | |
| 421 | 				<dict> | |
| 422 | 					<key>match</key> | |
| 423 | 					<string>([a-zA-Z_][\w.]*|@\".+\")</string> | |
| 424 | 					<key>name</key> | |
| 425 | 					<string>storage.type.zig</string> | |
| 426 | 				</dict> | |
| 427 | 				<dict> | |
| 428 | 					<key>include</key> | |
| 429 | 					<string>#dummy_main</string> | |
| 430 | 				</dict> | |
| 431 | 			</array> | |
| 432 | 		</dict> | |
| 433 | 		<key>function_type</key> | |
| 434 | 		<dict> | |
| 435 | 			<key>begin</key> | |
| 436 | 			<string>\b(fn)\s*(\()</string> | |
| 437 | 			<key>beginCaptures</key> | |
| 438 | 			<dict> | |
| 439 | 				<key>1</key> | |
| 440 | 				<dict> | |
| 441 | 					<key>name</key> | |
| 442 | 					<string>storage.type.function.zig</string> | |
| 443 | 				</dict> | |
| 444 | 				<key>2</key> | |
| 445 | 				<dict> | |
| 446 | 					<key>name</key> | |
| 447 | 					<string>punctuation.section.parens.begin.zig</string> | |
| 448 | 				</dict> | |
| 449 | 			</dict> | |
| 450 | 			<key>contentName</key> | |
| 451 | 			<string>meta.function.parameters.zig</string> | |
| 452 | 			<key>end</key> | |
| 453 | 			<string>(?&lt;=\)|\})\s*([a-zA-Z_][\w.]*|@\".+\")?\s*(!)?\s*([a-zA-Z_][\w.]*|@\".+\")</string> | |
| 454 | 			<key>endCaptures</key> | |
| 455 | 			<dict> | |
| 456 | 				<key>1</key> | |
| 457 | 				<dict> | |
| 458 | 					<key>name</key> | |
| 459 | 					<string>storage.type.zig</string> | |
| 460 | 				</dict> | |
| 461 | 				<key>2</key> | |
| 462 | 				<dict> | |
| 463 | 					<key>name</key> | |
| 464 | 					<string>keyword.operator.zig</string> | |
| 465 | 				</dict> | |
| 466 | 				<key>3</key> | |
| 467 | 				<dict> | |
| 468 | 					<key>name</key> | |
| 469 | 					<string>storage.type.zig</string> | |
| 470 | 				</dict> | |
| 471 | 			</dict> | |
| 472 | 			<key>patterns</key> | |
| 473 | 			<array> | |
| 474 | 				<dict> | |
| 475 | 					<key>include</key> | |
| 476 | 					<string>#label</string> | |
| 477 | 				</dict> | |
| 478 | 				<dict> | |
| 479 | 					<key>include</key> | |
| 480 | 					<string>#param_list</string> | |
| 481 | 				</dict> | |
| 482 | 				<dict> | |
| 483 | 					<key>match</key> | |
| 484 | 					<string>([a-zA-Z_][\w.]*|@\".+\")</string> | |
| 485 | 					<key>name</key> | |
| 486 | 					<string>storage.type.zig</string> | |
| 487 | 				</dict> | |
| 488 | 				<dict> | |
| 489 | 					<key>include</key> | |
| 490 | 					<string>#dummy_main</string> | |
| 491 | 				</dict> | |
| 492 | 			</array> | |
| 493 | 		</dict> | |
| 494 | 		<key>keywords</key> | |
| 495 | 		<dict> | |
| 496 | 			<key>patterns</key> | |
| 497 | 			<array> | |
| 498 | 				<dict> | |
| 499 | 					<key>match</key> | |
| 500 | 					<string>\b(while|for|break|return|continue|asm|defer|errdefer|unreachable)\b</string> | |
| 501 | 					<key>name</key> | |
| 502 | 					<string>keyword.control.zig</string> | |
| 503 | 				</dict> | |
| 504 | 				<dict> | |
| 505 | 					<key>match</key> | |
| 506 | 					<string>\b(async|await|suspend|nosuspend|resume)\b</string> | |
| 507 | 					<key>name</key> | |
| 508 | 					<string>keyword.control.async.zig</string> | |
| 509 | 				</dict> | |
| 510 | 				<dict> | |
| 511 | 					<key>match</key> | |
| 512 | 					<string>\b(if|else|switch|try|catch|orelse)\b</string> | |
| 513 | 					<key>name</key> | |
| 514 | 					<string>keyword.control.conditional.zig</string> | |
| 515 | 				</dict> | |
| 516 | 				<dict> | |
| 517 | 					<key>match</key> | |
| 518 | 					<string>(?&lt;!\w)(@import|@cImport|@cInclude)\b</string> | |
| 519 | 					<key>name</key> | |
| 520 | 					<string>keyword.control.import.zig</string> | |
| 521 | 				</dict> | |
| 522 | 				<dict> | |
| 523 | 					<key>match</key> | |
| 524 | 					<string>\b(usingnamespace)\b</string> | |
| 525 | 					<key>name</key> | |
| 526 | 					<string>keyword.other.usingnamespace.zig</string> | |
| 527 | 				</dict> | |
| 528 | 			</array> | |
| 529 | 		</dict> | |
| 530 | 		<key>label</key> | |
| 531 | 		<dict> | |
| 532 | 			<key>captures</key> | |
| 533 | 			<dict> | |
| 534 | 				<key>1</key> | |
| 535 | 				<dict> | |
| 536 | 					<key>name</key> | |
| 537 | 					<string>keyword.control.zig</string> | |
| 538 | 				</dict> | |
| 539 | 				<key>2</key> | |
| 540 | 				<dict> | |
| 541 | 					<key>name</key> | |
| 542 | 					<string>entity.name.label.zig</string> | |
| 543 | 				</dict> | |
| 544 | 				<key>3</key> | |
| 545 | 				<dict> | |
| 546 | 					<key>name</key> | |
| 547 | 					<string>entity.name.label.zig</string> | |
| 548 | 				</dict> | |
| 549 | 			</dict> | |
| 550 | 			<key>match</key> | |
| 551 | 			<string>\b(break|continue)\s*:\s*([a-zA-Z_]\w*|@\".+\")\b|\b(?!\d)([a-zA-Z_]\w*|@\".+\")\b(?=\s*:\s*(?:\{|while\b))</string> | |
| 552 | 		</dict> | |
| 553 | 		<key>operators</key> | |
| 554 | 		<dict> | |
| 555 | 			<key>patterns</key> | |
| 556 | 			<array> | |
| 557 | 				<dict> | |
| 558 | 					<key>match</key> | |
| 559 | 					<string>\b!\b</string> | |
| 560 | 					<key>name</key> | |
| 561 | 					<string>keyword.operator.zig</string> | |
| 562 | 				</dict> | |
| 563 | 				<dict> | |
| 564 | 					<key>match</key> | |
| 565 | 					<string>(==|(?:!|&gt;|&lt;)=?)</string> | |
| 566 | 					<key>name</key> | |
| 567 | 					<string>keyword.operator.logical.zig</string> | |
| 568 | 				</dict> | |
| 569 | 				<dict> | |
| 570 | 					<key>match</key> | |
| 571 | 					<string>\b(and|or)\b</string> | |
| 572 | 					<key>name</key> | |
| 573 | 					<string>keyword.operator.word.zig</string> | |
| 574 | 				</dict> | |
| 575 | 				<dict> | |
| 576 | 					<key>match</key> | |
| 577 | 					<string>((?:(?:\+|-|\*)\%?|/|%|&lt;&lt;|&gt;&gt;|&amp;|\|(?=[^\|])|\^)?=)</string> | |
| 578 | 					<key>name</key> | |
| 579 | 					<string>keyword.operator.assignment.zig</string> | |
| 580 | 				</dict> | |
| 581 | 				<dict> | |
| 582 | 					<key>match</key> | |
| 583 | 					<string>((?:\+|-|\*)\%?|/(?!/)|%)</string> | |
| 584 | 					<key>name</key> | |
| 585 | 					<string>keyword.operator.arithmetic.zig</string> | |
| 586 | 				</dict> | |
| 587 | 				<dict> | |
| 588 | 					<key>match</key> | |
| 589 | 					<string>(&lt;&lt;|&gt;&gt;|&amp;(?=[a-zA-Z_]|@\")|\|(?=[^\|])|\^|~)</string> | |
| 590 | 					<key>name</key> | |
| 591 | 					<string>keyword.operator.bitwise.zig</string> | |
| 592 | 				</dict> | |
| 593 | 				<dict> | |
| 594 | 					<key>match</key> | |
| 595 | 					<string>(\+\+|\*\*|-&gt;|\.\?|\.\*|&amp;(?=[a-zA-Z_]|@\")|\?|\|\||\.{2,3})</string> | |
| 596 | 					<key>name</key> | |
| 597 | 					<string>keyword.operator.other.zig</string> | |
| 598 | 				</dict> | |
| 599 | 			</array> | |
| 600 | 		</dict> | |
| 601 | 		<key>param_list</key> | |
| 602 | 		<dict> | |
| 603 | 			<key>begin</key> | |
| 604 | 			<string>([a-zA-Z_]\w*|@\".+\")\s*(:)\s*</string> | |
| 605 | 			<key>beginCaptures</key> | |
| 606 | 			<dict> | |
| 607 | 				<key>1</key> | |
| 608 | 				<dict> | |
| 609 | 					<key>name</key> | |
| 610 | 					<string>variable.parameter.zig</string> | |
| 611 | 				</dict> | |
| 612 | 				<key>2</key> | |
| 613 | 				<dict> | |
| 614 | 					<key>name</key> | |
| 615 | 					<string>punctuation.separator.zig</string> | |
| 616 | 				</dict> | |
| 617 | 			</dict> | |
| 618 | 			<key>end</key> | |
| 619 | 			<string>([a-zA-Z_][\w.]*|@\".+\")?\s*(?:(,)|(\)))</string> | |
| 620 | 			<key>endCaptures</key> | |
| 621 | 			<dict> | |
| 622 | 				<key>1</key> | |
| 623 | 				<dict> | |
| 624 | 					<key>name</key> | |
| 625 | 					<string>storage.type.zig</string> | |
| 626 | 				</dict> | |
| 627 | 				<key>2</key> | |
| 628 | 				<dict> | |
| 629 | 					<key>name</key> | |
| 630 | 					<string>punctuation.separator.zig</string> | |
| 631 | 				</dict> | |
| 632 | 				<key>3</key> | |
| 633 | 				<dict> | |
| 634 | 					<key>name</key> | |
| 635 | 					<string>punctuation.section.parens.end.zig</string> | |
| 636 | 				</dict> | |
| 637 | 			</dict> | |
| 638 | 			<key>patterns</key> | |
| 639 | 			<array> | |
| 640 | 				<dict> | |
| 641 | 					<key>include</key> | |
| 642 | 					<string>#dummy_main</string> | |
| 643 | 				</dict> | |
| 644 | 				<dict> | |
| 645 | 					<key>match</key> | |
| 646 | 					<string>([a-zA-Z_][\w.]*|@\".+\")</string> | |
| 647 | 					<key>name</key> | |
| 648 | 					<string>storage.type.zig</string> | |
| 649 | 				</dict> | |
| 650 | 			</array> | |
| 651 | 		</dict> | |
| 652 | 		<key>punctuation</key> | |
| 653 | 		<dict> | |
| 654 | 			<key>patterns</key> | |
| 655 | 			<array> | |
| 656 | 				<dict> | |
| 657 | 					<key>match</key> | |
| 658 | 					<string>,</string> | |
| 659 | 					<key>name</key> | |
| 660 | 					<string>punctuation.separator.zig</string> | |
| 661 | 				</dict> | |
| 662 | 				<dict> | |
| 663 | 					<key>match</key> | |
| 664 | 					<string>;</string> | |
| 665 | 					<key>name</key> | |
| 666 | 					<string>punctuation.terminator.zig</string> | |
| 667 | 				</dict> | |
| 668 | 				<dict> | |
| 669 | 					<key>match</key> | |
| 670 | 					<string>(\()</string> | |
| 671 | 					<key>name</key> | |
| 672 | 					<string>punctuation.section.parens.begin.zig</string> | |
| 673 | 				</dict> | |
| 674 | 				<dict> | |
| 675 | 					<key>match</key> | |
| 676 | 					<string>(\))</string> | |
| 677 | 					<key>name</key> | |
| 678 | 					<string>punctuation.section.parens.end.zig</string> | |
| 679 | 				</dict> | |
| 680 | 			</array> | |
| 681 | 		</dict> | |
| 682 | 		<key>storage</key> | |
| 683 | 		<dict> | |
| 684 | 			<key>patterns</key> | |
| 685 | 			<array> | |
| 686 | 				<dict> | |
| 687 | 					<key>match</key> | |
| 688 | 					<string>\b(bool|void|noreturn|type|anyerror|anytype)\b</string> | |
| 689 | 					<key>name</key> | |
| 690 | 					<string>storage.type.zig</string> | |
| 691 | 				</dict> | |
| 692 | 				<dict> | |
| 693 | 					<key>match</key> | |
| 694 | 					<string>\b(?&lt;!\.)([iu]\d+|[iu]size|comptime_int)\b</string> | |
| 695 | 					<key>name</key> | |
| 696 | 					<string>storage.type.integer.zig</string> | |
| 697 | 				</dict> | |
| 698 | 				<dict> | |
| 699 | 					<key>match</key> | |
| 700 | 					<string>\b(f16|f32|f64|f128|comptime_float)\b</string> | |
| 701 | 					<key>name</key> | |
| 702 | 					<string>storage.type.float.zig</string> | |
| 703 | 				</dict> | |
| 704 | 				<dict> | |
| 705 | 					<key>match</key> | |
| 706 | 					<string>\b(c_short|c_ushort|c_int|c_uint|c_long|c_ulong|c_longlong|c_ulonglong|c_longdouble|c_void)\b</string> | |
| 707 | 					<key>name</key> | |
| 708 | 					<string>storage.type.c_compat.zig</string> | |
| 709 | 				</dict> | |
| 710 | 				<dict> | |
| 711 | 					<key>captures</key> | |
| 712 | 					<dict> | |
| 713 | 						<key>1</key> | |
| 714 | 						<dict> | |
| 715 | 							<key>name</key> | |
| 716 | 							<string>storage.type.zig</string> | |
| 717 | 						</dict> | |
| 718 | 						<key>2</key> | |
| 719 | 						<dict> | |
| 720 | 							<key>name</key> | |
| 721 | 							<string>keyword.operator.zig</string> | |
| 722 | 						</dict> | |
| 723 | 						<key>3</key> | |
| 724 | 						<dict> | |
| 725 | 							<key>name</key> | |
| 726 | 							<string>storage.type.zig</string> | |
| 727 | 						</dict> | |
| 728 | 					</dict> | |
| 729 | 					<key>match</key> | |
| 730 | 					<string>\b(anyframe)\b\s*(-&gt;)?\s*(?:([a-zA-Z_][\w.]*|@\".+\")\b(?!\s*\())?</string> | |
| 731 | 				</dict> | |
| 732 | 				<dict> | |
| 733 | 					<key>match</key> | |
| 734 | 					<string>\bfn\b</string> | |
| 735 | 					<key>name</key> | |
| 736 | 					<string>storage.type.function.zig</string> | |
| 737 | 				</dict> | |
| 738 | 				<dict> | |
| 739 | 					<key>match</key> | |
| 740 | 					<string>\btest\b</string> | |
| 741 | 					<key>name</key> | |
| 742 | 					<string>storage.type.test.zig</string> | |
| 743 | 				</dict> | |
| 744 | 				<dict> | |
| 745 | 					<key>match</key> | |
| 746 | 					<string>\bstruct\b</string> | |
| 747 | 					<key>name</key> | |
| 748 | 					<string>storage.type.struct.zig</string> | |
| 749 | 				</dict> | |
| 750 | 				<dict> | |
| 751 | 					<key>match</key> | |
| 752 | 					<string>\benum\b</string> | |
| 753 | 					<key>name</key> | |
| 754 | 					<string>storage.type.enum.zig</string> | |
| 755 | 				</dict> | |
| 756 | 				<dict> | |
| 757 | 					<key>match</key> | |
| 758 | 					<string>\bunion\b</string> | |
| 759 | 					<key>name</key> | |
| 760 | 					<string>storage.type.union.zig</string> | |
| 761 | 				</dict> | |
| 762 | 				<dict> | |
| 763 | 					<key>match</key> | |
| 764 | 					<string>\berror\b</string> | |
| 765 | 					<key>name</key> | |
| 766 | 					<string>storage.type.error.zig</string> | |
| 767 | 				</dict> | |
| 768 | 			</array> | |
| 769 | 		</dict> | |
| 770 | 		<key>storage_modifier</key> | |
| 771 | 		<dict> | |
| 772 | 			<key>match</key> | |
| 773 | 			<string>\b(const|var|extern|packed|export|pub|noalias|inline|noinline|comptime|volatile|align|linksection|threadlocal|allowzero)\b</string> | |
| 774 | 			<key>name</key> | |
| 775 | 			<string>storage.modifier.zig</string> | |
| 776 | 		</dict> | |
| 777 | 		<key>strings</key> | |
| 778 | 		<dict> | |
| 779 | 			<key>patterns</key> | |
| 780 | 			<array> | |
| 781 | 				<dict> | |
| 782 | 					<key>begin</key> | |
| 783 | 					<string>\'</string> | |
| 784 | 					<key>end</key> | |
| 785 | 					<string>\'</string> | |
| 786 | 					<key>name</key> | |
| 787 | 					<string>string.quoted.single.zig</string> | |
| 788 | 					<key>patterns</key> | |
| 789 | 					<array> | |
| 790 | 						<dict> | |
| 791 | 							<key>include</key> | |
| 792 | 							<string>#character_escapes</string> | |
| 793 | 						</dict> | |
| 794 | 						<dict> | |
| 795 | 							<key>match</key> | |
| 796 | 							<string>\\[^\'][^\']*?</string> | |
| 797 | 							<key>name</key> | |
| 798 | 							<string>invalid.illegal.character.zig</string> | |
| 799 | 						</dict> | |
| 800 | 					</array> | |
| 801 | 				</dict> | |
| 802 | 				<dict> | |
| 803 | 					<key>begin</key> | |
| 804 | 					<string>c?\"</string> | |
| 805 | 					<key>end</key> | |
| 806 | 					<string>\"</string> | |
| 807 | 					<key>name</key> | |
| 808 | 					<string>string.quoted.double.zig</string> | |
| 809 | 					<key>patterns</key> | |
| 810 | 					<array> | |
| 811 | 						<dict> | |
| 812 | 							<key>include</key> | |
| 813 | 							<string>#character_escapes</string> | |
| 814 | 						</dict> | |
| 815 | 						<dict> | |
| 816 | 							<key>match</key> | |
| 817 | 							<string>\\[^\'][^\']*?</string> | |
| 818 | 							<key>name</key> | |
| 819 | 							<string>invalid.illegal.character.zig</string> | |
| 820 | 						</dict> | |
| 821 | 					</array> | |
| 822 | 				</dict> | |
| 823 | 				<dict> | |
| 824 | 					<key>begin</key> | |
| 825 | 					<string>c?\\\\</string> | |
| 826 | 					<key>end</key> | |
| 827 | 					<string>$\n?</string> | |
| 828 | 					<key>name</key> | |
| 829 | 					<string>string.quoted.other.zig</string> | |
| 830 | 				</dict> | |
| 831 | 			</array> | |
| 832 | 		</dict> | |
| 833 | 		<key>support</key> | |
| 834 | 		<dict> | |
| 835 | 			<key>match</key> | |
| 836 | 			<string>(?&lt;!\w)@[^\"\d][a-zA-Z_]\w*\b</string> | |
| 837 | 			<key>name</key> | |
| 838 | 			<string>support.function.zig</string> | |
| 839 | 		</dict> | |
| 840 | 	</dict> | |
| 841 | 	<key>scopeName</key> | |
| 842 | 	<string>source.zig</string> | |
| 843 | 	<key>uuid</key> | |
| 844 | 	<string>06C2FF99-3080-441A-9019-460C51E93116</string> | |
| 845 | </dict> | |
| 846 | </plist> | |
| \ No newline at end of file |
src/file-viewer/highlight.ts created+204| ... | ... | @@ -0,0 +1,204 @@ |
| 1 | import { onceAsync } from "../lib.ts"; | |
| 2 | import * as fs from "node:fs/promises"; | |
| 3 | import * as path from "node:path"; | |
| 4 | import * as oniguruma from "vscode-oniguruma"; | |
| 5 | import * as textmate from "vscode-textmate"; | |
| 6 | import { escapeHTML } from "../framework/bun-polyfill.ts"; | |
| 7 | ||
| 8 | const languages = [ | |
| 9 | "ts", | |
| 10 | "tsx", | |
| 11 | "zig", | |
| 12 | "json", | |
| 13 | "css", | |
| 14 | "astro", | |
| 15 | "mdx", | |
| 16 | "lua", | |
| 17 | "shell", | |
| 18 | "dosbatch", | |
| 19 | "powershell", | |
| 20 | "yaml", | |
| 21 | "toml", | |
| 22 | "xml", | |
| 23 | "python", | |
| 24 | "php", | |
| 25 | "diff", | |
| 26 | ] as const; | |
| 27 | const altScopes: Record<string, string> = { | |
| 28 | astro: "text.html.astro", | |
| 29 | xml: "text.xml", | |
| 30 | php: "text.html.php", | |
| 31 | }; | |
| 32 | export type Language = (typeof languages)[number]; | |
| 33 | ||
| 34 | const scopes = [ | |
| 35 | // CSS | |
| 36 | ["punctuation.definition.keyword", "keyword", "css"], | |
| 37 | ["entity.name.tag.css", "class", "css"], | |
| 38 | ["meta.selector.css", "method", "css"], | |
| 39 | ["entity.other.attribute-name.class.css", "builtin", "css"], | |
| 40 | ["punctuation.definition.entity", "builtin", "css"], | |
| 41 | ["variable.css", "parameter", "css"], | |
| 42 | ||
| 43 | // JSON | |
| 44 | ["support.type.property-name.json", "variable", "json"], | |
| 45 | ["constant.numeric", "method", "json"], | |
| 46 | ["constant", "class", "json"], | |
| 47 | ||
| 48 | // Lua | |
| 49 | ["entity.name", "class", "lua"], | |
| 50 | ||
| 51 | // Diff | |
| 52 | ["punctuation.definition.deleted", "variable", "diff"], | |
| 53 | ["markup.deleted", "variable", "diff"], | |
| 54 | ["punctuation.definition.inserted", "method", "diff"], | |
| 55 | ["markup.inserted", "method", "diff"], | |
| 56 | ["meta.diff.range", "string", "diff"], | |
| 57 | ["punctuation.definition.range", "string", "diff"], | |
| 58 | ["meta.toc-list-line.number", "keyword", "diff"], | |
| 59 | ["meta.diff", "comment", "diff"], | |
| 60 | ||
| 61 | // General | |
| 62 | ["meta.object-literal.key", "property"], | |
| 63 | ["comment", "comment"], | |
| 64 | ["string", "string"], | |
| 65 | ["storage", "keyword"], | |
| 66 | ["keyword", "keyword"], | |
| 67 | ["variable.parameter", "parameter"], | |
| 68 | ["entity.name.function", "method"], | |
| 69 | ["support.type.primitive", "builtin"], | |
| 70 | ["entity.name.type", "class"], | |
| 71 | ["support.type", "class"], | |
| 72 | ["support.class", "class"], | |
| 73 | ["constant.language", "builtin"], | |
| 74 | ["constant", "constant"], | |
| 75 | ["support.constant", "constant"], | |
| 76 | ["meta.parameters", "parameter"], | |
| 77 | ["support.function", "method"], | |
| 78 | ["variable", "variable"], | |
| 79 | ["punctuation", null], | |
| 80 | ["meta.function-call", "method"], | |
| 81 | ] as const; | |
| 82 | ||
| 83 | interface HighlightLinesOptions { | |
| 84 | lines: string[]; | |
| 85 | grammar: textmate.IGrammar; | |
| 86 | state: textmate.StateStack; | |
| 87 | language: Language; | |
| 88 | } | |
| 89 | ||
| 90 | export function getStyle(scopesToCheck: string[], langugage: Language) { | |
| 91 | if (import.meta.main) console.log(scopesToCheck); | |
| 92 | for (const scope of scopes) { | |
| 93 | if (scope[2] && scope[2] !== langugage) continue; | |
| 94 | const find = scopesToCheck.find((s) => s.startsWith(scope[0])); | |
| 95 | if (find) { | |
| 96 | return scope[1]; | |
| 97 | } | |
| 98 | } | |
| 99 | return null; | |
| 100 | } | |
| 101 | function highlightLines({ | |
| 102 | lines, | |
| 103 | grammar, | |
| 104 | state, | |
| 105 | language, | |
| 106 | }: HighlightLinesOptions) { | |
| 107 | let html = ""; | |
| 108 | let lastHtmlStyle: string | null = null; | |
| 109 | ||
| 110 | const { length } = lines; | |
| 111 | for (let i = 0; i < length; i += 1) { | |
| 112 | const { tokens, ruleStack, stoppedEarly } = grammar.tokenizeLine( | |
| 113 | lines[i], | |
| 114 | state, | |
| 115 | ); | |
| 116 | if (stoppedEarly) throw new Error("TODO: Tokenization stopped early?"); | |
| 117 | state = ruleStack; | |
| 118 | ||
| 119 | for (const token of tokens) { | |
| 120 | const str = lines[i].slice(token.startIndex, token.endIndex); | |
| 121 | if (str.trim().length === 0) { | |
| 122 | // Emit but do not consider scope changes | |
| 123 | html += escapeHTML(str); | |
| 124 | continue; | |
| 125 | } | |
| 126 | ||
| 127 | const style = getStyle(token.scopes, language); | |
| 128 | if (style !== lastHtmlStyle) { | |
| 129 | if (lastHtmlStyle) html += "</span>"; | |
| 130 | if (style) html += `<span class='${style}'>`; | |
| 131 | } | |
| 132 | html += escapeHTML(str); | |
| 133 | lastHtmlStyle = style; | |
| 134 | } | |
| 135 | html += "\n"; | |
| 136 | } | |
| 137 | ||
| 138 | if (lastHtmlStyle) html += "</span>"; | |
| 139 | ||
| 140 | return { state, html }; | |
| 141 | } | |
| 142 | ||
| 143 | export const getRegistry = onceAsync(async () => { | |
| 144 | const wasmBin = await fs.readFile( | |
| 145 | path.join( | |
| 146 | import.meta.dirname, | |
| 147 | "../node_modules/vscode-oniguruma/release/onig.wasm", | |
| 148 | ), | |
| 149 | ); | |
| 150 | await oniguruma.loadWASM(wasmBin); | |
| 151 | ||
| 152 | return new textmate.Registry({ | |
| 153 | onigLib: Promise.resolve({ | |
| 154 | createOnigScanner: (patterns) => new oniguruma.OnigScanner(patterns), | |
| 155 | createOnigString: (s) => new oniguruma.OnigString(s), | |
| 156 | }), | |
| 157 | loadGrammar: async (scopeName: string) => { | |
| 158 | for (const lang of languages) { | |
| 159 | if (scopeName.endsWith(`.${lang}`)) { | |
| 160 | const file = await fs.readFile( | |
| 161 | path.join(import.meta.dirname, `highlight-grammar/${lang}.plist`), | |
| 162 | "utf-8", | |
| 163 | ); | |
| 164 | return textmate.parseRawGrammar(file); | |
| 165 | } | |
| 166 | } | |
| 167 | return null; | |
| 168 | }, | |
| 169 | }); | |
| 170 | }); | |
| 171 | ||
| 172 | export async function highlightCode(code: string, language: Language) { | |
| 173 | const registry = await getRegistry(); | |
| 174 | const grammar = await registry.loadGrammar( | |
| 175 | altScopes[language] ?? "source." + language, | |
| 176 | ); | |
| 177 | if (!grammar) { | |
| 178 | throw new Error(`No grammar found for language: ${language}`); | |
| 179 | } | |
| 180 | let state = textmate.INITIAL; | |
| 181 | const { html } = highlightLines({ | |
| 182 | lines: code.split("\n"), | |
| 183 | grammar, | |
| 184 | state, | |
| 185 | language, | |
| 186 | }); | |
| 187 | return html; | |
| 188 | } | |
| 189 | ||
| 190 | import { existsSync } from "node:fs"; | |
| 191 | if (import.meta.main) { | |
| 192 | // validate exts | |
| 193 | for (const ext of languages) { | |
| 194 | if ( | |
| 195 | !existsSync( | |
| 196 | path.join(import.meta.dirname, `highlight-grammar/${ext}.plist`), | |
| 197 | ) | |
| 198 | ) { | |
| 199 | console.error(`Missing grammar for ${ext}`); | |
| 200 | } | |
| 201 | const html = await highlightCode("wwwwwwwwwwwaaaaaaaaaaaaaaaa", ext); | |
| 202 | } | |
| 203 | console.log(await highlightCode(`{"maps":"damn"`, "json")); | |
| 204 | } |
src/file-viewer/models/BlobAsset.ts createdsrc/file-viewer/models/FilePermission.ts createdsrc/file-viewer/models/MediaFile.ts createdsrc/file-viewer/pages/file.cotyledon_enterance.tsx created+27| ... | ... | @@ -0,0 +1,27 @@ |
| 1 | import { MediaFile } from "../db"; | |
| 2 | import { useInlineScript } from "../framework/page-resources"; | |
| 3 | import { Readme } from "../media/cotyledon"; | |
| 4 | import { MediaPanel } from "../pages-dynamic/file_viewer"; | |
| 5 | import "../media/files.css"; | |
| 6 | ||
| 7 | export const theme = { | |
| 8 | bg: "#312652", | |
| 9 | fg: "#f0f0ff", | |
| 10 | primary: "#fabe32", | |
| 11 | }; | |
| 12 | ||
| 13 | export default function CotyledonPage() { | |
| 14 | useInlineScript("canvas_cotyledon"); | |
| 15 | useInlineScript("file_viewer"); | |
| 16 | return ( | |
| 17 | <div class="files ctld ctld-et"> | |
| 18 | <MediaPanel | |
| 19 | file={MediaFile.getByPath("/")!} | |
| 20 | isLast={false} | |
| 21 | activeFilename={null} | |
| 22 | hasCotyledonCookie={true} | |
| 23 | /> | |
| 24 | <Readme /> | |
| 25 | </div> | |
| 26 | ); | |
| 27 | } |
src/file-viewer/pages/file.cotyledon_speedbump.tsx created+27| ... | ... | @@ -0,0 +1,27 @@ |
| 1 | import { MediaFile } from "../db"; | |
| 2 | import { useInlineScript } from "../framework/page-resources"; | |
| 3 | import { Speedbump } from "../media/cotyledon"; | |
| 4 | import { MediaPanel } from "../pages-dynamic/file_viewer"; | |
| 5 | import "../media/files.css"; | |
| 6 | ||
| 7 | export const theme = { | |
| 8 | bg: "#312652", | |
| 9 | fg: "#f0f0ff", | |
| 10 | primary: "#fabe32", | |
| 11 | }; | |
| 12 | ||
| 13 | export default function CotyledonPage() { | |
| 14 | useInlineScript("canvas_cotyledon"); | |
| 15 | useInlineScript("file_viewer"); | |
| 16 | return ( | |
| 17 | <div class="files ctld ctld-sb"> | |
| 18 | <MediaPanel | |
| 19 | file={MediaFile.getByPath("/")!} | |
| 20 | isLast={false} | |
| 21 | activeFilename={null} | |
| 22 | hasCotyledonCookie={false} | |
| 23 | /> | |
| 24 | <Speedbump /> | |
| 25 | </div> | |
| 26 | ); | |
| 27 | } |
src/file-viewer/redirects.ts created+9| ... | ... | @@ -0,0 +1,9 @@ |
| 1 | export const mediaRedirects: Record<string, string> = { | |
| 2 | "/q+a/172533.png": "/q+a/172533.jpg", | |
| 3 | "/q+a/2021-12-05_smooth.mp4": "/2019/smooth.mp4", | |
| 4 | "/q+a/temp_2022-08-17-19-43-32.m4a": | |
| 5 | "/2023/g-missing/fragments/2022-08-17-19-43-32.m4a", | |
| 6 | "/q+a/2023-02-09_20-5814i.png": | |
| 7 | "/2023/g-is-missing/fragments/2023-02-09_20-5814i.png", | |
| 8 | "/2024/waterfalls/": "/2025/waterfalls/", | |
| 9 | }; |
src/file-viewer/scripts/canvas_2017.ts created+233| ... | ... | @@ -0,0 +1,233 @@ |
| 1 | // Vibe coded with AI | |
| 2 | (globalThis as any).canvas_2017 = function (canvas: HTMLCanvasElement) { | |
| 3 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 4 | // Configuration interface for the checkerboard effect | |
| 5 | interface CheckerboardConfig { | |
| 6 | fps: number; // frames per second | |
| 7 | color1: string; // first checkerboard color | |
| 8 | color2: string; // second checkerboard color | |
| 9 | opacity: number; // opacity of each checkerboard (0-1) | |
| 10 | speedX1: number; // horizontal speed of first checkerboard (pixels per second) | |
| 11 | speedY1: number; // vertical speed of first checkerboard (pixels per second) | |
| 12 | speedX2: number; // horizontal speed of second checkerboard (pixels per second) | |
| 13 | speedY2: number; // vertical speed of second checkerboard (pixels per second) | |
| 14 | baseTileSize: number; // base size of checkerboard tiles | |
| 15 | sizeVariation: number; // maximum variation in tile size (pixels) | |
| 16 | sineFrequency1: number; // frequency of first sine wave for size variation | |
| 17 | sineFrequency2: number; // frequency of second sine wave for size variation | |
| 18 | sineOffset: number; // offset between the two sine waves (radians) | |
| 19 | rotation: number; // rotation in degrees for the entire pattern | |
| 20 | rotation2: number; // rotation in degrees for the entire pattern | |
| 21 | } | |
| 22 | ||
| 23 | // Default configuration | |
| 24 | const config: CheckerboardConfig = { | |
| 25 | fps: 30, | |
| 26 | color1: "#1A1C17", | |
| 27 | color2: "#1A1C17", | |
| 28 | opacity: 0.3, | |
| 29 | speedX1: -0.02, // moving left slowly | |
| 30 | speedY1: -0.01, // moving up slowly | |
| 31 | speedX2: -0.015, // moving left (slightly slower) | |
| 32 | speedY2: 0.012, // moving down slowly | |
| 33 | baseTileSize: 200, | |
| 34 | sizeVariation: 1.5, | |
| 35 | sineFrequency1: 0.0005, | |
| 36 | sineFrequency2: 0.0008, | |
| 37 | sineOffset: Math.PI / 2, // 90 degrees offset | |
| 38 | rotation: 2, // 5 degree rotation | |
| 39 | rotation2: -2, // 5 degree rotation | |
| 40 | }; | |
| 41 | ||
| 42 | // Get the canvas context | |
| 43 | const ctx = canvas.getContext("2d"); | |
| 44 | if (!ctx) { | |
| 45 | console.error("Could not get canvas context"); | |
| 46 | return () => {}; | |
| 47 | } | |
| 48 | ||
| 49 | // Make canvas transparent | |
| 50 | if (isStandalone) { | |
| 51 | canvas.style.backgroundColor = "#737D60"; | |
| 52 | } else { | |
| 53 | canvas.style.backgroundColor = "transparent"; | |
| 54 | } | |
| 55 | ||
| 56 | // Variables to track position and animation | |
| 57 | let width = canvas.width; | |
| 58 | let height = canvas.height; | |
| 59 | let animationFrameId: number; | |
| 60 | let lastFrameTime = 0; | |
| 61 | const frameInterval = 1000 / config.fps; | |
| 62 | ||
| 63 | // Position offsets for the two checkerboards (centered) | |
| 64 | let offset1X = 0; | |
| 65 | let offset1Y = 0; | |
| 66 | let offset2X = 0; | |
| 67 | let offset2Y = 0; | |
| 68 | ||
| 69 | // Time variable for sine wave calculation | |
| 70 | let time = 0; | |
| 71 | ||
| 72 | // Convert rotation to radians | |
| 73 | const rotationRad = (config.rotation * Math.PI) / 180; | |
| 74 | const rotationRad2 = (config.rotation2 * Math.PI) / 180; | |
| 75 | ||
| 76 | // Update canvas dimensions when resized | |
| 77 | const updateDimensions = () => { | |
| 78 | width = canvas.width = canvas.clientWidth; | |
| 79 | height = canvas.height = canvas.clientHeight; | |
| 80 | }; | |
| 81 | ||
| 82 | // Calculate the diagonal length of the canvas (to ensure rotation covers corners) | |
| 83 | const calculateDiagonal = () => { | |
| 84 | return Math.sqrt(width * width + height * height); | |
| 85 | }; | |
| 86 | ||
| 87 | // Draw a single checkerboard pattern scaled from center with rotation | |
| 88 | const drawCheckerboard = ( | |
| 89 | offsetX: number, | |
| 90 | offsetY: number, | |
| 91 | tileSize: number, | |
| 92 | color1: string, | |
| 93 | color2: string, | |
| 94 | opacity: number, | |
| 95 | rotationRad: number, | |
| 96 | ) => { | |
| 97 | ctx.globalAlpha = opacity; | |
| 98 | ||
| 99 | // Get the center of the viewport | |
| 100 | const centerX = width / 2; | |
| 101 | const centerY = height / 2; | |
| 102 | ||
| 103 | // Save the current transformation state | |
| 104 | ctx.save(); | |
| 105 | ||
| 106 | // Move to the center of the canvas, rotate, then move back | |
| 107 | ctx.translate(centerX, centerY); | |
| 108 | ctx.rotate(rotationRad); | |
| 109 | ||
| 110 | // Calculate the number of tiles needed to cover the rotated canvas | |
| 111 | // We need to use the diagonal length to ensure we cover the corners when rotated | |
| 112 | const diagonal = calculateDiagonal(); | |
| 113 | const tilesX = Math.ceil(diagonal / tileSize) + 6; // Added extra tiles for rotation | |
| 114 | const tilesY = Math.ceil(diagonal / tileSize) + 6; | |
| 115 | ||
| 116 | // Calculate how many tiles fit from center to edge (in each direction) | |
| 117 | const halfTilesX = Math.ceil(tilesX / 2); | |
| 118 | const halfTilesY = Math.ceil(tilesY / 2); | |
| 119 | ||
| 120 | // Adjust the offset to be relative to the center | |
| 121 | // The modulo ensures the pattern repeats smoothly even with scaling | |
| 122 | const adjustedOffsetX = offsetX % (tileSize * 2); | |
| 123 | const adjustedOffsetY = offsetY % (tileSize * 2); | |
| 124 | ||
| 125 | // Draw the checker pattern, centered on the viewport | |
| 126 | for (let y = -halfTilesY; y <= halfTilesY; y++) { | |
| 127 | for (let x = -halfTilesX; x <= halfTilesX; x++) { | |
| 128 | // Determine if this tile should be colored (creating checker pattern) | |
| 129 | // We add a large number to ensure (x+y) is always positive for the modulo | |
| 130 | if ((x + y + 1000) % 2 === 0) { | |
| 131 | ctx.fillStyle = color1; | |
| 132 | } else { | |
| 133 | ctx.fillStyle = color2; | |
| 134 | } | |
| 135 | ||
| 136 | // Calculate the position of this tile relative to the center | |
| 137 | // The adjusted offset creates the movement effect | |
| 138 | const posX = (x * tileSize) + adjustedOffsetX; | |
| 139 | const posY = (y * tileSize) + adjustedOffsetY; | |
| 140 | ||
| 141 | // Draw the tile | |
| 142 | ctx.fillRect( | |
| 143 | posX - tileSize / 2, | |
| 144 | posY - tileSize / 2, | |
| 145 | tileSize, | |
| 146 | tileSize, | |
| 147 | ); | |
| 148 | } | |
| 149 | } | |
| 150 | ||
| 151 | // Restore the transformation state | |
| 152 | ctx.restore(); | |
| 153 | }; | |
| 154 | ||
| 155 | // Animation loop | |
| 156 | const animate = (currentTime: number) => { | |
| 157 | animationFrameId = requestAnimationFrame(animate); | |
| 158 | ||
| 159 | // Control frame rate | |
| 160 | if (currentTime - lastFrameTime < frameInterval) { | |
| 161 | return; | |
| 162 | } | |
| 163 | ||
| 164 | // Calculate the time elapsed since the last frame | |
| 165 | const dt = currentTime - lastFrameTime; | |
| 166 | lastFrameTime = currentTime; | |
| 167 | ||
| 168 | // Increment time for sine wave calculation | |
| 169 | time += dt; | |
| 170 | ||
| 171 | // Update the position offsets based on speed and elapsed time | |
| 172 | offset1X += config.speedX1 * dt; | |
| 173 | offset1Y += config.speedY1 * dt; | |
| 174 | offset2X += config.speedX2 * dt; | |
| 175 | offset2Y += config.speedY2 * dt; | |
| 176 | ||
| 177 | // Calculate the tile sizes using sine waves | |
| 178 | const tileSize1 = config.baseTileSize + | |
| 179 | Math.sin(time * config.sineFrequency1) * config.sizeVariation; | |
| 180 | const tileSize2 = config.baseTileSize + | |
| 181 | Math.sin(time * config.sineFrequency2 + config.sineOffset) * | |
| 182 | config.sizeVariation; | |
| 183 | ||
| 184 | // Clear canvas | |
| 185 | ctx.clearRect(0, 0, width, height); | |
| 186 | ||
| 187 | // Draw the two checkerboards | |
| 188 | drawCheckerboard( | |
| 189 | offset1X, | |
| 190 | offset1Y, | |
| 191 | tileSize1, | |
| 192 | config.color1, | |
| 193 | "transparent", | |
| 194 | config.opacity, | |
| 195 | rotationRad, | |
| 196 | ); | |
| 197 | ||
| 198 | drawCheckerboard( | |
| 199 | offset2X, | |
| 200 | offset2Y, | |
| 201 | tileSize2, | |
| 202 | config.color2, | |
| 203 | "transparent", | |
| 204 | config.opacity, | |
| 205 | rotationRad2, | |
| 206 | ); | |
| 207 | ||
| 208 | // Reset global alpha | |
| 209 | ctx.globalAlpha = 1.0; | |
| 210 | }; | |
| 211 | ||
| 212 | // Initialize the animation | |
| 213 | const init = () => { | |
| 214 | // Set up resize handler | |
| 215 | window.addEventListener("resize", updateDimensions); | |
| 216 | ||
| 217 | // Initial setup | |
| 218 | updateDimensions(); | |
| 219 | ||
| 220 | // Start animation | |
| 221 | lastFrameTime = performance.now(); | |
| 222 | animationFrameId = requestAnimationFrame(animate); | |
| 223 | }; | |
| 224 | ||
| 225 | // Start the animation | |
| 226 | init(); | |
| 227 | ||
| 228 | // Return cleanup function | |
| 229 | return () => { | |
| 230 | window.removeEventListener("resize", updateDimensions); | |
| 231 | cancelAnimationFrame(animationFrameId); | |
| 232 | }; | |
| 233 | }; |
src/file-viewer/scripts/canvas_2018.ts created+431| ... | ... | @@ -0,0 +1,431 @@ |
| 1 | // This canvas is based on the maze generation algo in Tanks. This was | |
| 2 | // originally written in C++ as a single function in 2018, and was ported to TS | |
| 3 | // by Chloe in 2025 for the cotyledon canvas. | |
| 4 | // | |
| 5 | // The main difference is that this version is a visualization, rather than the | |
| 6 | // practical function. Instead of taking a millisecond, only 5 steps are | |
| 7 | // performed per second, visualizing the whole ordeal. It also isn't a playable | |
| 8 | // game, obviously. | |
| 9 | // | |
| 10 | // Ported with love because I care about my old self | |
| 11 | // She deserves the world, but instead gave it to me. | |
| 12 | (globalThis as any).canvas_2018 = function (canvas: HTMLCanvasElement) { | |
| 13 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 14 | if (isStandalone) { | |
| 15 | canvas.style.backgroundColor = "#27201E"; | |
| 16 | } | |
| 17 | interface Cell { | |
| 18 | down: boolean; | |
| 19 | right: boolean; | |
| 20 | visited: boolean; | |
| 21 | ||
| 22 | cell_flash: number; | |
| 23 | down_flash: number; | |
| 24 | right_flash: number; | |
| 25 | } | |
| 26 | interface Pos { | |
| 27 | x: number; | |
| 28 | y: number; | |
| 29 | /** Where the wall is relative to x, y. */ | |
| 30 | dir: "left" | "right" | "up" | "down"; | |
| 31 | } | |
| 32 | interface Maze { | |
| 33 | grid: Grid; | |
| 34 | cursor: { x: number; y: number }; | |
| 35 | lastTick: number; | |
| 36 | /* Pixels */ | |
| 37 | transform: number; | |
| 38 | newCellsToVisit: Pos[]; | |
| 39 | randomWallBag: Cell[]; | |
| 40 | randomWallTarget: number; | |
| 41 | renderOffset: { x: number; y: number }; | |
| 42 | done: boolean; | |
| 43 | } | |
| 44 | const hex = (color: number[]) => | |
| 45 | "#" + color.map((c) => c.toString(16).padStart(2, "0")).join(""); | |
| 46 | let cellSize: number; | |
| 47 | let borderThickness: number; | |
| 48 | const cellFlashModifier = isStandalone ? 0.4 : 0.2; | |
| 49 | const color = isStandalone ? "#170d0b" : "#231C1A"; | |
| 50 | const bg = [0x27, 0x20, 0x1E]; | |
| 51 | const wallFlashColor = [0xFF, 0xA8, 0x7A]; | |
| 52 | const cellFlashColor = "#FFA87A"; | |
| 53 | const updateTime = 1000 / 7; | |
| 54 | const randomWallBreakInterval = [6, 12]; // every 10 to 18 walls. | |
| 55 | function randomBetween(min: number, max: number) { | |
| 56 | return Math.round( | |
| 57 | Math.random() * (max - min), | |
| 58 | ) + min; | |
| 59 | } | |
| 60 | function randomOf<T>(array: T[]): T { | |
| 61 | return array[randomBetween(0, array.length - 1)]; | |
| 62 | } | |
| 63 | function randomWallTarget() { | |
| 64 | return randomBetween( | |
| 65 | randomWallBreakInterval[0], | |
| 66 | randomWallBreakInterval[1], | |
| 67 | ); | |
| 68 | } | |
| 69 | ||
| 70 | // Originally, this used a 2-dimensional array. However, I wanted to make sure | |
| 71 | // that the grid could be infinitely sized. This grid constructs new cells on | |
| 72 | // demand, as needed. | |
| 73 | class Grid { | |
| 74 | cells = new Map<number, Cell>(); | |
| 75 | cell({ x, y }: { x: number; y: number }) { | |
| 76 | const k = ((x | 0) << 16) + (y | 0); | |
| 77 | const { cells } = this; | |
| 78 | let existing = this.cells.get(k); | |
| 79 | if (!existing) { | |
| 80 | existing = { | |
| 81 | cell_flash: 0, | |
| 82 | down: true, | |
| 83 | down_flash: 0, | |
| 84 | right: true, | |
| 85 | right_flash: 0, | |
| 86 | visited: false, | |
| 87 | }; | |
| 88 | cells.set(k, existing); | |
| 89 | } | |
| 90 | return existing; | |
| 91 | } | |
| 92 | forAll( | |
| 93 | renderOffset: { x: number; y: number }, | |
| 94 | width: number, | |
| 95 | height: number, | |
| 96 | cb: (cell: Cell, pos: { x: number; y: number }) => void, | |
| 97 | ) { | |
| 98 | const { x: offsetX, y: offsetY } = renderOffset; | |
| 99 | const startX = Math.floor(-offsetX / cellSize); | |
| 100 | const startY = Math.floor(-offsetY / cellSize); | |
| 101 | const endX = Math.ceil((width - offsetX) / cellSize); | |
| 102 | const endY = Math.ceil((height - offsetY) / cellSize); | |
| 103 | for (let x = startX; x <= endX; x++) { | |
| 104 | for (let y = startY; y <= endY; y++) { | |
| 105 | const cellX = offsetX + x * cellSize; | |
| 106 | const cellY = offsetY + y * cellSize; | |
| 107 | cb(this.cell({ x, y }), { x: cellX, y: cellY }); | |
| 108 | } | |
| 109 | } | |
| 110 | } | |
| 111 | } | |
| 112 | ||
| 113 | const ctx = canvas.getContext("2d")!; | |
| 114 | if (!ctx) { | |
| 115 | console.error("Could not get canvas context"); | |
| 116 | return () => {}; | |
| 117 | } | |
| 118 | ||
| 119 | let width: number, height: number; | |
| 120 | const updateDimensions = () => { | |
| 121 | width = canvas.width = canvas.offsetWidth; | |
| 122 | height = canvas.height = canvas.offsetHeight; | |
| 123 | cellSize = 100; | |
| 124 | borderThickness = 8; | |
| 125 | }; | |
| 126 | updateDimensions(); | |
| 127 | ||
| 128 | setTimeout(() => { | |
| 129 | updateDimensions(); | |
| 130 | }, 10); | |
| 131 | ||
| 132 | let maze = initMaze(); | |
| 133 | let nextMaze: Maze | null = null; | |
| 134 | let completeFade = 0; | |
| 135 | function initMaze(): Maze { | |
| 136 | return { | |
| 137 | grid: new Grid(), | |
| 138 | transform: 0, | |
| 139 | cursor: { | |
| 140 | x: randomBetween(0, Math.ceil(width / cellSize)), | |
| 141 | y: randomBetween(0, Math.ceil(height / cellSize)), | |
| 142 | }, | |
| 143 | lastTick: performance.now(), | |
| 144 | randomWallBag: [], | |
| 145 | randomWallTarget: randomWallTarget(), | |
| 146 | newCellsToVisit: [], | |
| 147 | renderOffset: { x: 0, y: 0 }, | |
| 148 | done: false, | |
| 149 | }; | |
| 150 | } | |
| 151 | ||
| 152 | function isOnScreen(maze: Maze, x: number, y: number) { | |
| 153 | const { x: offsetX, y: offsetY } = maze.renderOffset; | |
| 154 | const cellX = offsetX + x * cellSize; | |
| 155 | const cellY = offsetY + y * cellSize; | |
| 156 | return ( | |
| 157 | cellX + cellSize > 0 && | |
| 158 | cellX < width && | |
| 159 | cellY + cellSize > 0 && | |
| 160 | cellY < height | |
| 161 | ); | |
| 162 | } | |
| 163 | ||
| 164 | function tick(maze: Maze, other?: Maze) { | |
| 165 | if (maze.done) return; | |
| 166 | ||
| 167 | // The original maze algorithm broke down 4%-8% of random right facing | |
| 168 | // walls, and 4%-8% of down facing walls. It did this at the end. | |
| 169 | // To make this visual more interesting, two random walls will be broken | |
| 170 | // down every 12-25 cell visits. This way, the main trail is always running. | |
| 171 | if (maze.randomWallBag.length > maze.randomWallTarget) { | |
| 172 | const down: Cell = randomOf(maze.randomWallBag); | |
| 173 | const right: Cell = randomOf(maze.randomWallBag); | |
| 174 | maze.randomWallBag.forEach((cell) => | |
| 175 | cell.cell_flash = Math.min(cell.cell_flash + 0.2, 1) | |
| 176 | ); | |
| 177 | down.cell_flash = 1; | |
| 178 | down.down = false; | |
| 179 | down.down_flash = 1; | |
| 180 | right.cell_flash = 1; | |
| 181 | right.right = false; | |
| 182 | right.right_flash = 1; | |
| 183 | maze.randomWallBag = []; | |
| 184 | maze.randomWallTarget = randomWallTarget(); | |
| 185 | return; | |
| 186 | } | |
| 187 | ||
| 188 | // The main algorithm was simple: Have a cursor position, and move it in a | |
| 189 | // random direction that it had not seen before. Once it had run out of | |
| 190 | // options, branch off of a previous location. Only visit each cell once. | |
| 191 | // | |
| 192 | // In this visualization, cells that are too far offscreen are softly | |
| 193 | // treated as "visited", which is how the simulation always stays in frame. | |
| 194 | const current = maze.grid.cell(maze.cursor); | |
| 195 | current.visited = true; | |
| 196 | current.cell_flash = 1; | |
| 197 | maze.randomWallBag.push(current); | |
| 198 | const adjacent = ([ | |
| 199 | { x: maze.cursor.x + 1, y: maze.cursor.y, dir: "left" }, | |
| 200 | { x: maze.cursor.x - 1, y: maze.cursor.y, dir: "right" }, | |
| 201 | { x: maze.cursor.x, y: maze.cursor.y + 1, dir: "up" }, | |
| 202 | { x: maze.cursor.x, y: maze.cursor.y - 1, dir: "down" }, | |
| 203 | ] as Pos[]).filter((pos) => | |
| 204 | isOnScreen(maze, pos.x, pos.y) && | |
| 205 | maze.grid.cell(pos).visited === false | |
| 206 | ); | |
| 207 | if (adjacent.length === 0) { | |
| 208 | // move cursor to a random cell that has not been visited. | |
| 209 | const cells = maze.newCellsToVisit.filter((pos) => | |
| 210 | isOnScreen(maze, pos.x, pos.y) && | |
| 211 | maze.grid.cell(pos).visited === false | |
| 212 | ); | |
| 213 | if (cells.length === 0) { | |
| 214 | maze.done = true; | |
| 215 | return; | |
| 216 | } | |
| 217 | const continuePos = randomOf(cells); | |
| 218 | breakWall(maze, continuePos, other); | |
| 219 | maze.cursor = { x: continuePos.x, y: continuePos.y }; | |
| 220 | return; | |
| 221 | } | |
| 222 | ||
| 223 | // break a random wall | |
| 224 | const toBreak = randomOf(adjacent); | |
| 225 | breakWall(maze, toBreak, other); | |
| 226 | maze.cursor = { x: toBreak.x, y: toBreak.y }; | |
| 227 | ||
| 228 | // add the other directions to the new cells to visit. | |
| 229 | maze.newCellsToVisit.push( | |
| 230 | ...adjacent.filter((pos) => pos.dir !== toBreak.dir), | |
| 231 | ); | |
| 232 | } | |
| 233 | ||
| 234 | function breakWall(maze: Maze, pos: Pos, other?: Maze) { | |
| 235 | if (pos.dir === "right") { | |
| 236 | const cell = maze.grid.cell(pos); | |
| 237 | cell.right = false; | |
| 238 | cell.right_flash = 1; | |
| 239 | if (other) cell.right = false; | |
| 240 | } else if (pos.dir === "down") { | |
| 241 | const cell = maze.grid.cell(pos); | |
| 242 | cell.down = false; | |
| 243 | cell.down_flash = 1; | |
| 244 | if (other) cell.down = false; | |
| 245 | } else if (pos.dir === "left") { | |
| 246 | const cell = maze.grid.cell({ x: pos.x - 1, y: pos.y }); | |
| 247 | cell.right = false; | |
| 248 | cell.right_flash = 1; | |
| 249 | if (other) cell.right = false; | |
| 250 | } else if (pos.dir === "up") { | |
| 251 | const cell = maze.grid.cell({ x: pos.x, y: pos.y - 1 }); | |
| 252 | cell.down = false; | |
| 253 | cell.down_flash = 1; | |
| 254 | if (other) cell.down = false; | |
| 255 | } | |
| 256 | } | |
| 257 | ||
| 258 | function renderOffset(maze: Maze) { | |
| 259 | return { x: maze.transform, y: maze.transform }; | |
| 260 | } | |
| 261 | ||
| 262 | let animationFrameId: number; | |
| 263 | let last = performance.now(); | |
| 264 | let dt: number = 0; | |
| 265 | ||
| 266 | function renderMazeBorders(maze: Maze, opacity: number) { | |
| 267 | ctx.globalAlpha = opacity; | |
| 268 | maze.grid.forAll( | |
| 269 | maze.renderOffset, | |
| 270 | width, | |
| 271 | height, | |
| 272 | (cell, { x: cellX, y: cellY }) => { | |
| 273 | // Walls | |
| 274 | if (cell.right) { | |
| 275 | ctx.fillStyle = color; | |
| 276 | ctx.fillRect( | |
| 277 | cellX + cellSize - borderThickness / 2, | |
| 278 | cellY - borderThickness / 2, | |
| 279 | borderThickness, | |
| 280 | cellSize + borderThickness, | |
| 281 | ); | |
| 282 | } | |
| 283 | if (cell.down) { | |
| 284 | ctx.fillStyle = color; | |
| 285 | ctx.fillRect( | |
| 286 | cellX - borderThickness / 2, | |
| 287 | cellY + cellSize - borderThickness / 2, | |
| 288 | cellSize + borderThickness, | |
| 289 | borderThickness, | |
| 290 | ); | |
| 291 | } | |
| 292 | }, | |
| 293 | ); | |
| 294 | ctx.globalAlpha = 1; | |
| 295 | } | |
| 296 | ||
| 297 | function renderCellFlash(maze: Maze) { | |
| 298 | maze.grid.forAll( | |
| 299 | maze.renderOffset, | |
| 300 | width, | |
| 301 | height, | |
| 302 | (cell, { x: cellX, y: cellY }) => { | |
| 303 | // Cell flash to show visiting path. | |
| 304 | if (cell.cell_flash > 0) { | |
| 305 | cell.cell_flash = Math.max(0, cell.cell_flash - dt / 1000); | |
| 306 | ctx.fillStyle = cellFlashColor; | |
| 307 | ctx.globalAlpha = cell.cell_flash * cellFlashModifier; | |
| 308 | ctx.fillRect(cellX, cellY, cellSize, cellSize); | |
| 309 | ctx.globalAlpha = 1; | |
| 310 | } | |
| 311 | }, | |
| 312 | ); | |
| 313 | } | |
| 314 | ||
| 315 | function renderBorderFlash(maze: Maze) { | |
| 316 | maze.grid.forAll( | |
| 317 | maze.renderOffset, | |
| 318 | width, | |
| 319 | height, | |
| 320 | (cell, { x: cellX, y: cellY }) => { | |
| 321 | if (cell.right_flash == 0 && cell.down_flash == 0) { | |
| 322 | return; | |
| 323 | } | |
| 324 | ||
| 325 | // Walls | |
| 326 | const cellFlash = cell.cell_flash * cellFlashModifier; | |
| 327 | if (cell.right_flash > 0) { | |
| 328 | cell.right_flash = Math.max(0, cell.right_flash - dt / 500); | |
| 329 | ctx.fillStyle = interpolateColor( | |
| 330 | bg, | |
| 331 | wallFlashColor, | |
| 332 | Math.max(cell.right_flash, cellFlash), | |
| 333 | ); | |
| 334 | if (cellFlash > cell.right_flash) { | |
| 335 | ctx.globalAlpha = cell.right_flash / cellFlash; | |
| 336 | } | |
| 337 | ctx.fillRect( | |
| 338 | cellX + cellSize - borderThickness / 2, | |
| 339 | cellY + borderThickness / 2, | |
| 340 | borderThickness, | |
| 341 | cellSize - borderThickness, | |
| 342 | ); | |
| 343 | ctx.globalAlpha = 1; | |
| 344 | } | |
| 345 | if (cell.down_flash > 0) { | |
| 346 | if (cellFlash > cell.down_flash) { | |
| 347 | ctx.globalAlpha = cell.down_flash / cellFlash; | |
| 348 | } | |
| 349 | cell.down_flash = Math.max(0, cell.down_flash - dt / 500); | |
| 350 | ctx.fillStyle = interpolateColor( | |
| 351 | bg, | |
| 352 | wallFlashColor, | |
| 353 | Math.max(cell.down_flash, cellFlash), | |
| 354 | ); | |
| 355 | ctx.fillRect( | |
| 356 | cellX + borderThickness / 2, | |
| 357 | cellY + cellSize - borderThickness / 2, | |
| 358 | cellSize - borderThickness, | |
| 359 | borderThickness, | |
| 360 | ); | |
| 361 | ctx.globalAlpha = 1; | |
| 362 | } | |
| 363 | }, | |
| 364 | ); | |
| 365 | } | |
| 366 | ||
| 367 | function render() { | |
| 368 | const now = performance.now(); | |
| 369 | dt = now - last; | |
| 370 | maze.transform += dt * 0.005; | |
| 371 | maze.renderOffset = renderOffset(maze); | |
| 372 | if (!maze.done) { | |
| 373 | if (now - maze.lastTick >= updateTime) { | |
| 374 | tick(maze); | |
| 375 | maze.lastTick = now; | |
| 376 | ||
| 377 | if (maze.done) { | |
| 378 | nextMaze = initMaze(); | |
| 379 | nextMaze.transform = (maze.transform % cellSize) - dt * 0.005; | |
| 380 | nextMaze.lastTick = now; | |
| 381 | completeFade = 0; | |
| 382 | } | |
| 383 | } | |
| 384 | } | |
| 385 | if (nextMaze) { | |
| 386 | nextMaze.transform += dt * 0.005; | |
| 387 | nextMaze.renderOffset = renderOffset(nextMaze); | |
| 388 | if (!nextMaze.done && now - nextMaze.lastTick >= updateTime) { | |
| 389 | tick(nextMaze, maze); | |
| 390 | nextMaze.lastTick = now; | |
| 391 | } | |
| 392 | } | |
| 393 | last = now; | |
| 394 | ||
| 395 | ctx.clearRect(0, 0, width, height); | |
| 396 | ||
| 397 | renderCellFlash(maze); | |
| 398 | if (nextMaze) renderCellFlash(nextMaze); | |
| 399 | ||
| 400 | renderMazeBorders(maze, 1); | |
| 401 | if (nextMaze) { | |
| 402 | renderMazeBorders(nextMaze, completeFade); | |
| 403 | completeFade += dt / 3000; | |
| 404 | if (completeFade >= 1) { | |
| 405 | maze = nextMaze; | |
| 406 | nextMaze = null; | |
| 407 | } | |
| 408 | } | |
| 409 | ||
| 410 | renderBorderFlash(maze); | |
| 411 | if (nextMaze) { | |
| 412 | renderCellFlash(nextMaze); | |
| 413 | renderBorderFlash(nextMaze); | |
| 414 | } | |
| 415 | ||
| 416 | animationFrameId = requestAnimationFrame(render); | |
| 417 | } | |
| 418 | ||
| 419 | function interpolateColor(start: number[], end: number[], t: number) { | |
| 420 | return hex(start.map((s, i) => Math.round(s + (end[i] - s) * t))); | |
| 421 | } | |
| 422 | ||
| 423 | window.addEventListener("resize", updateDimensions); | |
| 424 | animationFrameId = requestAnimationFrame(render); | |
| 425 | ||
| 426 | // cleanup function | |
| 427 | return () => { | |
| 428 | window.removeEventListener("resize", updateDimensions); | |
| 429 | cancelAnimationFrame(animationFrameId); | |
| 430 | }; | |
| 431 | }; |
src/file-viewer/scripts/canvas_2019.ts created+213| ... | ... | @@ -0,0 +1,213 @@ |
| 1 | // Ported from CanvasAPI, allegedly written on 2019-08-26. | |
| 2 | (globalThis as any).canvas_2019 = function (canvas: HTMLCanvasElement) { | |
| 3 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 4 | if (isStandalone) { | |
| 5 | canvas.parentElement!.style.backgroundColor = "#121013"; | |
| 6 | } | |
| 7 | // Canvas.tsx | |
| 8 | abstract class CanvasAPI { | |
| 9 | canvas: HTMLCanvasElement; | |
| 10 | ctx: CanvasRenderingContext2D; | |
| 11 | width = 0; | |
| 12 | height = 0; | |
| 13 | private _disposed = false; | |
| 14 | private _running = false; | |
| 15 | private _last = 0; | |
| 16 | ||
| 17 | constructor(canvas: HTMLCanvasElement) { | |
| 18 | this.canvas = canvas; | |
| 19 | this.width = canvas.width = canvas.clientWidth; | |
| 20 | this.height = canvas.height = canvas.clientHeight; | |
| 21 | const ctx = this.canvas.getContext("2d"); | |
| 22 | if (!ctx) { | |
| 23 | throw new Error("Canvas2D Not Supported!"); | |
| 24 | } | |
| 25 | this.ctx = ctx; | |
| 26 | } | |
| 27 | ||
| 28 | stopRenderLoop() { | |
| 29 | this._running = false; | |
| 30 | } | |
| 31 | ||
| 32 | startRenderLoop() { | |
| 33 | if (this._disposed) return; | |
| 34 | this._running = true; | |
| 35 | this._last = performance.now(); | |
| 36 | requestAnimationFrame(this._renderLoop); | |
| 37 | } | |
| 38 | ||
| 39 | private _renderLoop = (delta: number) => { | |
| 40 | if (!this._running) return; | |
| 41 | this.render(delta - this._last); | |
| 42 | this._last = delta; | |
| 43 | requestAnimationFrame(this._renderLoop); | |
| 44 | }; | |
| 45 | ||
| 46 | abstract render(delta: number): void; | |
| 47 | } | |
| 48 | ||
| 49 | // VaultBackground.ts | |
| 50 | function addGSHelper( | |
| 51 | grad: CanvasGradient, | |
| 52 | color: string, | |
| 53 | dotOpacity: number, | |
| 54 | gradStop: number, | |
| 55 | gradOpacity: number, | |
| 56 | ) { | |
| 57 | grad.addColorStop(gradStop, `rgba(${color},${dotOpacity * gradOpacity})`); | |
| 58 | } | |
| 59 | ||
| 60 | function randAround(target: number, dist: number) { | |
| 61 | return (Math.random() - 0.5) * dist * 2 + target; | |
| 62 | } | |
| 63 | ||
| 64 | class Dot { | |
| 65 | x = Math.random() * 1.1 - 0.05; | |
| 66 | y = Math.random() / 4 + 0.9; | |
| 67 | size = Math.random() * 200 + 50; | |
| 68 | opacity = 0; | |
| 69 | opacityRandom = Math.random() / 3 + 0.3; | |
| 70 | fadeInOpacity = 1; | |
| 71 | color = `${randAround(217, 30)}, ${randAround(170, 30)}, ${ | |
| 72 | randAround(255, 20) | |
| 73 | }`; | |
| 74 | ||
| 75 | life = 0; | |
| 76 | ||
| 77 | ySpeed_1 = 0; | |
| 78 | ySpeed_2 = -0.0000063; | |
| 79 | ySpeed_3 = 0.000000016; | |
| 80 | ySpeed_4 = 0.000000000009; | |
| 81 | ||
| 82 | seed = Math.random(); | |
| 83 | ||
| 84 | delete = false; | |
| 85 | ||
| 86 | update(init: boolean) { | |
| 87 | this.life += 0.8; | |
| 88 | if (this.life < 115) { | |
| 89 | this.opacity = this.life / 230; | |
| 90 | } else if (this.life > 450) { | |
| 91 | this.delete = true; | |
| 92 | } else if (this.life > 300) { | |
| 93 | this.opacity = (150 + 300 - this.life) / 300; | |
| 94 | } | |
| 95 | ||
| 96 | this.ySpeed_3 += this.ySpeed_4; | |
| 97 | this.ySpeed_2 += this.ySpeed_3; | |
| 98 | this.ySpeed_1 += this.ySpeed_2; | |
| 99 | this.y += this.ySpeed_1 * 0.5; | |
| 100 | ||
| 101 | this.size -= 0.08; | |
| 102 | ||
| 103 | if (this.delete) { | |
| 104 | Object.assign(this, new Dot()); | |
| 105 | } | |
| 106 | } | |
| 107 | ||
| 108 | render(scene: VaultBackground) { | |
| 109 | const ctx = scene.ctx; | |
| 110 | ||
| 111 | if (this.fadeInOpacity < 1) { | |
| 112 | this.fadeInOpacity += 0.0075; | |
| 113 | } | |
| 114 | ||
| 115 | const finalX = this.x + | |
| 116 | Math.sin(this.seed * Math.PI * 2 + Date.now() / 15000) * 0.2; | |
| 117 | ||
| 118 | const drawX = scene.shakeX + | |
| 119 | finalX * Math.max(700, scene.width) - | |
| 120 | (Math.max(700, scene.width) - scene.width) / 2; | |
| 121 | const drawY = scene.shakeY + (this.y * 1.5 - 0.5) * scene.height; | |
| 122 | ||
| 123 | const opacity = this.opacity * this.opacityRandom * this.fadeInOpacity; | |
| 124 | ||
| 125 | const grad = ctx.createRadialGradient( | |
| 126 | drawX, | |
| 127 | drawY, | |
| 128 | 0, | |
| 129 | drawX, | |
| 130 | drawY, | |
| 131 | this.size, | |
| 132 | ); | |
| 133 | addGSHelper(grad, this.color, opacity, 0, 1); | |
| 134 | addGSHelper(grad, this.color, opacity, 0.8, 0.7); | |
| 135 | addGSHelper(grad, this.color, opacity, 0.87, 0.5); | |
| 136 | addGSHelper(grad, this.color, opacity, 0.93, 0.3); | |
| 137 | addGSHelper(grad, this.color, opacity, 1, 0); | |
| 138 | ||
| 139 | ctx.fillStyle = grad; | |
| 140 | ctx.fillRect( | |
| 141 | drawX - this.size, | |
| 142 | drawY - this.size, | |
| 143 | this.size * 2, | |
| 144 | this.size * 2, | |
| 145 | ); | |
| 146 | } | |
| 147 | } | |
| 148 | ||
| 149 | class VaultBackground extends CanvasAPI { | |
| 150 | private items = new Set<Dot>(); | |
| 151 | ||
| 152 | private shakeVar = 0; | |
| 153 | private dom?: HTMLElement; | |
| 154 | shakeX = 0; | |
| 155 | shakeY = 0; | |
| 156 | ||
| 157 | constructor(canvas: HTMLCanvasElement) { | |
| 158 | super(canvas); | |
| 159 | for (let i = 0; i < 450; i++) { | |
| 160 | if (i % 7 === 0) { | |
| 161 | this.items.add(new Dot()); | |
| 162 | } | |
| 163 | this.items.forEach((x) => x.update(true)); | |
| 164 | } | |
| 165 | this.items.forEach((x) => x.fadeInOpacity = 0); | |
| 166 | } | |
| 167 | ||
| 168 | render(): void { | |
| 169 | this.ctx.clearRect(0, 0, this.width, this.height); | |
| 170 | ||
| 171 | this.items.forEach((x) => (x.update(false), x.render(this))); | |
| 172 | ||
| 173 | if (this.shakeVar >= 0.0001) { | |
| 174 | this.shakeVar *= 0.97 - 0.22 * this.shakeVar; | |
| 175 | ||
| 176 | if (this.shakeVar >= 0.0001) { | |
| 177 | this.shakeX = (Math.random() * 2 - 1) * this.shakeVar * 65; | |
| 178 | this.shakeY = (Math.random() * 2 - 1) * this.shakeVar * 65; | |
| 179 | if (this.dom) { | |
| 180 | this.dom.style.transform = | |
| 181 | `translate(${this.shakeX}px,${this.shakeY}px)`; | |
| 182 | } | |
| 183 | } else { | |
| 184 | this.shakeX = 0; | |
| 185 | this.shakeY = 0; | |
| 186 | if (this.dom) this.dom.style.removeProperty("transform"); | |
| 187 | this.dom = undefined; | |
| 188 | } | |
| 189 | } | |
| 190 | } | |
| 191 | ||
| 192 | shake(dom?: HTMLElement | null) { | |
| 193 | this.dom = dom || document.body; | |
| 194 | this.shakeVar = 1; | |
| 195 | } | |
| 196 | } | |
| 197 | ||
| 198 | // Binding code | |
| 199 | let bg = new VaultBackground(canvas); | |
| 200 | bg.startRenderLoop(); | |
| 201 | canvas.style.opacity = "0.2"; | |
| 202 | function onResize() { | |
| 203 | bg.width = canvas.width = canvas.clientWidth; | |
| 204 | bg.height = canvas.height = canvas.clientHeight; | |
| 205 | } | |
| 206 | window.addEventListener("resize", onResize); | |
| 207 | onResize(); | |
| 208 | (globalThis as any).vault = bg; | |
| 209 | return () => { | |
| 210 | bg.stopRenderLoop(); | |
| 211 | window.removeEventListener("resize", onResize); | |
| 212 | }; | |
| 213 | }; |
src/file-viewer/scripts/canvas_2020.ts created+197| ... | ... | @@ -0,0 +1,197 @@ |
| 1 | // Vibe coded with AI | |
| 2 | (globalThis as any).canvas_2020 = function (canvas: HTMLCanvasElement) { | |
| 3 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 4 | // Rain effect with slanted lines | |
| 5 | // Configuration interface for the rain effect | |
| 6 | interface RainConfig { | |
| 7 | fps: number; // frames per second | |
| 8 | color: string; // color of rain particles | |
| 9 | angle: number; // angle in degrees | |
| 10 | particleDensity: number; // particles per 10000 pixels of canvas area | |
| 11 | speed: number; // speed of particles (pixels per frame) | |
| 12 | lineWidth: number; // thickness of rain lines | |
| 13 | lineLength: number; // length of rain lines | |
| 14 | } | |
| 15 | ||
| 16 | // Rain particle interface | |
| 17 | interface RainParticle { | |
| 18 | x: number; // x position | |
| 19 | y: number; // y position | |
| 20 | } | |
| 21 | ||
| 22 | // Default configuration | |
| 23 | const config: RainConfig = { | |
| 24 | fps: 16, | |
| 25 | color: isStandalone ? "#00FEFB99" : "#081F24", | |
| 26 | angle: -18, | |
| 27 | particleDensity: 1, | |
| 28 | speed: 400, | |
| 29 | lineWidth: 8, | |
| 30 | lineLength: 100, | |
| 31 | }; | |
| 32 | ||
| 33 | // Get the canvas context | |
| 34 | const ctx = canvas.getContext("2d"); | |
| 35 | if (!ctx) { | |
| 36 | console.error("Could not get canvas context"); | |
| 37 | return () => {}; | |
| 38 | } | |
| 39 | ||
| 40 | // Make canvas transparent | |
| 41 | if (isStandalone) { | |
| 42 | canvas.style.backgroundColor = "#0F252B"; | |
| 43 | } else { | |
| 44 | canvas.style.backgroundColor = "transparent"; | |
| 45 | } | |
| 46 | ||
| 47 | // Calculate canvas dimensions and update when resized | |
| 48 | let width = canvas.width; | |
| 49 | let height = canvas.height; | |
| 50 | let particles: RainParticle[] = []; | |
| 51 | let animationFrameId: number; | |
| 52 | let lastFrameTime = 0; | |
| 53 | const frameInterval = 1000 / config.fps; | |
| 54 | ||
| 55 | // Calculate angle in radians | |
| 56 | const angleRad = (config.angle * Math.PI) / 180; | |
| 57 | ||
| 58 | // Update canvas dimensions and particle count when resized | |
| 59 | const updateDimensions = () => { | |
| 60 | width = canvas.width = canvas.offsetWidth; | |
| 61 | height = canvas.height = canvas.offsetHeight; | |
| 62 | ||
| 63 | // Calculate the canvas area in pixels | |
| 64 | const canvasArea = width * height; | |
| 65 | ||
| 66 | // Calculate target number of particles based on canvas area | |
| 67 | const targetParticleCount = Math.floor( | |
| 68 | (canvasArea / 10000) * config.particleDensity, | |
| 69 | ); | |
| 70 | ||
| 71 | // Calculate buffer for horizontal offset due to slanted angle | |
| 72 | const buffer = Math.abs(height * Math.tan(angleRad)) + config.lineLength; | |
| 73 | ||
| 74 | // Adjust the particles array | |
| 75 | if (particles.length < targetParticleCount) { | |
| 76 | // Add more particles if needed | |
| 77 | for (let i = particles.length; i < targetParticleCount; i++) { | |
| 78 | particles.push(createParticle(true, buffer)); | |
| 79 | } | |
| 80 | } else if (particles.length > targetParticleCount) { | |
| 81 | // Remove excess particles | |
| 82 | particles = particles.slice(0, targetParticleCount); | |
| 83 | } | |
| 84 | }; | |
| 85 | ||
| 86 | // Create a new particle | |
| 87 | // Added initialDistribution parameter to distribute particles across the entire canvas at startup | |
| 88 | const createParticle = ( | |
| 89 | initialDistribution = false, | |
| 90 | buffer: number, | |
| 91 | ): RainParticle => { | |
| 92 | // For initial distribution, place particles throughout the canvas | |
| 93 | // Otherwise start them above the canvas | |
| 94 | let x = Math.random() * (width + buffer * 2) - buffer; | |
| 95 | let y; | |
| 96 | ||
| 97 | if (initialDistribution) { | |
| 98 | // Distribute across the entire canvas height for initial setup | |
| 99 | y = Math.random() * (height + config.lineLength * 2) - config.lineLength; | |
| 100 | } else { | |
| 101 | // Start new particles from above the canvas with some randomization | |
| 102 | y = -config.lineLength - (Math.random() * config.lineLength * 20); | |
| 103 | } | |
| 104 | ||
| 105 | return { | |
| 106 | x, | |
| 107 | y, | |
| 108 | }; | |
| 109 | }; | |
| 110 | ||
| 111 | // Update particle positions | |
| 112 | const updateParticles = () => { | |
| 113 | // Calculate buffer for horizontal offset due to slanted angle | |
| 114 | const buffer = Math.abs(height * Math.tan(angleRad)) + config.lineLength; | |
| 115 | ||
| 116 | for (let i = 0; i < particles.length; i++) { | |
| 117 | const p = particles[i]; | |
| 118 | ||
| 119 | // Update position based on speed and angle | |
| 120 | p.x += Math.sin(angleRad) * config.speed; | |
| 121 | p.y += Math.cos(angleRad) * config.speed; | |
| 122 | ||
| 123 | // Reset particles that go offscreen - only determined by position | |
| 124 | // Add extra buffer to ensure particles fully exit the visible area before resetting | |
| 125 | if ( | |
| 126 | p.y > height + config.lineLength || | |
| 127 | p.x < -buffer || | |
| 128 | p.x > width + buffer | |
| 129 | ) { | |
| 130 | particles[i] = createParticle(false, buffer); | |
| 131 | } | |
| 132 | } | |
| 133 | }; | |
| 134 | ||
| 135 | // Draw particles | |
| 136 | const drawParticles = () => { | |
| 137 | // Clear canvas | |
| 138 | ctx.clearRect(0, 0, width, height); | |
| 139 | ||
| 140 | // Set drawing properties | |
| 141 | ctx.strokeStyle = config.color; | |
| 142 | ctx.lineWidth = config.lineWidth; | |
| 143 | ctx.lineCap = "square"; | |
| 144 | ||
| 145 | // Draw each rain line | |
| 146 | ctx.beginPath(); | |
| 147 | for (const p of particles) { | |
| 148 | // Only draw particles that are either on screen or within a reasonable buffer | |
| 149 | // This is for performance reasons - we don't need to draw particles far offscreen | |
| 150 | if (p.y >= -config.lineLength * 2 && p.y <= height + config.lineLength) { | |
| 151 | const endX = p.x + Math.sin(angleRad) * config.lineLength; | |
| 152 | const endY = p.y + Math.cos(angleRad) * config.lineLength; | |
| 153 | ||
| 154 | ctx.moveTo(p.x, p.y); | |
| 155 | ctx.lineTo(endX, endY); | |
| 156 | } | |
| 157 | } | |
| 158 | ctx.stroke(); | |
| 159 | }; | |
| 160 | ||
| 161 | // Animation loop | |
| 162 | const animate = (currentTime: number) => { | |
| 163 | animationFrameId = requestAnimationFrame(animate); | |
| 164 | ||
| 165 | // Control frame rate | |
| 166 | if (currentTime - lastFrameTime < frameInterval) { | |
| 167 | return; | |
| 168 | } | |
| 169 | ||
| 170 | lastFrameTime = currentTime; | |
| 171 | ||
| 172 | updateParticles(); | |
| 173 | drawParticles(); | |
| 174 | }; | |
| 175 | ||
| 176 | // Initialize the animation | |
| 177 | const init = () => { | |
| 178 | // Set up resize handler | |
| 179 | window.addEventListener("resize", updateDimensions); | |
| 180 | ||
| 181 | // Initial setup | |
| 182 | updateDimensions(); | |
| 183 | ||
| 184 | // Start animation | |
| 185 | lastFrameTime = performance.now(); | |
| 186 | animationFrameId = requestAnimationFrame(animate); | |
| 187 | }; | |
| 188 | ||
| 189 | // Start the animation | |
| 190 | init(); | |
| 191 | ||
| 192 | // Return cleanup function | |
| 193 | return () => { | |
| 194 | window.removeEventListener("resize", updateDimensions); | |
| 195 | cancelAnimationFrame(animationFrameId); | |
| 196 | }; | |
| 197 | }; |
src/file-viewer/scripts/canvas_2021.ts created+783| ... | ... | @@ -0,0 +1,783 @@ |
| 1 | // Vibe coded. | |
| 2 | (globalThis as any).canvas_2021 = function (canvas: HTMLCanvasElement) { | |
| 3 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 4 | // Constants for simulation | |
| 5 | const PARTICLE_RADIUS = 4.5; | |
| 6 | const PARTICLE_DENSITY = 0.004; // Particles per pixel | |
| 7 | const MIN_SPEED = 0.05; | |
| 8 | const MAX_SPEED = 6.0; | |
| 9 | const FRICTION = 0.96; | |
| 10 | const REPULSION_STRENGTH = 0.1; | |
| 11 | const REPULSION_RADIUS = 50; | |
| 12 | const FORCE_RADIUS = 400; // Increased radius | |
| 13 | const FORCE_STRENGTH = 0.25; | |
| 14 | const FORCE_FALLOFF_EXPONENT = 3; // Higher value = sharper falloff | |
| 15 | const FORCE_SPACING = 10; // Pixels between force points | |
| 16 | const MIN_FORCE_STRENGTH = 0.05; // Minimum force strength for very slow movements | |
| 17 | const MAX_FORCE_STRENGTH = 0.4; // Maximum force strength for fast movements | |
| 18 | const MIN_SPEED_THRESHOLD = 1; // Movement speed (px/frame) that produces minimum force | |
| 19 | const MAX_SPEED_THRESHOLD = 20; // Movement speed that produces maximum force | |
| 20 | const OVERSCAN_PIXELS = 250; | |
| 21 | const CELL_SIZE = REPULSION_RADIUS; // For spatial hashing | |
| 22 | ||
| 23 | let globalOpacity = 0; | |
| 24 | ||
| 25 | if (isStandalone) { | |
| 26 | canvas.style.backgroundColor = "#301D02"; | |
| 27 | } else { | |
| 28 | canvas.style.backgroundColor = "transparent"; | |
| 29 | } | |
| 30 | ||
| 31 | // Interfaces | |
| 32 | interface Particle { | |
| 33 | x: number; | |
| 34 | y: number; | |
| 35 | vx: number; | |
| 36 | vy: number; | |
| 37 | charge: number; // 0 to 1, affecting color | |
| 38 | } | |
| 39 | ||
| 40 | interface Force { | |
| 41 | x: number; | |
| 42 | y: number; | |
| 43 | dx: number; | |
| 44 | dy: number; | |
| 45 | strength: number; | |
| 46 | radius: number; | |
| 47 | createdAt: number; | |
| 48 | } | |
| 49 | ||
| 50 | interface SpatialHash { | |
| 51 | [key: string]: Particle[]; | |
| 52 | } | |
| 53 | ||
| 54 | // State | |
| 55 | let first = true; | |
| 56 | let particles: Particle[] = []; | |
| 57 | let forces: Force[] = []; | |
| 58 | let width = canvas.width; | |
| 59 | let height = canvas.height; | |
| 60 | let targetParticleCount = 0; | |
| 61 | let spatialHash: SpatialHash = {}; | |
| 62 | let ctx: CanvasRenderingContext2D | null = null; | |
| 63 | let animationId: number | null = null; | |
| 64 | let isRunning = false; | |
| 65 | ||
| 66 | // Mouse tracking | |
| 67 | let lastMousePosition: { x: number; y: number } | null = null; | |
| 68 | // Track position of the last created force | |
| 69 | let lastForcePosition: { x: number; y: number } | null = null; | |
| 70 | ||
| 71 | // Keep track of previous canvas dimensions for resize logic | |
| 72 | let previousWidth = 0; | |
| 73 | let previousHeight = 0; | |
| 74 | ||
| 75 | // Initialize and cleanup | |
| 76 | function init(): void { | |
| 77 | ctx = canvas.getContext("2d"); | |
| 78 | if (!ctx) return; | |
| 79 | ||
| 80 | // Set canvas to full size | |
| 81 | resizeCanvas(); | |
| 82 | ||
| 83 | // Event listeners | |
| 84 | window.addEventListener("resize", resizeCanvas); | |
| 85 | document.addEventListener("mousemove", handleMouseMove); | |
| 86 | ||
| 87 | // Start animation immediately | |
| 88 | start(); | |
| 89 | } | |
| 90 | ||
| 91 | function cleanup(): void { | |
| 92 | // Stop the animation | |
| 93 | stop(); | |
| 94 | ||
| 95 | // Remove event listeners | |
| 96 | window.removeEventListener("resize", resizeCanvas); | |
| 97 | document.removeEventListener("mousemove", handleMouseMove); | |
| 98 | ||
| 99 | // Clear arrays | |
| 100 | particles = []; | |
| 101 | forces = []; | |
| 102 | spatialHash = {}; | |
| 103 | lastMousePosition = null; | |
| 104 | lastForcePosition = null; | |
| 105 | } | |
| 106 | ||
| 107 | // Resize canvas and adjust particle count | |
| 108 | function resizeCanvas(): void { | |
| 109 | // Store previous dimensions | |
| 110 | previousWidth = width; | |
| 111 | previousHeight = height; | |
| 112 | ||
| 113 | // Update to new dimensions | |
| 114 | width = window.innerWidth; | |
| 115 | height = window.innerHeight; | |
| 116 | canvas.width = width; | |
| 117 | canvas.height = height; | |
| 118 | ||
| 119 | const oldTargetCount = targetParticleCount; | |
| 120 | targetParticleCount = Math.floor(width * height * PARTICLE_DENSITY); | |
| 121 | ||
| 122 | // Adjust particle count | |
| 123 | if (targetParticleCount > oldTargetCount) { | |
| 124 | // Add more particles if needed, but only in newly available space | |
| 125 | addParticles(targetParticleCount - oldTargetCount, !first); | |
| 126 | first = false; | |
| 127 | } | |
| 128 | // Note: Removal of excess particles happens naturally during update | |
| 129 | } | |
| 130 | ||
| 131 | // Handle mouse movement | |
| 132 | function handleMouseMove(e: MouseEvent): void { | |
| 133 | const rect = canvas.getBoundingClientRect(); | |
| 134 | const currentX = e.clientX - rect.left; | |
| 135 | const currentY = e.clientY - rect.top; | |
| 136 | ||
| 137 | // Initialize positions if this is the first movement | |
| 138 | if (!lastMousePosition || !lastForcePosition) { | |
| 139 | lastMousePosition = { x: currentX, y: currentY }; | |
| 140 | lastForcePosition = { x: currentX, y: currentY }; | |
| 141 | return; | |
| 142 | } | |
| 143 | ||
| 144 | // Store current mouse position | |
| 145 | const mouseX = currentX; | |
| 146 | const mouseY = currentY; | |
| 147 | ||
| 148 | // Calculate vector from last mouse position to current | |
| 149 | const dx = mouseX - lastMousePosition.x; | |
| 150 | const dy = mouseY - lastMousePosition.y; | |
| 151 | const distMoved = Math.sqrt(dx * dx + dy * dy); | |
| 152 | ||
| 153 | // Skip if essentially no movement (avoids numerical issues) | |
| 154 | if (distMoved < 0.1) { | |
| 155 | return; | |
| 156 | } | |
| 157 | ||
| 158 | // Get the vector from the last force to the current mouse position | |
| 159 | const forceDx = mouseX - lastForcePosition.x; | |
| 160 | const forceDy = mouseY - lastForcePosition.y; | |
| 161 | const forceDistance = Math.sqrt(forceDx * forceDx + forceDy * forceDy); | |
| 162 | ||
| 163 | // Only create forces if we've moved far enough from the last force | |
| 164 | if (forceDistance >= FORCE_SPACING) { | |
| 165 | // Calculate the direction vector from last force to current mouse | |
| 166 | let dirX = forceDx / forceDistance; | |
| 167 | let dirY = forceDy / forceDistance; | |
| 168 | ||
| 169 | // Calculate how many force points to create | |
| 170 | const numPoints = Math.floor(forceDistance / FORCE_SPACING); | |
| 171 | ||
| 172 | // Calculate movement speed based on the recent movement | |
| 173 | const movementSpeed = distMoved; // Simple approximation of speed | |
| 174 | ||
| 175 | // Scale force strength based on movement speed | |
| 176 | let speedFactor; | |
| 177 | if (movementSpeed <= MIN_SPEED_THRESHOLD) { | |
| 178 | speedFactor = MIN_FORCE_STRENGTH; | |
| 179 | } else if (movementSpeed >= MAX_SPEED_THRESHOLD) { | |
| 180 | speedFactor = MAX_FORCE_STRENGTH; | |
| 181 | } else { | |
| 182 | // Linear interpolation between min and max | |
| 183 | const t = (movementSpeed - MIN_SPEED_THRESHOLD) / | |
| 184 | (MAX_SPEED_THRESHOLD - MIN_SPEED_THRESHOLD); | |
| 185 | speedFactor = MIN_FORCE_STRENGTH + | |
| 186 | t * (MAX_FORCE_STRENGTH - MIN_FORCE_STRENGTH); | |
| 187 | } | |
| 188 | ||
| 189 | // Store current force position to update incrementally | |
| 190 | let currentForceX = lastForcePosition.x; | |
| 191 | let currentForceY = lastForcePosition.y; | |
| 192 | ||
| 193 | // Create evenly spaced force points along the path from last force to current mouse | |
| 194 | for (let i = 0; i < numPoints; i++) { | |
| 195 | // Calculate position for this force point | |
| 196 | const t = (i + 1) / numPoints; | |
| 197 | const fx = lastForcePosition.x + forceDx * t; | |
| 198 | const fy = lastForcePosition.y + forceDy * t; | |
| 199 | ||
| 200 | // Create force at this position with the direction vector | |
| 201 | createForce(fx, fy, dirX, dirY, speedFactor); | |
| 202 | ||
| 203 | // Update the last force position to this new force | |
| 204 | currentForceX = fx; | |
| 205 | currentForceY = fy; | |
| 206 | } | |
| 207 | ||
| 208 | // Update the last force position | |
| 209 | lastForcePosition = { x: currentForceX, y: currentForceY }; | |
| 210 | } | |
| 211 | ||
| 212 | // Always update the last mouse position | |
| 213 | lastMousePosition = { x: mouseX, y: mouseY }; | |
| 214 | } | |
| 215 | ||
| 216 | // Create a new force | |
| 217 | function createForce( | |
| 218 | x: number, | |
| 219 | y: number, | |
| 220 | dx: number, | |
| 221 | dy: number, | |
| 222 | strength = FORCE_STRENGTH, | |
| 223 | ): void { | |
| 224 | forces.push({ | |
| 225 | x, | |
| 226 | y, | |
| 227 | dx, | |
| 228 | dy, | |
| 229 | strength, | |
| 230 | radius: 1, | |
| 231 | createdAt: Date.now(), | |
| 232 | }); | |
| 233 | } | |
| 234 | ||
| 235 | // Improved particle addition with fill strategy options | |
| 236 | function addParticles(count: number, inNewAreaOnly: boolean = false): void { | |
| 237 | // Determine available space | |
| 238 | const minX = -OVERSCAN_PIXELS; | |
| 239 | const maxX = width + OVERSCAN_PIXELS; | |
| 240 | const minY = -OVERSCAN_PIXELS; | |
| 241 | const maxY = height + OVERSCAN_PIXELS; | |
| 242 | ||
| 243 | // Use a grid system that guarantees uniform spacing of particles | |
| 244 | const gridSpacing = REPULSION_RADIUS * 0.8; // Slightly less than repulsion radius | |
| 245 | const gridWidth = Math.ceil((maxX - minX) / gridSpacing); | |
| 246 | const gridHeight = Math.ceil((maxY - minY) / gridSpacing); | |
| 247 | ||
| 248 | // Track which grid cells are already occupied | |
| 249 | const occupiedCells: Set<string> = new Set(); | |
| 250 | ||
| 251 | // Mark cells occupied by existing particles | |
| 252 | for (const particle of particles) { | |
| 253 | const cellX = Math.floor((particle.x - minX) / gridSpacing); | |
| 254 | const cellY = Math.floor((particle.y - minY) / gridSpacing); | |
| 255 | ||
| 256 | // Ensure cell coordinates are within valid range | |
| 257 | if (cellX >= 0 && cellX < gridWidth && cellY >= 0 && cellY < gridHeight) { | |
| 258 | occupiedCells.add(`${cellX},${cellY}`); | |
| 259 | } | |
| 260 | } | |
| 261 | ||
| 262 | // Create arrays of all cells and filter by placement strategy | |
| 263 | const allGridCells: { x: number; y: number }[] = []; | |
| 264 | ||
| 265 | for (let cellY = 0; cellY < gridHeight; cellY++) { | |
| 266 | for (let cellX = 0; cellX < gridWidth; cellX++) { | |
| 267 | const cellKey = `${cellX},${cellY}`; | |
| 268 | if (!occupiedCells.has(cellKey)) { | |
| 269 | const posX = minX + (cellX + 0.5) * gridSpacing; | |
| 270 | const posY = minY + (cellY + 0.5) * gridSpacing; | |
| 271 | ||
| 272 | // For new area only placement, filter to expanded areas | |
| 273 | if (inNewAreaOnly && previousWidth > 0 && previousHeight > 0) { | |
| 274 | const expandedRight = width > previousWidth; | |
| 275 | const expandedBottom = height > previousHeight; | |
| 276 | ||
| 277 | const inNewRightArea = expandedRight && posX >= previousWidth && | |
| 278 | posX <= width; | |
| 279 | const inNewBottomArea = expandedBottom && posY >= previousHeight && | |
| 280 | posY <= height; | |
| 281 | ||
| 282 | if (inNewRightArea || inNewBottomArea) { | |
| 283 | allGridCells.push({ x: cellX, y: cellY }); | |
| 284 | } | |
| 285 | } else if (!inNewAreaOnly) { | |
| 286 | // Standard placement - add all valid cells | |
| 287 | allGridCells.push({ x: cellX, y: cellY }); | |
| 288 | } | |
| 289 | } | |
| 290 | } | |
| 291 | } | |
| 292 | ||
| 293 | if (allGridCells.length == 0) { | |
| 294 | throw new Error("No cells available to place particles"); | |
| 295 | } | |
| 296 | ||
| 297 | // We now have all grid cells that match our placement criteria | |
| 298 | ||
| 299 | // If we need more particles than we have available cells, we need to adjust | |
| 300 | // gridSpacing to fit more cells into the same space | |
| 301 | if (count > allGridCells.length) { | |
| 302 | // Retry with a smaller grid spacing | |
| 303 | // Proportionally reduce the grid spacing to fit the required number of particles | |
| 304 | const scaleFactor = Math.sqrt(allGridCells.length / count); | |
| 305 | const newGridSpacing = gridSpacing * scaleFactor; | |
| 306 | ||
| 307 | // Clear particles and try again with new spacing | |
| 308 | // This is a recursive call, but with adjusted parameters that will fit | |
| 309 | return addParticlesWithCustomSpacing( | |
| 310 | count, | |
| 311 | inNewAreaOnly, | |
| 312 | newGridSpacing, | |
| 313 | ); | |
| 314 | } | |
| 315 | ||
| 316 | // Shuffle the available cells for random selection | |
| 317 | shuffleArray(allGridCells); | |
| 318 | ||
| 319 | // Take the number of cells we need | |
| 320 | const cellsToUse = Math.min(count, allGridCells.length); | |
| 321 | const selectedCells = allGridCells.slice(0, cellsToUse); | |
| 322 | ||
| 323 | // Create particles in selected cells | |
| 324 | for (const cell of selectedCells) { | |
| 325 | // Add jitter within the cell for natural look | |
| 326 | const jitterX = (Math.random() - 0.5) * gridSpacing * 0.8; | |
| 327 | const jitterY = (Math.random() - 0.5) * gridSpacing * 0.8; | |
| 328 | ||
| 329 | // Calculate final position | |
| 330 | const x = minX + (cell.x + 0.5) * gridSpacing + jitterX; | |
| 331 | const y = minY + (cell.y + 0.5) * gridSpacing + jitterY; | |
| 332 | ||
| 333 | // Create a particle at this position | |
| 334 | particles.push(createParticle(x, y)); | |
| 335 | } | |
| 336 | } | |
| 337 | ||
| 338 | // Helper function to add particles with custom grid spacing | |
| 339 | function addParticlesWithCustomSpacing( | |
| 340 | count: number, | |
| 341 | inNewAreaOnly: boolean, | |
| 342 | gridSpacing: number, | |
| 343 | ): void { | |
| 344 | if (gridSpacing == 0) throw new Error("Grid spacing is 0"); | |
| 345 | // Determine available space | |
| 346 | const minX = -OVERSCAN_PIXELS; | |
| 347 | const maxX = width + OVERSCAN_PIXELS; | |
| 348 | const minY = -OVERSCAN_PIXELS; | |
| 349 | const maxY = height + OVERSCAN_PIXELS; | |
| 350 | ||
| 351 | // Create grid using the custom spacing | |
| 352 | const gridWidth = Math.ceil((maxX - minX) / gridSpacing); | |
| 353 | const gridHeight = Math.ceil((maxY - minY) / gridSpacing); | |
| 354 | ||
| 355 | // Track which grid cells are already occupied | |
| 356 | const occupiedCells: Set<string> = new Set(); | |
| 357 | ||
| 358 | // Mark cells occupied by existing particles | |
| 359 | for (const particle of particles) { | |
| 360 | const cellX = Math.floor((particle.x - minX) / gridSpacing); | |
| 361 | const cellY = Math.floor((particle.y - minY) / gridSpacing); | |
| 362 | ||
| 363 | // Ensure cell coordinates are within valid range | |
| 364 | if (cellX >= 0 && cellX < gridWidth && cellY >= 0 && cellY < gridHeight) { | |
| 365 | occupiedCells.add(`${cellX},${cellY}`); | |
| 366 | } | |
| 367 | } | |
| 368 | ||
| 369 | // Create arrays of all cells and filter by placement strategy | |
| 370 | const allGridCells: { x: number; y: number }[] = []; | |
| 371 | ||
| 372 | for (let cellY = 0; cellY < gridHeight; cellY++) { | |
| 373 | for (let cellX = 0; cellX < gridWidth; cellX++) { | |
| 374 | const cellKey = `${cellX},${cellY}`; | |
| 375 | if (!occupiedCells.has(cellKey)) { | |
| 376 | const posX = minX + (cellX + 0.5) * gridSpacing; | |
| 377 | const posY = minY + (cellY + 0.5) * gridSpacing; | |
| 378 | ||
| 379 | // For new area only placement, filter to expanded areas | |
| 380 | if (inNewAreaOnly && previousWidth > 0 && previousHeight > 0) { | |
| 381 | const expandedRight = width > previousWidth; | |
| 382 | const expandedBottom = height > previousHeight; | |
| 383 | ||
| 384 | const inNewRightArea = expandedRight && posX >= previousWidth && | |
| 385 | posX <= width; | |
| 386 | const inNewBottomArea = expandedBottom && posY >= previousHeight && | |
| 387 | posY <= height; | |
| 388 | ||
| 389 | if (inNewRightArea || inNewBottomArea) { | |
| 390 | allGridCells.push({ x: cellX, y: cellY }); | |
| 391 | } | |
| 392 | } else if (!inNewAreaOnly) { | |
| 393 | // Standard placement - add all valid cells | |
| 394 | allGridCells.push({ x: cellX, y: cellY }); | |
| 395 | } | |
| 396 | } | |
| 397 | } | |
| 398 | } | |
| 399 | ||
| 400 | // Shuffle the available cells for random distribution | |
| 401 | shuffleArray(allGridCells); | |
| 402 | ||
| 403 | // Take the number of cells we need (or all if we have fewer) | |
| 404 | const cellsToUse = Math.min(count, allGridCells.length); | |
| 405 | ||
| 406 | // Create particles in selected cells | |
| 407 | for (let i = 0; i < cellsToUse; i++) { | |
| 408 | const cell = allGridCells[i]; | |
| 409 | ||
| 410 | // Add jitter within the cell | |
| 411 | const jitterX = (Math.random() - 0.5) * gridSpacing * 0.8; | |
| 412 | const jitterY = (Math.random() - 0.5) * gridSpacing * 0.8; | |
| 413 | ||
| 414 | // Calculate final position | |
| 415 | const x = minX + (cell.x + 0.5) * gridSpacing + jitterX; | |
| 416 | const y = minY + (cell.y + 0.5) * gridSpacing + jitterY; | |
| 417 | ||
| 418 | // Create a particle at this position | |
| 419 | particles.push(createParticle(x, y)); | |
| 420 | } | |
| 421 | } | |
| 422 | ||
| 423 | // Utility to shuffle an array (Fisher-Yates algorithm) | |
| 424 | function shuffleArray<T>(array: T[]): void { | |
| 425 | for (let i = array.length - 1; i > 0; i--) { | |
| 426 | const j = Math.floor(Math.random() * (i + 1)); | |
| 427 | [array[i], array[j]] = [array[j], array[i]]; | |
| 428 | } | |
| 429 | } | |
| 430 | ||
| 431 | // Simplified createParticle function that just places at a specific position | |
| 432 | function createParticle(x: number, y: number): Particle { | |
| 433 | return { | |
| 434 | x: x + (Math.random() * 4 - 2), | |
| 435 | y: y + (Math.random() * 4 - 2), | |
| 436 | vx: 0, | |
| 437 | vy: 0, | |
| 438 | charge: 0, | |
| 439 | }; | |
| 440 | } | |
| 441 | ||
| 442 | // Function to create a particle on one of the edges | |
| 443 | function createParticleOnEdge(): Particle { | |
| 444 | // Overscan bounds with fixed pixel size | |
| 445 | const minX = -OVERSCAN_PIXELS; | |
| 446 | const maxX = width + OVERSCAN_PIXELS; | |
| 447 | const minY = -OVERSCAN_PIXELS; | |
| 448 | const maxY = height + OVERSCAN_PIXELS; | |
| 449 | ||
| 450 | let x: number, y: number; | |
| 451 | ||
| 452 | // Place on one of the edges | |
| 453 | const edge = Math.floor(Math.random() * 4); | |
| 454 | switch (edge) { | |
| 455 | case 0: // Top | |
| 456 | x = minX + Math.random() * (maxX - minX); | |
| 457 | y = minY; | |
| 458 | break; | |
| 459 | case 1: // Right | |
| 460 | x = maxX; | |
| 461 | y = minY + Math.random() * (maxY - minY); | |
| 462 | break; | |
| 463 | case 2: // Bottom | |
| 464 | x = minX + Math.random() * (maxX - minX); | |
| 465 | y = maxY; | |
| 466 | break; | |
| 467 | case 3: // Left | |
| 468 | x = minX; | |
| 469 | y = minY + Math.random() * (maxY - minY); | |
| 470 | break; | |
| 471 | default: | |
| 472 | x = minX + Math.random() * (maxX - minX); | |
| 473 | y = minY + Math.random() * (maxY - minY); | |
| 474 | } | |
| 475 | ||
| 476 | return createParticle(x, y); | |
| 477 | } | |
| 478 | ||
| 479 | // Spatial hashing functions | |
| 480 | function getHashKey(x: number, y: number): string { | |
| 481 | const cellX = Math.floor(x / CELL_SIZE); | |
| 482 | const cellY = Math.floor(y / CELL_SIZE); | |
| 483 | return `${cellX},${cellY}`; | |
| 484 | } | |
| 485 | ||
| 486 | function addToSpatialHash(particle: Particle): void { | |
| 487 | const key = getHashKey(particle.x, particle.y); | |
| 488 | if (!spatialHash[key]) { | |
| 489 | spatialHash[key] = []; | |
| 490 | } | |
| 491 | spatialHash[key].push(particle); | |
| 492 | } | |
| 493 | ||
| 494 | function updateSpatialHash(): void { | |
| 495 | // Clear previous hash | |
| 496 | spatialHash = {}; | |
| 497 | ||
| 498 | // Add all particles to hash | |
| 499 | for (const particle of particles) { | |
| 500 | addToSpatialHash(particle); | |
| 501 | } | |
| 502 | } | |
| 503 | ||
| 504 | function getNearbyParticles( | |
| 505 | x: number, | |
| 506 | y: number, | |
| 507 | radius: number, | |
| 508 | ): Particle[] { | |
| 509 | const result: Particle[] = []; | |
| 510 | const cellRadius = Math.ceil(radius / CELL_SIZE); | |
| 511 | ||
| 512 | const centerCellX = Math.floor(x / CELL_SIZE); | |
| 513 | const centerCellY = Math.floor(y / CELL_SIZE); | |
| 514 | ||
| 515 | for ( | |
| 516 | let cellX = centerCellX - cellRadius; | |
| 517 | cellX <= centerCellX + cellRadius; | |
| 518 | cellX++ | |
| 519 | ) { | |
| 520 | for ( | |
| 521 | let cellY = centerCellY - cellRadius; | |
| 522 | cellY <= centerCellY + cellRadius; | |
| 523 | cellY++ | |
| 524 | ) { | |
| 525 | const key = `${cellX},${cellY}`; | |
| 526 | const cell = spatialHash[key]; | |
| 527 | ||
| 528 | if (cell) { | |
| 529 | result.push(...cell); | |
| 530 | } | |
| 531 | } | |
| 532 | } | |
| 533 | ||
| 534 | return result; | |
| 535 | } | |
| 536 | ||
| 537 | // Main update function | |
| 538 | function update(): void { | |
| 539 | const now = Date.now(); | |
| 540 | // Fixed pixel overscan | |
| 541 | const minX = -OVERSCAN_PIXELS; | |
| 542 | const maxX = width + OVERSCAN_PIXELS; | |
| 543 | const minY = -OVERSCAN_PIXELS; | |
| 544 | const maxY = height + OVERSCAN_PIXELS; | |
| 545 | ||
| 546 | // Update spatial hash | |
| 547 | updateSpatialHash(); | |
| 548 | ||
| 549 | // Update forces and remove expired ones | |
| 550 | if (forces.length > 40) { | |
| 551 | forces = forces.slice(-40); | |
| 552 | } | |
| 553 | forces = forces.filter((force) => { | |
| 554 | force.strength *= 0.95; | |
| 555 | force.radius *= 0.95; | |
| 556 | return force.strength > 0.001; | |
| 557 | }); | |
| 558 | ||
| 559 | // Update particles | |
| 560 | const newParticles: Particle[] = []; | |
| 561 | ||
| 562 | for (const particle of particles) { | |
| 563 | // Apply forces | |
| 564 | for (const force of forces) { | |
| 565 | const dx = particle.x - force.x; | |
| 566 | const dy = particle.y - force.y; | |
| 567 | const distSq = dx * dx + dy * dy; | |
| 568 | ||
| 569 | const radius = force.radius * FORCE_RADIUS; | |
| 570 | ||
| 571 | if (distSq < radius * radius) { | |
| 572 | const dist = Math.sqrt(distSq); | |
| 573 | ||
| 574 | // Exponential falloff - much more concentrated at center | |
| 575 | // (1 - x/R)^n where n controls how sharp the falloff is | |
| 576 | const normalizedDist = dist / radius; | |
| 577 | const factor = Math.pow(1 - normalizedDist, FORCE_FALLOFF_EXPONENT); | |
| 578 | ||
| 579 | // Calculate force line projection for directional effect | |
| 580 | // This makes particles along the force's path experience stronger effect | |
| 581 | const dotProduct = (dx * -force.dx) + (dy * -force.dy); | |
| 582 | const projectionFactor = Math.max(0, dotProduct / dist); | |
| 583 | ||
| 584 | // Apply the combined factors - stronger directional bias | |
| 585 | const finalFactor = factor * force.strength * | |
| 586 | (0.1 + 0.9 * projectionFactor); | |
| 587 | ||
| 588 | particle.vx += force.dx * finalFactor; | |
| 589 | particle.vy += force.dy * finalFactor; | |
| 590 | // charge for the first 100ms | |
| 591 | if ((now - force.createdAt) < 100) { | |
| 592 | particle.charge = Math.min( | |
| 593 | 1, | |
| 594 | particle.charge + (finalFactor * finalFactor) * 0.2, | |
| 595 | ); | |
| 596 | } | |
| 597 | } | |
| 598 | } | |
| 599 | ||
| 600 | // Apply repulsion from nearby particles | |
| 601 | const nearby = getNearbyParticles( | |
| 602 | particle.x, | |
| 603 | particle.y, | |
| 604 | REPULSION_RADIUS, | |
| 605 | ); | |
| 606 | ||
| 607 | for (const other of nearby) { | |
| 608 | if (other === particle) continue; | |
| 609 | ||
| 610 | const dx = particle.x - other.x; | |
| 611 | const dy = particle.y - other.y; | |
| 612 | const distSq = dx * dx + dy * dy; | |
| 613 | ||
| 614 | if (distSq < REPULSION_RADIUS * REPULSION_RADIUS && distSq > 0) { | |
| 615 | const dist = Math.sqrt(distSq); | |
| 616 | const factor = REPULSION_STRENGTH * (1 - dist / REPULSION_RADIUS); | |
| 617 | ||
| 618 | const fx = dx / dist * factor; | |
| 619 | const fy = dy / dist * factor; | |
| 620 | ||
| 621 | particle.vx += fx; | |
| 622 | particle.vy += fy; | |
| 623 | } | |
| 624 | } | |
| 625 | ||
| 626 | // Apply friction | |
| 627 | particle.vx *= FRICTION; | |
| 628 | particle.vy *= FRICTION; | |
| 629 | ||
| 630 | // Ensure minimum speed | |
| 631 | const speed = Math.sqrt( | |
| 632 | particle.vx * particle.vx + particle.vy * particle.vy, | |
| 633 | ); | |
| 634 | if (speed < MIN_SPEED && speed > 0) { | |
| 635 | const scale = MIN_SPEED / speed; | |
| 636 | particle.vx *= scale; | |
| 637 | particle.vy *= scale; | |
| 638 | } | |
| 639 | ||
| 640 | // Cap at maximum speed | |
| 641 | if (speed > MAX_SPEED) { | |
| 642 | const scale = MAX_SPEED / speed; | |
| 643 | particle.vx *= scale; | |
| 644 | particle.vy *= scale; | |
| 645 | } | |
| 646 | ||
| 647 | // Update position | |
| 648 | particle.x += particle.vx; | |
| 649 | particle.y += particle.vy; | |
| 650 | ||
| 651 | // Decrease charge | |
| 652 | particle.charge *= 0.99; | |
| 653 | ||
| 654 | // Check if particle is within extended bounds | |
| 655 | if ( | |
| 656 | particle.x >= minX && particle.x <= maxX && | |
| 657 | particle.y >= minY && particle.y <= maxY | |
| 658 | ) { | |
| 659 | // If outside screen but within overscan, keep it if we need more particles | |
| 660 | if ( | |
| 661 | (particle.x < 0 || particle.x > width || | |
| 662 | particle.y < 0 || particle.y > height) && | |
| 663 | newParticles.length >= targetParticleCount | |
| 664 | ) { | |
| 665 | continue; | |
| 666 | } | |
| 667 | ||
| 668 | newParticles.push(particle); | |
| 669 | } else { | |
| 670 | // Out of bounds, respawn if needed | |
| 671 | if (newParticles.length < targetParticleCount) { | |
| 672 | newParticles.push(createParticleOnEdge()); | |
| 673 | } | |
| 674 | } | |
| 675 | } | |
| 676 | ||
| 677 | // Add more particles if needed | |
| 678 | while (newParticles.length < targetParticleCount) { | |
| 679 | newParticles.push(createParticleOnEdge()); | |
| 680 | } | |
| 681 | ||
| 682 | particles = newParticles; | |
| 683 | } | |
| 684 | ||
| 685 | // Render function | |
| 686 | const mul = isStandalone ? 0.9 : 0.5; | |
| 687 | const add = isStandalone ? 0.1 : 0.03; | |
| 688 | function render(): void { | |
| 689 | if (!ctx) return; | |
| 690 | ||
| 691 | // Clear canvas | |
| 692 | ctx.clearRect(0, 0, width, height); | |
| 693 | ||
| 694 | // Draw particles | |
| 695 | for (const particle of particles) { | |
| 696 | // Only draw if within canvas bounds (plus a small margin) | |
| 697 | if ( | |
| 698 | particle.x >= -PARTICLE_RADIUS && | |
| 699 | particle.x <= width + PARTICLE_RADIUS && | |
| 700 | particle.y >= -PARTICLE_RADIUS && particle.y <= height + PARTICLE_RADIUS | |
| 701 | ) { | |
| 702 | ctx.beginPath(); | |
| 703 | ctx.arc(particle.x, particle.y, PARTICLE_RADIUS, 0, Math.PI * 2); | |
| 704 | ||
| 705 | // Color based on charge | |
| 706 | ctx.fillStyle = "#FFCB1F"; | |
| 707 | ctx.globalAlpha = (particle.charge * mul + add) * globalOpacity; | |
| 708 | ctx.fill(); | |
| 709 | } | |
| 710 | } | |
| 711 | ||
| 712 | // // Debug: Draw forces and falloff visualization | |
| 713 | // if (ctx) { | |
| 714 | // for (const force of forces) { | |
| 715 | // const R = force.radius * FORCE_RADIUS; | |
| 716 | ||
| 717 | // // Draw force point | |
| 718 | // ctx.beginPath(); | |
| 719 | // ctx.arc(force.x, force.y, 5, 0, Math.PI * 2); | |
| 720 | // ctx.fillStyle = 'rgba(255, 0, 0, 0.5)'; | |
| 721 | // ctx.fill(); | |
| 722 | ||
| 723 | // // Draw force direction | |
| 724 | // ctx.beginPath(); | |
| 725 | // ctx.moveTo(force.x, force.y); | |
| 726 | // ctx.lineTo(force.x + force.dx * 20, force.y + force.dy * 20); | |
| 727 | // ctx.strokeStyle = 'red'; | |
| 728 | // ctx.stroke(); | |
| 729 | ||
| 730 | // // Visualize the falloff curve with rings | |
| 731 | // for (let i = 0; i <= 10; i++) { | |
| 732 | // const radius = (R * i) / 10; | |
| 733 | // const normalizedDist = radius / R; | |
| 734 | // const intensity = Math.pow(1 - normalizedDist, FORCE_FALLOFF_EXPONENT); | |
| 735 | ||
| 736 | // ctx.beginPath(); | |
| 737 | // ctx.arc(force.x, force.y, radius, 0, Math.PI * 2); | |
| 738 | // ctx.strokeStyle = `rgba(255, 0, 0, ${intensity * 0.2})`; | |
| 739 | // ctx.stroke(); | |
| 740 | // } | |
| 741 | // } | |
| 742 | // } | |
| 743 | } | |
| 744 | ||
| 745 | // Animation loop | |
| 746 | let r = Math.random(); | |
| 747 | function animate(): void { | |
| 748 | globalOpacity = Math.min(1, globalOpacity + 0.03); | |
| 749 | update(); | |
| 750 | render(); | |
| 751 | ||
| 752 | if (isRunning) { | |
| 753 | animationId = requestAnimationFrame(animate); | |
| 754 | } | |
| 755 | } | |
| 756 | ||
| 757 | // Start/stop functions | |
| 758 | function start(): void { | |
| 759 | if (isRunning) return; | |
| 760 | ||
| 761 | // Calculate target particle count based on canvas size | |
| 762 | targetParticleCount = Math.floor(width * height * PARTICLE_DENSITY); | |
| 763 | ||
| 764 | // Clear any existing particles and create new ones with proper spacing | |
| 765 | particles = []; | |
| 766 | addParticles(targetParticleCount); | |
| 767 | ||
| 768 | isRunning = true; | |
| 769 | animate(); | |
| 770 | } | |
| 771 | ||
| 772 | function stop(): void { | |
| 773 | isRunning = false; | |
| 774 | ||
| 775 | if (animationId !== null) { | |
| 776 | cancelAnimationFrame(animationId); | |
| 777 | animationId = null; | |
| 778 | } | |
| 779 | } | |
| 780 | ||
| 781 | init(); | |
| 782 | return cleanup; | |
| 783 | }; |
src/file-viewer/scripts/canvas_2022.ts created+160| ... | ... | @@ -0,0 +1,160 @@ |
| 1 | (globalThis as any).canvas_2022 = function (canvas: HTMLCanvasElement) { | |
| 2 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 3 | // Configuration for the grid of rotating squares | |
| 4 | const config = { | |
| 5 | gridRotation: 20, // Overall grid rotation in degrees | |
| 6 | squareSize: 20, // Size of each square | |
| 7 | spacing: 100, // Distance between square centers | |
| 8 | moveSpeedX: 0.01, // Horizontal movement speed (pixels per second) | |
| 9 | moveSpeedY: 0.01, // Vertical movement speed (pixels per second) | |
| 10 | squareColor: "#00220A", // Color of the squares | |
| 11 | squareOpacity: 1, // Opacity of the squares | |
| 12 | ||
| 13 | // Function to determine square rotation based on its coordinates and time | |
| 14 | // Can be adjusted for different patterns | |
| 15 | rotationFunction: (x: number, y: number, time: number): number => { | |
| 16 | // Combination of spatial wave and time-based rotation | |
| 17 | return Math.sin(x * 0.05) * Math.cos(y * 0.05) * 180; | |
| 18 | }, | |
| 19 | }; | |
| 20 | ||
| 21 | // Convert grid rotation to radians | |
| 22 | const gridRotationRad = (config.gridRotation * Math.PI) / 180; | |
| 23 | ||
| 24 | // Get the canvas context | |
| 25 | const ctx = canvas.getContext("2d"); | |
| 26 | if (!ctx) { | |
| 27 | console.error("Could not get canvas context"); | |
| 28 | return () => {}; | |
| 29 | } | |
| 30 | ||
| 31 | // Make canvas transparent | |
| 32 | if (isStandalone) { | |
| 33 | canvas.style.backgroundColor = "#154226"; | |
| 34 | } else { | |
| 35 | canvas.style.backgroundColor = "transparent"; | |
| 36 | } | |
| 37 | ||
| 38 | // Animation variables | |
| 39 | let width = canvas.width; | |
| 40 | let height = canvas.height; | |
| 41 | let offsetX = 0; | |
| 42 | let offsetY = 0; | |
| 43 | let time = 0; | |
| 44 | let animationFrameId: number; | |
| 45 | let lastTime = 0; | |
| 46 | ||
| 47 | // Update canvas dimensions when resized | |
| 48 | const updateDimensions = () => { | |
| 49 | width = canvas.width = canvas.clientWidth; | |
| 50 | height = canvas.height = canvas.clientHeight; | |
| 51 | }; | |
| 52 | ||
| 53 | // Calculate the diagonal length of the canvas (to ensure rotation covers corners) | |
| 54 | const calculateDiagonal = () => { | |
| 55 | return Math.sqrt(width * width + height * height); | |
| 56 | }; | |
| 57 | ||
| 58 | // Draw a single square with rotation | |
| 59 | const drawSquare = (x: number, y: number, size: number, rotation: number) => { | |
| 60 | ctx.save(); | |
| 61 | ||
| 62 | // Move to the center of the square position, rotate, then draw | |
| 63 | ctx.translate(x, y); | |
| 64 | ctx.rotate((rotation * Math.PI) / 180); // Convert rotation degrees to radians | |
| 65 | ||
| 66 | // Draw square centered at position | |
| 67 | ctx.fillRect(-size / 2, -size / 2, size, size); | |
| 68 | ||
| 69 | ctx.restore(); | |
| 70 | }; | |
| 71 | ||
| 72 | // Draw the entire grid of squares | |
| 73 | const drawGrid = () => { | |
| 74 | ctx.clearRect(0, 0, width, height); | |
| 75 | ||
| 76 | // Set drawing properties | |
| 77 | ctx.fillStyle = config.squareColor; | |
| 78 | ctx.globalAlpha = config.squareOpacity; | |
| 79 | ||
| 80 | // Save the current transformation state | |
| 81 | ctx.save(); | |
| 82 | ||
| 83 | // Move to the center of the canvas, rotate the grid, then move back | |
| 84 | const centerX = width / 2; | |
| 85 | const centerY = height / 2; | |
| 86 | ctx.translate(centerX, centerY); | |
| 87 | ctx.rotate(gridRotationRad); | |
| 88 | ||
| 89 | // Calculate how much of the grid to draw based on canvas size | |
| 90 | const diagonal = calculateDiagonal(); | |
| 91 | const gridSize = Math.ceil(diagonal / config.spacing) + 2; | |
| 92 | ||
| 93 | // Adjust for offset to create movement | |
| 94 | const adjustedOffsetX = offsetX % config.spacing; | |
| 95 | const adjustedOffsetY = offsetY % config.spacing; | |
| 96 | ||
| 97 | // Draw grid with enough squares to cover the rotated canvas | |
| 98 | const halfGrid = Math.ceil(gridSize / 2); | |
| 99 | ||
| 100 | for (let y = -halfGrid; y <= halfGrid; y++) { | |
| 101 | for (let x = -halfGrid; x <= halfGrid; x++) { | |
| 102 | // Calculate actual position with offset | |
| 103 | const posX = x * config.spacing + adjustedOffsetX; | |
| 104 | const posY = y * config.spacing + adjustedOffsetY; | |
| 105 | ||
| 106 | // Calculate square rotation based on its position and time | |
| 107 | const squareRotation = config.rotationFunction(posX, posY, time); | |
| 108 | ||
| 109 | // Draw the square | |
| 110 | drawSquare(posX, posY, config.squareSize, squareRotation); | |
| 111 | } | |
| 112 | } | |
| 113 | ||
| 114 | // Restore the transformation state | |
| 115 | ctx.restore(); | |
| 116 | ||
| 117 | // Reset global alpha | |
| 118 | ctx.globalAlpha = 1.0; | |
| 119 | }; | |
| 120 | ||
| 121 | // Animation loop | |
| 122 | const animate = (currentTime: number) => { | |
| 123 | animationFrameId = requestAnimationFrame(animate); | |
| 124 | ||
| 125 | // Calculate time elapsed since last frame | |
| 126 | const elapsed = currentTime - lastTime; | |
| 127 | lastTime = currentTime; | |
| 128 | ||
| 129 | // Update time variable for rotation function | |
| 130 | time += elapsed; | |
| 131 | ||
| 132 | // Update position offsets for movement | |
| 133 | offsetX += config.moveSpeedX * elapsed; | |
| 134 | offsetY += config.moveSpeedY * elapsed; | |
| 135 | ||
| 136 | // Draw the grid | |
| 137 | drawGrid(); | |
| 138 | }; | |
| 139 | ||
| 140 | // Initialize the animation | |
| 141 | const init = () => { | |
| 142 | // Set up resize handler | |
| 143 | window.addEventListener("resize", updateDimensions); | |
| 144 | ||
| 145 | // Initial setup | |
| 146 | updateDimensions(); | |
| 147 | ||
| 148 | // Start animation | |
| 149 | animationFrameId = requestAnimationFrame(animate); | |
| 150 | }; | |
| 151 | ||
| 152 | // Start the animation | |
| 153 | init(); | |
| 154 | ||
| 155 | // Return cleanup function | |
| 156 | return () => { | |
| 157 | window.removeEventListener("resize", updateDimensions); | |
| 158 | cancelAnimationFrame(animationFrameId); | |
| 159 | }; | |
| 160 | }; |
src/file-viewer/scripts/canvas_2023.ts created+197| ... | ... | @@ -0,0 +1,197 @@ |
| 1 | (globalThis as any).canvas_2023 = function (canvas: HTMLCanvasElement) { | |
| 2 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 3 | const config = { | |
| 4 | heartBaseSize: 50, | |
| 5 | heartMaxSize: 100, | |
| 6 | spacing: 150, | |
| 7 | rowSpeed: 0.1, | |
| 8 | heartColor: "#FF90D9", | |
| 9 | heartOpacity: isStandalone ? 0.5 : 0.04, | |
| 10 | mouseInfluenceRadius: 1000, | |
| 11 | heartScaleFunction: (distance: number, radius: number): number => { | |
| 12 | if (distance > radius) return 1; | |
| 13 | ||
| 14 | const normalizedDistance = distance / radius; | |
| 15 | const scaleFactor = 1 + | |
| 16 | (1 - normalizedDistance) * | |
| 17 | (config.heartMaxSize / config.heartBaseSize - 1); | |
| 18 | ||
| 19 | return 1 + (scaleFactor - 1) * Math.pow(1 - normalizedDistance, 2); | |
| 20 | }, | |
| 21 | }; | |
| 22 | ||
| 23 | const heart = new Path2D( | |
| 24 | "M23.9451 45.3973L20.8672 42.6493C16.9551 39.0174 13.7054 35.8927 11.1181 33.275C8.53056 30.6574 6.46731 28.286 4.92839 26.1608C3.38946 24.0356 2.31772 22.1028 1.71314 20.3624C1.10856 18.6219 0.806274 16.8705 0.806274 15.1081C0.806274 11.4718 2.03118 8.42016 4.481 5.95312C6.93118 3.48608 9.93831 2.25256 13.5024 2.25256C15.5649 2.25256 17.482 2.70142 19.2536 3.59912C21.0255 4.49682 22.5893 5.80674 23.9451 7.52887C25.484 5.73346 27.1059 4.40522 28.8108 3.54416C30.5161 2.6831 32.3751 2.25256 34.3877 2.25256C38.0141 2.25256 41.0551 3.48663 43.5108 5.95477C45.9661 8.42291 47.1938 11.4758 47.1938 15.1136C47.1938 16.8712 46.8823 18.6115 46.2594 20.3343C45.6365 22.0568 44.5648 23.9807 43.0442 26.1059C41.5236 28.231 39.4721 30.6136 36.8896 33.2536C34.3068 35.8936 31.0362 39.0255 27.0779 42.6493L23.9451 45.3973ZM23.9176 38.802C27.6088 35.431 30.6339 32.5547 32.9928 30.173C35.3518 27.7913 37.2091 25.7211 38.5648 23.9624C39.9205 22.2036 40.864 20.6137 41.3953 19.1928C41.9266 17.7715 42.1923 16.4101 42.1923 15.1086C42.1923 12.8768 41.4529 11.0098 39.974 9.50748C38.4952 8.0052 36.6461 7.25406 34.4268 7.25406C32.631 7.25406 30.9572 7.6811 29.4055 8.87193C27.8537 10.0628 25.5389 13.0434 25.5389 13.0434L23.9451 15.3299L22.3512 13.0434C22.3512 13.0434 20.0643 10.2311 18.4638 9.04031C16.8634 7.84948 15.2194 7.25406 13.4991 7.25406C11.2929 7.25406 9.46857 7.98816 8.02602 9.45637C6.58383 10.9246 5.86273 12.8162 5.86273 15.1311C5.86273 16.4784 6.13644 17.8679 6.68386 19.2994C7.23127 20.731 8.18394 22.3333 9.54185 24.1064C10.8998 25.879 12.7329 27.9562 15.0413 30.3379C17.3497 32.7196 20.3084 35.5409 23.9176 38.802Z", | |
| 25 | ); | |
| 26 | ||
| 27 | const ctx = canvas.getContext("2d"); | |
| 28 | if (!ctx) { | |
| 29 | console.error("Could not get canvas context"); | |
| 30 | return () => {}; | |
| 31 | } | |
| 32 | ||
| 33 | if (isStandalone) { | |
| 34 | canvas.style.backgroundColor = "#2F1C21"; | |
| 35 | } else { | |
| 36 | canvas.style.backgroundColor = "transparent"; | |
| 37 | } | |
| 38 | ||
| 39 | let width = canvas.width; | |
| 40 | let height = canvas.height; | |
| 41 | let animationFrameId: number; | |
| 42 | let lastFrameTime = 0; | |
| 43 | ||
| 44 | let mouseX = width / 2; | |
| 45 | let mouseY = height / 2; | |
| 46 | ||
| 47 | let offset = config.spacing / 2; | |
| 48 | ||
| 49 | const updateDimensions = () => { | |
| 50 | width = canvas.width = canvas.clientWidth; | |
| 51 | height = canvas.height = canvas.clientHeight; | |
| 52 | ||
| 53 | mouseX = width / 2; | |
| 54 | mouseY = height / 2; | |
| 55 | }; | |
| 56 | ||
| 57 | const drawHeart = (x: number, y: number, size: number) => { | |
| 58 | const scale = size / 30; | |
| 59 | ||
| 60 | ctx.save(); | |
| 61 | ctx.translate(x, y); | |
| 62 | ctx.scale(scale, scale); | |
| 63 | ||
| 64 | ctx.fillStyle = config.heartColor; | |
| 65 | ctx.fill(heart); | |
| 66 | ||
| 67 | ctx.restore(); | |
| 68 | }; | |
| 69 | ||
| 70 | const c = 400; | |
| 71 | const h = 40; | |
| 72 | const k = solveForK(c, h); | |
| 73 | ||
| 74 | const drawHeartGrid = () => { | |
| 75 | ctx.clearRect(0, 0, width, height); | |
| 76 | ||
| 77 | ctx.globalAlpha = config.heartOpacity; | |
| 78 | ||
| 79 | const numRows = Math.ceil(height / config.spacing) + 1; | |
| 80 | ||
| 81 | for (let row = 0; row < numRows; row++) { | |
| 82 | const direction = row % 2 === 0 ? 1 : -1; | |
| 83 | const rowOffset = (offset * direction) % config.spacing; | |
| 84 | ||
| 85 | const posYInit = row * config.spacing + config.spacing / 2; | |
| 86 | ||
| 87 | for ( | |
| 88 | let posXInit = -config.spacing + rowOffset; | |
| 89 | posXInit < width + config.spacing; | |
| 90 | posXInit += config.spacing | |
| 91 | ) { | |
| 92 | const dx = (posXInit + config.heartBaseSize / 2) - mouseX; | |
| 93 | const dy = (posYInit + config.heartBaseSize / 2) - mouseY; | |
| 94 | const distance = Math.sqrt(dx * dx + dy * dy); | |
| 95 | ||
| 96 | const pushIntensity = asymmetricBump(distance, h, c, k, 0.00002); | |
| 97 | ||
| 98 | const pushAngle = Math.atan2(dy, dx); | |
| 99 | ||
| 100 | const pushDistanceX = pushIntensity * Math.cos(pushAngle); | |
| 101 | const pushDistanceY = pushIntensity * Math.sin(pushAngle); | |
| 102 | const posX = posXInit + pushDistanceX * 1; | |
| 103 | const posY = posYInit + pushDistanceY * 2; | |
| 104 | ||
| 105 | const scaleFactor = config.heartScaleFunction( | |
| 106 | distance, | |
| 107 | config.mouseInfluenceRadius, | |
| 108 | ); | |
| 109 | const heartSize = config.heartBaseSize * scaleFactor; | |
| 110 | ||
| 111 | if ( | |
| 112 | posX > -config.heartMaxSize && | |
| 113 | posX < width + config.heartMaxSize && | |
| 114 | posY > -config.heartMaxSize && | |
| 115 | posY < height + config.heartMaxSize | |
| 116 | ) { | |
| 117 | drawHeart(posX - heartSize / 2, posY - heartSize / 2, heartSize); | |
| 118 | } | |
| 119 | } | |
| 120 | } | |
| 121 | ||
| 122 | ctx.globalAlpha = 1.0; | |
| 123 | }; | |
| 124 | ||
| 125 | function solveForK(c: number, k: number) { | |
| 126 | // input -> f(x)=h*e^{(-k*(x-c)^{2})} | |
| 127 | // desired result is (0, 0.45). (0, 0) is unsolvable but 0.45px will round down to 0. | |
| 128 | // | |
| 129 | // solution: -\frac{\ln\left(\frac{0.45}{h}\right)}{c^{2}} | |
| 130 | return -Math.log(0.45 / h) / (c * c); | |
| 131 | } | |
| 132 | ||
| 133 | function asymmetricBump( | |
| 134 | x: number, | |
| 135 | h: number, | |
| 136 | c: number, | |
| 137 | leftK: number, | |
| 138 | rightK: number, | |
| 139 | ) { | |
| 140 | const k = (x <= c) ? leftK : rightK; | |
| 141 | return h * Math.exp(-k * Math.pow(x - c, 2)); | |
| 142 | } | |
| 143 | ||
| 144 | const updateOffset = (elapsed: number) => { | |
| 145 | offset += config.rowSpeed * elapsed; | |
| 146 | ||
| 147 | if (offset > 1000000) { | |
| 148 | offset -= 1000000; | |
| 149 | } | |
| 150 | }; | |
| 151 | ||
| 152 | const animate = (currentTime: number) => { | |
| 153 | animationFrameId = requestAnimationFrame(animate); | |
| 154 | ||
| 155 | const elapsed = currentTime - lastFrameTime; | |
| 156 | lastFrameTime = currentTime; | |
| 157 | ||
| 158 | updateOffset(elapsed * 0.05); | |
| 159 | ||
| 160 | drawHeartGrid(); | |
| 161 | }; | |
| 162 | ||
| 163 | const handleMouseMove = (event: MouseEvent) => { | |
| 164 | const rect = canvas.getBoundingClientRect(); | |
| 165 | mouseX = event.clientX - rect.left; | |
| 166 | mouseY = event.clientY - rect.top; | |
| 167 | }; | |
| 168 | ||
| 169 | const handleTouchMove = (event: TouchEvent) => { | |
| 170 | if (event.touches.length > 0) { | |
| 171 | event.preventDefault(); | |
| 172 | const rect = canvas.getBoundingClientRect(); | |
| 173 | mouseX = event.touches[0].clientX - rect.left; | |
| 174 | mouseY = event.touches[0].clientY - rect.top; | |
| 175 | } | |
| 176 | }; | |
| 177 | ||
| 178 | const init = () => { | |
| 179 | window.addEventListener("resize", updateDimensions); | |
| 180 | document.addEventListener("mousemove", handleMouseMove); | |
| 181 | document.addEventListener("touchmove", handleTouchMove, { passive: false }); | |
| 182 | ||
| 183 | updateDimensions(); | |
| 184 | ||
| 185 | lastFrameTime = performance.now(); | |
| 186 | animationFrameId = requestAnimationFrame(animate); | |
| 187 | }; | |
| 188 | ||
| 189 | init(); | |
| 190 | ||
| 191 | return () => { | |
| 192 | window.removeEventListener("resize", updateDimensions); | |
| 193 | document.removeEventListener("mousemove", handleMouseMove); | |
| 194 | document.removeEventListener("touchmove", handleTouchMove); | |
| 195 | cancelAnimationFrame(animationFrameId); | |
| 196 | }; | |
| 197 | }; |
src/file-viewer/scripts/canvas_2024.ts created+251| ... | ... | @@ -0,0 +1,251 @@ |
| 1 | // Vibe coded with AI | |
| 2 | (globalThis as any).canvas_2024 = function (canvas: HTMLCanvasElement) { | |
| 3 | const isStandalone = canvas.getAttribute("data-standalone") === "true"; | |
| 4 | if (isStandalone) { | |
| 5 | canvas.parentElement!.style.backgroundColor = "black"; | |
| 6 | } | |
| 7 | ||
| 8 | const gl = canvas.getContext("webgl", { | |
| 9 | alpha: true, | |
| 10 | premultipliedAlpha: false, | |
| 11 | }); | |
| 12 | if (!gl) { | |
| 13 | console.error("WebGL not supported"); | |
| 14 | return () => {}; | |
| 15 | } | |
| 16 | ||
| 17 | canvas.style.imageRendering = "pixelated"; | |
| 18 | canvas.style.opacity = isStandalone ? "0.3" : "0.15"; | |
| 19 | ||
| 20 | // Resize canvas to match display size | |
| 21 | const resize = () => { | |
| 22 | const displayWidth = Math.floor( | |
| 23 | (canvas.clientWidth || window.innerWidth) / 3, | |
| 24 | ); | |
| 25 | const displayHeight = Math.floor( | |
| 26 | (canvas.clientHeight || window.innerHeight) / 3, | |
| 27 | ); | |
| 28 | ||
| 29 | if (canvas.width !== displayWidth || canvas.height !== displayHeight) { | |
| 30 | canvas.width = displayWidth; | |
| 31 | canvas.height = displayHeight; | |
| 32 | gl.viewport(0, 0, canvas.width, canvas.height); | |
| 33 | } | |
| 34 | }; | |
| 35 | resize(); | |
| 36 | ||
| 37 | // Vertex shader (just passes coordinates) | |
| 38 | const vertexShaderSource = ` | |
| 39 | attribute vec2 a_position; | |
| 40 | void main() { | |
| 41 | gl_Position = vec4(a_position, 0.0, 1.0); | |
| 42 | } | |
| 43 | `; | |
| 44 | ||
| 45 | // Fragment shader creates random noise with higher opacity to ensure visibility | |
| 46 | const fragmentShaderSource = ` | |
| 47 | precision mediump float; | |
| 48 | uniform float u_time; | |
| 49 | ||
| 50 | float noise1(float seed1,float seed2){ | |
| 51 | return( | |
| 52 | fract(seed1+12.34567* | |
| 53 | fract(100.*(abs(seed1*0.91)+seed2+94.68)* | |
| 54 | fract((abs(seed2*0.41)+45.46)* | |
| 55 | fract((abs(seed2)+757.21)* | |
| 56 | fract(seed1*0.0171)))))) | |
| 57 | * 1.0038 - 0.00185; | |
| 58 | } | |
| 59 | ||
| 60 | float n(float seed1, float seed2, float seed3){ | |
| 61 | float buff1 = abs(seed1+100.81) + 1000.3; | |
| 62 | float buff2 = abs(seed2+100.45) + 1000.2; | |
| 63 | float buff3 = abs(noise1(seed1, seed2)+seed3) + 1000.1; | |
| 64 | buff1 = (buff3*fract(buff2*fract(buff1*fract(buff2*0.146)))); | |
| 65 | buff2 = (buff2*fract(buff2*fract(buff1+buff2*fract(buff3*0.52)))); | |
| 66 | buff1 = noise1(buff1, buff2); | |
| 67 | return(buff1); | |
| 68 | } | |
| 69 | ||
| 70 | void main() { | |
| 71 | float noise = n(gl_FragCoord.x, gl_FragCoord.y, u_time); | |
| 72 | ||
| 73 | gl_FragColor = vec4(1.0, 0.7, 0.7, 0.8*noise); | |
| 74 | } | |
| 75 | `; | |
| 76 | ||
| 77 | // Create and compile shaders | |
| 78 | const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource); | |
| 79 | const fragmentShader = createShader( | |
| 80 | gl, | |
| 81 | gl.FRAGMENT_SHADER, | |
| 82 | fragmentShaderSource, | |
| 83 | ); | |
| 84 | ||
| 85 | // Check if shader creation failed | |
| 86 | if (!vertexShader || !fragmentShader) { | |
| 87 | console.error("Failed to create shaders"); | |
| 88 | return () => {}; | |
| 89 | } | |
| 90 | ||
| 91 | // Create program and link shaders | |
| 92 | const program = createProgram(gl, vertexShader, fragmentShader); | |
| 93 | ||
| 94 | // Check if program creation failed | |
| 95 | if (!program) { | |
| 96 | console.error("Failed to create program"); | |
| 97 | return () => {}; | |
| 98 | } | |
| 99 | ||
| 100 | // Get attribute and uniform locations | |
| 101 | const positionAttributeLocation = gl.getAttribLocation(program, "a_position"); | |
| 102 | const timeUniformLocation = gl.getUniformLocation(program, "u_time"); | |
| 103 | ||
| 104 | // Create a position buffer for a rectangle covering the entire canvas | |
| 105 | const positionBuffer = gl.createBuffer(); | |
| 106 | if (!positionBuffer) { | |
| 107 | console.error("Failed to create position buffer"); | |
| 108 | return () => {}; | |
| 109 | } | |
| 110 | ||
| 111 | gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); | |
| 112 | // Rectangle that covers the entire clip space | |
| 113 | const positions = [ | |
| 114 | -1.0, | |
| 115 | -1.0, // bottom left | |
| 116 | 1.0, | |
| 117 | -1.0, // bottom right | |
| 118 | -1.0, | |
| 119 | 1.0, // top left | |
| 120 | 1.0, | |
| 121 | 1.0, // top right | |
| 122 | ]; | |
| 123 | gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW); | |
| 124 | ||
| 125 | // Set up blending | |
| 126 | gl.enable(gl.BLEND); | |
| 127 | gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); | |
| 128 | ||
| 129 | // Fixed 24 FPS timing | |
| 130 | const FPS = 24; | |
| 131 | const FRAME_TIME = 1000 / FPS; // ms per frame | |
| 132 | ||
| 133 | // Handle animation | |
| 134 | let animationTimerId: number; | |
| 135 | let startTime = Date.now(); | |
| 136 | let lastFrameTime = 0; | |
| 137 | ||
| 138 | const render = () => { | |
| 139 | // Get current time | |
| 140 | const currentTime = Date.now(); | |
| 141 | const deltaTime = currentTime - lastFrameTime; | |
| 142 | ||
| 143 | // Skip frame if it's too early (maintain 24 FPS) | |
| 144 | if (deltaTime < FRAME_TIME) { | |
| 145 | animationTimerId = window.setTimeout(render, 0); // Check again ASAP but yield to browser | |
| 146 | return; | |
| 147 | } | |
| 148 | ||
| 149 | // Update last frame time, accounting for any drift | |
| 150 | lastFrameTime = currentTime - (deltaTime % FRAME_TIME); | |
| 151 | ||
| 152 | // Resize canvas if needed | |
| 153 | resize(); | |
| 154 | ||
| 155 | // Calculate elapsed time in seconds for animation | |
| 156 | const elapsedTime = (currentTime - startTime) / 1000; | |
| 157 | ||
| 158 | // Clear the canvas with transparent black | |
| 159 | gl.clearColor(0, 0, 0, 0); | |
| 160 | gl.clear(gl.COLOR_BUFFER_BIT); | |
| 161 | ||
| 162 | // Use our shader program | |
| 163 | gl.useProgram(program); | |
| 164 | ||
| 165 | // Set up the position attribute | |
| 166 | gl.enableVertexAttribArray(positionAttributeLocation); | |
| 167 | gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); | |
| 168 | gl.vertexAttribPointer( | |
| 169 | positionAttributeLocation, | |
| 170 | 2, // 2 components per vertex | |
| 171 | gl.FLOAT, // data type | |
| 172 | false, // normalize | |
| 173 | 0, // stride (0 = compute from size and type) | |
| 174 | 0, // offset | |
| 175 | ); | |
| 176 | ||
| 177 | // Update time uniform for animation | |
| 178 | gl.uniform1f(timeUniformLocation, elapsedTime); | |
| 179 | ||
| 180 | // Draw the rectangle (2 triangles) | |
| 181 | gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); | |
| 182 | ||
| 183 | // Schedule next frame (aiming for 24 FPS) | |
| 184 | const timeToNextFrame = Math.max( | |
| 185 | 0, | |
| 186 | FRAME_TIME - (Date.now() - currentTime), | |
| 187 | ); | |
| 188 | animationTimerId = window.setTimeout(render, timeToNextFrame); | |
| 189 | }; | |
| 190 | ||
| 191 | // Helper function to create shaders | |
| 192 | function createShader( | |
| 193 | gl: WebGLRenderingContext, | |
| 194 | type: number, | |
| 195 | source: string, | |
| 196 | ): WebGLShader | null { | |
| 197 | const shader = gl.createShader(type); | |
| 198 | if (!shader) { | |
| 199 | console.error("Failed to create shader object"); | |
| 200 | return null; | |
| 201 | } | |
| 202 | ||
| 203 | gl.shaderSource(shader, source); | |
| 204 | gl.compileShader(shader); | |
| 205 | ||
| 206 | if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { | |
| 207 | console.error("Shader compilation error:", gl.getShaderInfoLog(shader)); | |
| 208 | gl.deleteShader(shader); | |
| 209 | return null; | |
| 210 | } | |
| 211 | ||
| 212 | return shader; | |
| 213 | } | |
| 214 | ||
| 215 | // Helper function to create program and link shaders | |
| 216 | function createProgram( | |
| 217 | gl: WebGLRenderingContext, | |
| 218 | vertexShader: WebGLShader, | |
| 219 | fragmentShader: WebGLShader, | |
| 220 | ): WebGLProgram | null { | |
| 221 | const program = gl.createProgram(); | |
| 222 | if (!program) { | |
| 223 | console.error("Failed to create program object"); | |
| 224 | return null; | |
| 225 | } | |
| 226 | ||
| 227 | gl.attachShader(program, vertexShader); | |
| 228 | gl.attachShader(program, fragmentShader); | |
| 229 | gl.linkProgram(program); | |
| 230 | ||
| 231 | if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { | |
| 232 | console.error("Program linking error:", gl.getProgramInfoLog(program)); | |
| 233 | return null; | |
| 234 | } | |
| 235 | ||
| 236 | return program; | |
| 237 | } | |
| 238 | ||
| 239 | // Start the rendering with initial timestamp | |
| 240 | lastFrameTime = Date.now(); | |
| 241 | render(); | |
| 242 | ||
| 243 | // Return cleanup function | |
| 244 | return () => { | |
| 245 | clearTimeout(animationTimerId); | |
| 246 | if (program) gl.deleteProgram(program); | |
| 247 | if (vertexShader) gl.deleteShader(vertexShader); | |
| 248 | if (fragmentShader) gl.deleteShader(fragmentShader); | |
| 249 | if (positionBuffer) gl.deleteBuffer(positionBuffer); | |
| 250 | }; | |
| 251 | }; |
src/file-viewer/scripts/canvas_cotyledon.ts created+362| ... | ... | @@ -0,0 +1,362 @@ |
| 1 | // @ts-ignore | |
| 2 | globalThis.canvas_cotyledon = function ( | |
| 3 | canvas: HTMLCanvasElement, | |
| 4 | panel: HTMLElement, | |
| 5 | ) { | |
| 6 | let running = true; | |
| 7 | const ctx = canvas.getContext("2d"); | |
| 8 | ||
| 9 | function resizeCanvas() { | |
| 10 | canvas.width = canvas.clientWidth; | |
| 11 | canvas.height = canvas.clientHeight; | |
| 12 | } | |
| 13 | ||
| 14 | resizeCanvas(); | |
| 15 | window.addEventListener("resize", resizeCanvas); | |
| 16 | ||
| 17 | const clover = new Path2D( | |
| 18 | "M18.9845 34.4839C20.4004 34.5218 21.8336 34.6883 23.2644 34.9578C20.1378 31.095 18.4268 27.1546 18.0555 23.2959C17.321 15.6622 21.9022 9.36595 28.8908 5.78535C34.6355 2.84212 40.258 2.98454 44.2809 5.96879C45.6605 6.99221 46.7683 8.2886 47.5877 9.78593C48.3054 8.50307 49.134 7.26623 50.0858 6.17951C51.8368 4.18037 54.1947 2.47127 57.2294 2.15019C60.2768 1.82766 63.467 2.9608 66.7548 5.52299C70.9834 8.81811 73.084 12.8864 73.5996 17.2135C74.1044 21.4504 73.0711 25.7433 71.4155 29.6117C70.6566 31.3849 69.7488 33.1106 68.7557 34.7506C70.3664 33.9983 72.0168 33.3376 73.6816 32.8312C77.2262 31.7528 81.0258 31.3024 84.8151 32.2149C88.6451 33.1371 92.2246 35.3946 95.3823 39.3157C98.4534 43.1293 99.9219 46.6818 99.997 49.9677C100.073 53.3033 98.7051 55.9829 96.8652 57.9789C95.0586 59.9387 92.7653 61.2872 90.7505 62.1315C90.692 62.1561 90.6334 62.1802 90.5746 62.2042L90.4465 62.256C91.4852 63.7304 92.4724 65.5955 93.0127 67.6979C93.5916 69.9509 93.6669 72.5285 92.674 75.1356C91.679 77.7482 89.7006 80.1559 86.5767 82.2161C86.5556 82.23 86.5342 82.2438 86.5126 82.2571C84.1333 83.7267 81.5504 84.7197 78.6932 84.9352C75.832 85.151 72.8634 84.5742 69.7337 83.1522C64.7667 80.8953 59.274 76.4525 52.8745 69.3645C52.8789 70.1568 52.8844 70.9254 52.9004 71.6677C52.9643 74.6226 53.1868 77.4534 54.0666 80.6265C55.2259 84.503 57.2821 88.4684 60.9561 92.3161C61.644 93.0366 61.8512 94.0908 61.4872 95.018L60.9919 96.2799C60.6464 97.16 59.8435 97.778 58.9041 97.8865C57.9647 97.9952 57.042 97.5769 56.5047 96.7985C52.5406 91.0574 50.3441 86.3289 49.1491 82.0434C48.0155 78.2319 47.6244 74.4579 47.5085 71.0024C45.418 73.6873 42.8696 76.4687 40.0618 78.9101C34.3517 83.8756 26.6803 88.1931 19.142 85.9955C15.5301 84.9425 12.8635 83.2751 11.0848 81.1179C9.2952 78.9474 8.5557 76.4627 8.4981 74.0631C8.43961 71.6256 9.07998 69.225 10.075 67.1703C7.76333 66.828 5.38011 65.9682 3.47071 64.2327C-0.339092 60.7699 -1.2199 54.8876 1.86982 46.4552C3.47011 42.0878 5.90372 38.9798 8.98328 37.0179C12.0444 35.0677 15.5215 34.3912 18.9845 34.4839Z", | |
| 19 | ); | |
| 20 | ||
| 21 | // Background | |
| 22 | const base = [0x14, 0x1a, 0x19]; | |
| 23 | ||
| 24 | let blobTextureCanvas: OffscreenCanvas; | |
| 25 | let blobTextureCtx: OffscreenCanvasRenderingContext2D; | |
| 26 | const blobSize = 1000; // Size of the noise texture | |
| 27 | { | |
| 28 | const blobTexture = new ImageData(blobSize, blobSize); | |
| 29 | const data = blobTexture.data; | |
| 30 | ||
| 31 | let x = 0; | |
| 32 | let y = 0; | |
| 33 | for (let i = 0; i < data.length; i += 4) { | |
| 34 | if (x >= blobSize) { | |
| 35 | x = 0; | |
| 36 | y++; | |
| 37 | } | |
| 38 | ||
| 39 | const noiseX = Math.sin(x * .2 + y * .1) * 0.03; | |
| 40 | const noiseY = Math.cos(y * .6 + x * .2) * 0.05; | |
| 41 | ||
| 42 | const centerX = blobSize / 2; | |
| 43 | const centerY = blobSize / 2; | |
| 44 | const dx = (x + noiseX) - centerX; | |
| 45 | const dy = (y + noiseY) - centerY; | |
| 46 | const distanceFromCenterRaw = (dx * dx + dy * dy) ** 0.5; | |
| 47 | ||
| 48 | const maxDistance = blobSize / 2; | |
| 49 | const distanceFromCenter = Math.min( | |
| 50 | 1, | |
| 51 | distanceFromCenterRaw / maxDistance, | |
| 52 | ); | |
| 53 | ||
| 54 | const noiseValue = (1 - 0.5 * Math.sin(x * 0.02 - y * 0.04)) * | |
| 55 | (1 - 0.5 * Math.cos(x * 0.03 + y * 0.04)) * 0.3; | |
| 56 | ||
| 57 | const gradient = (1 - distanceFromCenter) * | |
| 58 | (0.95 - distanceFromCenter * 0.4); | |
| 59 | const finalValue = Math.max( | |
| 60 | 0, | |
| 61 | Math.min(1, gradient * (Math.random() * 0.3 + 0.85 + noiseValue)), | |
| 62 | ); | |
| 63 | ||
| 64 | data[i] = 121; | |
| 65 | data[i + 1] = 219; | |
| 66 | data[i + 2] = 160; | |
| 67 | data[i + 3] = Math.floor(finalValue * 255.99); // Alpha | |
| 68 | x++; | |
| 69 | } | |
| 70 | blobTextureCanvas = new OffscreenCanvas(blobSize, blobSize); | |
| 71 | blobTextureCtx = blobTextureCanvas.getContext("2d")!; | |
| 72 | blobTextureCtx.putImageData(blobTexture, 0, 0); | |
| 73 | } | |
| 74 | ||
| 75 | class CotyledonParticle { | |
| 76 | x: number; | |
| 77 | y: number; | |
| 78 | size: number; | |
| 79 | velocityX: number; | |
| 80 | velocityY: number; | |
| 81 | rotation: number; | |
| 82 | rotationSpeed: number; | |
| 83 | color: string; | |
| 84 | ||
| 85 | constructor(positioning: "random" | "edge") { | |
| 86 | this.size = Math.random() * 0.1 + 0.6; | |
| 87 | ||
| 88 | if (positioning === "edge") { | |
| 89 | const edge = Math.floor(Math.random() * 5); | |
| 90 | if (edge === 0 || edge === 1) { | |
| 91 | // Right edge | |
| 92 | this.x = 1.05; | |
| 93 | this.y = Math.random(); | |
| 94 | this.velocityX = -Math.random() * 0.1 - 0.2; | |
| 95 | this.velocityY = 0; | |
| 96 | } else if (edge === 2 || edge === 3) { | |
| 97 | // Top edge | |
| 98 | this.x = Math.random(); | |
| 99 | this.y = -0.05; | |
| 100 | this.velocityX = -Math.random() * 0.1 - 0.1; | |
| 101 | this.velocityY = -Math.random() * 0.2 - 0.05; | |
| 102 | } else { | |
| 103 | // Bottom edge | |
| 104 | this.x = Math.random() * 0.5 + 0.5; | |
| 105 | this.y = 1.05; | |
| 106 | this.velocityX = Math.random() * 0.1 + 0.1; | |
| 107 | this.velocityY = -Math.random() * 0.3 - 0.1; | |
| 108 | } | |
| 109 | } else { | |
| 110 | let tries = 0; | |
| 111 | do { | |
| 112 | this.x = Math.random(); | |
| 113 | this.y = Math.random(); | |
| 114 | this.velocityX = -Math.random() * 0.05 - 0.1; | |
| 115 | this.velocityY = -Math.random() * 0.2 + 0.1; | |
| 116 | } while (this.tooCloseToAnyOtherParticle() && (tries++ < 10)); | |
| 117 | } | |
| 118 | ||
| 119 | this.rotation = Math.random() * Math.PI * 2; | |
| 120 | this.rotationSpeed = (Math.random() * 0.003 - 0.0015) * | |
| 121 | (Math.random() > 0.5 ? 1 : -1); | |
| 122 | ||
| 123 | const opacity = Math.random() * 0.4 + 0.2; | |
| 124 | this.color = `rgba(${ | |
| 125 | base.map((x) => x + Math.floor(x * opacity)).join(",") | |
| 126 | }, 1)`; | |
| 127 | } | |
| 128 | ||
| 129 | tooCloseToAnyOtherParticle() { | |
| 130 | for (let i = 0; i < cotyledonParticles.length; i++) { | |
| 131 | const otherParticle = cotyledonParticles[i]; | |
| 132 | const distance = Math.sqrt( | |
| 133 | (this.x - otherParticle.x) ** 2 + (this.y - otherParticle.y) ** 2, | |
| 134 | ); | |
| 135 | if (distance < 0.1) { | |
| 136 | return true; | |
| 137 | } | |
| 138 | } | |
| 139 | } | |
| 140 | ||
| 141 | update() { | |
| 142 | if (this.velocityY < 0.01) { | |
| 143 | this.velocityY += 0.00025; | |
| 144 | } | |
| 145 | this.velocityX -= 0.0001; | |
| 146 | this.x += this.velocityX / 1300; | |
| 147 | this.y += this.velocityY / 1000; | |
| 148 | this.rotation += this.rotationSpeed; | |
| 149 | return this.x < -0.05 || (this.y > 1 && this.velocityY < 0); | |
| 150 | } | |
| 151 | ||
| 152 | draw() { | |
| 153 | if (!ctx) return; | |
| 154 | ||
| 155 | ctx.save(); | |
| 156 | ctx.translate(this.x * canvas.width, this.y * canvas.height); | |
| 157 | ctx.rotate(this.rotation); | |
| 158 | ctx.scale(this.size, this.size); | |
| 159 | ctx.translate(-50, -50); | |
| 160 | ctx.fillStyle = this.color; | |
| 161 | ctx.fill(clover); | |
| 162 | ctx.restore(); | |
| 163 | } | |
| 164 | } | |
| 165 | ||
| 166 | class BlobParticle { | |
| 167 | x: number; | |
| 168 | y: number; | |
| 169 | opacity: number; | |
| 170 | state: 0 | 1 | 2; | |
| 171 | stateTime: number; | |
| 172 | stayDuration: number; | |
| 173 | innerColor: string; | |
| 174 | rot: number = Math.random() * Math.PI * 2; | |
| 175 | ||
| 176 | constructor() { | |
| 177 | this.x = Math.random() * 0.6 + 0.2; | |
| 178 | this.y = Math.random() * 0.6 + 0.2; | |
| 179 | ||
| 180 | this.opacity = 0; // Start fully transparent | |
| 181 | ||
| 182 | this.state = 0; | |
| 183 | this.stateTime = 0; | |
| 184 | this.stayDuration = Math.random() * 10000 + 5000; // Random stay duration between 5-15 seconds | |
| 185 | ||
| 186 | const colorMultiplier = Math.random() * 0.5 + 1.5; // 0.5-1.0 multiplier | |
| 187 | const colorValues = base.map((x) => Math.floor(x * colorMultiplier)); | |
| 188 | this.innerColor = `rgba(${colorValues.join(",")}, 1)`; | |
| 189 | } | |
| 190 | ||
| 191 | update(deltaTime: number) { | |
| 192 | this.stateTime += deltaTime; | |
| 193 | ||
| 194 | if (this.state === 0) { | |
| 195 | this.opacity = Math.min(1, this.stateTime / 15000); | |
| 196 | if (this.stateTime >= 15000) { | |
| 197 | this.state = 1; | |
| 198 | this.stateTime = 0; | |
| 199 | } | |
| 200 | } else if (this.state === 1) { | |
| 201 | if (this.stateTime >= this.stayDuration) { | |
| 202 | this.state = 2; | |
| 203 | this.stateTime = 0; | |
| 204 | } | |
| 205 | } else if (this.state === 2) { | |
| 206 | this.opacity = Math.max(0, 1 - (this.stateTime / 15000)); | |
| 207 | if (this.stateTime >= 15000) { | |
| 208 | return true; | |
| 209 | } | |
| 210 | } | |
| 211 | return false; | |
| 212 | } | |
| 213 | ||
| 214 | draw() { | |
| 215 | if (!ctx) return; | |
| 216 | ||
| 217 | const screenX = this.x * canvas.width; | |
| 218 | const screenY = this.y * canvas.height; | |
| 219 | const screenSize = (Math.min(canvas.width, canvas.height) * 2) / blobSize; | |
| 220 | ||
| 221 | ctx.save(); | |
| 222 | ctx.translate(screenX - screenSize * 0.5, screenY - screenSize * 0.5); | |
| 223 | ctx.scale(screenSize, screenSize); | |
| 224 | ctx.rotate(this.rot); | |
| 225 | ctx.globalAlpha = this.opacity * 0.2; | |
| 226 | ctx.globalCompositeOperation = "overlay"; | |
| 227 | ctx.drawImage(blobTextureCanvas, 0, 0); | |
| 228 | ctx.restore(); | |
| 229 | } | |
| 230 | } | |
| 231 | ||
| 232 | const cotyledonParticles: CotyledonParticle[] = []; | |
| 233 | const blobParticles: BlobParticle[] = []; | |
| 234 | let blobParticleTop: BlobParticle = new BlobParticle(); | |
| 235 | for (let i = 0; i < 80; i++) { | |
| 236 | cotyledonParticles.push(new CotyledonParticle("random")); | |
| 237 | } | |
| 238 | for (let i = 0; i < 9; i++) { | |
| 239 | const blobParticle = new BlobParticle(); | |
| 240 | if (i < 4) { | |
| 241 | blobParticle.state = 1; | |
| 242 | blobParticle.opacity = 1; | |
| 243 | blobParticle.stayDuration = Math.random() * 10000; | |
| 244 | } else { | |
| 245 | blobParticle.state = i < 7 ? 2 : 0; | |
| 246 | blobParticle.stateTime = Math.random() * 15000; | |
| 247 | } | |
| 248 | if (i > 0) { | |
| 249 | do { | |
| 250 | blobParticle.x = Math.random(); | |
| 251 | blobParticle.y = Math.random(); | |
| 252 | } while ( | |
| 253 | blobParticles.some((p) => | |
| 254 | Math.sqrt((p.x - blobParticle.x) ** 2 + (p.y - blobParticle.y) ** 2) < | |
| 255 | 0.1 | |
| 256 | ) | |
| 257 | ); | |
| 258 | } | |
| 259 | blobParticles.push(blobParticle); | |
| 260 | } | |
| 261 | ||
| 262 | let lastTime = performance.now(); | |
| 263 | ||
| 264 | function animate(currentTime: number) { | |
| 265 | if (!running) return; | |
| 266 | if (!ctx) return; | |
| 267 | ||
| 268 | const deltaTime = currentTime - lastTime; | |
| 269 | lastTime = currentTime; | |
| 270 | ||
| 271 | ctx.clearRect(0, 0, canvas.width, canvas.height); | |
| 272 | ||
| 273 | for (let i = blobParticles.length - 1; i >= 0; i--) { | |
| 274 | const shouldRemove = blobParticles[i].update(deltaTime); | |
| 275 | if (shouldRemove) { | |
| 276 | blobParticles[i] = new BlobParticle(); | |
| 277 | } else { | |
| 278 | blobParticles[i].draw(); | |
| 279 | } | |
| 280 | } | |
| 281 | ||
| 282 | for (let i = cotyledonParticles.length - 1; i >= 0; i--) { | |
| 283 | const shouldRemove = cotyledonParticles[i].update(); | |
| 284 | if (shouldRemove) { | |
| 285 | cotyledonParticles[i] = new CotyledonParticle("edge"); | |
| 286 | } else { | |
| 287 | cotyledonParticles[i].draw(); | |
| 288 | } | |
| 289 | } | |
| 290 | ||
| 291 | if (blobParticleTop.update(deltaTime)) { | |
| 292 | blobParticleTop = new BlobParticle(); | |
| 293 | } | |
| 294 | blobParticleTop.draw(); | |
| 295 | ||
| 296 | requestAnimationFrame(animate); | |
| 297 | } | |
| 298 | ||
| 299 | let clickedButton = false; | |
| 300 | const enterButton = panel.querySelector("button#enter")!; | |
| 301 | enterButton.addEventListener("click", () => { | |
| 302 | if (clickedButton) return; | |
| 303 | clickedButton = true; | |
| 304 | const first = panel.querySelector("#first")! as HTMLElement; | |
| 305 | const second = panel.querySelector("#captcha")! as HTMLElement; | |
| 306 | first.style.transition = second.style.transition = "opacity 1s ease-in-out"; | |
| 307 | first.style.opacity = "0"; | |
| 308 | second.style.opacity = "0"; | |
| 309 | setTimeout(() => { | |
| 310 | first.style.display = "none"; | |
| 311 | second.style.display = "block"; | |
| 312 | setTimeout(() => { | |
| 313 | second.style.opacity = "1"; | |
| 314 | ||
| 315 | document.getElementById("enter2")?.addEventListener("click", () => { | |
| 316 | second.style.opacity = "0"; | |
| 317 | let p = fetch("/file/cotyledon", { | |
| 318 | method: "POST", | |
| 319 | body: "I AGREE", | |
| 320 | }); | |
| 321 | setTimeout(() => { | |
| 322 | p.then(() => { | |
| 323 | location.reload(); | |
| 324 | }); | |
| 325 | }, 1000); | |
| 326 | }); | |
| 327 | }, 10); | |
| 328 | }, 1000); | |
| 329 | }); | |
| 330 | const imageButtons = panel.querySelectorAll(".image-grid button")!; | |
| 331 | imageButtons.forEach((button) => { | |
| 332 | let canClick = true; | |
| 333 | button.addEventListener("click", () => { | |
| 334 | if (!canClick) return; | |
| 335 | canClick = false; | |
| 336 | const image = button.querySelector("img")!; | |
| 337 | image.style.transition = "opacity 0.05s linear"; | |
| 338 | image.style.opacity = "0"; | |
| 339 | setTimeout(() => { | |
| 340 | image.style.transition = "opacity 2s linear"; | |
| 341 | let newNum; | |
| 342 | do { | |
| 343 | newNum = Math.floor(Math.random() * 18); // 0-17 inclusive | |
| 344 | } while ( | |
| 345 | document.querySelector(`img[src="/captcha/image/${newNum}.jpeg"]`) | |
| 346 | ); | |
| 347 | image.setAttribute("src", `/captcha/image/${newNum}.jpeg`); | |
| 348 | setTimeout(() => { | |
| 349 | image.style.opacity = "0.75"; | |
| 350 | canClick = true; | |
| 351 | }, 50); | |
| 352 | }, 300); | |
| 353 | }); | |
| 354 | }); | |
| 355 | ||
| 356 | // Start animation | |
| 357 | animate(performance.now()); | |
| 358 | return () => { | |
| 359 | window.removeEventListener("resize", resizeCanvas); | |
| 360 | running = false; | |
| 361 | }; | |
| 362 | }; |
src/file-viewer/static/captcha/0.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/0.jpeg differ |
src/file-viewer/static/captcha/1.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/1.jpeg differ |
src/file-viewer/static/captcha/10.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/10.jpeg differ |
src/file-viewer/static/captcha/11.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/11.jpeg differ |
src/file-viewer/static/captcha/12.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/12.jpeg differ |
src/file-viewer/static/captcha/13.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/13.jpeg differ |
src/file-viewer/static/captcha/14.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/14.jpeg differ |
src/file-viewer/static/captcha/15.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/15.jpeg differ |
src/file-viewer/static/captcha/16.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/16.jpeg differ |
src/file-viewer/static/captcha/17.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/17.jpeg differ |
src/file-viewer/static/captcha/2.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/2.jpeg differ |
src/file-viewer/static/captcha/3.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/3.jpeg differ |
src/file-viewer/static/captcha/4.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/4.jpeg differ |
src/file-viewer/static/captcha/5.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/5.jpeg differ |
src/file-viewer/static/captcha/6.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/6.jpeg differ |
src/file-viewer/static/captcha/7.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/7.jpeg differ |
src/file-viewer/static/captcha/8.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/8.jpeg differ |
src/file-viewer/static/captcha/9.jpeg created| Binary files /dev/null and b/src/file-viewer/static/captcha/9.jpeg differ |
src/file-viewer/views/canvas.astro created+12| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | --- | |
| 2 | import { useInlineScript } from "../framework/page-resources.ts"; | |
| 3 | ||
| 4 | const { script } = Astro.props; | |
| 5 | useInlineScript('canvas_' + script as any); | |
| 6 | useInlineScript('canvas_demo'); | |
| 7 | --- | |
| 8 | <canvas id="canvas" | |
| 9 | data-canvas={script} | |
| 10 | data-standalone="true" | |
| 11 | style="position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;" | |
| 12 | ></canvas> |
src/file-viewer/views/canvas.client.ts created+10| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | const canvas = document.querySelector("canvas"); | |
| 2 | const id = canvas?.getAttribute("data-canvas"); | |
| 3 | if (!id) { | |
| 4 | throw new Error("No canvas id found"); | |
| 5 | } | |
| 6 | const func = (window as any)["canvas_" + id]; | |
| 7 | if (!func) { | |
| 8 | throw new Error("No canvas function found"); | |
| 9 | } | |
| 10 | func(canvas, document.body); |
src/file-viewer/views/clofi.client.ts created+685| ... | ... | @@ -0,0 +1,685 @@ |
| 1 | const filesContainer = document.querySelector(".files")!; | |
| 2 | ||
| 3 | // push the scrollbar to the end of the view. | |
| 4 | let distanceFromEnd = 0; | |
| 5 | let fakeScrollToEnd: number | null = null; | |
| 6 | filesContainer.scrollLeft = filesContainer.scrollWidth - | |
| 7 | filesContainer.clientWidth; | |
| 8 | window.addEventListener("resize", () => { | |
| 9 | if (fakeScrollToEnd) return; | |
| 10 | const { scrollWidth, clientWidth } = filesContainer; | |
| 11 | if (scrollWidth <= clientWidth) { | |
| 12 | distanceFromEnd = 0; | |
| 13 | } else { | |
| 14 | filesContainer.scrollLeft = scrollWidth - clientWidth - distanceFromEnd; | |
| 15 | } | |
| 16 | }, { passive: false }); | |
| 17 | let lastScrollLeft = filesContainer.scrollLeft; | |
| 18 | filesContainer.addEventListener("scroll", (ev) => { | |
| 19 | const { scrollWidth, scrollLeft, clientWidth } = filesContainer; | |
| 20 | if (scrollWidth <= clientWidth) { | |
| 21 | distanceFromEnd = 0; | |
| 22 | } else { | |
| 23 | distanceFromEnd = scrollWidth - scrollLeft - clientWidth; | |
| 24 | if (fakeScrollToEnd && scrollLeft < lastScrollLeft) { | |
| 25 | cancelAnimationFrame(fakeScrollToEnd); | |
| 26 | fakeScrollToEnd = null; | |
| 27 | } | |
| 28 | } | |
| 29 | lastScrollLeft = scrollLeft; | |
| 30 | }); | |
| 31 | const lerp = (a: number, b: number, t: number) => a + t * (b - a); | |
| 32 | function snapToEnd(initScrollStart: number) { | |
| 33 | if (fakeScrollToEnd) { | |
| 34 | cancelAnimationFrame(fakeScrollToEnd); | |
| 35 | } | |
| 36 | let lastTime = performance.now(); | |
| 37 | let scrollStart = initScrollStart ?? filesContainer.scrollLeft; | |
| 38 | if (scrollStart >= filesContainer.scrollWidth) { | |
| 39 | return; | |
| 40 | } | |
| 41 | fakeScrollToEnd = requestAnimationFrame(function tick() { | |
| 42 | const now = performance.now(); | |
| 43 | const dt = now - lastTime; | |
| 44 | lastTime = now; | |
| 45 | ||
| 46 | const f = 1 - (0.98 ** dt); | |
| 47 | const { scrollWidth, clientWidth } = filesContainer; | |
| 48 | const target = Math.floor(scrollWidth - clientWidth); | |
| 49 | scrollStart = lerp(scrollStart, target, f); | |
| 50 | filesContainer.scrollLeft = scrollStart; | |
| 51 | if (Math.abs(scrollStart - target) < 0.2) { | |
| 52 | fakeScrollToEnd = null; | |
| 53 | } else { | |
| 54 | fakeScrollToEnd = requestAnimationFrame(tick); | |
| 55 | } | |
| 56 | }); | |
| 57 | } | |
| 58 | ||
| 59 | interface CacheEntry { | |
| 60 | html: string; | |
| 61 | expires: number; | |
| 62 | } | |
| 63 | // It is intentional that the existing page is NOT put into the cache. This is | |
| 64 | // just to avoid the differences between the partials and the full page | |
| 65 | // (subtle differences in activeFilename & isLast) | |
| 66 | let currentFile: string = location.pathname.replace(/^\/file/, ""); | |
| 67 | let navigationId = 0; | |
| 68 | const cache = new Map<string, CacheEntry>(); | |
| 69 | const prefetching = new Map<string, Promise<CacheEntry>>(); | |
| 70 | const fetchLater: string[] = []; | |
| 71 | let hasCotyledonSpeedbump = false; | |
| 72 | ||
| 73 | function prefetchEntry( | |
| 74 | filePath: string, | |
| 75 | lazy = false, | |
| 76 | ): void | Promise<CacheEntry> { | |
| 77 | console.assert(filePath[0] === "/", "filePath must start with a /"); | |
| 78 | const existingEntry = cache.get(filePath); | |
| 79 | if (existingEntry) { | |
| 80 | if (existingEntry.expires > Date.now()) { | |
| 81 | return; | |
| 82 | } | |
| 83 | cache.delete(filePath); | |
| 84 | } | |
| 85 | ||
| 86 | const existingPromise = prefetching.get(filePath); | |
| 87 | if (existingPromise) return existingPromise; | |
| 88 | ||
| 89 | // lazy prefetches should be limited | |
| 90 | if (lazy && prefetching.size > 2) { | |
| 91 | if (!fetchLater.includes(filePath)) { | |
| 92 | fetchLater.push(filePath); | |
| 93 | } | |
| 94 | return; | |
| 95 | } | |
| 96 | ||
| 97 | if (filePath === "/cotyledon") { | |
| 98 | ensureCanvasReady("cotyledon"); | |
| 99 | } | |
| 100 | ||
| 101 | const promise = fetch(`/file${filePath}$partial`) | |
| 102 | .then((resp) => { | |
| 103 | if (resp.status !== 200) { | |
| 104 | throw new Error(`Failed to fetch ${filePath}`); | |
| 105 | } | |
| 106 | return resp.text(); | |
| 107 | }) | |
| 108 | .then((html) => { | |
| 109 | const entry: CacheEntry = { html, expires: Date.now() + 1000 * 60 * 20 }; | |
| 110 | cache.set(filePath, entry); | |
| 111 | prefetching.delete(filePath); | |
| 112 | ||
| 113 | if (fetchLater.length > 0 && prefetching.size < 2) { | |
| 114 | const filePath = fetchLater.shift()!; | |
| 115 | prefetchEntry(filePath, false); | |
| 116 | } | |
| 117 | ||
| 118 | return entry; | |
| 119 | }); | |
| 120 | prefetching.set(filePath, promise); | |
| 121 | ||
| 122 | return promise; | |
| 123 | } | |
| 124 | ||
| 125 | function fetchEntry(filePath: string): Promise<CacheEntry> { | |
| 126 | const pf = prefetchEntry(filePath); | |
| 127 | if (pf) return pf; | |
| 128 | return Promise.resolve(cache.get(filePath)!); | |
| 129 | } | |
| 130 | ||
| 131 | type CanvasFn = (canvas: HTMLCanvasElement, panel: HTMLElement) => void; | |
| 132 | const fetchCanvas = new Map<string, Promise<CanvasFn>>(); | |
| 133 | function ensureCanvasReady(id: string): Promise<CanvasFn> { | |
| 134 | let func = (globalThis as any)["canvas_" + id]; | |
| 135 | if (func) return Promise.resolve(func); | |
| 136 | let promise = fetchCanvas.get(id); | |
| 137 | if (promise) return promise; | |
| 138 | let resolve: (c: CanvasFn) => void; | |
| 139 | promise = new Promise<CanvasFn>((r) => resolve = r); | |
| 140 | fetchCanvas.set(id, promise); | |
| 141 | const script = document.createElement("script"); | |
| 142 | script.src = `/js/canvas/${id}.js`; | |
| 143 | script.async = true; | |
| 144 | script.onload = () => { | |
| 145 | func = (globalThis as any)["canvas_" + id]; | |
| 146 | fetchCanvas.delete(id); | |
| 147 | if (func) { | |
| 148 | resolve(func); | |
| 149 | } else { | |
| 150 | console.error(`Error loading canvas script: ${id}`); | |
| 151 | } | |
| 152 | }; | |
| 153 | script.onerror = () => { | |
| 154 | console.error(`Error loading canvas script: ${id}`); | |
| 155 | }; | |
| 156 | document.head.appendChild(script); | |
| 157 | return promise; | |
| 158 | } | |
| 159 | ||
| 160 | interface Tooltip { | |
| 161 | tooltip: HTMLElement; | |
| 162 | top: number; | |
| 163 | index: number; | |
| 164 | } | |
| 165 | ||
| 166 | const panels: Panel[] = []; | |
| 167 | ||
| 168 | class Panel { | |
| 169 | index: number; | |
| 170 | panel: HTMLElement; | |
| 171 | content: HTMLElement; | |
| 172 | width: number; | |
| 173 | tooltips: Tooltip[] | null; | |
| 174 | linkFlags: number[] | null = null; | |
| 175 | basenames: string[] | null = null; | |
| 176 | unmountCanvas: (() => void) | null = null; | |
| 177 | ||
| 178 | constructor(panel: HTMLElement, index: number) { | |
| 179 | console.assert(panel.classList.contains("panel")); | |
| 180 | this.panel = panel; | |
| 181 | this.index = index; | |
| 182 | this.content = panel.querySelector(".content.primary")!; | |
| 183 | ||
| 184 | if (index === 0) { | |
| 185 | this.panel.classList.add("first"); | |
| 186 | } | |
| 187 | ||
| 188 | const canvas = panel.querySelector( | |
| 189 | "canvas[data-canvas]", | |
| 190 | ) as HTMLCanvasElement; | |
| 191 | if (canvas) { | |
| 192 | canvas.width = canvas.clientWidth; | |
| 193 | canvas.height = canvas.clientHeight; | |
| 194 | requestAnimationFrame(() => { | |
| 195 | canvas.width = canvas.clientWidth; | |
| 196 | canvas.height = canvas.clientHeight; | |
| 197 | }); | |
| 198 | const id = canvas.getAttribute("data-canvas")!; | |
| 199 | let cancelled = false; | |
| 200 | this.unmountCanvas = () => (cancelled = true); | |
| 201 | ensureCanvasReady(id).then((func) => { | |
| 202 | if (cancelled) return; | |
| 203 | this.unmountCanvas = func(canvas, panel) as any; | |
| 204 | }); | |
| 205 | if (id === "cotyledon") { | |
| 206 | filesContainer.classList.add("ctld-sb"); | |
| 207 | const group = document.querySelector( | |
| 208 | "[data-group='cotyledon']", | |
| 209 | )! as HTMLElement; | |
| 210 | if (group) { | |
| 211 | group.setAttribute("inert", "true"); | |
| 212 | group.style.opacity = "0.5"; | |
| 213 | group.style.pointerEvents = "none"; | |
| 214 | hasCotyledonSpeedbump = true; | |
| 215 | } | |
| 216 | } | |
| 217 | } | |
| 218 | ||
| 219 | const ul = panel.querySelector("ul"); | |
| 220 | if (!ul) { | |
| 221 | this.width = 0; | |
| 222 | this.linkFlags = null; | |
| 223 | this.basenames = null; | |
| 224 | this.tooltips = null; | |
| 225 | return; | |
| 226 | } | |
| 227 | this.width = ul.offsetWidth; | |
| 228 | const links = panel.querySelectorAll("ul > li > a.li"); | |
| 229 | ||
| 230 | this.content.setAttribute("data-clover", `${index}`); | |
| 231 | ||
| 232 | this.tooltips = []; | |
| 233 | this.linkFlags = new Array(links.length).fill(0); | |
| 234 | const basenames = this.basenames = new Array(links.length); | |
| 235 | for (let i = 0; i < links.length; i++) { | |
| 236 | const link = links[i] as HTMLAnchorElement; | |
| 237 | link.setAttribute("data-clover", `${index};${i}`); | |
| 238 | link.addEventListener("mouseenter", onLinkMouseEnter); | |
| 239 | basenames[i] = link.classList.contains("readme") | |
| 240 | ? "readme.txt" | |
| 241 | : link.getAttribute("href")!.split("/").pop()!; | |
| 242 | } | |
| 243 | } | |
| 244 | ||
| 245 | update(newActiveFile: string) { | |
| 246 | console.assert(newActiveFile); | |
| 247 | const p = this.panel; | |
| 248 | p.querySelector(".li.active")?.classList.remove("active"); | |
| 249 | const basenames = this.basenames; | |
| 250 | if (!basenames) return; | |
| 251 | const ul = p.querySelector("ul")!; | |
| 252 | this.width = ul.offsetWidth; | |
| 253 | console.assert(!newActiveFile.includes("/")); | |
| 254 | if (hasCotyledonSpeedbump) { | |
| 255 | newActiveFile = "__"; | |
| 256 | } | |
| 257 | ||
| 258 | const linkIndex = basenames.indexOf(newActiveFile); | |
| 259 | if (linkIndex === -1) return; | |
| 260 | const link = p.querySelector(`[data-clover="${this.index};${linkIndex}"]`)!; | |
| 261 | link.classList.add("active"); | |
| 262 | ||
| 263 | const newActiveTooltip = this.tooltips!.findIndex((t) => | |
| 264 | t.index === linkIndex | |
| 265 | ); | |
| 266 | for (let i = 0; i < this.tooltips!.length; i++) { | |
| 267 | const { tooltip } = this.tooltips![i]; | |
| 268 | tooltip.classList[i === newActiveTooltip ? "add" : "remove"]("active"); | |
| 269 | } | |
| 270 | } | |
| 271 | ||
| 272 | hideReadme() { | |
| 273 | this.panel.classList.remove("last"); | |
| 274 | const lastHsplit = this.panel.querySelector(".hsplit")!; | |
| 275 | if (lastHsplit) { | |
| 276 | lastHsplit.className = "hsplit-hidden"; | |
| 277 | const previousReadme = this.panel.querySelector( | |
| 278 | ".content.readme", | |
| 279 | )! as HTMLElement; | |
| 280 | console.assert(previousReadme, "No readme found"); | |
| 281 | previousReadme.style.display = "none"; | |
| 282 | } | |
| 283 | } | |
| 284 | ||
| 285 | showReadme() { | |
| 286 | this.panel.classList.add("last"); | |
| 287 | const hsplit = this.panel.querySelector(".hsplit-hidden")!; | |
| 288 | if (hsplit) { | |
| 289 | hsplit.className = "hsplit"; | |
| 290 | const previousReadme = this.panel.querySelector( | |
| 291 | ".content.readme", | |
| 292 | )! as HTMLElement; | |
| 293 | console.assert(previousReadme, "No readme found"); | |
| 294 | previousReadme.style.display = "block"; | |
| 295 | } | |
| 296 | } | |
| 297 | ||
| 298 | destroy() { | |
| 299 | if (this.unmountCanvas) { | |
| 300 | this.unmountCanvas(); | |
| 301 | } | |
| 302 | this.panel.querySelectorAll("audio,video").forEach((el) => | |
| 303 | (el as HTMLVideoElement | HTMLAudioElement).pause() | |
| 304 | ); | |
| 305 | this.panel.remove(); | |
| 306 | } | |
| 307 | } | |
| 308 | ||
| 309 | function onContentScrollForTooltip(ev: Event) { | |
| 310 | const content = ev.target as HTMLElement; | |
| 311 | const panelIndex = parseInt(content.getAttribute("data-clover")!); | |
| 312 | const panel = panels[panelIndex]; | |
| 313 | const scrollTop = content.scrollTop; | |
| 314 | for (const tooltip of panel.tooltips!) { | |
| 315 | tooltip.tooltip.style.transform = tooltipTransform(tooltip.top, scrollTop); | |
| 316 | } | |
| 317 | } | |
| 318 | ||
| 319 | function tooltipTransform(offsetTop: number, scrollTop: number) { | |
| 320 | return `translateY(${offsetTop - scrollTop}px)`; | |
| 321 | } | |
| 322 | ||
| 323 | let activeTooltip: HTMLElement | null = null; | |
| 324 | let activeTooltipCancel: (() => void) | null = null; | |
| 325 | ||
| 326 | function onLinkMouseEnter(e: MouseEvent) { | |
| 327 | const link = e.target as HTMLAnchorElement; | |
| 328 | console.assert(link.classList.contains("li")); | |
| 329 | const attr = link.getAttribute("data-clover")!; | |
| 330 | console.assert(attr && attr.match(/^\d+;\d+$/)); | |
| 331 | const [panelIndex, linkIndex] = attr.split(";").map(Number); | |
| 332 | const panel = panels[panelIndex]; | |
| 333 | console.assert(panel, `panel${panelIndex}`); | |
| 334 | const linkWidths = panel.linkFlags; | |
| 335 | let filePath: string | null = null; | |
| 336 | if (linkWidths![linkIndex] == 0) { | |
| 337 | // filter only links that truncate their text | |
| 338 | // insane discovery: while this is recommended online, it doesn't | |
| 339 | // account for the `...` itself, meaning when just the file size | |
| 340 | // is truncated, a tooltip won't be available. | |
| 341 | // > if (link.scrollWidth <= link.offsetWidth) continue; | |
| 342 | const lastChild = link.lastElementChild! as HTMLElement; | |
| 343 | linkWidths![linkIndex] = lastChild?.offsetLeft !== undefined | |
| 344 | ? (lastChild.offsetLeft + lastChild.offsetWidth) ^ 0 | |
| 345 | : 1; | |
| 346 | ||
| 347 | const href = (link as HTMLAnchorElement).getAttribute("href") ?? null; | |
| 348 | filePath = href?.startsWith("/file") ? href.slice(5) || "/" : null; | |
| 349 | } | |
| 350 | if (filePath) { | |
| 351 | prefetchEntry(filePath, true); | |
| 352 | } | |
| 353 | if (linkWidths![linkIndex] > panel.width) { | |
| 354 | if (activeTooltipCancel) { | |
| 355 | activeTooltipCancel(); | |
| 356 | activeTooltipCancel = null; | |
| 357 | } | |
| 358 | maybeBuildTooltipUi(link, linkIndex, panel); | |
| 359 | } | |
| 360 | } | |
| 361 | ||
| 362 | function cancelOnMouseLeave() { | |
| 363 | activeTooltipCancel!(); | |
| 364 | activeTooltipCancel = null; | |
| 365 | } | |
| 366 | ||
| 367 | function maybeBuildTooltipUi( | |
| 368 | link: HTMLAnchorElement, | |
| 369 | linkIndex: number, | |
| 370 | panel: Panel, | |
| 371 | ) { | |
| 372 | if (activeTooltip) { | |
| 373 | activeTooltip.remove(); | |
| 374 | buildTooltipUi(link, linkIndex, panel, false); | |
| 375 | } else { | |
| 376 | link.addEventListener("mouseleave", cancelOnMouseLeave); | |
| 377 | const timer = setTimeout(() => { | |
| 378 | activeTooltipCancel = null; | |
| 379 | link.removeEventListener("mouseleave", cancelOnMouseLeave); | |
| 380 | buildTooltipUi(link, linkIndex, panel, true); | |
| 381 | }, 150); | |
| 382 | activeTooltipCancel = () => { | |
| 383 | clearTimeout(timer); | |
| 384 | link.removeEventListener("mouseleave", cancelOnMouseLeave); | |
| 385 | }; | |
| 386 | } | |
| 387 | } | |
| 388 | ||
| 389 | function buildTooltipUi( | |
| 390 | link: HTMLAnchorElement, | |
| 391 | linkIndex: number, | |
| 392 | panel: Panel, | |
| 393 | animateIn: boolean, | |
| 394 | ) { | |
| 395 | const tooltip = activeTooltip = document.createElement("div"); | |
| 396 | tooltip.classList.add("tooltip"); | |
| 397 | if (link.classList.contains("active")) { | |
| 398 | tooltip.classList.add("active"); | |
| 399 | } | |
| 400 | if (animateIn) { | |
| 401 | tooltip.style.animation = "fadeIn .1s ease-out forwards"; | |
| 402 | } | |
| 403 | tooltip.innerHTML = link.innerHTML; | |
| 404 | const top = link.parentElement!.offsetTop; | |
| 405 | tooltip.style.transform = tooltipTransform(top, panel.content.scrollTop); | |
| 406 | panel.panel.appendChild(tooltip); | |
| 407 | panel.tooltips!.push({ tooltip, top, index: linkIndex }); | |
| 408 | if (panel.tooltips!.length === 1) { | |
| 409 | panel.content.addEventListener("scroll", onContentScrollForTooltip); | |
| 410 | } | |
| 411 | ||
| 412 | link.addEventListener("mouseleave", (e) => { | |
| 413 | tooltip.style.animation = "fadeIn .3s .2s ease reverse forwards"; | |
| 414 | const timer = setTimeout(() => { | |
| 415 | activeTooltipCancel = null; | |
| 416 | tooltip.remove(); | |
| 417 | activeTooltip = null; | |
| 418 | ||
| 419 | const tt = panel.tooltips = panel.tooltips!.filter((t) => | |
| 420 | t.tooltip !== tooltip | |
| 421 | ); | |
| 422 | if (tt.length === 0) { | |
| 423 | panel.content.removeEventListener("scroll", onContentScrollForTooltip); | |
| 424 | } | |
| 425 | }, 500); | |
| 426 | activeTooltipCancel = () => { | |
| 427 | clearTimeout(timer); | |
| 428 | }; | |
| 429 | }, { once: true }); | |
| 430 | } | |
| 431 | ||
| 432 | function addPanel(panel: HTMLElement, activeFile?: string) { | |
| 433 | const p = new Panel(panel, panels.length); | |
| 434 | panels.push(p); | |
| 435 | if (activeFile) { | |
| 436 | p.update(activeFile); | |
| 437 | } | |
| 438 | } | |
| 439 | ||
| 440 | async function maybeInterceptClick(event: MouseEvent, element: HTMLElement) { | |
| 441 | const href = (element as HTMLAnchorElement).href; | |
| 442 | const url = new URL(href, window.location.origin); | |
| 443 | if (maybeNavigate(url, true)) { | |
| 444 | event.preventDefault(); | |
| 445 | } | |
| 446 | } | |
| 447 | ||
| 448 | type URLLike = Pick<URL, "pathname" | "origin" | "search">; | |
| 449 | function maybeNavigate(url: URLLike, pushState: boolean) { | |
| 450 | if (!url.pathname.startsWith("/file")) return false; | |
| 451 | if (url.origin !== location.origin) return false; | |
| 452 | if (url.search !== "") return false; | |
| 453 | navigate(url.pathname, pushState); | |
| 454 | return true; | |
| 455 | } | |
| 456 | ||
| 457 | async function navigate(pathname: string, pushState: boolean) { | |
| 458 | const filePath = pathname.slice(5) || "/"; | |
| 459 | ||
| 460 | const currentNavigationId = ++navigationId; | |
| 461 | ||
| 462 | if (filePath === currentFile) return; | |
| 463 | ||
| 464 | const currentSplit = splitSlashes(currentFile); | |
| 465 | const filePathSplit = splitSlashes(filePath); | |
| 466 | ||
| 467 | // Find the first index where the currentSplit and filePathSplit differ, then | |
| 468 | // add all the paths after that to panelsToFetch | |
| 469 | let deleteCount = Math.max(currentSplit.length - filePathSplit.length, 0); | |
| 470 | let appendPanels = []; | |
| 471 | for (let i = -1; i < filePathSplit.length; i++) { | |
| 472 | if (currentSplit[i] !== filePathSplit[i]) { | |
| 473 | deleteCount = currentSplit.length - i; | |
| 474 | appendPanels = []; | |
| 475 | for (let j = i; j < filePathSplit.length; j++) { | |
| 476 | appendPanels.push("/" + filePathSplit.slice(0, j + 1).join("/")); | |
| 477 | } | |
| 478 | break; | |
| 479 | } | |
| 480 | } | |
| 481 | ||
| 482 | // Before fetching, prepare to mark the panels as loading | |
| 483 | const loadingPanels = new Set<HTMLElement>(); | |
| 484 | { | |
| 485 | let lastPanel = filesContainer.lastElementChild; | |
| 486 | let toDelete = deleteCount; | |
| 487 | while (lastPanel && toDelete > 0) { | |
| 488 | lastPanel.querySelectorAll(".content").forEach((content) => { | |
| 489 | loadingPanels.add(content as HTMLElement); | |
| 490 | }); | |
| 491 | lastPanel = lastPanel.previousElementSibling; | |
| 492 | toDelete--; | |
| 493 | } | |
| 494 | if (deleteCount == 0) { | |
| 495 | const last = filesContainer.lastElementChild!; | |
| 496 | console.assert(last, "Last panel is not a panel"); | |
| 497 | ||
| 498 | const readme = last.querySelector(".content.readme")!; | |
| 499 | if (readme) { | |
| 500 | loadingPanels.add(readme as HTMLElement); | |
| 501 | } | |
| 502 | } | |
| 503 | const folderWithReadme = panels[panels.length - deleteCount - 1]; | |
| 504 | const readmes = folderWithReadme.panel.querySelectorAll(".readme"); | |
| 505 | if (readmes.length === 1) { | |
| 506 | deleteCount += 1; | |
| 507 | appendPanels.unshift( | |
| 508 | "/" + currentSplit.slice(0, panels.length - deleteCount).join("/"), | |
| 509 | ); | |
| 510 | } | |
| 511 | } | |
| 512 | ||
| 513 | console.assert( | |
| 514 | deleteCount > 0 || appendPanels.length > 0, | |
| 515 | "No difference found", | |
| 516 | ); | |
| 517 | let timer = loadingPanels.size > 0 | |
| 518 | ? setTimeout(() => { | |
| 519 | if (navigationId !== currentNavigationId) { | |
| 520 | return; // cancelled | |
| 521 | } | |
| 522 | document.querySelectorAll(".loading") | |
| 523 | .forEach((thing) => thing.classList.remove("loading")); | |
| 524 | for (const panel of loadingPanels) { | |
| 525 | panel.classList.add("loading"); | |
| 526 | } | |
| 527 | timer = null; | |
| 528 | }, 100) | |
| 529 | : null; | |
| 530 | ||
| 531 | // Fetch the data | |
| 532 | let appendEntries; | |
| 533 | try { | |
| 534 | appendEntries = await Promise.all(appendPanels.map(fetchEntry)); | |
| 535 | } catch (e) { | |
| 536 | console.error("error", e); | |
| 537 | if (navigationId === currentNavigationId) { | |
| 538 | console.error(e); | |
| 539 | location.href = "/file" + (filePath.length > 1 ? filePath : ""); | |
| 540 | } | |
| 541 | return; // cancelled | |
| 542 | } | |
| 543 | if (navigationId !== currentNavigationId) { | |
| 544 | return; // cancelled | |
| 545 | } | |
| 546 | if (timer) clearTimeout(timer); | |
| 547 | else {for (const panel of loadingPanels) { | |
| 548 | panel.classList.remove("loading"); | |
| 549 | }} | |
| 550 | currentFile = filePath; | |
| 551 | ||
| 552 | if (pushState) { | |
| 553 | history.pushState(null, "", `/file${filePath.length > 1 ? filePath : ""}`); | |
| 554 | } | |
| 555 | ||
| 556 | const startScrollleft = filesContainer.scrollLeft; | |
| 557 | ||
| 558 | if (currentSplit[0] !== filePathSplit[0]) { | |
| 559 | if (currentSplit[0] === "cotyledon") { | |
| 560 | filesContainer.classList.remove("ctld-et", "ctld-sb"); | |
| 561 | } | |
| 562 | if (parseInt(currentSplit[0]) < 2025) { | |
| 563 | filesContainer.classList.remove("ctld", "ctld-" + currentSplit[0]); | |
| 564 | } | |
| 565 | if (parseInt(filePathSplit[0]) < 2025) { | |
| 566 | filesContainer.classList.add("ctld", "ctld-" + filePathSplit[0]); | |
| 567 | } | |
| 568 | } | |
| 569 | ||
| 570 | // Make the last panel into a regular panel | |
| 571 | panels[panels.length - 1].hideReadme(); | |
| 572 | ||
| 573 | // Delete the panels that are no longer needed | |
| 574 | for (let i = 0; i < deleteCount; i++) { | |
| 575 | const panel = panels.pop(); | |
| 576 | console.assert(panel, "No panel found"); | |
| 577 | if (panel) { | |
| 578 | panel.destroy(); | |
| 579 | } | |
| 580 | } | |
| 581 | ||
| 582 | // Update the last panel | |
| 583 | const currentFileSplit = splitSlashes(currentFile); | |
| 584 | const activeFile = currentFileSplit[panels.length - 1]; | |
| 585 | panels[panels.length - 1]?.update(activeFile ?? "readme.txt"); | |
| 586 | ||
| 587 | // Insert the new panels | |
| 588 | if (appendEntries.length > 0) { | |
| 589 | let lastNewPanel: HTMLElement | null = null; | |
| 590 | for (const entry of appendEntries) { | |
| 591 | const panel = document.createElement("div"); | |
| 592 | panel.classList.add("panel"); | |
| 593 | if (panels.length >= 2) { | |
| 594 | panel.classList.add("fade-slide-in"); | |
| 595 | } | |
| 596 | panel.innerHTML = entry.html; | |
| 597 | filesContainer.appendChild(panel); | |
| 598 | lastNewPanel = panel; | |
| 599 | const current = currentFileSplit[panels.length]; | |
| 600 | addPanel(panel, current ?? "readme.txt"); | |
| 601 | if (current) { | |
| 602 | panels[panels.length - 1].hideReadme(); | |
| 603 | } | |
| 604 | } | |
| 605 | console.assert(lastNewPanel, "No last new panel found"); | |
| 606 | lastNewPanel!.classList.add("last"); | |
| 607 | ||
| 608 | // Automatically play videos | |
| 609 | const video = lastNewPanel!.querySelector("video") || | |
| 610 | lastNewPanel!.querySelector("audio"); | |
| 611 | if (video) { | |
| 612 | const timer = setTimeout(() => { | |
| 613 | video.play(); | |
| 614 | }, 50); | |
| 615 | video.play().then(() => { | |
| 616 | clearTimeout(timer); | |
| 617 | }, () => {}); | |
| 618 | } | |
| 619 | } else { | |
| 620 | // Make the last panel the .last panel | |
| 621 | const lastPanel = filesContainer.lastElementChild!; | |
| 622 | console.assert(lastPanel, "No last panel found"); | |
| 623 | lastPanel.classList.add("last"); | |
| 624 | panels[panels.length - 1].showReadme(); | |
| 625 | } | |
| 626 | ||
| 627 | updateWidths(); | |
| 628 | filesContainer.scrollLeft = startScrollleft; | |
| 629 | requestAnimationFrame(() => { | |
| 630 | updateWidths(); | |
| 631 | filesContainer.scrollLeft = startScrollleft; | |
| 632 | snapToEnd(startScrollleft); | |
| 633 | }); | |
| 634 | } | |
| 635 | ||
| 636 | function updateWidths() { | |
| 637 | for (const panel of panels.slice(-2)) { | |
| 638 | const ul = panel.panel.querySelector("ul")!; | |
| 639 | if (ul) { | |
| 640 | panel.width = ul.offsetWidth; | |
| 641 | } | |
| 642 | } | |
| 643 | } | |
| 644 | ||
| 645 | function splitSlashes(path: string) { | |
| 646 | if (path.length <= 1) return []; | |
| 647 | return path.slice(1).split("/"); | |
| 648 | } | |
| 649 | ||
| 650 | requestAnimationFrame(() => { | |
| 651 | document.querySelectorAll(".panel").forEach((panel) => | |
| 652 | addPanel(panel as HTMLElement) | |
| 653 | ); | |
| 654 | (document.querySelector(".files")! as HTMLElement).addEventListener( | |
| 655 | "click", | |
| 656 | (event, element = event.target as HTMLAnchorElement) => { | |
| 657 | if ( | |
| 658 | !(event.button || | |
| 659 | event.which != 1 || | |
| 660 | event.metaKey || | |
| 661 | event.ctrlKey || | |
| 662 | event.shiftKey || | |
| 663 | event.altKey || | |
| 664 | event.defaultPrevented) | |
| 665 | ) { | |
| 666 | while (element && element !== document.body) { | |
| 667 | if ( | |
| 668 | element.nodeName.toUpperCase() === "A" | |
| 669 | ) { | |
| 670 | maybeInterceptClick(event, element); | |
| 671 | return; | |
| 672 | } | |
| 673 | element = | |
| 674 | (element.assignedSlot ?? element.parentNode) as HTMLAnchorElement; | |
| 675 | } | |
| 676 | } | |
| 677 | }, | |
| 678 | ); | |
| 679 | }); | |
| 680 | ||
| 681 | window.addEventListener("popstate", (event) => { | |
| 682 | if (!maybeNavigate(window.location, false)) { | |
| 683 | location.reload(); | |
| 684 | } | |
| 685 | }); |
src/file-viewer/views/clofi.css created+798| ... | ... | @@ -0,0 +1,798 @@ |
| 1 | html, body { | |
| 2 | height: 100vh; | |
| 3 | width: 100vw; | |
| 4 | overflow: hidden; | |
| 5 | --dark-bg: #27143f; | |
| 6 | --bar: #804fc9; | |
| 7 | } | |
| 8 | @font-face { | |
| 9 | font-family: c1; | |
| 10 | src: url(/cydn_header.woff2); | |
| 11 | font-variation-settings: "wght" 50; | |
| 12 | } | |
| 13 | body { | |
| 14 | display: grid; | |
| 15 | background-color: var(--dark-bg); | |
| 16 | } | |
| 17 | .files { | |
| 18 | background-color: var(--bg); | |
| 19 | --scroll-bg: var(--dark-bg); | |
| 20 | display: flex; | |
| 21 | flex-direction: row; | |
| 22 | overflow-x: scroll; | |
| 23 | overflow-y: hidden; | |
| 24 | min-height: 100vh; | |
| 25 | border-bottom: 0; | |
| 26 | box-sizing: border-box; | |
| 27 | --tooltip: lch(from var(--bg) calc(l - 2) c h); | |
| 28 | --muted: lch(from var(--dark-bg) 60 20 h / 0.8); | |
| 29 | z-index: 1; | |
| 30 | } | |
| 31 | .ctld { | |
| 32 | --c: 4.5; | |
| 33 | --bg: lch(13 var(--c) var(--hue)); | |
| 34 | --dark-bg: lch(10 var(--c) var(--hue)); | |
| 35 | --bar: lch(90 96 var(--hue)); | |
| 36 | --primary: lch(90 96 var(--hue)); | |
| 37 | } | |
| 38 | .ctld-2017 { | |
| 39 | --hue: 120; | |
| 40 | } | |
| 41 | .ctld-2018 { | |
| 42 | --hue: 40; | |
| 43 | } | |
| 44 | .ctld-2019 { | |
| 45 | --hue: 290; | |
| 46 | --c: 10; | |
| 47 | } | |
| 48 | .ctld-2020 { | |
| 49 | --hue: 220; | |
| 50 | --c: 10; | |
| 51 | } | |
| 52 | .ctld-2021 { | |
| 53 | --hue: 70; | |
| 54 | --c: 20; | |
| 55 | } | |
| 56 | .ctld-2022 { | |
| 57 | --hue: 150; | |
| 58 | --c: 20; | |
| 59 | } | |
| 60 | .ctld-2023 { | |
| 61 | --hue: 5; | |
| 62 | --c: 10; | |
| 63 | } | |
| 64 | .ctld-et { | |
| 65 | --hue: 150; | |
| 66 | --c: 0; | |
| 67 | } | |
| 68 | .ctld-2024, .ctld-sb { | |
| 69 | --bg: #191919; | |
| 70 | --dark-bg: #101010; | |
| 71 | --fg: #a7a7a7; | |
| 72 | --bar: white; | |
| 73 | --primary: white; | |
| 74 | .active { | |
| 75 | font-weight: bold; | |
| 76 | } | |
| 77 | } | |
| 78 | .ctld-2024 { | |
| 79 | --dark-bg: #00000080; | |
| 80 | --scroll-bg: #0000004d; | |
| 81 | .content:not(.file-view-image):not(.file-view-video):not(.file-view-audio) { | |
| 82 | background-color: #00000050; | |
| 83 | } | |
| 84 | } | |
| 85 | .ctld-2024 .convo { | |
| 86 | --primary: #ff6c5c; | |
| 87 | } | |
| 88 | .files::-webkit-scrollbar { | |
| 89 | height: 24px; | |
| 90 | background-color: transparent; | |
| 91 | } | |
| 92 | .files::-webkit-scrollbar-thumb { | |
| 93 | background-color: var(--bar); | |
| 94 | border: 6px solid var(--dark-bg); | |
| 95 | border-radius: 12px; | |
| 96 | } | |
| 97 | .files::-webkit-scrollbar-track { | |
| 98 | background-color: var(--dark-bg); | |
| 99 | } | |
| 100 | .files .panel { | |
| 101 | position: relative; | |
| 102 | flex: 0 0 auto; | |
| 103 | min-width: 235px; | |
| 104 | max-width: 235px; | |
| 105 | height: 100%; | |
| 106 | min-height: calc(100vh - 59px); /* safari hack */ | |
| 107 | display: flex; | |
| 108 | flex-direction: column; | |
| 109 | } | |
| 110 | .files .panel div.header { | |
| 111 | display: none; | |
| 112 | } | |
| 113 | .files .panel .header { | |
| 114 | white-space: nowrap; | |
| 115 | font-size: 1rem; | |
| 116 | font-weight: bold; | |
| 117 | background-color: var(--dark-bg); | |
| 118 | padding: 0.5rem 0.5rem 0.5rem 0.25rem; | |
| 119 | color: var(--primary); | |
| 120 | --color: var(--primary); | |
| 121 | overflow: hidden; | |
| 122 | text-overflow: ellipsis; | |
| 123 | flex-shrink: 0; | |
| 124 | } | |
| 125 | .actions { | |
| 126 | display: flex; | |
| 127 | gap: 0.5rem; | |
| 128 | height: 19px; | |
| 129 | margin-right: 4px; | |
| 130 | & > * { | |
| 131 | position: relative; | |
| 132 | width: 22px; | |
| 133 | display: flex; | |
| 134 | &::before { | |
| 135 | position: absolute; | |
| 136 | top: -3px; | |
| 137 | width: 24px; | |
| 138 | height: 24px; | |
| 139 | } | |
| 140 | } | |
| 141 | } | |
| 142 | .files .panel .content { | |
| 143 | position: relative; | |
| 144 | flex: 1; | |
| 145 | overflow-y: scroll; | |
| 146 | overflow-x: hidden; | |
| 147 | } | |
| 148 | a.header { | |
| 149 | display: flex; | |
| 150 | } | |
| 151 | .files .panel.last { | |
| 152 | min-width: min(calc(100vw - 255px), calc(90% - 20rem)); | |
| 153 | max-width: none; | |
| 154 | div.header { | |
| 155 | display: flex; | |
| 156 | } | |
| 157 | a.header { | |
| 158 | display: none; | |
| 159 | } | |
| 160 | } | |
| 161 | .files .panel.first:not(.last) { | |
| 162 | max-width: 216px; | |
| 163 | min-width: 216px; | |
| 164 | } | |
| 165 | .files .panel.first .content:not(.readme) { | |
| 166 | max-width: 200px; | |
| 167 | min-width: 200px; | |
| 168 | } | |
| 169 | .panel:first-child { | |
| 170 | border-left: 16px solid var(--dark-bg); | |
| 171 | } | |
| 172 | .panel:last-child { | |
| 173 | flex: 1; | |
| 174 | } | |
| 175 | .files .panel .hsplit { | |
| 176 | display: flex; | |
| 177 | flex-direction: row-reverse; | |
| 178 | height: calc(100vh - 59px); | |
| 179 | .content { | |
| 180 | min-width: 235px; | |
| 181 | flex: 0 0 auto; | |
| 182 | } | |
| 183 | .content.readme { | |
| 184 | min-width: 300px; | |
| 185 | flex: 1; | |
| 186 | } | |
| 187 | } | |
| 188 | .content { | |
| 189 | height: calc(100vh - 59px); | |
| 190 | } | |
| 191 | .files .panel ul { | |
| 192 | white-space: nowrap; | |
| 193 | list-style-type: none; | |
| 194 | display: flex; | |
| 195 | flex-direction: column; | |
| 196 | &, li { | |
| 197 | margin: 0; | |
| 198 | padding: 0; | |
| 199 | } | |
| 200 | li a { | |
| 201 | &:active { | |
| 202 | --muted: red !important; | |
| 203 | } | |
| 204 | position: relative; | |
| 205 | display: block; | |
| 206 | text-overflow: ellipsis; | |
| 207 | font-size: 0.5rem; | |
| 208 | overflow: hidden; | |
| 209 | color: var(--muted); | |
| 210 | & > * { | |
| 211 | color: var(--fg); | |
| 212 | font-size: 1rem; | |
| 213 | } | |
| 214 | &:hover:not(.active) { | |
| 215 | background-color: rgb(from var(--dark-bg) r g b / 0.5); | |
| 216 | } | |
| 217 | &:active { | |
| 218 | background-color: var(--dark-bg) !important; | |
| 219 | color: red; | |
| 220 | date { | |
| 221 | color: red; | |
| 222 | } | |
| 223 | } | |
| 224 | } | |
| 225 | } | |
| 226 | .li, .tooltip { | |
| 227 | padding: 0.5rem 0.2rem 0.5rem 0.2rem; | |
| 228 | color: var(--fg); | |
| 229 | &.active { | |
| 230 | background-color: var(--dark-bg); | |
| 231 | color: var(--primary); | |
| 232 | --color: var(--primary); | |
| 233 | --muted: var(--primary); | |
| 234 | } | |
| 235 | date { | |
| 236 | color: var(--muted); | |
| 237 | letter-spacing: -0.08em; | |
| 238 | padding-right: 0.3rem; | |
| 239 | transform: scaleX(0.95); | |
| 240 | display: inline-block; | |
| 241 | &.inline { | |
| 242 | padding-right: 0; | |
| 243 | } | |
| 244 | } | |
| 245 | } | |
| 246 | pre { | |
| 247 | padding: 1rem; | |
| 248 | font-size: 1rem; | |
| 249 | } | |
| 250 | .files .panel ul a.readme { | |
| 251 | display: flex; | |
| 252 | font-weight: bold; | |
| 253 | align-items: center; | |
| 254 | color: #91fff2; | |
| 255 | &.active { | |
| 256 | --muted: #91fff2; | |
| 257 | } | |
| 258 | .line { | |
| 259 | display: block; | |
| 260 | width: 58px; | |
| 261 | margin-right: 8px; | |
| 262 | margin-left: 2px; | |
| 263 | height: 2px; | |
| 264 | background-color: var(--muted); | |
| 265 | } | |
| 266 | } | |
| 267 | .panel .content::-webkit-scrollbar { | |
| 268 | width: 10px; | |
| 269 | } | |
| 270 | .panel .content::-webkit-scrollbar-thumb { | |
| 271 | background-color: var(--bar); | |
| 272 | border: 2px solid var(--dark-bg); | |
| 273 | border-radius: 8px; | |
| 274 | } | |
| 275 | .panel .content::-webkit-scrollbar-track { | |
| 276 | background-color: var(--scroll-bg); | |
| 277 | } | |
| 278 | .tooltip { | |
| 279 | position: absolute; | |
| 280 | left: 0; | |
| 281 | top: 35px; | |
| 282 | background-color: var(--tooltip); | |
| 283 | pointer-events: none; | |
| 284 | padding-right: 1rem; | |
| 285 | border-bottom-right-radius: 8px; | |
| 286 | border-top-right-radius: 8px; | |
| 287 | white-space: nowrap; | |
| 288 | z-index: 100; | |
| 289 | } | |
| 290 | h3 { | |
| 291 | padding-left: 0.25rem; | |
| 292 | font-size: 1rem; | |
| 293 | margin: 0; | |
| 294 | margin-top: 8px; | |
| 295 | margin-bottom: 2px; | |
| 296 | text-decoration: underline; | |
| 297 | text-underline-offset: 1px; | |
| 298 | text-decoration-thickness: 2px; | |
| 299 | } | |
| 300 | @keyframes fadeIn { | |
| 301 | from { | |
| 302 | opacity: 0; | |
| 303 | } | |
| 304 | to { | |
| 305 | opacity: 1; | |
| 306 | } | |
| 307 | } | |
| 308 | .file-view { | |
| 309 | display: flex; | |
| 310 | flex-direction: column; | |
| 311 | } | |
| 312 | .bold-slash { | |
| 313 | font-weight: bold; | |
| 314 | text-shadow: 1px 0 0 var(--color); | |
| 315 | } | |
| 316 | .size { | |
| 317 | display: inline-block; | |
| 318 | font-size: 0.9rem; | |
| 319 | color: var(--muted); | |
| 320 | padding-left: 0.4rem; | |
| 321 | } | |
| 322 | .first .size { | |
| 323 | display: inline-block; | |
| 324 | font-size: 0.7rem; | |
| 325 | padding-left: 0.2rem; | |
| 326 | transform: translateY(1px); | |
| 327 | } | |
| 328 | .mobile-back { | |
| 329 | display: none; | |
| 330 | } | |
| 331 | .actions .download::before { | |
| 332 | content: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiIGZpbGw9IiNmZmZmZmYiPjxwYXRoIGQ9Ik00ODAtMzIwIDI4MC01MjBsNTYtNTggMTA0IDEwNHYtMzI2aDgwdjMyNmwxMDQtMTA0IDU2IDU4LTIwMCAyMDBaTTI0MC0xNjBxLTMzIDAtNTYuNS0yMy41VDE2MC0yNDB2LTEyMGg4MHYxMjBoNDgwdi0xMjBoODB2MTIwcTAgMzMtMjMuNSA1Ni41VDcyMC0xNjBIMjQwWiIvPjwvc3ZnPg==); | |
| 333 | transform: scale(1.2); | |
| 334 | } | |
| 335 | .actions .full-screen::before { | |
| 336 | content: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMTIwLTEyMHYtMzIwaDgwdjE4NGw1MDQtNTA0SDUyMHYtODBoMzIwdjMyMGgtODB2LTE4NEwyNTYtMjAwaDE4NHY4MEgxMjBaIi8+PC9zdmc+); | |
| 337 | } | |
| 338 | .ico { | |
| 339 | display: inline-block; | |
| 340 | height: 19px; | |
| 341 | position: relative; | |
| 342 | width: 19px; | |
| 343 | margin-right: 2px; | |
| 344 | &::before { | |
| 345 | content: " "; | |
| 346 | position: absolute; | |
| 347 | transform: translate(-2px, 3px); | |
| 348 | width: 20px; | |
| 349 | height: 20px; | |
| 350 | background-color: var(--muted); | |
| 351 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMjU5LjcyLTY0cS00MC40NSAwLTY5LjA4LTI4Ljc5UTE2Mi0xMjEuNTggMTYyLTE2MnYtNjM2cTAtNDAuNDIgMjguNzktNjkuMjFRMjE5LjU3LTg5NiAyNjAtODk2aDMwNGwyMzQgMjMzdjUwMXEwIDQwLjQyLTI4LjggNjkuMjFRNzQwLjQtNjQgNjk5Ljk2LTY0SDI1OS43MlpNNTA0LTYwMmgxOTZMNTA0LTc5OHYxOTZaIi8+PC9zdmc+); | |
| 352 | } | |
| 353 | } | |
| 354 | .header .ico::before { | |
| 355 | transform: translate(-2px, 0); | |
| 356 | } | |
| 357 | /* file icons alter the mask image. 24x24 */ | |
| 358 | .ico-dir::before { | |
| 359 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMTYzLjA0LTEyMC4wOXEtNTEuMyAwLTg3LjEyLTM1LjgzLTM1LjgzLTM1LjgyLTM1LjgzLTg3LjEydi00NzMuOTJxMC01MS4zIDM1LjgzLTg3LjEyIDM1LjgyLTM1LjgzIDg3LjEyLTM1LjgzaDIxMS41M0w0ODAtNzM0LjQ4aDMxNi45NnE1MS4zIDAgODcuMTIgMzUuODMgMzUuODMgMzUuODMgMzUuODMgODcuMTN2MzY4LjQ4cTAgNTEuMy0zNS44MyA4Ny4xMi0zNS44MiAzNS44My04Ny4xMiAzNS44M0gxNjMuMDRabTAtMTIyLjk1aDYzMy45MnYtMzY4LjQ4SDQyOS4yMkwzMjMuNzgtNzE2Ljk2SDE2My4wNHY0NzMuOTJabTAgMHYtNDczLjkyIDQ3My45MloiLz48L3N2Zz4=); | |
| 360 | } | |
| 361 | .active .ico-dir::before, .ico-dir-open::before { | |
| 362 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMTU3LjgzLTEyNC42NXEtNDYuOTMgMC04MC4wNi0zMy4xMi0zMy4xMi0zMy4xMy0zMy4xMi04MC4wNnYtNDg0LjM0cTAtNDcuMTcgMzMuMTItODAuMTggMzMuMTMtMzMgODAuMDYtMzNoMjE2LjQxTDQ4MC03MjkuNTloMzIyLjE3cTQ3LjE3IDAgODAuMTggMzMuMTMgMzMgMzMuMTIgMzMgODAuMDVINDMzLjEzTDMyNy4zNy03MjIuMTdIMTU3LjgzdjQ3NC40NWw4NS40Ny0yODguNjloNzExLjcybC05MS4yOCAzMDYuMTVxLTE2LjY3IDU3LjMtNTAuOTIgODEuNDYtMzQuMjUgMjQuMTUtOTkuMDggMjQuMTVIMTU3LjgzWm0xMTUuODQtMTEzLjE4aDQ3My45NGw1NC42NS0xODUuNDFIMzI4LjA5bC01NC40MiAxODUuNDFabTAgMCA1NC40Mi0xODUuNDEtNTQuNDIgMTg1LjQxWk0xNTcuODMtNjE2LjQxdi0xMDUuNzYgMTA1Ljc2WiIvPjwvc3ZnPg==); | |
| 363 | } | |
| 364 | .ico-webpage::before { | |
| 365 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDgwLTY0cS04NiAwLTE2Mi0zMi41dC0xMzIuNS04OVExMjktMjQyIDk2LjUtMzE4VDY0LTQ4MHEwLTg2IDMyLjUtMTYydDg5LTEzMi41UTI0Mi04MzEgMzE4LTg2My41VDQ4MC04OTZxODYgMCAxNjIgMzIuNXQxMzIuNSA4OVE4MzEtNzE4IDg2My41LTY0MlQ4OTYtNDgwcTAgODYtMzIuNSAxNjJ0LTg5IDEzMi41UTcxOC0xMjkgNjQyLTk2LjVUNDgwLTY0Wm0wLTEwMnExNS0xNiAzMS02M3QyNS05OUg0MjRxOSA1MiAyNSA5OXQzMSA2M1ptLTEwMS0xMnEtMTMtMjctMjIuNS02NVQzNDAtMzI4SDIwMXEyNyA1NCA3NSA5My41VDM3OS0xNzhabTIwMiAwcTU1LTE3IDEwMy01Ni41dDc1LTkzLjVINjIwcS03IDQ3LTE2LjUgODVUNTgxLTE3OFpNMTcwLTQxMGgxNTlxLTEtMTctMS41LTM1LjVUMzI3LTQ4MnEwLTE4IC41LTM1LjVUMzI5LTU1MEgxNzBxLTUgMTctNi41IDM0LjVUMTYyLTQ4MHEwIDE4IDEuNSAzNS41VDE3MC00MTBabTI0MyAwaDEzNHEyLTE4IDIuNS0zNS41dC41LTM0LjVxMC0xNy0uNS0zNXQtMi41LTM1SDQxM3EtMiAxNy0yLjUgMzV0LS41IDM1cTAgMTcgLjUgMzV0Mi41IDM1Wm0yMTggMGgxNTlxNS0xNyA2LjUtMzQuNVQ3OTgtNDgwcTAtMTgtMS41LTM2dC02LjUtMzRINjMxcTEgMTcgMS41IDM1LjV0LjUgMzYuNXEwIDE4LS41IDM1LjVUNjMxLTQxMFptLTExLTIyMmgxMzlxLTI3LTU0LTc1LTkzLjVUNTgxLTc4MnExMyAyNyAyMi41IDY1dDE2LjUgODVabS0xOTYgMGgxMTJxLTktNTItMjUtOTguNVQ0ODAtNzk5cS0xNSAyMi0zMSA2OC41VDQyNC02MzJabS0yMjMgMGgxMzlxNy00NyAxNi41LTg1dDIyLjUtNjVxLTU1IDE3LTEwMyA1Ni41VDIwMS02MzJaIi8+PC9zdmc+); | |
| 366 | } | |
| 367 | .ico-image::before { | |
| 368 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMjEyLTc2cS01Ny4xMiAwLTk2LjU2LTM5LjQ0UTc2LTE1NC44OCA3Ni0yMTJ2LTUzNnEwLTU3LjEzIDM5LjQ0LTk2LjU2UTE1NC44OC04ODQgMjEyLTg4NGg1MzZxNTcuMTMgMCA5Ni41NiAzOS40NFE4ODQtODA1LjEzIDg4NC03NDh2NTM2cTAgNTcuMTItMzkuNDQgOTYuNTZRODA1LjEzLTc2IDc0OC03NkgyMTJabTQtMTg2aDUyOEw1NzEtNTAyIDQ1MC0zNDFsLTkxLTEyMS0xNDMgMjAwWm0xMjQuMjQtMjcwcTM3LjE4IDAgNjIuNDctMjUuNTNRNDI4LTU4My4wNSA0MjgtNjIwLjI0cTAtMzcuMTgtMjUuNTMtNjIuNDdRMzc2Ljk1LTcwOCAzMzkuNzYtNzA4cS0zNy4xOCAwLTYyLjQ3IDI1LjUzUTI1Mi02NTYuOTUgMjUyLTYxOS43NnEwIDM3LjE4IDI1LjUzIDYyLjQ3UTMwMy4wNS01MzIgMzQwLjI0LTUzMloiLz48L3N2Zz4=); | |
| 369 | } | |
| 370 | .ico-video::before { | |
| 371 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMTk4LTE2MnEtMzkuNzMgMC02OC44Ni0yOS4xNFExMDAtMjIwLjI3IDEwMC0yNjB2LTQ0MHEwLTQwLjQyIDI5LjE0LTY5LjIxUTE1OC4yNy03OTggMTk4LTc5OGg0NDBxNDAuNDIgMCA2OS4yMSAyOC43OVE3MzYtNzQwLjQyIDczNi03MDB2MTU0bDE3Mi0xNzJ2NDc2TDczNi00MTR2MTU0cTAgMzkuNzMtMjguNzkgNjguODZRNjc4LjQyLTE2MiA2MzgtMTYySDE5OFoiLz48L3N2Zz4=); | |
| 372 | } | |
| 373 | .ico-blend::before { | |
| 374 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmZmYiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi4zNiAxNC4xYy0uMTItLjM5LS4yLS45LS4yLTEuMTZsLS4wMi0uMDFjMC0uMjYuMDUtLjcuMDUtLjdsLTMuOSAzLjIxYy0uNy41Ni0xLjYxLjU1LTIuMDQgMC0uNDMtLjU0LS4yMS0xLjQuNDYtMS45MmwuMDMtLjAyIDcuMTktNS42LTQuMDIuMDFjLS42OCAwLTEuMTMtLjQ2LTEtMS4wMS4xMy0uNTUuNzYtLjk4IDEuNDEtLjk4aDcuOTRzLS42OC0xLjAzLTEuMzItMS41Yy0uNDctLjM1LTEuMi0uNzgtMS4yLS43OHMtLjQ2LS4xNy0xLjI4LS42OGMtLjgyLS41MS0uMi0xLjcuNTktMS45LjUgMCAxLjM4LjQzIDIuMjEuODMgMi44NCAxLjQgNS43IDQuMiA2LjMgNC44Mi41OS42MiAxLjEzIDEuMjUgMS41NCAxLjlhNS45IDUuOSAwIDAgMS0uNyA3LjE3IDcuNyA3LjcgMCAwIDEtMi4zIDEuOTUgNy40MyA3LjQzIDAgMCAxLTYuMS4wMWMtLjktLjQtMi4yMi0xLjU4LTIuMjItMS41OHMtMS4xNS0xLjIyLTEuNDItMi4wNVptNi44MiAxLjg4YzIuMyAwIDQuMTYtMS44IDQuMTYtNCAwLTIuMjEtMS44Ni00LTQuMTYtNFM5IDkuNzcgOSAxMS45OGMwIDIuMiAxLjg3IDQgNC4xNyA0WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PGVsbGlwc2UgY3g9IjEzLjI3IiBjeT0iMTIuMDYiIHJ4PSIxLjgxIiByeT0iMS45NSIvPjwvc3ZnPg==); | |
| 375 | } | |
| 376 | .ico-fusion::before { | |
| 377 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PGNpcmNsZSBjeD0iOS4yMiIgY3k9IjE3LjU4IiByPSIxLjUiIGZpbGw9IiNEOUQ5RDkiLz48cGF0aCBmaWxsPSIjRDlEOUQ5IiBkPSJNMTYuNDMgMi45NUEyLjk1IDIuOTUgMCAwIDEgMTEuNyA1LjNhMi45NCAyLjk0IDAgMCAwLTQuMDEgMS4xMSAyLjk1IDIuOTUgMCAxIDEtLjg1LTMuNDMgMi43NiAyLjc2IDAgMCAwIDMuOS0xLjEyIDIuOTUgMi45NSAwIDAgMSA1LjY5IDEuMDlabS0uNjkgNy40NWEyLjE4IDIuMTggMCAwIDEtMy41IDEuNzMgMi4xNyAyLjE3IDAgMCAwLTIuOTYuODIgMi4xOCAyLjE4IDAgMSAxLS42Mi0yLjU0IDIuMDQgMi4wNCAwIDAgMCAyLjg3LS44MiAyLjE4IDIuMTggMCAwIDEgNC4yMS44WiIvPjwvc3ZnPg==); | |
| 378 | } | |
| 379 | .ico-audio::before { | |
| 380 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNTM2LTc4di0xMDFxMTA2LTIzIDE3My0xMDguNVQ3NzYtNDgxcTAtMTA3LTY4LTE5MC41VDUzNi03ODF2LTEwMXExNDcgMjMgMjQyLjUgMTM3VDg3NC00ODJxMCAxNTAtOTUgMjY1LjVUNTM2LTc4Wk04Ni0zNjV2LTIzMmgxNThsMjIwLTIyMnY2NzZMMjQ0LTM2NUg4NlptNDUwIDQ3di0zMjRxNDkgMjEgNzguNSA2NC41VDY0NC00ODFxMCA1NC0yOS41IDk3LjVUNTM2LTMxOFoiLz48L3N2Zz4=); | |
| 381 | } | |
| 382 | .ico-archive::before { | |
| 383 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDQ0LjQzLTU3Ljk2di00MDMuNDNMMTA0LjA5LTY1NC4yMnYzMzMuNTdxMCAzMC45NSAxNS4yNiA1Ny42OXQ0Mi4yMiA0MmwyODIuODYgMTYzWm03Mi0xIDI4MS41Ny0xNjJxMjYuOTYtMTUuMjYgNDIuMjItNDIgMTUuMjYtMjYuNzQgMTUuMjYtNTcuNjl2LTMzNS43TDUxNi40My00NjMuODN2NDA0Ljg3Wm0xNzQuMTQtNTg3Ljg3IDEzNC42NS03NS4zOS0yODguMTgtMTY1LjNxLTI2LjUyLTE1LjI2LTU3LjA0LTE1LjI2dC01Ny40OCAxNS4yNmwtNzQuNjEgNDMuMyAzNDIuNjYgMTk3LjM5Wk00NzgtNTI1LjI2bDE0MC04MC0zNDQuMjItMTk3Ljk2LTE0MC41NiA4MS41N0w0NzgtNTI1LjI2WiIvPjwvc3ZnPg==); | |
| 384 | } | |
| 385 | .ico-text::before { | |
| 386 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNOTgtMjA4di0xMjhoNTI0djEyOEg5OFptMC0yMDh2LTEyOGg3NjR2MTI4SDk4Wm0wLTIwOXYtMTI4aDc2NHYxMjhIOThaIi8+PC9zdmc+); | |
| 387 | } | |
| 388 | .ico-link::before { | |
| 389 | transform: translate(-2px, 3px); | |
| 390 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDMyLTI4OEgyODhxLTc5LjY4IDAtMTM1Ljg0LTU2LjIzUTk2LTQwMC40NSA5Ni00ODAuMjMgOTYtNTYwIDE1Mi4xNi02MTZxNTYuMTYtNTYgMTM1Ljg0LTU2aDE0NHY3MkgyODhxLTUwIDAtODUgMzV0LTM1IDg1cTAgNTAgMzUgODV0ODUgMzVoMTQ0djcyWm0tOTYtMTU2di03MmgyODh2NzJIMzM2Wm0xOTIgMTU2di03MmgxNDRxNTAgMCA4NS0zNXQzNS04NXEwLTUwLTM1LTg1dC04NS0zNUg1Mjh2LTcyaDE0NHE3OS42OCAwIDEzNS44NCA1Ni4yMyA1Ni4xNiA1Ni4yMiA1Ni4xNiAxMzZRODY0LTQwMCA4MDcuODQtMzQ0IDc1MS42OC0yODggNjcyLTI4OEg1MjhaIi8+PC9zdmc+); | |
| 391 | } | |
| 392 | .ico-readme::before { | |
| 393 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDI0LTI2N2gxMTJ2LTI2MUg0MjR2MjYxWm01NS42MS0zMTlxMjUuODkgMCA0My4xNC0xNi44NlE1NDAtNjE5LjczIDU0MC02NDUuNjFxMC0yNS44OS0xNi44Ni00My4xNFE1MDYuMjctNzA2IDQ4MC4zOS03MDZxLTI1Ljg5IDAtNDMuMTQgMTYuODZRNDIwLTY3Mi4yNyA0MjAtNjQ2LjM5cTAgMjUuODkgMTYuODYgNDMuMTRRNDUzLjczLTU4NiA0NzkuNjEtNTg2Wm0uNjcgNTM2cS04OC45MiAwLTE2Ny43NS0zMy4xLTc4LjgyLTMzLjExLTEzNy41Ny05MS44NlQ4My4xLTMxMi40OVE1MC0zOTEuMjggNTAtNDgwLjQ2cTAtODkuNDQgMzMuMTYtMTY3LjQ5IDMzLjE3LTc4LjA1IDkyLjE4LTEzNi45NCA1OS4wMS01OC44OSAxMzcuNTMtOTJRMzkxLjM5LTkxMCA0ODAuNDYtOTEwcTg5LjQzIDAgMTY3LjUyIDMzLjA5IDc4LjA5IDMzLjEgMTM2Ljk2IDkxLjk3IDU4Ljg3IDU4Ljg3IDkxLjk3IDEzNy4yMVE5MTAtNTY5LjM4IDkxMC00ODAuMTl0LTMzLjExIDE2Ny41MnEtMzMuMTEgNzguMzItOTIgMTM3LjMzUTcyNi0xMTYuMzMgNjQ3LjcyLTgzLjE2IDU2OS40NS01MCA0ODAuMjgtNTBaIi8+PC9zdmc+); | |
| 394 | } | |
| 395 | .ico-chat::before { | |
| 396 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNTAtNDZ2LTc0MXEwLTUzLjgzIDM3LjA5LTkwLjkxUTEyNC4xOC05MTUgMTc4LTkxNWg2MDRxNTMuODMgMCA5MC45MSAzNy4wOVE5MTAtODQwLjgzIDkxMC03ODd2NDU5cTAgNTMuODMtMzcuMDkgOTAuOTFRODM1LjgzLTIwMCA3ODItMjAwSDIwNEw1MC00NlptMTg0LTMzOGgzNDd2LTcySDIzNHY3MlptMC0xMzhoNDkydi03MkgyMzR2NzJabTAtMTM4aDQ5MnYtNzJIMjM0djcyWiIvPjwvc3ZnPg); | |
| 397 | } | |
| 398 | .ico-snow::before { | |
| 399 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNDU2LTI4MyAzMzYtMTYxcS04IDgtMTYuNSA4dC0xNy41LTdxLTgtOS04LTE4dDgtMTdsMTU0LTE1M3YtMTA4SDM1MEwxOTQtMzAycS04IDktMTcgOC41dC0xNy04LjVxLTgtOS04LTE3LjV0OS0xNy41bDEyNC0xMTlIMTI4cS03IDAtMTQuNS02LjVUMTA2LTQ3OXEwLTcgNi41LTE1dDE2LjUtOGgxNTZMMTYxLTYyM3EtOC04LTgtMTYuNXQ3LTE2LjVxOS05IDE4LTl0MTcgOWwxNTUgMTU0aDEwNnYtMTEwTDMwMi03NjRxLTgtOC04LTE3dDgtMTdxOS04IDE3LjUtOHQxNy41IDlsMTE5IDEyMHYtMTU0cTAtNyA2LjUtMTV0MTYuNS04cTcgMCAxNSA4dDggMTV2MTU0bDEyMS0xMjJxOC04IDE2LjUtOHQxNi41IDhxOSA4IDkgMTd0LTkgMTdMNTAyLTYxMnYxMTBoMTA4bDE1NC0xNTVxOC04IDE3LTh0MTcgOHE4IDkgOCAxNy41dC05IDE3LjVMNjc1LTUwMmgxNTZxNyAwIDE1IDh0OCAxNXEwIDEwLTggMTYuNXQtMTUgNi41SDY3NWwxMjMgMTIwcTkgOCA5IDE2LjV0LTggMTcuNXEtOCA4LTE3IDguNXQtMTgtNy41TDYxMC00NTZINTAydjEwOGwxNTQgMTU0cTkgOCA5IDE3LjV0LTggMTYuNXEtOSA4LTE3LjUgOHQtMTYuNS04TDUwMi0yODN2MTU1cTAgNy04IDE0LjV0LTE1IDcuNXEtMTAgMC0xNi41LTYuNVQ0NTYtMTI5di0xNTRaIi8+PC9zdmc+); | |
| 400 | } | |
| 401 | .ico-code::before { | |
| 402 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNMzE5LTIwMCAzOC00ODBsMjgyLTI4MiA5MSA5MC0xOTAgMTkxIDE5MCAxODktOTIgOTJabTMyMiAxLTkxLTkxIDE5MC0xOTAtMTkwLTE5MCA5MS05MCAyODEgMjgwLTI4MSAyODFaIi8+PC9zdmc+); | |
| 403 | } | |
| 404 | .ico-json::before { | |
| 405 | mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJNNjE0LjA0LTE1Ni42NXYtMTAzLjk0aDM1LjE4cTIwLjc4IDAgMzUuNDgtMTQuODMgMTQuNzEtMTQuODIgMTQuNzEtMzUuNnYtNDkuNDZxMC00Ni41MiAzMC4yNi04MC4xNiAzMC4yNi0zMy42NCA3Ni41NS00MC42NHYtMi4yNHEtNDYuNTItMy45Ni03Ni42Ny0zNi43Mi0zMC4xNC0zMi43Ni0zMC4xNC03OS4yOHYtNDkuN3EwLTIwLjc4LTE0LjcxLTM1LjQ4LTE0LjctMTQuNzEtMzUuNDgtMTQuNzFoLTM1LjE4di0xMDMuOTRINjc1cTUzLjQzIDAgOTAuODkgMzcuOTZ0MzcuNDYgOTEuNjN2NDkuNDZxMCAyMC43NyAxNC4zMyAzNS42IDE0LjMyIDE0LjgzIDMyLjgyIDE0LjgzaDQ4Ljg1djE4Ny43NEg4NTAuNXEtMTguNSAwLTMyLjgyIDE0LjcxLTE0LjMzIDE0LjcxLTE0LjMzIDM1LjQ5djQ5LjY5cTAgNTMuNjctMzcuNDYgOTEuNjMtMzcuNDYgMzcuOTYtOTAuODkgMzcuOTZoLTYwLjk2Wm0tMzI5LjA0IDBxLTUzLjQzIDAtOTAuODktMzcuOTZ0LTM3LjQ2LTkxLjYzdi00OS42OXEwLTIwLjc4LTE0LjcxLTM1LjQ5dC0zNi40OC0xNC43MUg2MC42NXYtMTg3Ljc0aDQ0LjgxcTIxLjc3IDAgMzYuNDgtMTQuODMgMTQuNzEtMTQuODMgMTQuNzEtMzUuNnYtNDkuNDZxMC01My42NyAzNy40Ni05MS42MyAzNy40Ni0zNy45NiA5MC44OS0zNy45Nmg2MC45NnYxMDMuOTRoLTM0Ljk0cS0yMC43OCAwLTM1LjYgMTQuNzEtMTQuODMgMTQuNy0xNC44MyAzNS40OHY0OS43cTAgNDcuNTItMzAuMTQgODAuNzgtMzAuMTUgMzMuMjYtNzYuNDMgMzQuMjJ2Mi4zOXE0Ni4yOCA1Ljg1IDc2LjQzIDM5Ljk5IDMwLjE0IDM0LjE0IDMwLjE0IDgxLjY2djQ5LjQ2cTAgMjAuNzggMTQuODMgMzUuNiAxNC44MiAxNC44MyAzNS42IDE0LjgzaDM0Ljk0djEwMy45NEgyODVaIi8+PC9zdmc+); | |
| 406 | } | |
| 407 | .loading { | |
| 408 | animation: loading 2s linear infinite; | |
| 409 | background-color: hsl(from var(--bg) h s calc(l + 20) / 50%) !important; | |
| 410 | } | |
| 411 | @keyframes loading { | |
| 412 | from { | |
| 413 | opacity: 0.4; | |
| 414 | } | |
| 415 | 50% { | |
| 416 | opacity: 0.7; | |
| 417 | } | |
| 418 | to { | |
| 419 | opacity: 0.4; | |
| 420 | } | |
| 421 | } | |
| 422 | .mobile { | |
| 423 | display: none !important; | |
| 424 | } | |
| 425 | .file-view-image, .file-view-video, .file-view-audio { | |
| 426 | background-color: lch(from var(--dark-bg) calc(l - 3) calc(c - 15) h); | |
| 427 | } | |
| 428 | .file-view-video, .file-view-audio { | |
| 429 | display: flex; | |
| 430 | justify-content: center; | |
| 431 | align-items: center; | |
| 432 | & > * { | |
| 433 | max-width: 100%; | |
| 434 | max-height: 100%; | |
| 435 | object-fit: contain; | |
| 436 | } | |
| 437 | } | |
| 438 | .file-view-download { | |
| 439 | p:first-child { | |
| 440 | margin-top: 2rem; | |
| 441 | } | |
| 442 | p { | |
| 443 | margin: 0.5rem 2rem; | |
| 444 | max-width: 60ch; | |
| 445 | } | |
| 446 | code { | |
| 447 | background-color: lch(from var(--dark-bg) calc(l - 5) calc(c - 5) h); | |
| 448 | padding: 0.3rem 0.5rem; | |
| 449 | border-radius: 0.3rem; | |
| 450 | } | |
| 451 | } | |
| 452 | .speedbump { | |
| 453 | z-index: 1; | |
| 454 | position: relative; | |
| 455 | canvas { | |
| 456 | position: absolute; | |
| 457 | top: 0; | |
| 458 | left: 0; | |
| 459 | width: 100%; | |
| 460 | height: 100%; | |
| 461 | z-index: -1; | |
| 462 | } | |
| 463 | header { | |
| 464 | font-family: c1; | |
| 465 | height: max(min(40vh, 400px), 100px); | |
| 466 | color: #00ff80; | |
| 467 | letter-spacing: 0.8ch; | |
| 468 | margin-right: -0.8ch; | |
| 469 | font-size: 6vw; | |
| 470 | display: flex; | |
| 471 | align-items: center; | |
| 472 | justify-content: center; | |
| 473 | font-variation-settings: "wght" 50; | |
| 474 | text-shadow: 0 0 20px #00ff8022, 0 0 10px #00ff8033; | |
| 475 | margin-bottom: 2rem; | |
| 476 | h1 { | |
| 477 | flex: 1; | |
| 478 | margin: 0; | |
| 479 | padding: 0; | |
| 480 | display: flex; | |
| 481 | align-items: center; | |
| 482 | justify-content: center; | |
| 483 | } | |
| 484 | } | |
| 485 | p { | |
| 486 | max-width: 50ch; | |
| 487 | margin: 0 auto 1rem auto; | |
| 488 | color: #ecffea88; | |
| 489 | line-height: 1.5; | |
| 490 | letter-spacing: 0.01em; | |
| 491 | word-spacing: 0.3em; | |
| 492 | text-align: center; | |
| 493 | font-size: 1.2rem; | |
| 494 | } | |
| 495 | button { | |
| 496 | background-color: #00ff80bb; | |
| 497 | color: #111318; | |
| 498 | border: none; | |
| 499 | padding: 0.5rem 1rem; | |
| 500 | border-radius: 0.3rem; | |
| 501 | font-size: 1.2rem; | |
| 502 | font-weight: 400; | |
| 503 | cursor: pointer; | |
| 504 | letter-spacing: 0.5rem; | |
| 505 | padding-right: 0.5rem; | |
| 506 | } | |
| 507 | .enter-container { | |
| 508 | display: flex; | |
| 509 | justify-content: center; | |
| 510 | align-items: center; | |
| 511 | margin-top: 1rem; | |
| 512 | } | |
| 513 | .image-grid { | |
| 514 | display: grid; | |
| 515 | grid-template-columns: repeat(3, 1fr); | |
| 516 | grid-template-rows: repeat(3, 1fr); | |
| 517 | gap: 0.5rem; | |
| 518 | margin: 0 auto; | |
| 519 | background-color: #050d06; | |
| 520 | padding: 0.5rem; | |
| 521 | border-radius: 0.75rem; | |
| 522 | button { | |
| 523 | background-color: #0c1f0e; | |
| 524 | width: 100%; | |
| 525 | max-width: 100px; | |
| 526 | aspect-ratio: 1/1; | |
| 527 | padding: 0; | |
| 528 | margin: 0; | |
| 529 | cursor: pointer; | |
| 530 | border-radius: 0.5rem; | |
| 531 | img { | |
| 532 | width: 100%; | |
| 533 | height: 100%; | |
| 534 | display: block; | |
| 535 | opacity: 0.75; | |
| 536 | border-radius: 0.5rem; | |
| 537 | } | |
| 538 | &:hover { | |
| 539 | img { | |
| 540 | opacity: 0.85; | |
| 541 | } | |
| 542 | } | |
| 543 | } | |
| 544 | } | |
| 545 | } | |
| 546 | .lyrics { | |
| 547 | align-self: flex-start; | |
| 548 | } | |
| 549 | .fullscreen-canvas { | |
| 550 | position: fixed; | |
| 551 | top: 0; | |
| 552 | left: 0; | |
| 553 | width: 100vw; | |
| 554 | height: 100vh; | |
| 555 | z-index: -1; | |
| 556 | pointer-events: none; | |
| 557 | user-select: none; | |
| 558 | touch-action: none; | |
| 559 | } | |
| 560 | .cotyledon-link { | |
| 561 | position: absolute; | |
| 562 | bottom: 0; | |
| 563 | right: 0; | |
| 564 | color: #27143f; | |
| 565 | padding: 0.5rem 1rem; | |
| 566 | border-radius: 0.3rem; | |
| 567 | } | |
| 568 | .convo { | |
| 569 | padding: 1rem; | |
| 570 | .line { | |
| 571 | margin-bottom: 0.5rem; | |
| 572 | } | |
| 573 | /* different colors for different ppl */ | |
| 574 | .s-other_a { | |
| 575 | padding-left: 4rem; | |
| 576 | color: var(--primary); | |
| 577 | } | |
| 578 | .s-other_b { | |
| 579 | padding-left: 8rem; | |
| 580 | color: hsl(from var(--primary) calc(h + 200) s l); | |
| 581 | } | |
| 582 | .s-other_b2 { | |
| 583 | padding-left: 4rem; | |
| 584 | color: hsl(from var(--primary) calc(h + 200) s l); | |
| 585 | } | |
| 586 | .s-other_c { | |
| 587 | padding-left: 12rem; | |
| 588 | color: hsl(from var(--primary) calc(h + 100) s l); | |
| 589 | } | |
| 590 | .s-other_d { | |
| 591 | padding-left: 4rem; | |
| 592 | color: hsl(from var(--primary) calc(h + 50) s l); | |
| 593 | } | |
| 594 | .s-other_e { | |
| 595 | padding-left: 4rem; | |
| 596 | color: hsl(from var(--primary) calc(h + 80) s l); | |
| 597 | } | |
| 598 | .s-other_f { | |
| 599 | padding-left: 4rem; | |
| 600 | color: #00ff80; | |
| 601 | } | |
| 602 | hr { | |
| 603 | margin-top: 2rem; | |
| 604 | margin-bottom: 2rem; | |
| 605 | border: none; | |
| 606 | border-top: 2px solid var(--muted); | |
| 607 | } | |
| 608 | } | |
| 609 | :not(.active) .ext { | |
| 610 | font-size: 80%; | |
| 611 | color: var(--muted); | |
| 612 | } | |
| 613 | .file-view-code { | |
| 614 | color: lch(from var(--primary) 90 10 h / 0.88); | |
| 615 | ||
| 616 | .comment { | |
| 617 | color: var(--muted); | |
| 618 | } | |
| 619 | .keyword { | |
| 620 | font-weight: bold; | |
| 621 | color: lch(from var(--primary) 100 20 h / 1); | |
| 622 | } | |
| 623 | .string { | |
| 624 | color: lch(from var(--primary) calc(l + 30) calc(c + 30) h); | |
| 625 | } | |
| 626 | .constant { | |
| 627 | color: lch(from var(--primary) calc(l + 30) calc(c - 30) h); | |
| 628 | } | |
| 629 | .method { | |
| 630 | color: lch(from var(--primary) l c calc(h - 25)); | |
| 631 | } | |
| 632 | .class { | |
| 633 | color: lch(from var(--primary) l c calc(h + 25)); | |
| 634 | } | |
| 635 | .builtin { | |
| 636 | color: var(--primary); | |
| 637 | font-weight: bold; | |
| 638 | } | |
| 639 | .parameter { | |
| 640 | font-style: italic; | |
| 641 | } | |
| 642 | .variable { | |
| 643 | color: lch(from var(--primary) 90 30 h / 0.88); | |
| 644 | } | |
| 645 | } | |
| 646 | .for_everyone { | |
| 647 | max-width: 69ch; | |
| 648 | padding: 1rem 3rem; | |
| 649 | font-family: rmo, monospace; | |
| 650 | line-height: 1; | |
| 651 | &:last-child { | |
| 652 | padding-bottom: 3rem; | |
| 653 | } | |
| 654 | &:first-child { | |
| 655 | padding-top: 3rem; | |
| 656 | } | |
| 657 | p { | |
| 658 | /* line */ | |
| 659 | margin: 0; | |
| 660 | min-height: 1rem; | |
| 661 | margin-bottom: 0.5rem; | |
| 662 | } | |
| 663 | p.normal { | |
| 664 | line-height: 1.5; | |
| 665 | } | |
| 666 | blockquote { | |
| 667 | margin-left: 0; | |
| 668 | padding-left: 1rem; | |
| 669 | border-left: 2px solid #f66244; | |
| 670 | color: #ffbfb2; | |
| 671 | line-height: 1.5; | |
| 672 | p { | |
| 673 | margin-bottom: 0.5rem; | |
| 674 | } | |
| 675 | } | |
| 676 | } | |
| 677 | .fade-slide-in { | |
| 678 | animation: fadeSlideIn 0.4s cubic-bezier(0.3, 0.8, 0.3, 1); | |
| 679 | } | |
| 680 | @keyframes fadeSlideIn { | |
| 681 | from { | |
| 682 | opacity: 0.5; | |
| 683 | transform: translateY(12px); | |
| 684 | } | |
| 685 | to { | |
| 686 | opacity: 1; | |
| 687 | transform: translateY(0); | |
| 688 | } | |
| 689 | } | |
| 690 | /* MOBILE */ | |
| 691 | @media (max-width: 1000px) { | |
| 692 | html, body { | |
| 693 | overflow: unset; | |
| 694 | width: unset; | |
| 695 | height: unset; | |
| 696 | } | |
| 697 | .mobile { | |
| 698 | display: inline !important; | |
| 699 | } | |
| 700 | .desktop { | |
| 701 | display: none !important; | |
| 702 | } | |
| 703 | h3 { | |
| 704 | padding-left: 1rem; | |
| 705 | font-size: 1.2rem; | |
| 706 | } | |
| 707 | body { | |
| 708 | overflow-y: auto; | |
| 709 | } | |
| 710 | .files { | |
| 711 | overflow-x: unset; | |
| 712 | overflow-y: unset; | |
| 713 | border-bottom: 16px solid var(--dark-bg); | |
| 714 | min-height: 100vh; | |
| 715 | .panel { | |
| 716 | overflow-x: hidden; | |
| 717 | border: none !important; | |
| 718 | } | |
| 719 | .panel, .panel .hsplit { | |
| 720 | height: unset; | |
| 721 | min-height: unset; | |
| 722 | } | |
| 723 | .panel .header { | |
| 724 | padding: 0.75rem; | |
| 725 | gap: 1rem; | |
| 726 | align-items: center; | |
| 727 | } | |
| 728 | .mobile-back { | |
| 729 | margin-left: -0.75rem; | |
| 730 | display: block; | |
| 731 | width: 48px; | |
| 732 | height: 48px; | |
| 733 | &::before { | |
| 734 | display: block; | |
| 735 | content: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjRkZGRkZGIj48cGF0aCBkPSJtMzEzLTQ0MCAyMjQgMjI0LTU3IDU2LTMyMC0zMjAgMzIwLTMyMCA1NyA1Ni0yMjQgMjI0aDQ4N3Y4MEgzMTNaIi8+PC9zdmc+); | |
| 736 | transform: scale(2); | |
| 737 | transform-origin: top left; | |
| 738 | } | |
| 739 | } | |
| 740 | .full-screen, .download { | |
| 741 | width: 48px; | |
| 742 | height: 48px; | |
| 743 | &::before { | |
| 744 | transform: scale(2); | |
| 745 | } | |
| 746 | } | |
| 747 | .panel ul li a { | |
| 748 | display: flex; | |
| 749 | flex-direction: column-reverse; | |
| 750 | padding: 0.5rem 1rem; | |
| 751 | text-overflow: unset; | |
| 752 | white-space: wrap; | |
| 753 | date { | |
| 754 | font-size: 0.9rem; | |
| 755 | padding-right: 0; | |
| 756 | } | |
| 757 | .size { | |
| 758 | padding-left: 0; | |
| 759 | } | |
| 760 | .size:not(:first-child) { | |
| 761 | padding-left: 0.5rem; | |
| 762 | } | |
| 763 | } | |
| 764 | .first .size { | |
| 765 | font-size: 0.9rem; | |
| 766 | &::before { | |
| 767 | content: "("; | |
| 768 | } | |
| 769 | &::after { | |
| 770 | content: ")"; | |
| 771 | } | |
| 772 | } | |
| 773 | } | |
| 774 | .panel:not(.last) { | |
| 775 | display: none; | |
| 776 | } | |
| 777 | .panel { | |
| 778 | position: relative; | |
| 779 | min-width: unset !important; | |
| 780 | max-width: unset !important; | |
| 781 | border-left-width: 10px !important; | |
| 782 | } | |
| 783 | .content { | |
| 784 | height: unset !important; | |
| 785 | min-width: unset !important; | |
| 786 | max-width: unset !important; | |
| 787 | overflow: unset !important; | |
| 788 | } | |
| 789 | .hsplit { | |
| 790 | display: block !important; | |
| 791 | } | |
| 792 | .li.readme { | |
| 793 | display: none !important; | |
| 794 | } | |
| 795 | .tooltip { | |
| 796 | display: none !important; | |
| 797 | } | |
| 798 | } |
src/file-viewer/views/clofi.tsx created+1007| ... | ... | @@ -0,0 +1,1007 @@ |
| 1 | import "./clofi.css"; | |
| 2 | import assert from "node:assert"; | |
| 3 | import path, { dirname } from "node:path"; | |
| 4 | import { MediaFile } from "../db.ts"; | |
| 5 | import { useInlineScript } from "../framework/page-resources.ts"; | |
| 6 | import { escapeUri, formatDuration, formatSize } from "../media/share.ts"; | |
| 7 | import { | |
| 8 | highlightConvo, | |
| 9 | highlightHashComments, | |
| 10 | highlightLinksInTextView, | |
| 11 | } from "../media/text-formatting.ts"; | |
| 12 | import { TestID } from "../test/id.ts"; | |
| 13 | import { ForEveryone } from "../media/cotyledon.tsx"; | |
| 14 | ||
| 15 | export const theme = { | |
| 16 | bg: "#312652", | |
| 17 | fg: "#f0f0ff", | |
| 18 | primary: "#fabe32", | |
| 19 | }; | |
| 20 | ||
| 21 | export const extensionToViewer: { | |
| 22 | [key: string]: (props: { | |
| 23 | file: MediaFile; | |
| 24 | siblingFiles?: MediaFile[]; | |
| 25 | }) => any; | |
| 26 | } = { | |
| 27 | ".html": IframeView, | |
| 28 | ".txt": TextView, | |
| 29 | ".md": TextView, | |
| 30 | ".mp4": VideoView, | |
| 31 | ".mkv": VideoView, | |
| 32 | ".webm": VideoView, | |
| 33 | ".avi": VideoView, | |
| 34 | ".mov": VideoView, | |
| 35 | ".mp3": AudioView, | |
| 36 | ".flac": AudioView, | |
| 37 | ".wav": AudioView, | |
| 38 | ".ogg": AudioView, | |
| 39 | ".m4a": AudioView, | |
| 40 | ".jpg": ImageView, | |
| 41 | ".jpeg": ImageView, | |
| 42 | ".png": ImageView, | |
| 43 | ".gif": ImageView, | |
| 44 | ".webp": ImageView, | |
| 45 | ".avif": ImageView, | |
| 46 | ".heic": ImageView, | |
| 47 | ".svg": ImageView, | |
| 48 | ".chat": ChatView, | |
| 49 | ".json": CodeView, | |
| 50 | ".jsonc": CodeView, | |
| 51 | ".toml": CodeView, | |
| 52 | ".ts": CodeView, | |
| 53 | ".js": CodeView, | |
| 54 | ".tsx": CodeView, | |
| 55 | ".jsx": CodeView, | |
| 56 | ".css": CodeView, | |
| 57 | ".py": CodeView, | |
| 58 | ".lua": CodeView, | |
| 59 | ".sh": CodeView, | |
| 60 | ".bat": CodeView, | |
| 61 | ".ps1": CodeView, | |
| 62 | ".cmd": CodeView, | |
| 63 | ".yaml": CodeView, | |
| 64 | ".yml": CodeView, | |
| 65 | ".xml": CodeView, | |
| 66 | ".zig": CodeView, | |
| 67 | ".astro": CodeView, | |
| 68 | ".mdx": CodeView, | |
| 69 | ".php": CodeView, | |
| 70 | ".diff": CodeView, | |
| 71 | ".patch": CodeView, | |
| 72 | }; | |
| 73 | ||
| 74 | export default function MediaList({ | |
| 75 | file, | |
| 76 | hasCotyledonCookie, | |
| 77 | }: { | |
| 78 | file: MediaFile; | |
| 79 | hasCotyledonCookie: boolean; | |
| 80 | }) { | |
| 81 | useInlineScript("file_viewer"); | |
| 82 | ||
| 83 | const dirs: MediaFile[] = []; | |
| 84 | let dir: MediaFile | null = file; | |
| 85 | assert(dir); | |
| 86 | do { | |
| 87 | dirs.unshift(dir); | |
| 88 | dir = dir?.getParent(); | |
| 89 | } while (dir); | |
| 90 | const parts = file.path.split("/"); | |
| 91 | ||
| 92 | const isCotyledon = parseInt(parts[1]) < 2025; | |
| 93 | ||
| 94 | return ( | |
| 95 | <div class={"files" + (isCotyledon ? " ctld ctld-" + parts[1] : "")}> | |
| 96 | {dirs.map((entry, i) => { | |
| 97 | const isLast = i === dirs.length - 1; | |
| 98 | return ( | |
| 99 | <MediaPanel | |
| 100 | file={entry} | |
| 101 | isLast={isLast} | |
| 102 | activeFilename={parts[i + 1]} | |
| 103 | hasCotyledonCookie={hasCotyledonCookie} | |
| 104 | /> | |
| 105 | ); | |
| 106 | })} | |
| 107 | </div> | |
| 108 | ); | |
| 109 | } | |
| 110 | ||
| 111 | const specialCaseViewers: Record<string, any> = { | |
| 112 | "/2024/for everyone": ForEveryone, | |
| 113 | }; | |
| 114 | ||
| 115 | export function MediaPanel({ | |
| 116 | file, | |
| 117 | isLast, | |
| 118 | activeFilename, | |
| 119 | hasCotyledonCookie, | |
| 120 | }: { | |
| 121 | file: MediaFile; | |
| 122 | isLast: boolean; | |
| 123 | activeFilename: string | null; | |
| 124 | hasCotyledonCookie: boolean; | |
| 125 | }) { | |
| 126 | const showsActions = file.path !== "/2024/for everyone"; | |
| 127 | const label = file.path === "/" | |
| 128 | ? ( | |
| 129 | "clo's files" | |
| 130 | ) | |
| 131 | : ( | |
| 132 | <> | |
| 133 | {file.kind === MediaFile.Kind.directory | |
| 134 | ? ( | |
| 135 | <span> | |
| 136 | {file.basename} | |
| 137 | <span class="bold-slash">/</span> | |
| 138 | </span> | |
| 139 | ) | |
| 140 | : ( | |
| 141 | <> | |
| 142 | {file.basename} | |
| 143 | <div style="flex:1" /> | |
| 144 | {showsActions && ( | |
| 145 | <div class="actions"> | |
| 146 | <a | |
| 147 | class="custom full-screen" | |
| 148 | href={`/file${escapeUri(file.path)}?view=embed`} | |
| 149 | aria-label="full screen" | |
| 150 | > | |
| 151 | </a> | |
| 152 | <a | |
| 153 | class="custom download" | |
| 154 | href={`/file${escapeUri(file.path)}?dl`} | |
| 155 | aria-label="download" | |
| 156 | > | |
| 157 | </a> | |
| 158 | </div> | |
| 159 | )} | |
| 160 | </> | |
| 161 | )} | |
| 162 | </> | |
| 163 | ); | |
| 164 | let View = specialCaseViewers[file.path] ?? | |
| 165 | (extensionToViewer[file.extension.toLowerCase()] as any) ?? | |
| 166 | DownloadView; | |
| 167 | if (View === VideoView && file.size > 500_000_000) { | |
| 168 | View = DownloadViewTooBig; | |
| 169 | } | |
| 170 | const mobileBtn = file.path !== "/" && ( | |
| 171 | <a | |
| 172 | href={`/file${escapeUri(path.dirname(file.path).replace(/\/$/, ""))}`} | |
| 173 | className="custom mobile-back" | |
| 174 | /> | |
| 175 | ); | |
| 176 | const canvases: Record<string, string> = { | |
| 177 | "/2017": "2017", | |
| 178 | "/2018": "2018", | |
| 179 | "/2019": "2019", | |
| 180 | "/2020": "2020", | |
| 181 | "/2021": "2021", | |
| 182 | "/2022": "2022", | |
| 183 | "/2023": "2023", | |
| 184 | "/2024": "2024", | |
| 185 | }; | |
| 186 | if (canvases[file.path]) { | |
| 187 | useInlineScript(`canvas_${canvases[file.path]}` as any); | |
| 188 | } | |
| 189 | return ( | |
| 190 | <div | |
| 191 | class={(isLast ? "panel last" : "panel") + | |
| 192 | (file.path === "/" ? " first" : "")} | |
| 193 | > | |
| 194 | {canvases[file.path] && ( | |
| 195 | <canvas | |
| 196 | class="fullscreen-canvas" | |
| 197 | data-canvas={canvases[file.path]} | |
| 198 | > | |
| 199 | </canvas> | |
| 200 | )} | |
| 201 | {file.kind === MediaFile.Kind.directory && ( | |
| 202 | <a class="custom header" href={`/file${escapeUri(file.path)}`}> | |
| 203 | <div class="ico ico-dir-open"></div> | |
| 204 | {label} | |
| 205 | </a> | |
| 206 | )} | |
| 207 | <div class="header"> | |
| 208 | {mobileBtn} | |
| 209 | {<div class={`ico ico-${fileIcon(file, true)}`}></div>} | |
| 210 | {label} | |
| 211 | </div> | |
| 212 | ||
| 213 | {file.kind === MediaFile.Kind.directory | |
| 214 | ? ( | |
| 215 | <DirView | |
| 216 | dir={file} | |
| 217 | activeFilename={activeFilename} | |
| 218 | isLast={isLast} | |
| 219 | hasCotyledonCookie={hasCotyledonCookie} | |
| 220 | /> | |
| 221 | ) | |
| 222 | : ( | |
| 223 | <div | |
| 224 | class={`content file-view${ | |
| 225 | View.class ? " file-view-" + View.class : "" | |
| 226 | }`} | |
| 227 | > | |
| 228 | <View file={file} /> | |
| 229 | </div> | |
| 230 | )} | |
| 231 | </div> | |
| 232 | ); | |
| 233 | } | |
| 234 | ||
| 235 | const readmeFile = "readme.txt"; | |
| 236 | const priorityFiles = ["readme.txt", "index.html"]; | |
| 237 | ||
| 238 | function sorterFromDirSort(dirsort: string) { | |
| 239 | const array: string[] = JSON.parse(dirsort); | |
| 240 | if (array.length === 1 && array[0] === "a-z") { | |
| 241 | return sortAlphabetically; | |
| 242 | } | |
| 243 | return (a: MediaFile, b: MediaFile) => { | |
| 244 | const aIndex = array.indexOf(a.basename); | |
| 245 | const bIndex = array.indexOf(b.basename); | |
| 246 | if (bIndex == -1 && aIndex >= 0) return -1; | |
| 247 | if (aIndex == -1 && bIndex >= 0) return 1; | |
| 248 | if (aIndex >= 0 && bIndex >= 0) { | |
| 249 | return aIndex - bIndex; | |
| 250 | } | |
| 251 | return sortDefault(a, b); | |
| 252 | }; | |
| 253 | } | |
| 254 | ||
| 255 | function sortNumerically(a: MediaFile, b: MediaFile) { | |
| 256 | const n1 = parseInt(a.basenameWithoutExt); | |
| 257 | const n2 = parseInt(a.basenameWithoutExt); | |
| 258 | return n1 - n2; | |
| 259 | } | |
| 260 | ||
| 261 | function sortDefault(a: MediaFile, b: MediaFile) { | |
| 262 | // First check if either file is in the priority list | |
| 263 | const aIndex = priorityFiles.indexOf(a.basename.toLowerCase()); | |
| 264 | const bIndex = priorityFiles.indexOf(b.basename.toLowerCase()); | |
| 265 | ||
| 266 | if (aIndex !== -1 && bIndex !== -1) { | |
| 267 | // Both are priority files, sort by priority order | |
| 268 | return aIndex - bIndex; | |
| 269 | } else if (aIndex !== -1) { | |
| 270 | // Only a is a priority file | |
| 271 | return -1; | |
| 272 | } else if (bIndex !== -1) { | |
| 273 | // Only b is a priority file | |
| 274 | return 1; | |
| 275 | } | |
| 276 | ||
| 277 | // Then sort directories before files | |
| 278 | if (a.kind !== b.kind) { | |
| 279 | return a.kind === MediaFile.Kind.directory ? -1 : 1; | |
| 280 | } | |
| 281 | ||
| 282 | // Finally sort by date (newest first), then by name (a-z) if dates are the same | |
| 283 | const dateComparison = b.date.getTime() - a.date.getTime(); | |
| 284 | if (dateComparison !== 0) { | |
| 285 | return dateComparison; | |
| 286 | } | |
| 287 | // If dates are the same, sort alphabetically by name | |
| 288 | return a.basename.localeCompare(b.basename); | |
| 289 | } | |
| 290 | ||
| 291 | function sortAlphabetically(a: MediaFile, b: MediaFile) { | |
| 292 | // First check if either file is in the priority list | |
| 293 | const aIndex = priorityFiles.indexOf(a.basename.toLowerCase()); | |
| 294 | const bIndex = priorityFiles.indexOf(b.basename.toLowerCase()); | |
| 295 | ||
| 296 | if (aIndex !== -1 && bIndex !== -1) { | |
| 297 | // Both are priority files, sort by priority order | |
| 298 | return aIndex - bIndex; | |
| 299 | } else if (aIndex !== -1) { | |
| 300 | // Only a is a priority file | |
| 301 | return -1; | |
| 302 | } else if (bIndex !== -1) { | |
| 303 | // Only b is a priority file | |
| 304 | return 1; | |
| 305 | } | |
| 306 | ||
| 307 | // If dates are the same, sort alphabetically by name | |
| 308 | return a.basename.localeCompare(b.basename); | |
| 309 | } | |
| 310 | ||
| 311 | function isNumericallyOrdered(files: MediaFile[]) { | |
| 312 | return !files.some((x) => Number.isNaN(parseInt(x.basenameWithoutExt))); | |
| 313 | } | |
| 314 | ||
| 315 | function sortChronologicalStartToEnd(a: MediaFile, b: MediaFile) { | |
| 316 | const aIndex = priorityFiles.indexOf(a.basename.toLowerCase()); | |
| 317 | const bIndex = priorityFiles.indexOf(b.basename.toLowerCase()); | |
| 318 | ||
| 319 | if (aIndex !== -1 && bIndex !== -1) { | |
| 320 | return aIndex - bIndex; | |
| 321 | } else if (aIndex !== -1) { | |
| 322 | return -1; | |
| 323 | } else if (bIndex !== -1) { | |
| 324 | return 1; | |
| 325 | } | |
| 326 | ||
| 327 | const dateComparison = a.date.getTime() - b.date.getTime(); | |
| 328 | if (dateComparison !== 0) { | |
| 329 | return dateComparison; | |
| 330 | } | |
| 331 | return a.basename.localeCompare(b.basename); | |
| 332 | } | |
| 333 | ||
| 334 | const sortOverrides: Record<string, (a: MediaFile, b: MediaFile) => number> = { | |
| 335 | "/2024": sortChronologicalStartToEnd, | |
| 336 | "/2023": sortChronologicalStartToEnd, | |
| 337 | "/2022": sortChronologicalStartToEnd, | |
| 338 | "/2021": sortChronologicalStartToEnd, | |
| 339 | "/2020": sortChronologicalStartToEnd, | |
| 340 | "/2019": sortChronologicalStartToEnd, | |
| 341 | "/2018": sortChronologicalStartToEnd, | |
| 342 | "/2017": sortChronologicalStartToEnd, | |
| 343 | }; | |
| 344 | ||
| 345 | function DirView({ | |
| 346 | dir, | |
| 347 | activeFilename, | |
| 348 | isLast, | |
| 349 | hasCotyledonCookie, | |
| 350 | }: { | |
| 351 | dir: MediaFile; | |
| 352 | activeFilename: string | null; | |
| 353 | isLast: boolean; | |
| 354 | hasCotyledonCookie: boolean; | |
| 355 | }) { | |
| 356 | if (dir.path === "/") { | |
| 357 | return ( | |
| 358 | <RootDirView | |
| 359 | dir={dir} | |
| 360 | activeFilename={activeFilename} | |
| 361 | isLast={isLast} | |
| 362 | hasCotyledonCookie={hasCotyledonCookie} | |
| 363 | /> | |
| 364 | ); | |
| 365 | } | |
| 366 | const isCotyledon = parseInt(dir.path.split("/")?.[1]) < 2025; | |
| 367 | const unsortedFiles = dir | |
| 368 | .getPublicChildren() | |
| 369 | .filter((f) => !f.basenameWithoutExt.startsWith("_unlisted")); | |
| 370 | const sorter = dir.dirsort | |
| 371 | ? sorterFromDirSort(dir.dirsort) | |
| 372 | : isNumericallyOrdered(unsortedFiles) | |
| 373 | ? sortNumerically | |
| 374 | : isCotyledon | |
| 375 | ? sortChronologicalStartToEnd | |
| 376 | : (sortOverrides[dir.path] ?? sortDefault); | |
| 377 | const sortedFiles = unsortedFiles.sort(sorter); | |
| 378 | const readme = sortedFiles.find((f) => f.basename === readmeFile); | |
| 379 | if (readme && isLast) activeFilename ||= readmeFile; | |
| 380 | const main = ( | |
| 381 | <div class="content primary"> | |
| 382 | <ul> | |
| 383 | {sortedFiles.map((file) => { | |
| 384 | return ( | |
| 385 | <ListItem file={file} active={activeFilename === file.basename} /> | |
| 386 | ); | |
| 387 | })} | |
| 388 | </ul> | |
| 389 | </div> | |
| 390 | ); | |
| 391 | ||
| 392 | if (readme && isLast) { | |
| 393 | return ( | |
| 394 | <div class="hsplit"> | |
| 395 | <ReadmeView file={readme} siblingFiles={sortedFiles} /> | |
| 396 | {main} | |
| 397 | </div> | |
| 398 | ); | |
| 399 | } | |
| 400 | ||
| 401 | return main; | |
| 402 | } | |
| 403 | ||
| 404 | const unknownDate = new Date("1970-01-03"); | |
| 405 | const unknownDateWithKnownYear = new Date("1970-02-20"); | |
| 406 | ||
| 407 | function ListItem({ | |
| 408 | file, | |
| 409 | active, | |
| 410 | noDate, | |
| 411 | }: { | |
| 412 | file: MediaFile; | |
| 413 | active: boolean; | |
| 414 | noDate?: boolean; | |
| 415 | }) { | |
| 416 | const dateTime = file.date; | |
| 417 | let shortDate = dateTime < unknownDateWithKnownYear | |
| 418 | ? ( | |
| 419 | dateTime < unknownDate | |
| 420 | ? ( | |
| 421 | "??.??.??" | |
| 422 | ) | |
| 423 | : <>xx.xx.{21 + Math.floor(dateTime.getTime() / 86400000)}</> | |
| 424 | ) | |
| 425 | : ( | |
| 426 | `${(dateTime.getMonth() + 1).toString().padStart(2, "0")}.${ | |
| 427 | dateTime | |
| 428 | .getDate() | |
| 429 | .toString() | |
| 430 | .padStart(2, "0") | |
| 431 | }.${dateTime.getFullYear().toString().slice(2)}` | |
| 432 | ); | |
| 433 | ||
| 434 | let basenameWithoutExt = file.basenameWithoutExt; | |
| 435 | ||
| 436 | let meta = file.kind === MediaFile.Kind.directory | |
| 437 | ? formatSize(file.size) | |
| 438 | : (file.duration ?? 0) > 0 | |
| 439 | ? formatDuration(file.duration!) | |
| 440 | : null; | |
| 441 | if (meta && dirname(file.path) !== "/") { | |
| 442 | meta = `(${meta})`; | |
| 443 | } | |
| 444 | ||
| 445 | const isReadme = file.basename === readmeFile; | |
| 446 | ||
| 447 | return ( | |
| 448 | <li> | |
| 449 | <a | |
| 450 | class={(active ? "active " : "") + (isReadme ? "readme " : "") + | |
| 451 | "li custom"} | |
| 452 | href={file.extension === ".lnk" | |
| 453 | ? file.contents | |
| 454 | : isReadme | |
| 455 | ? `/file${escapeUri(path.dirname(file.path).replace(/\/$/, ""))}` | |
| 456 | : `/file${escapeUri(file.path)}`} | |
| 457 | > | |
| 458 | <span> | |
| 459 | {file.basename === readmeFile | |
| 460 | ? <>{!noDate && <div class="line"></div>}</> | |
| 461 | : <>{!noDate && <date>{shortDate}</date>}</>} | |
| 462 | <span class="size mobile">{meta}</span> | |
| 463 | </span> | |
| 464 | ||
| 465 | <span> | |
| 466 | {path.dirname(file.path) !== "/" && ( | |
| 467 | <span className={`ico ico-${fileIcon(file)}`}></span> | |
| 468 | )} | |
| 469 | {basenameWithoutExt} | |
| 470 | <span class="ext">{file.extension}</span> | |
| 471 | {file.kind === MediaFile.Kind.directory | |
| 472 | ? <span class="bold-slash">/</span> | |
| 473 | : ( | |
| 474 | "" | |
| 475 | )} | |
| 476 | ||
| 477 | <span class="size desktop">{meta}</span> | |
| 478 | </span> | |
| 479 | </a> | |
| 480 | </li> | |
| 481 | ); | |
| 482 | } | |
| 483 | ||
| 484 | function fileIcon(file: MediaFile, dirOpen?: boolean) { | |
| 485 | if (file.kind === MediaFile.Kind.directory) { | |
| 486 | return dirOpen ? "dir-open" : "dir"; | |
| 487 | } | |
| 488 | if (file.basename === "readme.txt") { | |
| 489 | return "readme"; | |
| 490 | } | |
| 491 | if (file.path === "/2024/for everyone") { | |
| 492 | return "snow"; | |
| 493 | } | |
| 494 | const ext = path.extname(file.basename).toLowerCase(); | |
| 495 | if ( | |
| 496 | ext === ".mp4" || | |
| 497 | ext === ".mkv" || | |
| 498 | ext === ".webm" || | |
| 499 | ext === ".avi" || | |
| 500 | ext === ".mov" | |
| 501 | ) { | |
| 502 | return "video"; | |
| 503 | } | |
| 504 | if ( | |
| 505 | ext === ".mp3" || | |
| 506 | ext === ".flac" || | |
| 507 | ext === ".wav" || | |
| 508 | ext === ".ogg" || | |
| 509 | ext === ".m4a" | |
| 510 | ) { | |
| 511 | return "audio"; | |
| 512 | } | |
| 513 | if ( | |
| 514 | ext === ".jpg" || | |
| 515 | ext === ".jpeg" || | |
| 516 | ext === ".png" || | |
| 517 | ext === ".gif" || | |
| 518 | ext === ".webp" || | |
| 519 | ext === ".avif" || | |
| 520 | ext === ".heic" || | |
| 521 | ext === ".svg" | |
| 522 | ) { | |
| 523 | return "image"; | |
| 524 | } | |
| 525 | if (ext === ".comp" || ext === ".fuse" || ext === ".setting") return "fusion"; | |
| 526 | if (ext === ".txt" || ext === ".md") return "text"; | |
| 527 | if (ext === ".html") return "webpage"; | |
| 528 | if (ext === ".blend") return "blend"; | |
| 529 | if ( | |
| 530 | ext === ".zip" || | |
| 531 | ext === ".rar" || | |
| 532 | ext === ".7z" || | |
| 533 | ext === ".tar" || | |
| 534 | ext === ".gz" || | |
| 535 | ext === ".bz2" || | |
| 536 | ext === ".xz" | |
| 537 | ) { | |
| 538 | return "archive"; | |
| 539 | } | |
| 540 | if (ext === ".lnk") return "link"; | |
| 541 | if (ext === ".chat") return "chat"; | |
| 542 | if ( | |
| 543 | ext === ".ts" || | |
| 544 | ext === ".js" || | |
| 545 | ext === ".tsx" || | |
| 546 | ext === ".jsx" || | |
| 547 | ext === ".css" || | |
| 548 | ext === ".py" || | |
| 549 | ext === ".lua" || | |
| 550 | ext === ".sh" || | |
| 551 | ext === ".bat" || | |
| 552 | ext === ".ps1" || | |
| 553 | ext === ".cmd" || | |
| 554 | ext === ".php" | |
| 555 | ) { | |
| 556 | return "code"; | |
| 557 | } | |
| 558 | if (ext === ".json" || ext === ".toml" || ext === ".yaml" || ext === ".yml") { | |
| 559 | return "json"; | |
| 560 | } | |
| 561 | return "file"; | |
| 562 | } | |
| 563 | ||
| 564 | function RootDirView({ | |
| 565 | dir, | |
| 566 | activeFilename, | |
| 567 | isLast, | |
| 568 | hasCotyledonCookie, | |
| 569 | }: { | |
| 570 | dir: MediaFile; | |
| 571 | activeFilename: string | null; | |
| 572 | isLast: boolean; | |
| 573 | hasCotyledonCookie: boolean; | |
| 574 | }) { | |
| 575 | const children = dir.getPublicChildren(); | |
| 576 | let readme: MediaFile | null = null; | |
| 577 | ||
| 578 | const groups = { | |
| 579 | // years 2025 and onwards | |
| 580 | years: [] as MediaFile[], | |
| 581 | // named categories | |
| 582 | categories: [] as MediaFile[], | |
| 583 | // years 2017 to 2024 | |
| 584 | cotyledon: [] as MediaFile[], | |
| 585 | }; | |
| 586 | const colorMap = { | |
| 587 | years: "#a2ff91", | |
| 588 | categories: "#9c91ff", | |
| 589 | cotyledon: "#ff91ca", | |
| 590 | }; | |
| 591 | for (const child of children) { | |
| 592 | const basename = child.basename; | |
| 593 | if (basename === readmeFile) { | |
| 594 | readme = child; | |
| 595 | continue; | |
| 596 | } | |
| 597 | ||
| 598 | const year = basename.match(/^(\d{4})/); | |
| 599 | if (year) { | |
| 600 | const n = parseInt(year[1]); | |
| 601 | if (n >= 2025) { | |
| 602 | groups.years.push(child); | |
| 603 | } else { | |
| 604 | groups.cotyledon.push(child); | |
| 605 | } | |
| 606 | } else { | |
| 607 | groups.categories.push(child); | |
| 608 | } | |
| 609 | } | |
| 610 | ||
| 611 | if (readme && isLast) activeFilename ||= readmeFile; | |
| 612 | ||
| 613 | const main = ( | |
| 614 | <div class="content primary"> | |
| 615 | {readme && ( | |
| 616 | <ul> | |
| 617 | <ListItem | |
| 618 | file={readme} | |
| 619 | active={activeFilename === readmeFile} | |
| 620 | noDate | |
| 621 | /> | |
| 622 | </ul> | |
| 623 | )} | |
| 624 | {Object.entries(groups).map(([key, files]) => { | |
| 625 | if (key === "cotyledon" && !hasCotyledonCookie) { | |
| 626 | return null; | |
| 627 | } | |
| 628 | if (key === "years" || key === "cotyledon") { | |
| 629 | files.sort((a, b) => { | |
| 630 | return b.basename.localeCompare(a.basename); | |
| 631 | }); | |
| 632 | } else { | |
| 633 | files.sort((a, b) => { | |
| 634 | return a.basename.localeCompare(b.basename); | |
| 635 | }); | |
| 636 | } | |
| 637 | return ( | |
| 638 | <div class="group" data-group={key}> | |
| 639 | <h3 style={`color:${colorMap[key as keyof typeof colorMap]};`}> | |
| 640 | {key} | |
| 641 | </h3> | |
| 642 | <ul> | |
| 643 | {files.map((file) => ( | |
| 644 | <ListItem | |
| 645 | file={file} | |
| 646 | active={activeFilename === file.basename} | |
| 647 | noDate={key === "cotyledon"} | |
| 648 | /> | |
| 649 | ))} | |
| 650 | </ul> | |
| 651 | </div> | |
| 652 | ); | |
| 653 | })} | |
| 654 | </div> | |
| 655 | ); | |
| 656 | ||
| 657 | if (readme && isLast) { | |
| 658 | return ( | |
| 659 | <div class="hsplit"> | |
| 660 | <ReadmeView | |
| 661 | file={readme} | |
| 662 | siblingFiles={children} | |
| 663 | extra={!hasCotyledonCookie && ( | |
| 664 | <> | |
| 665 | <a href="/file/cotyledon" class="custom cotyledon-link desktop"> | |
| 666 | cotyledon | |
| 667 | </a> | |
| 668 | </> | |
| 669 | )} | |
| 670 | /> | |
| 671 | {main} | |
| 672 | {!hasCotyledonCookie && ( | |
| 673 | <> | |
| 674 | <a href="/file/cotyledon" class="custom cotyledon-link mobile"> | |
| 675 | cotyledon | |
| 676 | </a> | |
| 677 | </> | |
| 678 | )} | |
| 679 | </div> | |
| 680 | ); | |
| 681 | } | |
| 682 | ||
| 683 | return main; | |
| 684 | } | |
| 685 | ||
| 686 | function TextView({ | |
| 687 | file, | |
| 688 | siblingFiles = [], | |
| 689 | }: { | |
| 690 | file: MediaFile; | |
| 691 | siblingFiles?: MediaFile[]; | |
| 692 | }) { | |
| 693 | const contents = file.contents; | |
| 694 | ||
| 695 | if (file.path.startsWith("/2021/phoenix-write/maps")) { | |
| 696 | const basename = file.basename; | |
| 697 | if (basename.includes("map") && basename.endsWith(".txt")) { | |
| 698 | return ( | |
| 699 | <pre | |
| 700 | style="white-space:normal;max-width:73ch" | |
| 701 | dangerouslySetInnerHTML={{ | |
| 702 | __html: highlightHashComments(contents), | |
| 703 | }} | |
| 704 | ></pre> | |
| 705 | ); | |
| 706 | } | |
| 707 | } | |
| 708 | ||
| 709 | return ( | |
| 710 | <pre | |
| 711 | style="white-space:pre-wrap;max-width:70ch" | |
| 712 | dangerouslySetInnerHTML={{ | |
| 713 | __html: highlightLinksInTextView( | |
| 714 | contents, | |
| 715 | siblingFiles.filter((f) => f.kind === MediaFile.Kind.file), | |
| 716 | ), | |
| 717 | }} | |
| 718 | ></pre> | |
| 719 | ); | |
| 720 | } | |
| 721 | ||
| 722 | function ChatView({ file }: { file: MediaFile }) { | |
| 723 | const contents = file.contents; | |
| 724 | return ( | |
| 725 | <div | |
| 726 | style="max-width:70ch" | |
| 727 | class="convo" | |
| 728 | dangerouslySetInnerHTML={{ | |
| 729 | __html: highlightConvo(contents), | |
| 730 | }} | |
| 731 | > | |
| 732 | </div> | |
| 733 | ); | |
| 734 | } | |
| 735 | ||
| 736 | function CodeView({ file }: { file: MediaFile }) { | |
| 737 | const highlightedContents = file.contents; | |
| 738 | if (!highlightedContents) { | |
| 739 | if (file.size > 1_000_000) { | |
| 740 | return <DownloadViewTooBig file={file} />; | |
| 741 | } | |
| 742 | return <DownloadViewCodeNotComputed file={file} />; | |
| 743 | } | |
| 744 | return ( | |
| 745 | <pre | |
| 746 | style="white-space:pre-wrap" | |
| 747 | dangerouslySetInnerHTML={{ | |
| 748 | __html: highlightedContents, | |
| 749 | }} | |
| 750 | /> | |
| 751 | ); | |
| 752 | } | |
| 753 | ||
| 754 | function VideoView({ file }: { file: MediaFile }) { | |
| 755 | useInlineScript("video_player"); | |
| 756 | const dimensions = file.parseDimensions() ?? { width: 1920, height: 1080 }; | |
| 757 | return ( | |
| 758 | <> | |
| 759 | <video | |
| 760 | controls | |
| 761 | preload | |
| 762 | style={`background:transparent;aspect-ratio:${ | |
| 763 | simplifyFraction( | |
| 764 | dimensions.width, | |
| 765 | dimensions.height, | |
| 766 | ) | |
| 767 | }`} | |
| 768 | > | |
| 769 | <source | |
| 770 | src={"/file" + file.path} | |
| 771 | type={contentTypeFromExt(file.path)} | |
| 772 | /> | |
| 773 | </video> | |
| 774 | </> | |
| 775 | ); | |
| 776 | } | |
| 777 | ||
| 778 | function AudioView({ | |
| 779 | file, | |
| 780 | onlyAudio = false, | |
| 781 | }: { | |
| 782 | file: MediaFile; | |
| 783 | onlyAudio?: boolean; | |
| 784 | }) { | |
| 785 | const parent = file.getParent(); | |
| 786 | let lyricsFile: MediaFile | null = null; | |
| 787 | if (parent && !onlyAudio) { | |
| 788 | const siblings = parent.getPublicChildren(); | |
| 789 | // show lyrics only if | |
| 790 | // - this media file is the only audio file | |
| 791 | // - there is lyrics.txt in the same directory | |
| 792 | const audioFiles = siblings.filter( | |
| 793 | (f) => | |
| 794 | f.kind === MediaFile.Kind.file && | |
| 795 | extensionToViewer[path.extname(f.basename)] === AudioView, | |
| 796 | ); | |
| 797 | if ( | |
| 798 | audioFiles.length === 1 && | |
| 799 | siblings.find((f) => f.basename === "lyrics.txt") | |
| 800 | ) { | |
| 801 | lyricsFile = siblings.find((f) => f.basename === "lyrics.txt")!; | |
| 802 | } | |
| 803 | } | |
| 804 | return ( | |
| 805 | <> | |
| 806 | <audio controls preload="none" style="width:100%;"> | |
| 807 | <source | |
| 808 | src={"/file" + file.path} | |
| 809 | type={`audio/${path.extname(file.path).substring(1)}`} | |
| 810 | /> | |
| 811 | </audio> | |
| 812 | {lyricsFile && ( | |
| 813 | <div class="lyrics"> | |
| 814 | <h2 style="margin-left:1rem;margin-bottom:-0.2rem;margin-top:0.5rem;"> | |
| 815 | lyrics | |
| 816 | </h2> | |
| 817 | <TextView file={lyricsFile} siblingFiles={[]} /> | |
| 818 | </div> | |
| 819 | )} | |
| 820 | </> | |
| 821 | ); | |
| 822 | } | |
| 823 | ||
| 824 | function ImageView({ file }: { file: MediaFile }) { | |
| 825 | return ( | |
| 826 | <img | |
| 827 | src={"/file" + file.path} | |
| 828 | alt={file.basename} | |
| 829 | style="max-width:100%;max-height:100%;object-fit:contain;margin:auto;display:block;" | |
| 830 | /> | |
| 831 | ); | |
| 832 | } | |
| 833 | ||
| 834 | function IframeView({ file }: { file: MediaFile }) { | |
| 835 | return ( | |
| 836 | <> | |
| 837 | <iframe | |
| 838 | style="flex:1;height:100%;border:none" | |
| 839 | src={"/file" + file.path + "?view=embed"} | |
| 840 | /> | |
| 841 | </> | |
| 842 | ); | |
| 843 | } | |
| 844 | ||
| 845 | const helptexts: Record<string, any> = { | |
| 846 | ".blend": ( | |
| 847 | <p> | |
| 848 | <code>.blend</code> files can be open in{" "} | |
| 849 | <a href="https://www.blender.org" target="_blank"> | |
| 850 | Blender | |
| 851 | </a> | |
| 852 | . | |
| 853 | </p> | |
| 854 | ), | |
| 855 | ".comp": <FusionHelp ext="comp" name="composition files (project/scene)" />, | |
| 856 | ".setting": <FusionHelp ext="setting" name="macro/template" />, | |
| 857 | ".fuse": <FusionHelp ext="setting" name="FUSE Plugin (lua source code)" />, | |
| 858 | }; | |
| 859 | ||
| 860 | function FusionHelp({ ext, name }: { ext: string; name: string }) { | |
| 861 | return ( | |
| 862 | <> | |
| 863 | <p> | |
| 864 | <code>.{ext}</code> files are{" "} | |
| 865 | <a | |
| 866 | href="https://www.blackmagicdesign.com/products/fusion" | |
| 867 | target="_blank" | |
| 868 | > | |
| 869 | Fusion | |
| 870 | </a>{" "} | |
| 871 | {name}. | |
| 872 | </p> | |
| 873 | <p> | |
| 874 | Blackmagic Fusion is paid-only since mid-2019 (the "Studio" version). | |
| 875 | The last free version is Fusion 9.0.2, which exists for MacOS, Linux, | |
| 876 | and Microsoft Windows on{" "} | |
| 877 | <a href="https://www.blackmagicdesign.com/support" target="_blank"> | |
| 878 | Blackmagic Design's support page | |
| 879 | </a> | |
| 880 | . | |
| 881 | </p> | |
| 882 | <p> | |
| 883 | Alternatively, you can use DaVinci Resolve, however I do not recommend | |
| 884 | it as it is very unstable, at least as of when I last tried version 18. | |
| 885 | </p> | |
| 886 | </> | |
| 887 | ); | |
| 888 | } | |
| 889 | function DownloadView({ file }: { file: MediaFile }) { | |
| 890 | const help = helptexts[path.extname(file.basename)]; | |
| 891 | return help | |
| 892 | ? ( | |
| 893 | <> | |
| 894 | {help} | |
| 895 | <p> | |
| 896 | File download:{" "} | |
| 897 | <a href={"/file" + file.path + "?dl"} aria-label="download"> | |
| 898 | {file.basename} | |
| 899 | </a> | |
| 900 | . | |
| 901 | </p> | |
| 902 | </> | |
| 903 | ) | |
| 904 | : ( | |
| 905 | <> | |
| 906 | <p> | |
| 907 | No built-in viewer for <code>{path.extname(file.basename)}</code>{" "} | |
| 908 | files. | |
| 909 | </p> | |
| 910 | <p> | |
| 911 | Instead, you may download it:{" "} | |
| 912 | <a href={"/file" + file.path + "?dl"} aria-label="download"> | |
| 913 | {file.basename} | |
| 914 | </a> | |
| 915 | . | |
| 916 | </p> | |
| 917 | </> | |
| 918 | ); | |
| 919 | } | |
| 920 | ||
| 921 | function DownloadViewTooBig({ file }: { file: MediaFile }) { | |
| 922 | return ( | |
| 923 | <div style="padding:0.5rem"> | |
| 924 | <p> | |
| 925 | This file is too large to view in the browser right now ( | |
| 926 | <code>{formatSize(file.size)}</code>). Later, this file viewer will | |
| 927 | properly process video files for web streaming. | |
| 928 | </p> | |
| 929 | <p> | |
| 930 | Instead, you may download it:{" "} | |
| 931 | <a href={"/file" + file.path + "?dl"} aria-label="download"> | |
| 932 | {file.basename} | |
| 933 | </a> | |
| 934 | . | |
| 935 | </p> | |
| 936 | </div> | |
| 937 | ); | |
| 938 | } | |
| 939 | ||
| 940 | function DownloadViewCodeNotComputed({ file }: { file: MediaFile }) { | |
| 941 | return ( | |
| 942 | <div style="padding:0.5rem"> | |
| 943 | <p> | |
| 944 | This file has not been pre-processed for code highlighting. This either | |
| 945 | means it is not a valid UTF-8 text file (<code>.ts</code>{" "} | |
| 946 | can be TypeScript or an MPEG "Transport Stream"), or there is a bug in | |
| 947 | the file indexing logic. | |
| 948 | </p> | |
| 949 | <p> | |
| 950 | Instead, you may download it:{" "} | |
| 951 | <a href={"/file" + file.path + "?dl"} aria-label="download"> | |
| 952 | {file.basename} | |
| 953 | </a> | |
| 954 | . | |
| 955 | </p> | |
| 956 | </div> | |
| 957 | ); | |
| 958 | } | |
| 959 | ||
| 960 | function ReadmeView({ | |
| 961 | file, | |
| 962 | siblingFiles, | |
| 963 | extra, | |
| 964 | }: { | |
| 965 | file: MediaFile; | |
| 966 | siblingFiles: MediaFile[]; | |
| 967 | extra?: any; | |
| 968 | }) { | |
| 969 | // let showFileCandidates = siblingFiles.filter(f => | |
| 970 | // f.kind === MediaFile.Kind.file | |
| 971 | // && (extensionToViewer[path.extname(f.basename)] === AudioView | |
| 972 | // || extensionToViewer[path.extname(f.basename)] === VideoView) | |
| 973 | // ); | |
| 974 | return ( | |
| 975 | <div class="content readme" data-testid={TestID.Readme}> | |
| 976 | {/* {showFileCandidates.length === 1 && <AudioView file={showFileCandidates[0]} onlyAudio />} */} | |
| 977 | <TextView file={file} siblingFiles={siblingFiles} /> | |
| 978 | {extra} | |
| 979 | </div> | |
| 980 | ); | |
| 981 | } | |
| 982 | ||
| 983 | const gcd = (a: number, b: number): number => (b ? gcd(b, a % b) : a); | |
| 984 | function simplifyFraction(n: number, d: number) { | |
| 985 | const divisor = gcd(n, d); | |
| 986 | return `${n / divisor}/${d / divisor}`; | |
| 987 | } | |
| 988 | ||
| 989 | export function contentTypeFromExt(src: string) { | |
| 990 | src = src.toLowerCase(); | |
| 991 | if (src.endsWith(".m3u8")) return "application/x-mpegURL"; | |
| 992 | if (src.endsWith(".webm")) return "video/webm"; | |
| 993 | if (src.endsWith(".mp4")) return "video/mp4"; | |
| 994 | if (src.endsWith(".mkv")) return "video/x-matroska"; | |
| 995 | if (src.endsWith(".avi")) return "video/x-msvideo"; | |
| 996 | if (src.endsWith(".mov")) return "video/quicktime"; | |
| 997 | if (src.endsWith(".ogg")) return "video/ogg"; | |
| 998 | throw new Error("Unknown video extension: " + path.extname(src)); | |
| 999 | } | |
| 1000 | ||
| 1001 | // Add class properties to the components | |
| 1002 | AudioView.class = "audio"; | |
| 1003 | ImageView.class = "image"; | |
| 1004 | VideoView.class = "video"; | |
| 1005 | TextView.class = "text"; | |
| 1006 | DownloadView.class = "download"; | |
| 1007 | CodeView.class = "code"; |
src/friend-auth.ts created+75| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | let friendPassword = ""; | |
| 2 | try { | |
| 3 | friendPassword = require("./friends/hardcoded-password.ts").friendPassword; | |
| 4 | } catch {} | |
| 5 | ||
| 6 | export const app = new Hono(); | |
| 7 | ||
| 8 | const cookieAge = 60 * 60 * 24 * 30; // 1 month | |
| 9 | ||
| 10 | function checkFriendsCookie(c: Context) { | |
| 11 | const cookie = c.req.header("Cookie"); | |
| 12 | if (!cookie) return false; | |
| 13 | const cookies = cookie.split("; ").map((x) => x.split("=")); | |
| 14 | return cookies.some( | |
| 15 | (kv) => | |
| 16 | kv[0].trim() === "friends_password" && | |
| 17 | kv[1].trim() && | |
| 18 | kv[1].trim() === friendPassword, | |
| 19 | ); | |
| 20 | } | |
| 21 | ||
| 22 | export function requireFriendAuth(c: Context) { | |
| 23 | const k = c.req.query("password") || c.req.query("k"); | |
| 24 | if (k) { | |
| 25 | if (k === friendPassword) { | |
| 26 | return c.body(null, 303, { | |
| 27 | Location: "/friends", | |
| 28 | "Set-Cookie": | |
| 29 | `friends_password=${k}; Path=/; HttpOnly; SameSite=Strict; Max-Age=${cookieAge}`, | |
| 30 | }); | |
| 31 | } else { | |
| 32 | return c.body(null, 303, { | |
| 33 | Location: "/friends", | |
| 34 | }); | |
| 35 | } | |
| 36 | } | |
| 37 | if (checkFriendsCookie(c)) { | |
| 38 | return undefined; | |
| 39 | } else { | |
| 40 | return serveAsset(c, "/friends/auth", 403); | |
| 41 | } | |
| 42 | } | |
| 43 | ||
| 44 | app.get("/friends", (c) => { | |
| 45 | const friendAuthChallenge = requireFriendAuth(c); | |
| 46 | if (friendAuthChallenge) return friendAuthChallenge; | |
| 47 | return serveAsset(c, "/friends", 200); | |
| 48 | }); | |
| 49 | ||
| 50 | let incorrectMap: Record<string, boolean> = {}; | |
| 51 | app.post("/friends", async (c) => { | |
| 52 | const ip = c.header("X-Forwarded-For") ?? getConnInfo(c).remote.address ?? | |
| 53 | "unknown"; | |
| 54 | if (incorrectMap[ip]) { | |
| 55 | return serveAsset(c, "/friends/auth/fail", 403); | |
| 56 | } | |
| 57 | const data = await c.req.formData(); | |
| 58 | const k = data.get("password"); | |
| 59 | if (k === friendPassword) { | |
| 60 | return c.body(null, 303, { | |
| 61 | Location: "/friends", | |
| 62 | "Set-Cookie": | |
| 63 | `friends_password=${k}; Path=/; HttpOnly; SameSite=Strict; Max-Age=${cookieAge}`, | |
| 64 | }); | |
| 65 | } | |
| 66 | incorrectMap[ip] = true; | |
| 67 | await setTimeout(2500); | |
| 68 | incorrectMap[ip] = false; | |
| 69 | return serveAsset(c, "/friends/auth/fail", 403); | |
| 70 | }); | |
| 71 | ||
| 72 | import { type Context, Hono } from "hono"; | |
| 73 | import { serveAsset } from "#sitegen/assets"; | |
| 74 | import { setTimeout } from "node:timers/promises"; | |
| 75 | import { getConnInfo } from "hono/bun"; |
src/friends/.gitignore created+4| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | # this directory is private, and not checked into the git repository | |
| 2 | # instead, it is version-controlled via computer clover's backup system. | |
| 3 | * | |
| 4 | !.gitignore |
src/pages/friends/auth.fail.marko created+9| ... | ... | @@ -0,0 +1,9 @@ |
| 1 | <main> | |
| 2 | <p>incorrect or outdated password</p> | |
| 3 | <p>please contact clover</p> | |
| 4 | <form method="post" action="/friends"> | |
| 5 | <h1>try again</h1> | |
| 6 | <input type="password" name="password"/> | |
| 7 | <button type="submit">enter</button> | |
| 8 | </form> | |
| 9 | </main> |
src/pages/friends/auth.marko created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | <main> | |
| 2 | <form method="post" action="/friends"> | |
| 3 | <h1>what's the password</h1> | |
| 4 | <input type="password" name="password"/> | |
| 5 | <button type="submit">enter</button> | |
| 6 | <p>(clover will give the password to you if you're a friend)</p> | |
| 7 | </form> | |
| 8 | </main> |
src/pages/subscribe.client.ts created+97| ... | ... | @@ -0,0 +1,97 @@ |
| 1 | // @ts-nocheck | |
| 2 | // manually obfuscated to make it very difficult to reverse engineer | |
| 3 | // if you want to decode what the email is, visit the page! | |
| 4 | // stops people from automatically scraping the email address | |
| 5 | // | |
| 6 | // Unfortunately this needs a rewrite to support Chrome without | |
| 7 | // hardware acceleration and some Linux stuff. I will probably | |
| 8 | // go with a proof of work alternative. | |
| 9 | requestAnimationFrame(() => { | |
| 10 | const hash = "SHA"; | |
| 11 | const a = [ | |
| 12 | { parentElement: document.getElementById("subscribe") }, | |
| 13 | function (b) { | |
| 14 | let c = 0, d = 0; | |
| 15 | for (let i = 0; i < b.length; i++) { | |
| 16 | c = (c + b[i] ^ 0xF8) % 8; | |
| 17 | d = (c * b[i] ^ 0x82) % 193; | |
| 18 | } | |
| 19 | a[c + 1]()[c](d, b.buffer); | |
| 20 | }, | |
| 21 | function () { | |
| 22 | const i = a[4](a[3]()); | |
| 23 | const b = i.innerText = a.pop(); | |
| 24 | if (a[b.indexOf("@") / 3]) { | |
| 25 | i.href = "mailto:" + b; | |
| 26 | } | |
| 27 | }, | |
| 28 | function () { | |
| 29 | return a[a.length % 10]; | |
| 30 | }, | |
| 31 | function (x) { | |
| 32 | return x.parentElement; | |
| 33 | }, | |
| 34 | function (b, c) { | |
| 35 | throw new Uint8Array( | |
| 36 | c, | |
| 37 | 0, | |
| 38 | 64, | |
| 39 | c.parentElement = this[8].call(b.call(this)).location, | |
| 40 | ); | |
| 41 | }, | |
| 42 | function (b, c) { | |
| 43 | this.width = 8; | |
| 44 | this.height = 16; | |
| 45 | b.clearColor(0.5, 0.7, 0.9, 1.0); | |
| 46 | b.clear(16408 ^ this.width ^ this.height); | |
| 47 | const e = new Uint8Array(4 * this.width * this.height); | |
| 48 | b.readPixels(0, 0, this.width, this.height, b.RGBA, b.UNSIGNED_BYTE, e); | |
| 49 | let parent = a[this.width / 2](this); | |
| 50 | while (parent.tagName !== "BODY") { | |
| 51 | parent = a[2 * this.height / this.width](parent); | |
| 52 | } | |
| 53 | try { | |
| 54 | let d = [hash, e.length].join("-"); | |
| 55 | const b = a[0.25 * this.height](a.pop()(parent)).subtle.digest(d, e); | |
| 56 | [, d] = a; | |
| 57 | b.then(c.bind(a, a[this.width].bind(globalThis))).catch(d); | |
| 58 | } catch (e) { | |
| 59 | fetch(e).then(a[5]).catch(a[2]); | |
| 60 | } | |
| 61 | }, | |
| 62 | function (b, c) { | |
| 63 | const d = a.splice( | |
| 64 | 9, | |
| 65 | 1, | |
| 66 | [ | |
| 67 | a[3]().parentElement.id, | |
| 68 | c.parentElement.hostname, | |
| 69 | ].join(String.fromCharCode(b)), | |
| 70 | ); | |
| 71 | var e = new Error(); | |
| 72 | Object.defineProperty(e, "stack", { | |
| 73 | get() { | |
| 74 | a[9] = d; | |
| 75 | }, | |
| 76 | }); | |
| 77 | a[2].call(console.log(e)); | |
| 78 | }, | |
| 79 | function () { | |
| 80 | return this; | |
| 81 | }, | |
| 82 | "[failed to verify your browser]", | |
| 83 | function (a) { | |
| 84 | a = a.parentElement.ownerDocument.defaultView; | |
| 85 | return { parentElement: a.navigator.webdriver || a.crypto }; | |
| 86 | }, | |
| 87 | ]; | |
| 88 | try { | |
| 89 | const c = document.querySelector("canvas"); | |
| 90 | const g = c.getContext("webgl2") || c.getContext("webgl"); | |
| 91 | a[0].parentElement.innerText = "[...loading...]"; | |
| 92 | g.field || requestAnimationFrame(a[6].bind(c, g, a[5])); | |
| 93 | } catch { | |
| 94 | a.pop(); | |
| 95 | fetch(":").then(a[5]).catch(a[2]); | |
| 96 | } | |
| 97 | }); |
src/pages/subscribe.css created+17| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | #subscribe[href] { | |
| 2 | display: flex; | |
| 3 | justify-content: center; | |
| 4 | align-items: center; | |
| 5 | font-size: 1.5rem; | |
| 6 | font-weight: bold; | |
| 7 | text-align: center; | |
| 8 | } | |
| 9 | #subscribe:not([href]) { | |
| 10 | opacity: 0.5; | |
| 11 | } | |
| 12 | .flex { | |
| 13 | display: flex; | |
| 14 | justify-content: center; | |
| 15 | align-items: center; | |
| 16 | height: 50px; | |
| 17 | } |
src/pages/subscribe.marko created+39| ... | ... | @@ -0,0 +1,39 @@ |
| 1 | import './subscribe.css'; | |
| 2 | export const meta = { | |
| 3 | title: "paper clover mailing list", | |
| 4 | description: "subscribe to the mailing list", | |
| 5 | }; | |
| 6 | ||
| 7 | client import "./subscribe.client.ts"; | |
| 8 | ||
| 9 | <main> | |
| 10 | <h1>mailing list</h1> | |
| 11 | <canvas style="display: none;"></canvas> | |
| 12 | <p> | |
| 13 | the mailing list is used for big project updates. this is about once every | |
| 14 | couple of months. | |
| 15 | </p> | |
| 16 | <p> | |
| 17 | the list is currently managed manually. to get added, please email anything | |
| 18 | with the word "subscribe" in the subject or body to the following address: | |
| 19 | </p> | |
| 20 | <code class="flex"> | |
| 21 | <a id="subscribe"> | |
| 22 | [please enable javascript, this is an anti-spam/scraping measure] | |
| 23 | </a> | |
| 24 | </code> | |
| 25 | <p> | |
| 26 | to unsubscribe, send an email asking to unsubscribe. for those who are close | |
| 27 | friends with me, add your name and i'll add you to the 'friends' list, where i | |
| 28 | send life updates in addition to new content (1-2 times per month). | |
| 29 | </p> | |
| 30 | <p> | |
| 31 | alternatively, you can join <a href="/discord">the discord</a> to receive mentions in the <code>#new</code> channel. | |
| 32 | </p> | |
| 33 | <br> | |
| 34 | <br> | |
| 35 | <br> | |
| 36 | <p> | |
| 37 | <a href="/">back to home</a> | |
| 38 | </p> | |
| 39 | </main> |
src/pages/waterfalls.css created+31| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | .waterfalls { | |
| 2 | max-width: 110ch; | |
| 3 | } | |
| 4 | .waterfalls > figure { | |
| 5 | margin-top: 2rem; | |
| 6 | margin-bottom: 2rem; | |
| 7 | } | |
| 8 | .contain { | |
| 9 | max-width: 80ch; | |
| 10 | margin: auto; | |
| 11 | } | |
| 12 | .waterfalls_bg1 { | |
| 13 | position: absolute; | |
| 14 | top: 0; | |
| 15 | left: 0; | |
| 16 | width: 100vw; | |
| 17 | height: 1000px; | |
| 18 | background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQgNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCAxTDEgMEwyID1MMSAyTDIgM0wzIDJMNCAzTDMgNEwyIDNMMSAyTDAgMVoiIGZpbGw9IiM1QkNFRkEiLz48cGF0aCBkPSJNMSA0TDAgM0wxIDJMMiAzTDMgMkwyIDFMMyAwTDQgMUwzIDJMMiAzTDEgNFoiIGZpbGw9IiNGNUE5QjgiLz48L3N2Zz4=); | |
| 19 | background-position: 50% -100px; | |
| 20 | filter: blur(1px); | |
| 21 | mask-image: linear-gradient(0, transparent 0%, #0004 100%); | |
| 22 | z-index: -2; | |
| 23 | } | |
| 24 | .waterfalls p, .waterfalls h1 { | |
| 25 | text-shadow: 0 0 4px #000, 0 0 8px #000, 1px 1px 0px #000; | |
| 26 | } | |
| 27 | body { | |
| 28 | color: white; | |
| 29 | background-position: 50% -10px; | |
| 30 | background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAD6APoAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQICAQEBAQMCAgICAwMEBAMDAwMEBAYFBAQFBAMDBQcFBQYGBgYGBAUHBwcGBwYGBgb/2wBDAQEBAQEBAQMCAgMGBAMEBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgb/wAARCAEsASwDAREAAhEBAxEB/8QAHAAAAwEBAQEBAQAAAAAAAAAABAUGAwcCAQAK/8QANhAAAgEDBAEDAwMDBAIBBQAAAQIDAAQRBRIhMUETIlEGYXEUMoEjQpEVM1KhYnIkB0OxwfH/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A/lY9Lnofk0GLKVYY+eAaD22dp+figxIyORxQZGONcuR0KDG3lmlLBc7Q3HFAHfWs7ZZicDzmgTGDkIeyaDGSL9PIAf2n5FAUV9JFlADLjkCgxOoKBhU5/FAI17MxyGK/zQONL1WTcI5G4Pk90FI19Ii7k5GO6BBda5qA3bHwo+KCbub+5ujmaVm+xNAHQF2VlNfTJDCpYscZFB2jRvo+G2ss3AHqug5P4oJbVtGlsZyyqTGTwRQLFGAAaAuLx/60BjkBSSM4FBGXdu9zdyNjgGgHmsSowy7fwKAH0I42BOMZoLHTJIZYBAwBRlxQKJoBpt7u25jdsjiguLKSGeJXULyKAo4zwOBQaRFkYOOMdUD54E1GAOP9xe6BxpOjw+ixkwCF80CK+iEczKvKqfFAicgMcnFBmzhQTkGgFEhLZ/tzQexHGeTjJ+1AQrAnjx80BC26yqXBwfgUAjIVJGCaDxQZyRmQbR54NA0gjt7aBQQNx7oE9/dpvAVcKT3QT13t3h14IPIoBrgCaDcP3LQZWsu6Jo5OARwTQLZIXVyqqT8YFB6isLiQnCk5+1BsNNvI23LG2fOBQOrS7ZYmimUg7fNAsnAdJSDwDQIeqAi1tpLqVYo1JLHkgUHbPpXQrbTwkkqBpz8igt55cNjpftQKbqOC4V45ADkHBNBz3UdLktpCwUmMnjigARSOTx9qAnG5MHyPNALHaqjM2OSecigHvoAYX45AzQQ9y2VYeRQaadqBtnAY+35zQO7i7/1MKiLynTUBFlfyWCmKQHjwaB3a6vE5O8DJ57oKqwniuyqqF5OO6C8stJRUWRWx5K0H2+u4bWGRRgMV4x80EW8nqgv8g0E9dzLE3JBOOBQLDcNIe+B4oN0bHHye6BkgG0cA/egFV8MSD55HxQHwOxO0Hg+aA1oFbABG74zQBTQFDn7+aAWg/EFhg5NAq1GI+luXsHigmnlY8eR80HhZGUFQeD2DQaTssUKlcA55oMY5y2GGCR3QMIL0x4Bxx9qBxFfr6W7AJ20AqPFcOd6BSfPVAJewpFC4Xomgn7azmu5dkSk5PJxQdQ0HQUtFV5FzKftQXdtA6MGIIFARdLIzHZ7vjFAKLSZyrsMY7oML5fUX0BFuJ8leqCUutNkgOQvf2oFpBBweCKD8ATnA6oMZlDoykjJFBzrU4Hgnbg7c8GgWuBgEYH3oHeiuTKir8igqdQsPVQSIMMBzQTZ9SBiCCGHjFA+0PUWt7hGmYrHu55oOoyfWFtbwBYCHYrQJ1v5dXJXdguaD3ft/p1udxG7YfNBzG51YvOdzDGeqAyC/iIBZh15NAU98jMqxMCT3g0D2EkxqT380BXoQKcswGTyaDcXNjED/AFVB+QaACXXLKBiwk3EdAGgJsdYttU3x4CuOuKD88RDkDyaDzK8UCguwH2oFc19bSKyHkEUEtcKqyEp+00AzMFx5oBbiXKhQTjPzQDxyFD9qBhFIsmMnBoD1f0uMgig1WTdypxj4oNRHJeMIV7PfFBb6NosdnGGdQXI7IoKaNvTZWA/aeqBysnqR7h8eKDP1RFkjk0A730jZC8CgGad2yc4J7NAJcN7GZ+ePNBLOiyszLgAd80CDUNWjtQY0OWHZFBJy61cu3DEZ8ZoAri7e4Hv5PkmgWSFgNp5+OKCp+noE3h2YbvAoOiRxhgOiMdUC6+0eO4BZQFb7UEzeWVxbIcrkD+4UAEEsxIBJIz5oKXTdXTTZA8xyCOqD9revjU1Ig4UDzQc3lEhlYknOegKD6skgIG8gA/NBc6RZQvEshkBcjJyaCujjRUVdw4Hk0EvrkstvANjsGPwaCL9e5b9zscnjmg+ks2Msfv5oKb6aR/1DOM7QO6C6nuhFC3sJfwRQR93JNMSW3bc9UC9I3OeSfzQbNFhSTk8c5oFrod5A80HiW1JG8tj7UC9htJHf3FB+VipypwaA+GWR8bhkCgZ2kTzSCNFJJPgUHSNJ0X0VWRkJkI+KClFrKFyF66FB4aGVBkocfig/JK0eRyB8UA/6ve5XPIPPNB7oP1Al1O8VI2QH3fAoJUSOAyhj7++aCa1DTJVdn9zBucmgRNbPG/uU4z8UBCxR4yBj5oAbpFZtoA4+aB7oEG+UKDjkUHS449gHJPHmg9kgAk9CglNXv8kwoBzncaCfTaPIzQBXDCRtnjNBpDHtUgA7fxQKplxKQAaAd1JGPI+aBzo100MojkY7CeOaC+RGZQyscEcYoE+uRNNGm0Z5HVBPR2ZGAwx8mg+fo2kmWFBnJ5oLvTbJbOEDHuP7jQOfTWQhWAOe80AmoaWsERlVcgjqgl1tZWJZEYD4xQfZbeYpgIQAOTigSMpViDnOfNBrdRkWoYnB8UCCgIt4Gmbge0dmgb29o8jrHGpOT4oOkaHoiQBGdfexFB0SJY4UAK5fHxQYtdbDnbnFBhJqcZO104+cUAkuyRQwXAPRFAkktZIrhXGSrHwaBt6JxncM4zigW3lwtvGxJw3xQRM8zTSM5PZ4FB4j/ev5oG5EJhIkCk44JoABpEd8G2AAA0AUmgC3yTkgGgkNStDDNwpAz8UDz6ei2yBsgdZFBdBwe+KD64yjknAC8mg5vqM6C4cAjO6gVvcN0p/mg9WsTTTYwSaDpmi/TX6+3IZCuPJ4oE2pfT1tZ3LozgkHvdQLv9GtX6cZ/wDagFl0KRBvhJYjkYNA7tJJI4FSRSGXjkUB89sSP+SZ4oFV2kcftUe4ngCgL02wEf8AVce4jugedUBcZAYE8UBzv+oCwgbgxHBoGMukRW1vGZEUNJ0MUCS508MDtAUecCg53qdv+nuTjkZoBr2Rf0ijyfFBO0FZpdkzQAIuXk+1BeaVo62yCWRQXYZ5FBXWCAyhjgKpoG87Ju3KcgigWyLkE/bmgXNEXYfc90GdxdGBRGoBC90BFpdQ3iFGCh1/bzQZTS/py+/PA4IoIfULtriVhk7Q1AuJxyaD4jjcO+OqDX1mlPpg/wCKB96iWFmrqR6jAcZoN7W7t71feRuxyDQTP1DaBhmNAQp/cBQK9FVlk6IxQWAOQDQYXTk28iK2CRig5neW0yysWJPuPIoM4oWY5wTjugotHhHr5ZRweKDtOmyGKAJGAuV8D7UHOPqESfrpMtyaBEu9f7j/AAaBrZSsATIcqD1QNP8A47+7C80H2zmWRRG/J/FBhcacvriUHco6AoDVAUADxQfaDcnAJ+KBxoyq0vqMBhDnFAZqmoJdyogO0RnjmgmtYv7m1tiYV3gryyig5hNqT3Ln1hyW7oMLtjIFVMkDvFBha28lzMkaKWJbnAoOyaPpyW0EXqKN23nI80D6aZETnAAFAr/1IruCcZ+KAyx1D1JNjnO770DeVioGMYNB4kwsZI/djv4oJy4B5JPdAuiMyTqyZVS3OKB/clZERZP7x3QR+p2n6aUsB7G6NAnZi32HxQeR33j70B9jbBpt27rkjFANqdwzTFQSFXoUAUFy8TBg3H2NBRQXMd0hVyCcchjQJ7iaGxlYREFj4oHNlK0sQZuzQC38hjTd0M80EzK3rsAfJxmgsNI0SD9M0smORnmg9QaeiXZKACMNxiguLKZFYIByeqCF+pFIvXJ46xQII4yxz4oN2OAFX/qg9qWA5J/zQMbdFDAg0DRW5wTkEfFB8dCh+x6IoPFBsWAAJOMigWT61Lp0pCco+M0BVvfxXaiQNknsZoHCRJcRmNxlWHINBz7W/p2SGV5oQShOTigV2VjJPIIlQsScE0HQNG0GKxxJIgMh55FBVErgADGKBZf52jnzQImbP48Cg9wSGKVHzgA80FtHMk0aEYOF5oBJ7kZKjgeTQK3ZNxIO4jwKDKD1JJc7AAG4yKBxdLugwF9wHGBQJLtRd2jK3+5F3mgjGG0kHjB80GZceOaCh0RRIxJ62nIoMNasFUNJH3gkjNBJAlTjHnkUDS2trhsNHlQfJoF17azRzBpSWBP7gKCr00D9OuDmg31S0LwRkDO770CmPRnEbTsQoQZwTQEWmqSykWeRtU4yKCjjQIo8kjugIjkaNlYHGDQIdfb1pQ/yPmgRxHaME44+aDUAZyOSTQbiIEcsB/NAwiRQQAf5FAWIySGzz4GaDdmEkQz+5RQD0Hxjwc/FBJ62wHYoEmn6i1rcLknYTjugvZNcit4VdG5YZ4oFU/1IZx6bAbG/dk0Dz6YuNNMzB1Hqnlc0FjOAJDtGF8UGVAs1H/bP5oEVBnIwUH5oKHSrsm2Kt44zQe5thPLEk9YoA96o2Ao5PG6g0S4KuvSrnqgdpKjr2DnugnppViu5IwOHHIoJK+wJ3C8AsaAE5IODg0DrQ7gxTbGPBBzmgaajMrEj5ByKCVt7cTXJJ/aD1QUiI7ssMS4wMcDxQPY9Et5osT+5yOCaDCPTBZuI+493BNB81VlSOMr+1aCJ1HU5GX01covkA0AOnTFZ0YHktyTQdFjO5FPnHNB7oEuqQu2HHIGKCf8AcGII4oCIsnA6x0aBgsQIyWH+aDaFwTxzQMhnb98cUGYIAYHyKDzQfDjHPX3oE2q2qTQsQRlV4oOcXAMchBOME4NAytxJOoAJbig+PFKJREFbcTgACg6r9LfTawRLf3hKnGVUigrJQJXAj/b4JoPxtZcZAz+KBNqcUqpypxk54oJ8h8cKc/igxaKUqfY35xQF6X6o3R4IB7JFA3uURCpLYbHJoFFwJCCysGAPGKBf6r7sMT+DQPIZmVFIz9qBRfu/6pSCctQKLxGSXL9sOTQCUDa1suFmEqj7ZoNdRlUR7twLKOTmgA0gPMxKoTlu8UF7YRRqpwAZAOTQH5xyTgjzQfCPXO0As3gAUCH6gJsrfa6Nu8cUHKbp3lcsFOOfFAVpzFp41IP7qDp8QxGv45oNKAe4AKHIB4oJq7jCNuUYyecUGCEL55NAakq7RmgIgXBHuGB96BqpGBz0OaDyiGQnAwB3QZtgMVyOD80GcgYoQv7vFAmmtruRGTcMHxmgjdT02WJskgnPVBpp7m3KlsZyMg0HRNA0y11G8juZNoCDLAmgtrydd4ghIWKLgAUGsbf0xtHIoHlou9BvB4HFBrc2Ecse0gHnmgl7nTI4WLBBgn5oBRDGMjaDnsUHkxIgJRAG+RQJrmQOGB7AoFTCQZKscfBoAnuzG25gO/igNj1u3KhWTGPJWg+vItxKJjj015BFB8mspL5RLGeB1zQI7mwuYSdyEgfFAKJpVG3ewA8UHqNtzYkYlc8g0FjZT2EFowtwDLt6xzQH6TJI+93zyxxmgeypvUFOSfFAytrdbCIXMqgluVBoFt9CmqbjKFIJ4oM7L6V0y7GwIu7zkUBA/wDp5AknrRDbt6FAm1S1l0slXjYqPIFAnh1GGQhSSD9xQer+4jjiBRgxYdUE80zSA5PIFB4V8kBs/wAUG4VSMgmg1BI6JFAXbOxYck89UDm6ZbW0aQcMRweqDn8msPHKzFyRnoGgaWmtRSgbz+eaBv8AqYzGZFYEAfNBF6ndJNK2DwD3QKFfPnBHwaCp0K/mgkCq5G7jg0F/Z75XD8tuPOaCljiKKHbx/bQe21BgRGgI+CBQOoLoMgVn92OSTQD3aq6nGOuKCclQI5wMUGTdH8UEjesUcsPHdAEJTjep4PYoFF3JuJ7GTQKTklQDyzUFLJiCyiUH3v3zQPbO7W3tFDYzig8PexXG5cA0CS9sw39SJeD2QKBA5KHaOMd0Fd9OWBmDSyD2480FjHAkPtUAAeAKA62dUkUuMqD1QftV1P15FiQERqAMUGMIYL3wfAoHOnlbdvWZwmDkgmgvdL1S1vBsUqSOKD1quj2t7EweJWyPig4pr30q1pK0tsPaMnAFBzrUnltztYng4xmgyt5coD39xzQMItvH/dAaI/8AiRg0GKsSSD/FA50qD1ZgWB2g5zQBfVeopEjRIw4XGAaDk8twzk4PBNAXYiWV1RMkk+KC4Fu9vZtuJ3MvOaCPnWT1WIBPJ4oFzTMjkHPdA0sL8xzR8Zyfmg7Hp94BbRlFAJUZPmgYjUXPBHdB+WY7t7cf8aAgXntODg/mgJjv96gN385oPkw34YcfegBuSyx7UHGOTQRV2/ucEgd5oEjz+mxUH20Ak7buVwQfig3srJ5WErDaiHOTQb3EvqThQfZHxnNBpNMWUAHAA4xQCxyFZlBJwWGTmgtrhYotK9RNrMw5NBzs5eXr9z9Cg6ro8ItrOMgEFh8UG89yiPjcB+TQb28iyHsfwaD3Nah3D7gF+aApHt402hlJx2TQLriTcTtY8+AaAjT7+SzkV42PB5yaDp2la3HfwlGZQ4XkE0A9/AsobIBBB8UHE/rDQdsnrRghSecCgjkiES7COR3mg2iIQ4bkZ4oC9x4wpI8UG0MXqkMB33QOpL6DTbVjwHKnnNByrVr176dnySueqBRDayTSBEUnJoOh6PpCWyCRwC57zQN7xAYyMcYoJtrVWdgqZOewKCV1CAw3DKw76FBnbKFdSQeDwKDqeiXQlgUEZCL8UDuMgsSevvQeXudz4HCg4GKD0ZBu3Lnk80DCA8HAz+KA71Sy4UePigHuNywyM3/E55oOb3lzukcZ5z3QKXLOxUAnPRoD7WxkwZJPag8E0Hua62D0YuF84oBWljCEAe7/AJYoBhMRkHkeDQZlyTkEigKGqXCwNb7yyEYxQB27/wDyEZv+Q7oOr212otI+uF4xQJ9SkyVcMQfNBnp11IWI3HA+9BSNOXi75/NAvkdweyCe+aD0X2+4nrrNB49U43DJyfmgMtL6a2dZI3K/IBoOh6VqS3sQV2G8DmgmvrEAW2VwcY5xQcgkYbmORn4oPAYH7H4oN1lZRjugYTahbWUZGRuHxQI2J1kkertAP7c0Gq6La20ZeQhsfIoMreXT7eQsqc57xQOI9TiYhUB/igPYiWI+D44oF0eyPcWGD8mgl9XhE0gkXsUCxVC8nH2FB1H6TsYpbYFpFVm7zQUOo2f6YBYgGDDlloEXoTl8Kjn+OKA6Cxu5GwYyAfkUFVY6akQ33DqoI5BNBpe3NjaW0voKGcLwaCMttXS7EkMxAJ45NAlurexSRiWyc9ZoMhbxkBoYN3wcUH57a4dcyHYg/txQA3UESx7kA3Ac0Cd+v5oMqDw5PQBx5IoM8H4P+KD6h2up6wfNBe29yi2G7IDbeBQJ5LqW5znJVegKBjp6OORx80Db9V7xCpyT3ig2MUh95OF88UAc0pLY4wPFB6WTgDOR4GaAiIFivHNA8s4rqGRWQsq5BPigM+pZon0w5bMgHIoOOAPI7bckZ+KAuO1kYg480DFbSMDDkbqCI1CKRY97OSc80GGm3UkEwIzjPOKChvb4zgBSNpHVADDHHMMHGRQMreHY4HXwTQM3uvRHPQHzQKLi99UnBAx4BoFs9wm0qf55oEs1wBwD+KDW31u/tQFilKgdAGgbwfVuqggNNu+zUFJZ/Wt0gUSRI3yQKB3D9Wy3GAAEJ+1BS2X6q+2ksSp8igoX0dBZysxydhoORzxCG4kCnGHI4NAunVywcMSM85oLTS2jNqh4yBznugHu23M3OAPGKCZuXVD7jxQPdNsbHUINoKh9vNAcfp62TIwc/gUG9t9O2ZJDJmgMfQLCJSdg4HxQc81a0VbhlhXABPIFBrp2+QfppQVQnzQU9vpkcStgbgRwaAV3FtvzxigTQapElyXkIODxQUf+v2UsHplsH5oBhNZygFJ1ye8mgKhjhLAmVSv5oHUNxaQAbFDEdE0GhvbiU4QbV/8AGg8tYy3aFJNxDDjNBM3GgzWcjMP2sT4oEd5JNbsFU4FArae4ZiQ7D8GgTTtNOSpHmgZWdhGkeWGSRQZXlnMoLRAkeBQC2EpjuVWXIBODmgsCseA2QBjg5oEN/cANtDcfagSy3aIOD+KBVLd7wwHZ80Aqljknqg94J6GaAqNBngUFJYadJcjKqcYoK7T9LhhKmXG7IzxQdM0l4YlVVAwPigpJ5w1rIq9lDig4lqVu/wCplxz7zxigyjtiwy/xQGQK0R2o5CnsA0Bs0alPUZvaBzQSdwj3tyI4QducZxQXek/TcunxLcyS4yMgA0B8l4gfY55B7oNUmUe4HjFAhudXxLJECSM/4NAmit2u5mYe4Fs0DxrCGOLgAOB3igUPq5tGaJznHANBM3+pNcs2w4B7oFYAOSxoPwLDrJH4oNgzAcEqceDQFW813uAV2bmgtdLSd1UzAjigs7S3RcMQMUDP1IYwCMA/cUC3UZoXQiQqAB2aDmd7JazyukbqStAhljkRyo5HjAoPrxenId6bWzzkUBadH80BMYDDDcjPRoMptMilIdRtb5AoFOqNLaiNQ/HkZoJ+aSSRSTuLfJoFjJI7ck4+9A903R/1UMhP7scZoARZtFcmBxgg4GRQUVtoUkgDbRgjPAoHEP0/GGDPtGD0BQU1nFFbYRFAB7OKBjd2YjCTJyjcnB6oCtPu03KqIeOzQOZtTZEK7TnHmgkrrEkrORyxOaDAgEEDjP2oPBCjAOSR8UAl5JNKohT2p5NBlDGIQu3hlPdA8TVrloxC7kqBxzQBzSbjuJyc95oMf1k0S4yWXHzQJ2V5Z2cEqGPOaB3ZMlqCSwJ2/NABqGslSyoxzjGQaCQubmSdyzf5oMIxnJGT9hQELE7dCgKjgIHu8dUBUSQ5wzKMnzQUFpbRIA67T8EUD63kAA6A+5oGiX8MSn1JlAHgtQRuufU4SQpBJwvW1qCQvfqO9vE2F2UDzmgSxXEscgcMxOeee6CpgE9xGsvpSHPnbQdC17QEkJmt1O4dgCghmieElHBDA8gig1i8f+1AwT9ooJrUbdrm4VewBQDy6cY0JKnqgTyRomSRyDQOdHvURguQDkZBNAbrFqpC3kIwRjNAz0W/E0YjfG5RQP2cEgf9UHtI2ODtbA+BQPrAiRGt5lJUjjNA80rTYYZS0i+3OckUC/WVhM5EOAoPdBLXB2nn5oBWlVR8fmgFaQux54FARGQ/g0Hv0+Dzk/igH2kNxkCg9MCRx/igzKN8A5oBpyUjbaPcTxQerezuJIwWDcjjNAtu9OIJPZ80CxYlZyjDrgUApX0Jtp4Unig3uC9ugkiOVYUC976ZwckD5oBjK5y24kjzQP8AStRP+27H7Emgc3U0yws6OQCOCKCUvLi5AyZnIPjNApLMxyxJPyTQfKCy+mPpmfVZ1eRGEKkZJFB2630ixtoUhCLhB8UGEs44JwQexQS+q6OLgG4hA6yQBQSpgaNtrAgqeBig3QEDn54oMjApffgZoP0sQZGHYx1QQV9/TlkQ9buBQKoppIJN6Ej3UFDFqct4BBnCng5oChHLpzCRMlW6IoDoNZlDguc/P2oKnT9WSaRUdgATQdQ0u1tpoVdgCT0RQb3t3FZqVUg4Xqghzcm5d38FjigR6jcJESMgnPHNAi9dpG7OD1zQEI2AD9uc0DCF19Mkd0G6OGGf/wAUBbRRGMMB7j2aAIxsCf8ArNBnQfBEjyKX/aDQMpbyONQsaDAGBxQTF1dN6zCQ4BFAmmdRIXU4+aDG8AlRHX92OaD4hLQ+lJ2R7SaBf+jdyQCMZ45oD4dHZlyWAHjmg1/0OeIGSNhleeDQEGeYW7QyryKBReIDCGIwaBRQU2g6LJfzK8ilYxzyKDumjxQ2kQihQKFHYFATJL7zk4/igHFgTn1HGPig8XCOq+nHgDyTQT13pild+QXzzignZYmibaQaDNVLf/ugykkjTIZ1H80EbrcCuTLE4Pzg0E1/YR2RxQEac+Z1AHbd0HSBarPaqjAZ28Ggl7yzltWJwdvOCKDzZySRyLKT7VOcA0HRbf6yMVqkUI2uq47oB7fVp7+fEsmS7YwTQP7qJLG0Min3EZoOR6tqrtctlz+7gA0Hm11RRgkj/NAx/wBVEgCIMk/BoH1kW9A554oCo2zwMnJ6oGtsG4L5CjqgLEccuQuMigAuIPTJOCOKASg+lCRyP4oEWqQso3qDx8cUE6zFjyaD8rEEc8Z6oPN7OFdCpI46FB8jmLAEHnyM0B0V5IuASTz80DRr2RohszyKD9DKroVmGSes0CnVANm1PHgCg10bQJbx0kkBEeeiKDrGm6ckKrDEoG1e8d0FDbxCHO8gD5oMniZ2LI3B+9ALJcysx93AoMDI7dsTQZO2FYk+KCXnlSW4dGIGD3QTeq6otpmKEgt5xQRNxf3Erklj31mgyM0zjaSTn7UAkqOgJAIzQMdE9FZlaQEndxQdSttjopXo4xQETWsUyFHAIP2oJu80XYrNExAxnGaCWEMiSMuSCD4oGkN2bIrMCSynJoC7r6muNRj9EjaoGKCJvYmaZiSTk/NAMVZfn8g0FToDWh9spzJnzQXcD26LtyNpoPr3tha+53UHxmgwk+pLBQQuCR1igUTfVmz/AGEAwe8UFBpuqLqlsS/Ei+aDf0tpLNwvyaBbdanBCSFIJHigVTams6lSgwezmgRSABiQOCaAcvzx0KACZtz/ADjzQfEkZDx1QMoJY3I3HBoCvWKHCnIoN1fd7h3QNtP0xr+QGRTsU8feg6Da2sdtGqIMYFAdFI0bBh/NA13h0DblIxyKDH19vCkY8cUCsHcAfmg+0CnUb1YUKg8kcUEgzszl8nJPdAHeaUblDKBlgOaCYn0yVMttPBoM40ONpQcecUA90CAFxgH7UG2lRhrmNcHBPJoOrW8SpEmAP2igI6oJrWL10BiQkE9kUEuGwSTkk9mgFuZRkKDQaW8DHlV6HOKAG8iYP0STzQBmJ+Rg4xyaD3bF7eVXB4B5oOj2Mkd1CrjAOOaCX+oM+sqKSBjoGgQLHJxyevJoPRjyeQST1zQdA+nbeSK33NwWORQNdQluHi9NBx5IoJWe3kGS2TxzQYpCMd/kZoPs8YQYIHPfFAuCAtz0TwKDO4t44/PJ+1AuPZ80H0ZyMZz4xQMYQ+BuJPxmgqNG0uW9lXcCIxjJxQdRs9I9FFVFCj5oDxp0h4DD/NBhLZzRdgY+xoBXlaJGByPtQAregg+8jB6oGMUSLGgY4bHRoA72dbZGOR9s0ENcTtPIWY8Z4oMB2M/NA4glWNOcH29GgzhhivZShX2E8kCg9z6FbpllAI+woJLWtNdU3qmAvwtAv0eNfXTd4PdB0hHwqjHAHFBspDdnA80EBrt3GLh1UjjzQTjTEjjj70HqGJ5JVBGeaDqX01oZnYeqoCMOyKDb6i0nTrGRQFUtjk480EwIrEn3IPzQeX0q0nH9MgE/IoN7G0ksSVYkp4oF2qWbTzh1A6oAP0gjB3DBx8UG2nacbmYuw/pqeKC6gjWMKqjAAoGEMSyttbo/agXaxp5i2iFd277UCRdJnADlCM/IoBLuxkVGZ+x0MUCNFJcL/wCXdB+1WMIsfyQM0CSgaWtpmP1WB564oKLStIkupFZlIQHyKDqmkafHFtjRRhQM4FBRPKVUqoxjg0C97qVclSRx80Ap1GUttYZBNB+mTfgMOHHf5oE0uluJG2g4zxxQM7gqoE0R3KR4oInVLp5pSp4UUCknHJoM9/PXFB6aYlgg/u+BQUEDxWdozniRlO00A9jq3vMc3KluDQb6qqXcBWLyp6oIqztZIrsBlI2nzQWcbZAGckfeg+ySBFYHgFeTQQWqWQeVpFOcnJ5oFkFpJI4RVLEfA6oHFpaSRXCeohAB44oOvaKWWGML+5qBH9Wx++NieSOc/FBDBADnOcUBtsCrbzwB4oHKXMUnsPR6NB8lttp34yuPigSSp+pm9JFwAfcaCgtrdYEVVGCBQFLncMfNAZDJ6bZ4z80DWxt31C5Rf7QecUB9/DBDL+nXG5RyfvQTt9Zxem7OQAQcCg5pOqxXJ2n27uCKALVJg5RRjgc0CyJC8iqPJ8UHRdP0l7hYU27YxjJoLiCzS0jVEXHHJoHtjLHApZiCSOiaDeSRXyVOQxoA5kBHA78ZoA/SVcuxxt6JoFdxeSo+5WyB0KBlbatE0QMu3fnnIoBY/USzXskDnNAl1O0SWATxgAge7AoJJiSefB6oPNAXaxJLKnAyPmg11gupWMAhVAoJ9Xw3tJBBoHdlf4IjkJI8ZoMtTvIYiGjAL/IFARpczzKWc8k9ZoDrwMIXYc4HFBISyM5Ofmgrvp6wtyrTyquAvZoDZ7eCe4DRKNqnnigf2k4h9NVwMDFAt+qhvSGTvjxQQ0ab2A+9ASfb7RnPig+oCvOcHxigf2cwkTY48eaDMWccUrSIBhj3Qb0H1Thh+aDVgxxj+eaCl0y4W1t2mVhvxQLpbv8AUTs8mdx8igkfqQ6gI98Mjel8A0EAly+8CXJIPNB5nR5GaTwOhQO9A0ea8uFkZSEXnmg6/bxLbKqhRwBzQYXl5sOBnOaBWb2QDljnyM0DrS731cxscnNA0cn1AOcYoMLtspgHA+1BPTqCCF5OTk0C02z5P7jz4oKxFPo7Ac5HmgUco0lvJyrg7c0EdexejO6+M5GaAEv2AP5oGWkkNcopIzmgo9Ut45IWyOdvBNBzuaMxSMp4wxxQMbSxknUO3tUHug+X2mHbujJdh2AKA3R1KqUZSGHeRQUktv6lm+7Az5IoEsGl25UvcSBVHIzQLP1bRXLQQOfRJ8N4oK+2UCNSOSRyaAigC1dzJbopJyPNBKIApz96DcEHkf5xQboqjk5J+1AxtwB4xnxQGxEM2wkf5oPjoUYg/wAUHkdj80Ht5Aucf5FBLz6vcWlwybyYi3Kg0D+yvo7oBkOeeaB/6UVxCY5NpBXnNBz3WPp9baRposFSc4FBro2hy3vudCIh2cUHQbO0iso1jjVRtHJxQFkknJoEeocNkeKBVQF2U/oToT0TQWBmzH6pB5HFAomuck78kDxQBszOrbF2k+cUHxIJMcuAT2M0B9reRsgGaBdqtwEkidMA57oJrVpBI4YEHcBnFAnoNrOQ286vnAzQVd5dB4VIOQRzQSjxrPdgd880FDHC77YoR8cigpLOwghUeqA7HvNB8n02BXMsKgbjkgUGV3zaFUGCo5oOf6leuoZCcD7UCWB9zhgTkdGg6NpzFrdSe8UB9AHeQ+tHjNBLTRPGwB4APfzQfkznH+aBlEIyATk4oDYgG6H4BoCdgT3LwRQe5WDqp8+TQY0GcmcDjNBDawWWYkjH3oBdI1NrS4VXJ2E85oKO7+oXBxAccdg0C1tanlb+q24f8TQdE+l9WS5t2txFtIHYXigeOMOw+9B5oEWoHofNAsJxyaAeSTGCOMHgmgqbW5LW0YZsgigykkQkhQMgck0An6naSMqKDM3Kg8vk0Hi19QRcr4+KAXU9xRCTz0MigVXcJWGOQ8k0CskAZNAwtEtHXdK+DQGz3MAhMaNn4zQKdOhnubtiiMV8HFBe2KrA/pHBcjnigbspXk9fNBmrGRhGoJJ8Cgz1e0ms7NnVdzOvAHdBx+7gvLh3Poufd4FAHFBcROFeN1H3FB0zT1K2yAggkDugOoPEgypoJ+8QFTjv80C0Arklc/HNATFKRwV7NAzt2LEAHvqgOcHb+O6DPPAHxQfKDyzKvZ78UE1rcMEkRYEB/vQQDHbLjPO7ugobW0a5Qsp6FBrp2k3F/eLAikgv7iPzQdtsdPtNHtlhRFa4ZfcwoNUiMrEnC7jwDQbtYPjIIoJvVLGdGDbCQPgUCU207EAKf5oM5LC4Zf2j/NA20+B0QCYkBeqD7dSRI7ZBUHoigTzRhuY3zn70AgEg/wD7QCx63NCNuARjzQGpd/r1DngIeRQFwQpqAZTwF4GKAK70N0BMbZx0KBDLDLCxVwRg9igyRgGBPODyKCo0rVYYR6SxAyHyBQNLJZ3unldSATkCgqFIZCpGWHVA0tLMW9u15JgHHtDDugAe4/VuRKcr8E0GllaWRm9KSJCG6O2gox9IafdAOYUx2CEoEGt/Tk1nGWtI2IUcKBQc7e9uIJSlxEybT5oCZtRg/TnHDkUE565d2yxIJoPgLBiBk89UBSFSeVAx8CgYW7Rrg55HzQH7w6nbzkUHsRhYmkfjjjNAIsqMcBhn80HieH1lxuI+4oFc2l+op3uSAKCJvrCNJ8ISQDzQHWM5t2AHQHNB1n6ZNhDDLdnb6xXjPzQHev68pkzk7uBQNIw0hQA8g/FBQwBQqq5AOPNB+ubSOVSSB1QTN1aCE5AyPPFAHhT4H+KDC59sRYcY8Cgnp5FfIOCfPNAvkT2lkY8fegXPcOrEbqBDJyTjyRyKCgtdttYMzcMw4oGGm3P6aFmY8seDQaNq298E8ZoP0sH65CUQtgdiglbmMwu0eeQaB59OWQnuPUZcqvk0HQjEiEYUCg9IcMpHzQbalqEzxRxKNqL8UA1spYZI93wKBnA0MLb5j10KCm0r6ijEwgONgOAaC3dYrmIkbWBWg5t9R/TVtdb2jQLJjII4zQcX1uxl09WVgwwTign7N2YEkZ5oGkTZ4I580B4KlAf7vNB8oGlgrSSKvJBHNB8+orr0IBGjBcDBoOff6s8TDDE890D2010MFD857zQNbm/RbYyKexQQtzceqzP5z3QYpIG880Fjolyw9mSVOOKDothbsQGb2qfmgdnbCu5CCaAeO6meX3HhT80D2K8jIVSRuoBbva44wfuKBC42sR4oBbsYhbPH5oI25fY24HzzQDvIAuVbscigUSSe8+f5oPdnYmZ8yEKi90BF24YrFFn04/3UHkzBkC5wAOQKAN2xjnGO6C20e6tmsJFyBKE8mghbx91zISckvgUHQPpqAR2nqf3MvxQNry5WJQW4+1BlbXkbsBu8/NA1dYpUGW4XvAoPiXUEClVHX92aAWe6jlyR/AoMIpDEwKnac9g0Ftof1EY3W3uHO08BieKCpnkiuVLIwYEcUHO/qrR47q1kfCggfFBx/wDTi3JUY7ODQfRw27/qgMDl1JXvzQeo8t7R3nigqtMjFtA9xKADt4zQc1+ptU/UTsik4BOSDQRZdmPZ+wFBS6PYy3DhiCEHkigpNSg2QCNR7QORjugjpLeQbiAcEfFAtMjoxBzQUGiXkq3SDPG4UHXY7qUohDEccc8UG6XUr8FiT+aDRZvT4z7vOD5oPRvGOME7l8g0B0V2743ZIx5oPTqM7uKBRf7ijNu9vxQRN1IMsM557oE5nKMc8gmgzOWJZc4PwKBjczlQUh3BetwoAxMVUjHJ7NAIZG3FhxnxQfGYt3QfFuHiJ9NmA84agx3lnDMec90HRtEuyLRVHJ29A0Hu/mEkTFiOM8UCa1lb1l2njNBWwT+wqeeKAeUjH7s56oPAYKgY9D5oPIk3bjkUHpZCOc4IIwaCv0TV2RhFM/B6LGgb666TWEhjOcqckfig4TcsFmYHk5oBg/yKDeMkMCvNA7toRxK/Q55oAtc10Qwm3hPOOhQc5ljmuGaQqx3d8UBumaPJcyhnUhAfIoOjWtrHbRqiKBgc8UA18uR1kUCY2bSRtwAMd4oIu4iKXEkfw3FAXZkxSKwBBVvmg6rp8zyWitjugPV/SQsQc+KDBJzv3Ng/bNBssmXBGMHugawl9uVGcGgNZJmUO4Kp8kUCbViY7VipJOPFBzuV5HZhtbI+1BgltNM20oVGeyKBvFZQRIFkkG7s80GkoiRWTaP8UCQwyOG2oSPkCgH9KX/g3+KDy0ExGFRvvxQfBZ3J/wDsvz1xQZyQyxf7iFc/IoKnRrpVgcHBITqgHaSa5mcDdtzwvzQGWkDh8MNpzxQNZbgxFI1PLUDGO2aSPf4XknNADcOchRkAUGSvjHefkUBcMckhIVScnwKB5DYPhZGbZ880Die9hisJLdmDuUwMc0HGLkNJduCCvu4oCI7T/mwHxzQGK1rbLlnUkUCu+19V/pxceBQebKC11AepL7pB2tAVdC1s02pGpb4NAFHqvpDakQXPfFAztb+SVhkAD5xQMZ8Sx4GNwHmgXPOkaFDjOPFBKXsIMplHG490A6FVdFPW4ZNB2XQ7jSf00SySorBOQTQfbyJJpT+nljdc+0BhQDx6RducjAHzuoGVtpJjI9eVQM880FDDLYWaEDEjY6oEev6nK1pmCPYoPYFBMW2qpNAUuf3AcZ6oFr3cBk2RxKSTwcUBhsbmUBlAQfI+KDE6eg4kdmbyc0C+9YKCx6J4oCdEvbdpPQmQHeeCRQWLaXagBhGhVvO2g/RadaiQH0k5+1Aya1soxgRx5x1toIH6gjjkl2Rqox4AoElna3EbgqCEP7sDxQWVrbW7BXRVDEc8UA16VtnLZAGOMUErPqZ/UbxyAaBvB9UMi7CnB7FB7XWrWTPqJtyeTQFxX1g5B3AfagdwajEqgQoD/wCVAR69zcEe5hn70BkVjI5G/kHugXaj9OIf66ABhzgUEdqMDxLhMgg4ODQIGUyHDscecmgR6jGqSDZ8cmgK0uea3O/nZjmgJubn1W3M2eeqAm2VLhOhkHvFA0t0EZOeCKDzc3rRZAbn4zQKJLkvlmJz96BbcXYxyeM0CeS4Zj7SRz3QfhdXK4xNIMf+VAwttUvkI2zy5/8Aagpbf6k1SMACZyOv3UFFY6td3bosjSHceeaDoemab6wR3yeuzQMNfsYU0xyFUEDvFBx1tisyjB5oMBGUnWRes80FxHcxtbrhhu24xmgVOVLEndmgRXjNeS+nFgRqcbqCz0T6fsEtxcyyK0oGdpNAVc3iwttQ5QeCaD9FexvyCAR96BLqWpmOcIpA+TmgWJi9nGT+aCiSCCCMK205HeKCcv7w2Un9JhtPjNBOXmqyXR25xQLRjJLZNB6xuJKjGKDVFcjok0GsdvKz4G7nrNBX6XZzRlWdzj4oLm0SMAEkcDrFA0e6ihTLEKB0TQAXOp24hLmVSnzuoOa6lrVlNcGJCCpPJoEl5EGUvE3fQFAlS1eaQGTPB5zQPo4I1jVABjFAtvNNfl4iT8gUHzSpWgmMcwIyeM0D+a4t03DeufvQTF3dj1Dggj80Cie+zkL/ABigXySyyAbgcfOKD8ikDrs0GyRuSPaaA+3hkdgoU5zzxQWthoheNZJAR/FBU2CQWzKgQZHnFB0DTrsBVA6A+KDbWXNxYypkD2nzQciksz6hI4AagIWBUUAjJI7oCIFVGA574BoC3jhDHc4UnwaBJEiovtHfZoDYZ5YyFRyB8ZoNpHZlBY5J7oApHZDlSQc+KBZOxmkUyHJ+RQNrONY2Vl4JPZoPGp3UyA7Wxg/FBE3U8sjHcxOTQDp3+BQbqATg/FAVDGufPdAdEq7gMCgfWkMeA23nFA4gYjGPmgdQMQB+PNBO/Ul7cRoiowAOcjFBzK41K8dTG0p2kngUC3cc7snOe6CgsJXkjO85wBjNASn7vzQGr0PxQGRcjnngd0Hh7WF2DFMMOiKCT1MlLhlUkAE+aBNOSVGTQBBFyM5OT5oKpLKBtODlTuAHOaBTZxI7lSOKCptbG3OMqf8ANBQ2thaph1jG7GcmgoLIBpFjIynxQfbxFhuCUUDjzzQM7G5l93I9vXFBrdXczKULDaexignG/caDwVBxnxQeCxDcAcdE90CieR3kYs7ccDFB/9k=); | |
| 31 | } |
src/pages/waterfalls.tsx created+63| ... | ... | @@ -0,0 +1,63 @@ |
| 1 | import { Video } from "@/tags/Video.tsx"; | |
| 2 | export default () => ( | |
| 3 | <main class="waterfalls"> | |
| 4 | <div class="waterfalls_bg1" /> | |
| 5 | <main class="waterfalls"> | |
| 6 | <div class="contain"> | |
| 7 | <h1>waterfalls and gender identity update</h1> | |
| 8 | <p> | |
| 9 | this is a song about identity, jealousness, and the seasons. more | |
| 10 | specifically, it's a personal account of how it felt realizing i was a | |
| 11 | transgender woman. enjoy. | |
| 12 | </p> | |
| 13 | </div> | |
| 14 | <Video | |
| 15 | title={ | |
| 16 | <> | |
| 17 | <strong>music video</strong>: waterfalls | |
| 18 | </> | |
| 19 | } | |
| 20 | width={1920} | |
| 21 | height={1080} | |
| 22 | poster="/file/2025/waterfalls/thumbnail.jpeg" | |
| 23 | posterHash="hMM%+pl^]eOvxCXU$$Ew4TB~LceBsAacSiOq3*F;MevmthFf+]$*WM]%E2KybarEt7NIJ3K$J8r=igxbTERP" | |
| 24 | sources={[ | |
| 25 | "/file/2025/waterfalls/stream/hls.m3u8", | |
| 26 | "/file/2025/waterfalls/waterfalls.webm", | |
| 27 | ]} | |
| 28 | downloads={[ | |
| 29 | "/file/2025/waterfalls/waterfalls.mp3", | |
| 30 | "/file/2025/waterfalls/waterfalls.mp4", | |
| 31 | "/file/2025/waterfalls/waterfalls.webm", | |
| 32 | "/file/2025/waterfalls/lyrics.txt", | |
| 33 | "/file/2025/waterfalls/", | |
| 34 | ]} | |
| 35 | /> | |
| 36 | <div class="contain"> | |
| 37 | <p> | |
| 38 | it's nice to be <em>free</em>. | |
| 39 | </p> | |
| 40 | <p>like paper airplanes in the wind.</p> | |
| 41 | <p>the stars shine in the sky. it's beautiful.</p> | |
| 42 | <p> | |
| 43 | love | |
| 44 | <br /> | |
| 45 | –clover caruso | |
| 46 | </p> | |
| 47 | <br /> | |
| 48 | ||
| 49 | <p> | |
| 50 | <strong>more</strong>: <br /> | |
| 51 | <a href="/file/2025/waterfalls/fragments">fragments</a> | |
| 52 | <br /> | |
| 53 | <a href="/q+a">q&a page</a> | |
| 54 | </p> | |
| 55 | </div> | |
| 56 | </main> | |
| 57 | </main> | |
| 58 | ); | |
| 59 | ||
| 60 | export const theme = { | |
| 61 | fg: "#fff", | |
| 62 | bg: "#000", | |
| 63 | }; |
src/site.ts+1-1| ... | ... | @@ -15,4 +15,4 @@ export const siteSections: Section[] = [ |
| 15 | 15 | ]; |
| 16 | 16 | |
| 17 | 17 | import * as path from "node:path"; |
| 18 | import { Section } from "#sitegen"; | |
| 18 | import type { Section } from "#sitegen"; |
src/tags/PhotoGrid.css created+16| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | photo-grid { | |
| 2 | display: grid; | |
| 3 | gap: 0.5rem; | |
| 4 | div { | |
| 5 | position: relative; | |
| 6 | width: 100%; | |
| 7 | height: 100%; | |
| 8 | border: 2px solid #0009; | |
| 9 | } | |
| 10 | img { | |
| 11 | position: absolute; | |
| 12 | width: 100%; | |
| 13 | height: 100%; | |
| 14 | object-fit: cover; | |
| 15 | } | |
| 16 | } |
src/tags/PhotoGrid.tsx created+134| ... | ... | @@ -0,0 +1,134 @@ |
| 1 | import "./PhotoGrid.css"; | |
| 2 | import { MediaFile } from "@/file-viewer/models/MediaFile.ts"; | |
| 3 | const { isArray } = Array; | |
| 4 | ||
| 5 | export interface PhotoGridProps { | |
| 6 | style: any; | |
| 7 | base: string; | |
| 8 | width: number; | |
| 9 | widths?: string[]; | |
| 10 | heights?: number[]; | |
| 11 | items: Item[]; | |
| 12 | } | |
| 13 | ||
| 14 | type Item = [img: string, options?: ItemOptions]; | |
| 15 | ||
| 16 | interface ItemOptions { | |
| 17 | w?: number; | |
| 18 | h?: number; | |
| 19 | align?: keyof typeof alignments; | |
| 20 | } | |
| 21 | ||
| 22 | const alignments = { | |
| 23 | bottom: "50% 80%", | |
| 24 | "bottom-end": "50% 100%", | |
| 25 | top: "50% 30%", | |
| 26 | "top-end": "50% 0%", | |
| 27 | left: "30% 50%", | |
| 28 | "left-end": "0% 50%", | |
| 29 | right: "80% 50%", | |
| 30 | "right-end": "100% 50%", | |
| 31 | }; | |
| 32 | ||
| 33 | const typicalPageWidth = 768; | |
| 34 | ||
| 35 | export function PhotoGrid({ | |
| 36 | style, | |
| 37 | base, | |
| 38 | width, | |
| 39 | widths, | |
| 40 | heights, | |
| 41 | items, | |
| 42 | }: PhotoGridProps) { | |
| 43 | if (!base.endsWith("/")) base += "/"; | |
| 44 | let rows: boolean[][] = []; | |
| 45 | const row = (y: number) => (rows[y] ??= new Array(width).fill(false)); | |
| 46 | const anyCollide = (x: number, y: number, w: number, h: number) => { | |
| 47 | for (let yy = 0; yy < h; yy++) { | |
| 48 | const r = row(y + yy); | |
| 49 | for (let xx = 0; xx < w; xx++) if (r[x + xx]) return true; | |
| 50 | } | |
| 51 | return false; | |
| 52 | }; | |
| 53 | ||
| 54 | const firstRowHeight = heights?.[0] ?? 325; | |
| 55 | ||
| 56 | let x = 0; | |
| 57 | let y = 0; | |
| 58 | let contents = []; | |
| 59 | for (const item of items) { | |
| 60 | const [img, { w = 1, h = 1, align } = {}] = isArray(item) ? item : [item]; | |
| 61 | if (w > width) throw new Error(`Item ${img} too wide (${w} > ${width})`); | |
| 62 | ||
| 63 | while (anyCollide(x, y, w, h)) { | |
| 64 | x += 1; | |
| 65 | if (x > width - w) x = 0, y += 1; | |
| 66 | } | |
| 67 | for (let yy = 0; yy < h; yy++) { | |
| 68 | const r = row(y + yy); | |
| 69 | for (let xx = 0; xx < w; xx++) r[x + xx] = true; | |
| 70 | } | |
| 71 | ||
| 72 | const info = fileInfo(base, img); | |
| 73 | contents.push( | |
| 74 | <div | |
| 75 | style={{ | |
| 76 | ...x === 0 && y === 0 && | |
| 77 | { | |
| 78 | "aspect-ratio": ((w / width) * typicalPageWidth) / firstRowHeight, | |
| 79 | }, | |
| 80 | "grid-area": `${y + 1} / ${x + 1} / ${1 + y + h} / ${1 + x + w}`, | |
| 81 | }} | |
| 82 | > | |
| 83 | <img | |
| 84 | {...info} | |
| 85 | style={{ | |
| 86 | "object-position": align | |
| 87 | ? (alignments as Record<string, string>)[align] ?? align | |
| 88 | : "50% 50%", | |
| 89 | }} | |
| 90 | /> | |
| 91 | </div>, | |
| 92 | ); | |
| 93 | } | |
| 94 | ||
| 95 | const height = rows.length; | |
| 96 | return ( | |
| 97 | <photo-grid | |
| 98 | style={{ | |
| 99 | ...style, | |
| 100 | "grid-template-columns": widths | |
| 101 | ? mapSizes(widths).join(" ") | |
| 102 | : `repeat(${width}, 1fr)`, | |
| 103 | "grid-template-rows": heights | |
| 104 | ? heights.map((h) => (h / firstRowHeight) + "fr") | |
| 105 | .concat(new Array(height - heights.length).fill("1fr")) | |
| 106 | .join(" ") | |
| 107 | : `repeat(${height}, 1fr)`, | |
| 108 | }} | |
| 109 | > | |
| 110 | {contents} | |
| 111 | </photo-grid> | |
| 112 | ); | |
| 113 | } | |
| 114 | ||
| 115 | function fileInfo(base: string, img: string) { | |
| 116 | const filePath = path.join(base, img); | |
| 117 | const file = MediaFile.getByPath(filePath); | |
| 118 | const dimensions = file?.parseDimensions(); | |
| 119 | if (!dimensions) { | |
| 120 | throw new Error(`File does not exist or has no dimensions: ${filePath}`); | |
| 121 | } | |
| 122 | const src = "/file" + base + encodeURIComponent(img); | |
| 123 | const alt = path.basename(img, path.extname(img)); | |
| 124 | return { src, alt, width: dimensions.width, height: dimensions.height }; | |
| 125 | } | |
| 126 | ||
| 127 | function mapSizes(sizes: Array<string | number>) { | |
| 128 | return sizes.map(mapSize); | |
| 129 | } | |
| 130 | function mapSize(size: string | number) { | |
| 131 | return typeof size === "number" ? size + "px" : size; | |
| 132 | } | |
| 133 | ||
| 134 | import * as path from "node:path"; |
src/tags/Video.tsx+1-2| ... | ... | @@ -14,7 +14,6 @@ export namespace Video { |
| 14 | 14 | borderless?: boolean; |
| 15 | 15 | } |
| 16 | 16 | } |
| 17 | function PrecomputedBlurhash({ hash }: { hash: string }) { | |
| 18 | 17 | export function Video( |
| 19 | 18 | { title, sources, height, poster, posterHash, width, borderless }: |
| 20 | 19 | Video.Props, |
| ... | ... | @@ -23,7 +22,7 @@ export function Video( |
| 23 | 22 | return ( |
| 24 | 23 | <figure class={`video ${borderless ? "borderless" : ""}`}> |
| 25 | 24 | <figcaption>{title}</figcaption> |
| 26 | {/* posterHash && <PrecomputedBlurhash hash={posterHash} /> */} | |
| 25 | {posterHash && <PrecomputedBlurhash hash={posterHash} />} | |
| 27 | 26 | {poster && <img src={poster} alt="waterfalls" />} |
| 28 | 27 | <video |
| 29 | 28 | controls |
src/tags/blurhash.tsx created+34| ... | ... | @@ -0,0 +1,34 @@ |
| 1 | import * as blurhash from "blurhash"; | |
| 2 | import sharp from "sharp"; | |
| 3 | function decode83(str: string) { | |
| 4 | return [...str].reduce( | |
| 5 | (value, char) => | |
| 6 | value * 83 + | |
| 7 | "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~" // | |
| 8 | .indexOf(char), | |
| 9 | 0, | |
| 10 | ); | |
| 11 | } | |
| 12 | function getSizeFromHash(hash: string) { | |
| 13 | const sizeFlag = decode83(hash[0]); | |
| 14 | const height = ((sizeFlag / 9) | 0) + 1; | |
| 15 | const width = (sizeFlag % 9) + 1; | |
| 16 | return { width, height }; | |
| 17 | } | |
| 18 | export async function encodeBlurhashPng(hash: string) { | |
| 19 | const size = getSizeFromHash(hash); | |
| 20 | const data = blurhash.decode(hash, size.width, size.height); | |
| 21 | return (await sharp(data, { | |
| 22 | raw: { width: size.width, height: size.height, channels: 4 }, | |
| 23 | }).png({ colors: size.width * size.height }).toBuffer()); | |
| 24 | } | |
| 25 | export async function PrecomputedBlurhash({ hash }: { hash: string }) { | |
| 26 | const data = await encodeBlurhashPng(hash); | |
| 27 | return ( | |
| 28 | <span | |
| 29 | style={`background:url("data:image/png;base64,${ | |
| 30 | data.toString("base64url") | |
| 31 | }")0px 0px/100% auto;`} | |
| 32 | /> | |
| 33 | ); | |
| 34 | } |
tsconfig.json+1-1| ... | ... | @@ -13,7 +13,7 @@ |
| 13 | 13 | "rootDir": ".", |
| 14 | 14 | "skipLibCheck": true, |
| 15 | 15 | "strict": true, |
| 16 | "verbaitimModuleSyntax": true, | |
| 16 | "verbatimModuleSyntax": true, | |
| 17 | 17 | "target": "es2022" |
| 18 | 18 | }, |
| 19 | 19 | "include": ["framework/**/*", "src/**/*"] |