diff options
| author | Petri Hienonen <petri.hienonen@gmail.com> | 2024-05-23 13:56:00 +0300 |
|---|---|---|
| committer | Petri Hienonen <petri.hienonen@gmail.com> | 2025-11-30 12:29:57 +0200 |
| commit | 08297376a85a1719518507e54fca9de954d2376a (patch) | |
| tree | 3b9c58304b40248533bbb2bb5b7bad2da9da1ff0 /home/nvim/plugins/treesitter.lua | |
| parent | 75c2af4aedd2ac5c2cfc74b346625fa4b265541d (diff) | |
| download | nixos-08297376a85a1719518507e54fca9de954d2376a.tar.zst | |
Agenix configuration
Diffstat (limited to 'home/nvim/plugins/treesitter.lua')
| -rw-r--r-- | home/nvim/plugins/treesitter.lua | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/home/nvim/plugins/treesitter.lua b/home/nvim/plugins/treesitter.lua new file mode 100644 index 0000000..968af11 --- /dev/null +++ b/home/nvim/plugins/treesitter.lua @@ -0,0 +1,81 @@ +local function disable(lang, buf) + local max_filesize = 100 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.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.configs").setup({ + ensure_installed = {}, + sync_install = false, + ignore_install = {}, + modules = {}, + auto_install = false, + highlight = { + enable = true, + disable = disable, + additional_vim_regex_highlighting = false, + }, + indent = { enable = true, disable = { "rust", "lua", "python", "golang", "nix", "json", "html", "javascript" } }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "<leader>vv", + node_incremental = "+", + scope_incremental = false, + node_decremental = "_", + }, + }, + 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", + }, + }, + }, +}) |
