summaryrefslogtreecommitdiff
path: root/lua/config/treesitter.lua
blob: 38e1d6bf09ce2cb12fdce1ea88ab20df024fdc13 (plain)
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 = false,
		},
		-- 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