Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arbitrary module identifiers support #291

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions merged/typescript.vim
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,20 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
"Import
syntax keyword typescriptImport from as
syntax keyword typescriptImport import
\ nextgroup=typescriptImportType,typescriptTypeBlock,typescriptDefaultImportName
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
\ skipwhite
syntax keyword typescriptImportType type
\ contained
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptImportBlock
\ skipwhite skipempty
syntax region typescriptImportBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType,typescriptString
\ fold
syntax keyword typescriptExport export
\ nextgroup=typescriptExportType
\ skipwhite
Expand Down Expand Up @@ -345,17 +355,6 @@ syntax cluster typescriptAmbients contains=
\ typescriptModule

syntax keyword typescriptIdentifier arguments nextgroup=@afterIdentifier
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptTypeBlock
\ skipwhite skipempty

syntax region typescriptTypeBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType
\ fold

"Program Keywords
exec 'syntax keyword typescriptNull null '.(exists('g:typescript_conceal_null') ? 'conceal cchar='.g:typescript_conceal_null : '').' nextgroup=@typescriptSymbols skipwhite skipempty'
Expand Down
39 changes: 19 additions & 20 deletions merged/typescriptcommon.vim
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,20 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
"Import
syntax keyword typescriptImport from as
syntax keyword typescriptImport import
\ nextgroup=typescriptImportType,typescriptTypeBlock,typescriptDefaultImportName
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
\ skipwhite
syntax keyword typescriptImportType type
\ contained
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptImportBlock
\ skipwhite skipempty
syntax region typescriptImportBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType,typescriptString
\ fold
syntax keyword typescriptExport export
\ nextgroup=typescriptExportType
\ skipwhite
Expand Down Expand Up @@ -319,17 +329,6 @@ syntax cluster typescriptAmbients contains=
\ typescriptModule

syntax keyword typescriptIdentifier arguments nextgroup=@afterIdentifier
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptTypeBlock
\ skipwhite skipempty

syntax region typescriptTypeBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType
\ fold

"Program Keywords
exec 'syntax keyword typescriptNull null '.(exists('g:typescript_conceal_null') ? 'conceal cchar='.g:typescript_conceal_null : '').' nextgroup=@typescriptSymbols skipwhite skipempty'
Expand Down Expand Up @@ -2027,16 +2026,16 @@ hi def link typescriptCase Conditional
hi def link typescriptDefault typescriptCase
hi def link typescriptBranch Conditional
hi def link typescriptIdentifier Structure
hi def link typescriptVariable Identifier
hi def link typescriptVariable Keyword
hi def link typescriptUsing Identifier
hi def link typescriptDestructureVariable PreProc
hi def link typescriptEnumKeyword Identifier
hi def link typescriptRepeat Repeat
hi def link typescriptForOperator Repeat
hi def link typescriptStatementKeyword Statement
hi def link typescriptMessage Keyword
hi def link typescriptOperator Identifier
hi def link typescriptKeywordOp Identifier
hi def link typescriptOperator Operator
hi def link typescriptKeywordOp Operator
hi def link typescriptCastKeyword Special
hi def link typescriptType Type
hi def link typescriptNull Boolean
Expand All @@ -2047,14 +2046,14 @@ hi def link typescriptDestructureLabel Function
hi def link typescriptLabel Label
hi def link typescriptTupleLable Label
hi def link typescriptStringProperty String
hi def link typescriptImport Special
hi def link typescriptImport Keyword
hi def link typescriptImportType Special
hi def link typescriptAmbientDeclaration Special
hi def link typescriptExport Special
hi def link typescriptExport Keyword
hi def link typescriptExportType Special
hi def link typescriptModule Special
hi def link typescriptTry Special
hi def link typescriptExceptions Special
hi def link typescriptTry Exception
hi def link typescriptExceptions Exception

hi def link typescriptMember Function
hi def link typescriptMethodAccessor Operator
Expand All @@ -2077,7 +2076,7 @@ hi def link typescriptAbstract Special
" hi def link typescriptClassHeritage Function
" hi def link typescriptInterfaceHeritage Function
hi def link typescriptClassStatic StorageClass
hi def link typescriptReadonlyModifier Keyword
hi def link typescriptReadonlyModifier StorageClass
hi def link typescriptInterfaceKeyword Keyword
hi def link typescriptInterfaceExtends Keyword
hi def link typescriptInterfaceName Function
Expand Down
47 changes: 23 additions & 24 deletions merged/typescriptreact.vim
Original file line number Diff line number Diff line change
Expand Up @@ -352,10 +352,20 @@ syntax cluster typescriptSymbols contains=typescriptBinaryOp,types
"Import
syntax keyword typescriptImport from as
syntax keyword typescriptImport import
\ nextgroup=typescriptImportType,typescriptTypeBlock,typescriptDefaultImportName
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
\ skipwhite
syntax keyword typescriptImportType type
\ contained
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptImportBlock
\ skipwhite skipempty
syntax region typescriptImportBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType,typescriptString
\ fold
syntax keyword typescriptExport export
\ nextgroup=typescriptExportType
\ skipwhite
Expand Down Expand Up @@ -441,17 +451,6 @@ syntax cluster typescriptAmbients contains=
\ typescriptModule

syntax keyword typescriptIdentifier arguments nextgroup=@afterIdentifier
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptTypeBlock
\ skipwhite skipempty

