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
|
-- ~/.config/nvim/lua/config/treesitter.lua
return function()
require("nvim-treesitter.configs").setup {
ensure_installed = {
"c",
"lua",
"vim",
"vimdoc",
"query",
"markdown",
"markdown_inline",
"python",
"javascript",
"cpp",
"rust",
"haskell",
"commonlisp",
"scheme",
"clojure",
"fennel",
},
sync_install = false,
auto_install = true,
highlight = {
enable = true,
disable = {"latex"},
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
},
-- incremental_selection = {
-- enable = true,
-- keymaps = {
-- init_selection = "gnn",
-- node_incremental = "grn",
-- scope_incremental = "grc",
-- node_decremental = "grm",
-- },
-- },
textobjects = {
select = {
enable = true,
keymaps = {
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
},
},
},
fold = {
enable = true,
},
}
-- Add folding settings here
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
vim.opt.foldlevelstart = 99
vim.api.nvim_create_autocmd("FileType", {
callback = function()
if require("nvim-treesitter.parsers").has_parser() then
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
else
vim.opt.foldmethod = "indent" -- or whatever you prefer
end
end,
})
end
|