Skip to content

Commit 6005fa4

Browse files
authored
Support syntax highlighting for import defer statement (#295)
* Support syntax highlighting for `import defer` statement which was introduced in TypeScript 5.9. https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/#support-for-import-defer * Update merged files
1 parent c63094e commit 6005fa4

6 files changed

Lines changed: 43 additions & 16 deletions

File tree

merged/typescript.vim

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,14 +256,16 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
256256
"Import
257257
syntax keyword typescriptImport from as
258258
syntax keyword typescriptImport import
259-
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
259+
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName,typescriptImportDefer
260260
\ skipwhite
261261
syntax keyword typescriptImportType type
262262
\ contained
263263
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
264264
\ contained
265265
\ nextgroup=typescriptImportBlock
266266
\ skipwhite skipempty
267+
syntax match typescriptImportDefer /\<defer\%(\s\+\*\)\@=/
268+
\ contained
267269
syntax region typescriptImportBlock
268270
\ matchgroup=typescriptBraces
269271
\ start=/{/ end=/}/
@@ -2073,11 +2075,12 @@ hi def link typescriptLabel Label
20732075
hi def link typescriptTupleLable Label
20742076
hi def link typescriptStringProperty String
20752077
hi def link typescriptImport Keyword
2076-
hi def link typescriptImportType Special
2077-
hi def link typescriptAmbientDeclaration Special
2078+
hi def link typescriptImportType Keyword
2079+
hi def link typescriptImportDefer Keyword
2080+
hi def link typescriptAmbientDeclaration Keyword
20782081
hi def link typescriptExport Keyword
2079-
hi def link typescriptExportType Special
2080-
hi def link typescriptModule Special
2082+
hi def link typescriptExportType Keyword
2083+
hi def link typescriptModule Keyword
20812084
hi def link typescriptTry Exception
20822085
hi def link typescriptExceptions Exception
20832086

merged/typescriptcommon.vim

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,14 +230,16 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
230230
"Import
231231
syntax keyword typescriptImport from as
232232
syntax keyword typescriptImport import
233-
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
233+
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName,typescriptImportDefer
234234
\ skipwhite
235235
syntax keyword typescriptImportType type
236236
\ contained
237237
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
238238
\ contained
239239
\ nextgroup=typescriptImportBlock
240240
\ skipwhite skipempty
241+
syntax match typescriptImportDefer /\<defer\%(\s\+\*\)\@=/
242+
\ contained
241243
syntax region typescriptImportBlock
242244
\ matchgroup=typescriptBraces
243245
\ start=/{/ end=/}/
@@ -2047,11 +2049,12 @@ hi def link typescriptLabel Label
20472049
hi def link typescriptTupleLable Label
20482050
hi def link typescriptStringProperty String
20492051
hi def link typescriptImport Keyword
2050-
hi def link typescriptImportType Special
2051-
hi def link typescriptAmbientDeclaration Special
2052+
hi def link typescriptImportType Keyword
2053+
hi def link typescriptImportDefer Keyword
2054+
hi def link typescriptAmbientDeclaration Keyword
20522055
hi def link typescriptExport Keyword
2053-
hi def link typescriptExportType Special
2054-
hi def link typescriptModule Special
2056+
hi def link typescriptExportType Keyword
2057+
hi def link typescriptModule Keyword
20552058
hi def link typescriptTry Exception
20562059
hi def link typescriptExceptions Exception
20572060

merged/typescriptreact.vim

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -352,14 +352,16 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
352352
"Import
353353
syntax keyword typescriptImport from as
354354
syntax keyword typescriptImport import
355-
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
355+
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName,typescriptImportDefer
356356
\ skipwhite
357357
syntax keyword typescriptImportType type
358358
\ contained
359359
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
360360
\ contained
361361
\ nextgroup=typescriptImportBlock
362362
\ skipwhite skipempty
363+
syntax match typescriptImportDefer /\<defer\%(\s\+\*\)\@=/
364+
\ contained
363365
syntax region typescriptImportBlock
364366
\ matchgroup=typescriptBraces
365367
\ start=/{/ end=/}/
@@ -2169,11 +2171,12 @@ hi def link typescriptLabel Label
21692171
hi def link typescriptTupleLable Label
21702172
hi def link typescriptStringProperty String
21712173
hi def link typescriptImport Keyword
2172-
hi def link typescriptImportType Special
2173-
hi def link typescriptAmbientDeclaration Special
2174+
hi def link typescriptImportType Keyword
2175+
hi def link typescriptImportDefer Keyword
2176+
hi def link typescriptAmbientDeclaration Keyword
21742177
hi def link typescriptExport Keyword
2175-
hi def link typescriptExportType Special
2176-
hi def link typescriptModule Special
2178+
hi def link typescriptExportType Keyword
2179+
hi def link typescriptModule Keyword
21772180
hi def link typescriptTry Exception
21782181
hi def link typescriptExceptions Exception
21792182

syntax/common.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ hi def link typescriptTupleLable Label
104104
hi def link typescriptStringProperty String
105105
hi def link typescriptImport Keyword
106106
hi def link typescriptImportType Keyword
107+
hi def link typescriptImportDefer Keyword
107108
hi def link typescriptAmbientDeclaration Keyword
108109
hi def link typescriptExport Keyword
109110
hi def link typescriptExportType Keyword

syntax/ts-common/keyword.vim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
"Import
22
syntax keyword typescriptImport from as
33
syntax keyword typescriptImport import
4-
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
4+
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName,typescriptImportDefer
55
\ skipwhite
66
syntax keyword typescriptImportType type
77
\ contained
88
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
99
\ contained
1010
\ nextgroup=typescriptImportBlock
1111
\ skipwhite skipempty
12+
syntax match typescriptImportDefer /\<defer\%(\s\+\*\)\@=/
13+
\ contained
1214
syntax region typescriptImportBlock
1315
\ matchgroup=typescriptBraces
1416
\ start=/{/ end=/}/

test/syntax.vader

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,3 +1201,18 @@ Execute:
12011201
AssertEqual 'typescriptTypeReference', SyntaxAt(3, 26)
12021202
" Validate `from`
12031203
AssertEqual 'typescriptImport', SyntaxAt(3, 34)
1204+
1205+
Given typescript (import defer statement):
1206+
import defer * as feature from "./some-feature.js";
1207+
import defer { doSomething } from "some-module";
1208+
import defer defaultExport from "some-module";
1209+
const defer = "test";
1210+
Execute:
1211+
" `defer` is highlighted as keyword
1212+
AssertEqual 'typescriptImportDefer', SyntaxAt(1, 8)
1213+
AssertEqual 'typescriptImportDefer', SyntaxAt(1, 12)
1214+
" `defer` is not highlighed because these are illegal
1215+
AssertNotEqual 'typescriptImportDefer', SyntaxAt(2, 8)
1216+
AssertNotEqual 'typescriptImportDefer', SyntaxAt(3, 8)
1217+
" `defer` is not highlighted because it's not a part of import statement
1218+
AssertEqual 'typescriptVariableDeclaration', SyntaxAt(4, 7)

0 commit comments

Comments
 (0)