summaryrefslogtreecommitdiffstats
path: root/plugin/nvim-treesitter.lua
blob: 5109c80f2af14a064b83de95dbd2bd41fbd9897d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
-- Last Change: 2022 Apr 16

if vim.g.loaded_nvim_treesitter then
  return
end
vim.g.loaded_nvim_treesitter = true

-- setup modules
require("nvim-treesitter").setup()

local api = vim.api

-- define autocommands
local augroup = api.nvim_create_augroup("NvimTreesitter", {})

api.nvim_create_autocmd("Filetype", {
  pattern = "query",
  group = augroup,
  callback = function()
    api.nvim_clear_autocmds {
      group = augroup,
      event = "BufWritePost",
    }
    api.nvim_create_autocmd("BufWritePost", {
      group = augroup,
      buffer = 0,
      callback = function(opts)
        require("nvim-treesitter.query").invalidate_query_file(opts.file)
      end,
      desc = "Invalidate query file",
    })
  end,
  desc = "Reload query",
})

-- define highlights
local highlights = {
  TSNone = { default = true },
  TSPunctDelimiter = { link = "Delimiter", default = true },
  TSPunctBracket = { link = "Delimiter", default = true },
  TSPunctSpecial = { link = "Delimiter", default = true },

  TSConstant = { link = "Constant", default = true },
  TSConstBuiltin = { link = "Special", default = true },
  TSConstMacro = { link = "Define", default = true },
  TSString = { link = "String", default = true },
  TSStringRegex = { link = "String", default = true },
  TSStringEscape = { link = "SpecialChar", default = true },
  TSStringSpecial = { link = "SpecialChar", default = true },
  TSCharacter = { link = "Character", default = true },
  TSCharacterSpecial = { link = "SpecialChar", default = true },
  TSNumber = { link = "Number", default = true },
  TSBoolean = { link = "Boolean", default = true },
  TSFloat = { link = "Float", default = true },

  TSFunction = { link = "Function", default = true },
  TSFuncBuiltin = { link = "Special", default = true },
  TSFuncMacro = { link = "Macro", default = true },
  TSParameter = { link = "Identifier", default = true },
  TSParameterReference = { link = "TSParameter", default = true },
  TSMethod = { link = "Function", default = true },
  TSField = { link = "Identifier", default = true },
  TSProperty = { link = "Identifier", default = true },
  TSConstructor = { link = "Special", default = true },
  TSAnnotation = { link = "PreProc", default = true },
  TSAttribute = { link = "PreProc", default = true },
  TSNamespace = { link = "Include", default = true },
  TSSymbol = { link = "Identifier", default = true },

  TSConditional = { link = "Conditional", default = true },
  TSRepeat = { link = "Repeat", default = true },
  TSLabel = { link = "Label", default = true },
  TSOperator = { link = "Operator", default = true },
  TSKeyword = { link = "Keyword", default = true },
  TSKeywordFunction = { link = "Keyword", default = true },
  TSKeywordOperator = { link = "TSOperator", default = true },
  TSKeywordReturn = { link = "TSKeyword", default = true },
  TSException = { link = "Exception", default = true },
  TSDebug = { link = "Debug", default = true },
  TSDefine = { link = "Define", default = true },
  TSPreProc = { link = "PreProc", default = true },
  TSStorageClass = { link = "StorageClass", default = true },

  TSTodo = { link = "Todo", default = true },

  TSType = { link = "Type", default = true },
  TSTypeBuiltin = { link = "Type", default = true },
  TSTypeQualifier = { link = "Type", default = true },
  TSTypeDefinition = { link = "Typedef", default = true },

  TSInclude = { link = "Include", default = true },

  TSVariableBuiltin = { link = "Special", default = true },

  TSText = { link = "TSNone", default = true },
  TSStrong = { bold = true, default = true },
  TSEmphasis = { italic = true, default = true },
  TSUnderline = { underline = true },
  TSStrike = { strikethrough = true },

  TSMath = { link = "Special", default = true },
  TSTextReference = { link = "Constant", default = true },
  TSEnvironment = { link = "Macro", default = true },
  TSEnvironmentName = { link = "Type", default = true },
  TSTitle = { link = "Title", default = true },
  TSLiteral = { link = "String", default = true },
  TSURI = { link = "Underlined", default = true },

  TSComment = { link = "Comment", default = true },
  TSNote = { link = "SpecialComment", default = true },
  TSWarning = { link = "Todo", default = true },
  TSDanger = { link = "WarningMsg", default = true },

  TSTag = { link = "Label", default = true },
  TSTagDelimiter = { link = "Delimiter", default = true },
  TSTagAttribute = { link = "TSProperty", default = true },
}

for k, v in pairs(highlights) do
  api.nvim_set_hl(0, k, v)
end