feat(lsp)!: add rule-based sem token highlighting (#22022)

feat(lsp)!: change semantic token highlighting

Change the default highlights used, and add more highlights per token.

Add an LspTokenUpdate event and a highlight_token function.

:Inspect now shows any highlights applied by token highlighting rules,
default or user-defined.

BREAKING CHANGE: change the default highlight groups used by semantic
token highlighting.
This commit is contained in:
swarn
2023-03-06 12:03:13 -06:00
committed by GitHub
parent 98f2df931a
commit 1cc23e1109
7 changed files with 442 additions and 203 deletions

View File

@@ -72,6 +72,7 @@ return {
'InsertLeavePre', -- just before leaving Insert mode
'LspAttach', -- after an LSP client attaches to a buffer
'LspDetach', -- after an LSP client detaches from a buffer
'LspTokenUpdate', -- after a visible LSP token is updated
'MenuPopup', -- just before popup menu is displayed
'ModeChanged', -- after changing the mode
'OptionSet', -- after setting any option
@@ -151,6 +152,7 @@ return {
DiagnosticChanged=true,
LspAttach=true,
LspDetach=true,
LspTokenUpdate=true,
RecordingEnter=true,
RecordingLeave=true,
Signal=true,

View File

@@ -270,16 +270,22 @@ static const char *highlight_init_both[] = {
"default link @tag Tag",
// LSP semantic tokens
"default link @class Structure",
"default link @struct Structure",
"default link @enum Type",
"default link @enumMember Constant",
"default link @event Identifier",
"default link @interface Identifier",
"default link @modifier Identifier",
"default link @regexp SpecialChar",
"default link @typeParameter Type",
"default link @decorator Identifier",
"default link @lsp.type.class Structure",
"default link @lsp.type.decorator Function",
"default link @lsp.type.enum Structure",
"default link @lsp.type.enumMember Constant",
"default link @lsp.type.function Function",
"default link @lsp.type.interface Structure",
"default link @lsp.type.macro Macro",
"default link @lsp.type.method Function",
"default link @lsp.type.namespace Structure",
"default link @lsp.type.parameter Identifier",
"default link @lsp.type.property Identifier",
"default link @lsp.type.struct Structure",
"default link @lsp.type.type Type",
"default link @lsp.type.typeParameter TypeDef",
"default link @lsp.type.variable Identifier",
NULL
};