381 lines
7.7 KiB
Lua
381 lines
7.7 KiB
Lua
local M = {}
|
|
|
|
function M.new_style()
|
|
---@diagnostic disable-next-line: undefined-field
|
|
return vim.treesitter.highlighter.hl_map == nil
|
|
end
|
|
|
|
function M.get(group)
|
|
if group:sub(1, 1) ~= "@" or M.new_style() then
|
|
return group
|
|
end
|
|
|
|
group = group:sub(2)
|
|
|
|
local lang
|
|
while group do
|
|
if M.fallbacks[group] then
|
|
return (lang or "") .. M.fallbacks[group]
|
|
end
|
|
group, lang = group:match("(.*)%.(.*)")
|
|
end
|
|
end
|
|
|
|
-- taken from https://github.com/nvim-treesitter/nvim-treesitter/blob/master/lua/nvim-treesitter/highlight.lua
|
|
M.fallbacks = {
|
|
["annotation"] = "TSAnnotation",
|
|
["attribute"] = "TSAttribute",
|
|
["boolean"] = "TSBoolean",
|
|
["character"] = "TSCharacter",
|
|
["character.special"] = "TSCharacterSpecial",
|
|
["comment"] = "TSComment",
|
|
["conditional"] = "TSConditional",
|
|
["constant"] = "TSConstant",
|
|
["constant.builtin"] = "TSConstBuiltin",
|
|
["constant.macro"] = "TSConstMacro",
|
|
["constructor"] = "TSConstructor",
|
|
["debug"] = "TSDebug",
|
|
["define"] = "TSDefine",
|
|
["error"] = "TSError",
|
|
["exception"] = "TSException",
|
|
["field"] = "TSField",
|
|
["float"] = "TSFloat",
|
|
["function"] = "TSFunction",
|
|
["function.call"] = "TSFunctionCall",
|
|
["function.builtin"] = "TSFuncBuiltin",
|
|
["function.macro"] = "TSFuncMacro",
|
|
["include"] = "TSInclude",
|
|
["keyword"] = "TSKeyword",
|
|
["keyword.function"] = "TSKeywordFunction",
|
|
["keyword.operator"] = "TSKeywordOperator",
|
|
["keyword.return"] = "TSKeywordReturn",
|
|
["label"] = "TSLabel",
|
|
["method"] = "TSMethod",
|
|
["method.call"] = "TSMethodCall",
|
|
["namespace"] = "TSNamespace",
|
|
["none"] = "TSNone",
|
|
["number"] = "TSNumber",
|
|
["operator"] = "TSOperator",
|
|
["parameter"] = "TSParameter",
|
|
["parameter.reference"] = "TSParameterReference",
|
|
["preproc"] = "TSPreProc",
|
|
["property"] = "TSProperty",
|
|
["punctuation.delimiter"] = "TSPunctDelimiter",
|
|
["punctuation.bracket"] = "TSPunctBracket",
|
|
["punctuation.special"] = "TSPunctSpecial",
|
|
["repeat"] = "TSRepeat",
|
|
["storageclass"] = "TSStorageClass",
|
|
["string"] = "TSString",
|
|
["string.regex"] = "TSStringRegex",
|
|
["string.escape"] = "TSStringEscape",
|
|
["string.special"] = "TSStringSpecial",
|
|
["symbol"] = "TSSymbol",
|
|
["tag"] = "TSTag",
|
|
["tag.attribute"] = "TSTagAttribute",
|
|
["tag.delimiter"] = "TSTagDelimiter",
|
|
["text"] = "TSText",
|
|
["text.strong"] = "TSStrong",
|
|
["text.emphasis"] = "TSEmphasis",
|
|
["text.underline"] = "TSUnderline",
|
|
["text.strike"] = "TSStrike",
|
|
["text.title"] = "TSTitle",
|
|
["text.literal"] = "TSLiteral",
|
|
["text.uri"] = "TSURI",
|
|
["text.math"] = "TSMath",
|
|
["text.reference"] = "TSTextReference",
|
|
["text.environment"] = "TSEnvironment",
|
|
["text.environment.name"] = "TSEnvironmentName",
|
|
["text.note"] = "TSNote",
|
|
["text.warning"] = "TSWarning",
|
|
["text.danger"] = "TSDanger",
|
|
["text.todo"] = "TSTodo",
|
|
["type"] = "TSType",
|
|
["type.builtin"] = "TSTypeBuiltin",
|
|
["type.qualifier"] = "TSTypeQualifier",
|
|
["type.definition"] = "TSTypeDefinition",
|
|
["variable"] = "TSVariable",
|
|
["variable.builtin"] = "TSVariableBuiltin",
|
|
}
|
|
|
|
M.defaults = {
|
|
["@annotation"] = {
|
|
default = true,
|
|
link = "PreProc",
|
|
},
|
|
["@attribute"] = {
|
|
default = true,
|
|
link = "PreProc",
|
|
},
|
|
["@boolean"] = {
|
|
default = true,
|
|
link = "Boolean",
|
|
},
|
|
["@character"] = {
|
|
default = true,
|
|
link = "Character",
|
|
},
|
|
["@character.special"] = {
|
|
default = true,
|
|
link = "SpecialChar",
|
|
},
|
|
["@comment"] = {
|
|
default = true,
|
|
link = "Comment",
|
|
},
|
|
["@conditional"] = {
|
|
default = true,
|
|
link = "Conditional",
|
|
},
|
|
["@constant"] = {
|
|
default = true,
|
|
link = "Constant",
|
|
},
|
|
["@constant.builtin"] = {
|
|
default = true,
|
|
link = "Special",
|
|
},
|
|
["@constant.macro"] = {
|
|
default = true,
|
|
link = "Define",
|
|
},
|
|
["@constructor"] = {
|
|
default = true,
|
|
link = "Special",
|
|
},
|
|
["@debug"] = {
|
|
default = true,
|
|
link = "Debug",
|
|
},
|
|
["@define"] = {
|
|
default = true,
|
|
link = "Define",
|
|
},
|
|
["@exception"] = {
|
|
default = true,
|
|
link = "Exception",
|
|
},
|
|
["@field"] = {
|
|
default = true,
|
|
link = "Identifier",
|
|
},
|
|
["@float"] = {
|
|
default = true,
|
|
link = "Float",
|
|
},
|
|
["@function"] = {
|
|
default = true,
|
|
link = "Function",
|
|
},
|
|
["@function.builtin"] = {
|
|
default = true,
|
|
link = "Special",
|
|
},
|
|
["@function.call"] = {
|
|
default = true,
|
|
link = "@function",
|
|
},
|
|
["@function.macro"] = {
|
|
default = true,
|
|
link = "Macro",
|
|
},
|
|
["@include"] = {
|
|
default = true,
|
|
link = "Include",
|
|
},
|
|
["@keyword"] = {
|
|
default = true,
|
|
link = "Keyword",
|
|
},
|
|
["@keyword.coroutine"] = {
|
|
default = true,
|
|
link = "@keyword",
|
|
},
|
|
["@keyword.function"] = {
|
|
default = true,
|
|
link = "Keyword",
|
|
},
|
|
["@keyword.operator"] = {
|
|
default = true,
|
|
link = "@operator",
|
|
},
|
|
["@keyword.return"] = {
|
|
default = true,
|
|
link = "@keyword",
|
|
},
|
|
["@label"] = {
|
|
default = true,
|
|
link = "Label",
|
|
},
|
|
["@method"] = {
|
|
default = true,
|
|
link = "Function",
|
|
},
|
|
["@method.call"] = {
|
|
default = true,
|
|
link = "@method",
|
|
},
|
|
["@namespace"] = {
|
|
default = true,
|
|
link = "Include",
|
|
},
|
|
["@none"] = {
|
|
default = true,
|
|
},
|
|
["@number"] = {
|
|
default = true,
|
|
link = "Number",
|
|
},
|
|
["@operator"] = {
|
|
default = true,
|
|
link = "Operator",
|
|
},
|
|
["@parameter"] = {
|
|
default = true,
|
|
link = "Identifier",
|
|
},
|
|
["@preproc"] = {
|
|
default = true,
|
|
link = "PreProc",
|
|
},
|
|
["@property"] = {
|
|
default = true,
|
|
link = "Identifier",
|
|
},
|
|
["@punctuation.bracket"] = {
|
|
default = true,
|
|
link = "Delimiter",
|
|
},
|
|
["@punctuation.delimiter"] = {
|
|
default = true,
|
|
link = "Delimiter",
|
|
},
|
|
["@punctuation.special"] = {
|
|
default = true,
|
|
link = "Delimiter",
|
|
},
|
|
["@repeat"] = {
|
|
default = true,
|
|
link = "Repeat",
|
|
},
|
|
["@storageclass"] = {
|
|
default = true,
|
|
link = "StorageClass",
|
|
},
|
|
["@string"] = {
|
|
default = true,
|
|
link = "String",
|
|
},
|
|
["@string.escape"] = {
|
|
default = true,
|
|
link = "SpecialChar",
|
|
},
|
|
["@string.regex"] = {
|
|
default = true,
|
|
link = "String",
|
|
},
|
|
["@string.special"] = {
|
|
default = true,
|
|
link = "SpecialChar",
|
|
},
|
|
["@symbol"] = {
|
|
default = true,
|
|
link = "Identifier",
|
|
},
|
|
["@tag"] = {
|
|
default = true,
|
|
link = "Label",
|
|
},
|
|
["@tag.attribute"] = {
|
|
default = true,
|
|
link = "@property",
|
|
},
|
|
["@tag.delimiter"] = {
|
|
default = true,
|
|
link = "Delimiter",
|
|
},
|
|
["@text"] = {
|
|
default = true,
|
|
link = "@none",
|
|
},
|
|
["@text.danger"] = {
|
|
default = true,
|
|
link = "WarningMsg",
|
|
},
|
|
["@text.emphasis"] = {
|
|
default = true,
|
|
italic = true,
|
|
},
|
|
["@text.environment"] = {
|
|
default = true,
|
|
link = "Macro",
|
|
},
|
|
["@text.environment.name"] = {
|
|
default = true,
|
|
link = "Type",
|
|
},
|
|
["@text.literal"] = {
|
|
default = true,
|
|
link = "String",
|
|
},
|
|
["@text.math"] = {
|
|
default = true,
|
|
link = "Special",
|
|
},
|
|
["@text.note"] = {
|
|
default = true,
|
|
link = "SpecialComment",
|
|
},
|
|
["@text.reference"] = {
|
|
default = true,
|
|
link = "Constant",
|
|
},
|
|
["@text.strike"] = {
|
|
strikethrough = true,
|
|
},
|
|
["@text.strong"] = {
|
|
bold = true,
|
|
default = true,
|
|
},
|
|
["@text.title"] = {
|
|
default = true,
|
|
link = "Title",
|
|
},
|
|
["@text.underline"] = {
|
|
underline = true,
|
|
},
|
|
["@text.uri"] = {
|
|
default = true,
|
|
link = "Underlined",
|
|
},
|
|
["@text.warning"] = {
|
|
default = true,
|
|
link = "Todo",
|
|
},
|
|
["@text.todo"] = {
|
|
default = true,
|
|
link = "Todo",
|
|
},
|
|
["@type"] = {
|
|
default = true,
|
|
link = "Type",
|
|
},
|
|
["@type.builtin"] = {
|
|
default = true,
|
|
link = "Type",
|
|
},
|
|
["@type.definition"] = {
|
|
default = true,
|
|
link = "Typedef",
|
|
},
|
|
["@type.qualifier"] = {
|
|
default = true,
|
|
link = "@keyword",
|
|
},
|
|
["@variable.builtin"] = {
|
|
default = true,
|
|
link = "Special",
|
|
},
|
|
}
|
|
|
|
return M
|