syntax region typescriptTypeBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType
\ fold

"Program Keywords
exec 'syntax keyword typescriptNull null '.(exists('g:typescript_conceal_null') ? 'conceal cchar='.g:typescript_conceal_null : '').' nextgroup=@typescriptSymbols skipwhite skipempty'
Expand Down Expand Up @@ -2235,18 +2234,18 @@ hi def link typeScript NONE

syntax cluster typescriptExpression add=tsxRegion,tsxFragment

highlight def link tsxTag htmlTag
highlight def link tsxTagName Function
highlight def link tsxIntrinsicTagName htmlTagName
highlight def link tsxString String
highlight def link tsxNameSpace Function
highlight def link tsxCommentInvalid Error
highlight def link tsxBlockComment Comment
highlight def link tsxLineComment Comment
highlight def link tsxAttrib Type
highlight def link tsxEscJs tsxEscapeJs
highlight def link tsxCloseTag htmlTag
highlight def link tsxCloseString Identifier
hi def link tsxTag htmlTag
hi def link tsxTagName Function
hi def link tsxIntrinsicTagName htmlTagName
hi def link tsxString String
hi def link tsxNameSpace Function
hi def link tsxCommentInvalid Error
hi def link tsxBlockComment Comment
hi def link tsxLineComment Comment
hi def link tsxAttrib Type
hi def link tsxEscJs tsxEscapeJs
hi def link tsxCloseTag htmlTag
hi def link tsxCloseString Identifier

let b:current_syntax = "typescriptreact"
if main_syntax == 'typescriptreact'
Expand Down
23 changes: 11 additions & 12 deletions syntax/ts-common/keyword.vim
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
"Import
syntax keyword typescriptImport from as
syntax keyword typescriptImport import
\ nextgroup=typescriptImportType,typescriptTypeBlock,typescriptDefaultImportName
\ nextgroup=typescriptImportType,typescriptImportBlock,typescriptDefaultImportName
\ skipwhite
syntax keyword typescriptImportType type
\ contained
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptImportBlock
\ skipwhite skipempty
syntax region typescriptImportBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType,typescriptString
\ fold
syntax keyword typescriptExport export
\ nextgroup=typescriptExportType
\ skipwhite
Expand Down Expand Up @@ -90,17 +100,6 @@ syntax cluster typescriptAmbients contains=
\ typescriptModule

syntax keyword typescriptIdentifier arguments nextgroup=@afterIdentifier
syntax match typescriptDefaultImportName /\v\h\k*( |,)/
\ contained
\ nextgroup=typescriptTypeBlock
\ skipwhite skipempty

syntax region typescriptTypeBlock
\ matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contained
\ contains=typescriptIdentifierName,typescriptImportType
\ fold

"Program Keywords
exec 'syntax keyword typescriptNull null '.(exists('g:typescript_conceal_null') ? 'conceal cchar='.g:typescript_conceal_null : '').' nextgroup=@typescriptSymbols skipwhite skipempty'
Expand Down
40 changes: 40 additions & 0 deletions test/syntax.vader
Original file line number Diff line number Diff line change
Expand Up @@ -1161,3 +1161,43 @@ Execute:
AssertEqual 'typescriptArrowFunc', SyntaxAt(13, 28)
AssertEqual 'typescriptPromiseMethod', SyntaxAt(14, 7)
AssertEqual 'typescriptFuncCallArg', SyntaxAt(14, 13)

Given typescript (arbitrary module identifier in import block):
import { "hello" as hello } from "./hello";
import Default, { "hello" as hello } from "./hello";
import { foo, "hello" as hello } from "./hello";
Execute:
" Validate `import`
AssertEqual 'typescriptImport', SyntaxAt(1, 1)
" Validate `"hello"`
AssertEqual 'typescriptString', SyntaxAt(1, 10)
" Validate `as`
AssertEqual 'typescriptCastKeyword', SyntaxAt(1, 18)
" Validate `hello`
AssertEqual 'typescriptTypeReference', SyntaxAt(1, 21)
" Validate `from`
AssertEqual 'typescriptImport', SyntaxAt(1, 29)
" Validate `import`
AssertEqual 'typescriptImport', SyntaxAt(2, 1)
" Validate `Default`
AssertEqual 'typescriptDefaultImportName', SyntaxAt(2, 8)
" Validate `"hello"`
AssertEqual 'typescriptString', SyntaxAt(2, 19)
" Validate `as`
AssertEqual 'typescriptCastKeyword', SyntaxAt(2, 27)
" Validate `hello`
AssertEqual 'typescriptTypeReference', SyntaxAt(2, 30)
" Validate `from`
AssertEqual 'typescriptImport', SyntaxAt(2, 38)
" Validate `import`
AssertEqual 'typescriptImport', SyntaxAt(3, 1)
" Validate `foo`
AssertEqual 'typescriptImportBlock', SyntaxAt(3, 10)
" Validate `"hello"`
AssertEqual 'typescriptString', SyntaxAt(3, 15)
" Validate `as`
AssertEqual 'typescriptCastKeyword', SyntaxAt(3, 23)
" Validate `hello`
AssertEqual 'typescriptTypeReference', SyntaxAt(3, 26)
" Validate `from`
AssertEqual 'typescriptImport', SyntaxAt(3, 34)