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
|
local function disable(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.uv.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end
require("nvim-treesitter").setup({
auto_install = false,
ensure_installed = {},
ignore_install = {},
modules = {},
sync_install = false,
highlight = {
additional_vim_regex_highlighting = false,
disable = disable,
enable = true,
},
indent = { enable = true, disable = { "rust", "lua", "python", "golang", "nix", "json", "html", "javascript" } },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<leader>vv",
node_decremental = "_",
node_incremental = "+",
scope_incremental = false,
},
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["af"] = { query = "@function.outer", desc = "around a function" },
["if"] = { query = "@function.inner", desc = "inner part of a function" },
["ac"] = { query = "@class.outer", desc = "around a class" },
["ic"] = { query = "@class.inner", desc = "inner part of a class" },
["ai"] = { query = "@conditional.outer", desc = "around an if statement" },
["ii"] = { query = "@conditional.inner", desc = "inner part of an if statement" },
["al"] = { query = "@loop.outer", desc = "around a loop" },
["il"] = { query = "@loop.inner", desc = "inner part of a loop" },
["ap"] = { query = "@parameter.outer", desc = "around parameter" },
["ip"] = { query = "@parameter.inner", desc = "inside a parameter" },
},
selection_modes = {
["@parameter.outer"] = "v", -- charwise
["@parameter.inner"] = "v", -- charwise
["@function.outer"] = "v", -- charwise
["@conditional.outer"] = "V", -- linewise
["@loop.outer"] = "V", -- linewise
["@class.outer"] = "<c-v>", -- blockwise
},
include_surrounding_whitespace = false,
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_previous_start = {
["[f"] = { query = "@function.outer", desc = "Previous function" },
["[c"] = { query = "@class.outer", desc = "Previous class" },
["[p"] = { query = "@parameter.inner", desc = "Previous parameter" },
},
goto_next_start = {
["]f"] = { query = "@function.outer", desc = "Next function" },
["]c"] = { query = "@class.outer", desc = "Next class" },
["]p"] = { query = "@parameter.inner", desc = "Next parameter" },
},
},
swap = {
enable = true,
swap_next = {
["<leader>a"] = "@parameter.inner",
},
swap_previous = {
["<leader>A"] = "@parameter.inner",
},
},
},
})
|