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
|
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
lazy = true,
-- event = "VeryLazy",
event = "BufRead",
-- ft = { "cpp", "python", "bash", "conf", "R", "zsh" },
dependencies = {
{"nvim-treesitter/nvim-treesitter-textobjects"}, -- Syntax aware text-objects
{
"nvim-treesitter/nvim-treesitter-context", -- Show code context
opts = {
-- 用于折叠显示前面的 function prototype
enable = true, -- FIXME: true?
mode = "topline",
line_numbers = false,
multiwindow = false, -- Enable multiwindow support.
max_lines = 5, -- How many lines the window should span. Values <= 0 mean no limit.
-- min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
-- line_numbers = false,
multiline_threshold = 20, -- Maximum number of lines to show for a single context
-- trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
-- mode = 'topline', -- Line used to calculate context. Choices: 'cursor', 'topline'
-- -- Separator between context and content. Should be a single character string, like '-'.
-- -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
-- separator = nil,
-- zindex = 20, -- The Z-index of the context window
}
}
},
opts = {
-- A list of parser names, or "all" (the five listed parsers should always be installed)
ensure_installed =
{
"bash",
"c",
"cpp",
"diff",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
-- List of parsers to ignore installing (or "all")
ignore_install = {
"javascript",
"markdown",
"org",
"csv", -- we do not use tree-sitter csv since csv.lua would be broken
},
highlight = {
enable = true,
-- disable = {"csv", "markdown"}
disable = {"csv"}
},
--FIXME: 可能导致 cpp indent 有点不对
indent = { enable = true },
textobjects = {select = {enable = true, lookahead = true}}
},
config = function(_, opts)
require'nvim-treesitter.configs'.setup(opts)
end
}
|