Skip to content

Commit 076239e

Browse files
authored
feat(highlight): link to treesitter highlight groups instead of vim ones (#56)
See `:h treesitter-highlight-groups` This enables the use of nimsuggest's semantic highlights with treesitter highlights on supported versions of neovim. All `@<group>` tree sitter highlights are linked to classic vim highlights, so nothing is really lost here, if a theme doesn't use `@<group>` highlights, but this increases compatibility with modern themes which use `@<group>` highlights.
1 parent 87afde2 commit 076239e

File tree

1 file changed

+105
-51
lines changed

1 file changed

+105
-51
lines changed

syntax/nim.vim

Lines changed: 105 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -208,54 +208,108 @@ syntax sync match nimSync grouphere NONE "^\%(discard\|let\|var\|const\|type\)"
208208
syntax sync match nimSyncString grouphere nimString "^\%(discard\|asm\)\s\+\"\{3}"
209209
syntax sync match nimSyncString grouphere nimRawString "r\"\{3}"
210210

211-
highlight default link nimKeywordOperator Operator
212-
highlight default link nimStatement Statement
213-
highlight default link nimConditional Conditional
214-
highlight default link nimKeyword Keyword
215-
highlight default link nimException Exception
216-
highlight default link nimRepeat Repeat
217-
highlight default link nimConstant Constant
218-
highlight default link nimPreCondit PreCondit
219-
highlight default link nimInclude Include
220-
highlight default link nimStructure Structure
221-
highlight default link nimPreProcStmt Macro
222-
highlight default link nimComment Comment
223-
highlight default link nimTodo Todo
224-
highlight default link nimLongDocComment Comment
225-
highlight default link nimLongComment Comment
226-
highlight default link nimString String
227-
highlight default link nimEscapeStr SpecialChar
228-
highlight default link nimEscapeChar SpecialChar
229-
highlight default link nimEscapeQuote SpecialChar
230-
highlight default link nimRawString String
231-
highlight default link nimQuote String
232-
highlight default link nimTripleQuote nimQuote
233-
highlight default link nimCharacter Character
234-
highlight default link nimNumber Number
235-
highlight default link nimFloat Float
236-
highlight default link nimCustomNumber Number
237-
highlight default link nimPragma PreProc
238-
" semantic highlighter, straight from the compiler
239-
" TSymKind in compiler/ast.nim, sk prefix replaced with nimSug
240-
highlight default link nimSugUnknown Error
241-
highlight default link nimSugParam Identifier
242-
highlight default link nimSugModule Identifier
243-
highlight default link nimSugType Type
244-
highlight default link nimSugGenericParam Type
245-
highlight default link nimSugVar Identifier
246-
highlight default link nimSugGlobalVar Identifier
247-
highlight default link nimSugLet Identifier
248-
highlight default link nimSugGlobalLet Identifier
249-
highlight default link nimSugConst Constant
250-
highlight default link nimSugResult Special
251-
highlight default link nimSugProc Function
252-
highlight default link nimSugFunc Function
253-
highlight default link nimSugMethod Function
254-
highlight default link nimSugIterator Function
255-
highlight default link nimSugConverter Macro
256-
highlight default link nimSugMacro Macro
257-
highlight default link nimSugTemplate Macro
258-
highlight default link nimSugField Identifier
259-
highlight default link nimSugEnumField Constant
260-
highlight default link nimSugForVar Identifier
261-
highlight default link nimSugLabel Identifier
211+
if has("nvim-0.9.0")
212+
highlight default link nimKeywordOperator @keyword.operator
213+
highlight default link nimStatement @keyword
214+
highlight default link nimConditional @conditional
215+
highlight default link nimKeyword @keyword
216+
highlight default link nimException @exception
217+
highlight default link nimRepeat @repeat
218+
highlight default link nimConstant @constant
219+
highlight default link nimPreCondit @conditional
220+
highlight default link nimInclude @include
221+
highlight default link nimStructure @keyword
222+
highlight default link nimPreProcStmt @function.builtin
223+
highlight default link nimComment @comment
224+
highlight default link nimTodo @text.todo
225+
highlight default link nimLongDocComment @comment.documentation
226+
highlight default link nimLongComment @comment.documentation
227+
highlight default link nimString @string
228+
highlight default link nimEscapeStr @string.escape
229+
highlight default link nimEscapeChar @string.escape
230+
highlight default link nimEscapeQuote @string.escape
231+
highlight default link nimRawString @string
232+
highlight default link nimQuote @string
233+
highlight default link nimTripleQuote nimQuote
234+
highlight default link nimCharacter @character
235+
highlight default link nimNumber @number
236+
highlight default link nimFloat @float
237+
highlight default link nimCustomNumber @number
238+
highlight default link nimPragma @preproc
239+
240+
" semantic highlighter, straight from the compiler
241+
" TSymKind in compiler/ast.nim, sk prefix replaced with nimSug
242+
highlight default link nimSugUnknown @error
243+
highlight default link nimSugParam @parameter
244+
highlight default link nimSugModule @namespace
245+
highlight default link nimSugType @type
246+
highlight default link nimSugGenericParam @parameter
247+
highlight default link nimSugVar @variable
248+
highlight default link nimSugGlobalVar @variable
249+
highlight default link nimSugLet @variable
250+
highlight default link nimSugGlobalLet @variable
251+
highlight default link nimSugConst @constant
252+
highlight default link nimSugResult @variable.builtin
253+
highlight default link nimSugProc @function.call
254+
highlight default link nimSugFunc @function.call
255+
highlight default link nimSugMethod @function.call
256+
highlight default link nimSugIterator @function.call
257+
highlight default link nimSugConverter @function.macro
258+
highlight default link nimSugMacro @function.macro
259+
highlight default link nimSugTemplate @function.macro
260+
highlight default link nimSugField @field
261+
highlight default link nimSugEnumField @constant
262+
highlight default link nimSugForVar @parameter
263+
highlight default link nimSugLabel @label
264+
else
265+
highlight default link nimKeywordOperator Operator
266+
highlight default link nimStatement Statement
267+
highlight default link nimConditional Conditional
268+
highlight default link nimKeyword Keyword
269+
highlight default link nimException Exception
270+
highlight default link nimRepeat Repeat
271+
highlight default link nimConstant Constant
272+
highlight default link nimPreCondit PreCondit
273+
highlight default link nimInclude Include
274+
highlight default link nimStructure Structure
275+
highlight default link nimPreProcStmt Macro
276+
highlight default link nimComment Comment
277+
highlight default link nimTodo Todo
278+
highlight default link nimLongDocComment Comment
279+
highlight default link nimLongComment Comment
280+
highlight default link nimString String
281+
highlight default link nimEscapeStr SpecialChar
282+
highlight default link nimEscapeChar SpecialChar
283+
highlight default link nimEscapeQuote SpecialChar
284+
highlight default link nimRawString String
285+
highlight default link nimQuote String
286+
highlight default link nimTripleQuote nimQuote
287+
highlight default link nimCharacter Character
288+
highlight default link nimNumber Number
289+
highlight default link nimFloat Float
290+
highlight default link nimCustomNumber Number
291+
highlight default link nimPragma PreProc
292+
293+
highlight default link nimSugUnknown Error
294+
highlight default link nimSugParam Identifier
295+
highlight default link nimSugModule Identifier
296+
highlight default link nimSugType Type
297+
highlight default link nimSugGenericParam Type
298+
highlight default link nimSugVar Identifier
299+
highlight default link nimSugGlobalVar Identifier
300+
highlight default link nimSugLet Identifier
301+
highlight default link nimSugGlobalLet Identifier
302+
highlight default link nimSugConst Constant
303+
highlight default link nimSugResult Special
304+
highlight default link nimSugProc Function
305+
highlight default link nimSugFunc Function
306+
highlight default link nimSugMethod Function
307+
highlight default link nimSugIterator Function
308+
highlight default link nimSugConverter Macro
309+
highlight default link nimSugMacro Macro
310+
highlight default link nimSugTemplate Macro
311+
highlight default link nimSugField Identifier
312+
highlight default link nimSugEnumField Constant
313+
highlight default link nimSugForVar Identifier
314+
highlight default link nimSugLabel Identifier
315+
endif

0 commit comments

Comments
 (0)