Skip to content

Commit 8222700

Browse files
committed
Update flake and treesitter config
1 parent 9d8792d commit 8222700

File tree

2 files changed

+65
-61
lines changed

2 files changed

+65
-61
lines changed

flake.lock

Lines changed: 24 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lua/config/treesitter.lua

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,48 @@
11
local M = {}
2+
23
function M.setup()
3-
local ts_config = require("nvim-treesitter.configs")
4+
vim.api.nvim_create_autocmd('FileType', {
5+
pattern = { '*' },
6+
callback = function()
7+
if vim.treesitter.get_parser(nil, nil, { error = false }) then
8+
vim.treesitter.start()
9+
end
10+
end,
11+
})
412

5-
---@diagnostic disable-next-line: missing-fields
6-
local opts = {
7-
indent = {
8-
enable = true,
9-
disable = {
10-
"nix",
11-
"python",
12-
},
13-
},
14-
highlight = {
15-
enable = true,
16-
disable = {
17-
"nix",
18-
},
19-
},
20-
textobjects = {
21-
select = {
22-
enable = true,
23-
lookahead = true,
24-
keymaps = {
25-
["af"] = "@function.outer",
26-
["if"] = "@function.inner",
27-
["ac"] = "@class.outer",
28-
["ic"] = "@class.inner",
29-
["am"] = "@comment.outer",
30-
["im"] = "@comment.inner",
31-
["ao"] = "@loop.outer",
32-
["io"] = "@loop.inner",
33-
},
34-
},
35-
},
36-
}
13+
vim.api.nvim_create_autocmd('FileType', {
14+
pattern = { '*' },
15+
callback = function(ev)
16+
local filetype = ev.match
17+
if filetype ~= 'nix' or filetype ~= 'python' then
18+
vim.bo[ev.buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
19+
end
20+
end,
21+
})
3722

38-
-- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}'
39-
vim.defer_fn(function()
40-
ts_config.setup(opts)
41-
end, 0)
23+
vim.opt.foldmethod = 'expr'
24+
vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
25+
vim.opt.foldlevel = 99
26+
27+
vim.g.textobjects_select_enable = true
28+
vim.g.textobjects_select_lookahead = true
29+
30+
local keymaps = {
31+
['af'] = '@function.outer',
32+
['if'] = '@function.inner',
33+
['ac'] = '@class.outer',
34+
['ic'] = '@class.inner',
35+
['am'] = '@comment.outer',
36+
['im'] = '@comment.inner',
37+
['ao'] = '@loop.outer',
38+
['io'] = '@loop.inner',
39+
}
40+
41+
for keymap, textobject in pairs(keymaps) do
42+
vim.keymap.set('x', keymap, function()
43+
require('nvim-treesitter.textobjects.select').select_textobject(nil, textobject)
44+
end, { noremap = true, silent = true })
45+
end
4246
end
4347

4448
return M

0 commit comments

Comments
 (0)