Files
dotfiles/nvim/lua/plugins/treesitter.lua
Thomas Naderer 61b1e3d2a9 refactor(nvim): modernize plugin stack
Removed dead weight:
- Drop nightfox, rose-pine, kanagawa, everforest colorschemes
- Remove fzf/fzf.vim (redundant with telescope)
- Remove vim-fugitive and its keymaps (lazygit covers this)
- Remove Comment.nvim (built into nvim 0.10+)

Replaced:
- nvim-cmp → blink.cmp (Rust-powered, faster, ghost text)
- none-ls/null-ls → conform.nvim (async, maintained)
- cmp-nvim-lsp capabilities → blink.cmp.get_lsp_capabilities()
- Copilot suggestions now routed through blink-copilot

Added:
- lazydev.nvim for proper Lua LSP in nvim config
- flash.nvim (s/S jump anywhere on screen)
- which-key.nvim (leader key popup with groups)
- snacks.nvim (notifier + word highlights)
- nvim-treesitter-textobjects (af/if, ac/ic, ]f/[f)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 21:26:55 +01:00

76 lines
2.3 KiB
Lua

return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" },
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = { "c", "lua", "python", "javascript", "markdown", "markdown_inline", "html", "css", "bash", "vim", "vimdoc" },
sync_install = false,
auto_install = true,
ignore_install = {},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
disable = function(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
local filename = vim.api.nvim_buf_get_name(buf)
if lang == "latex" or filename:match("%.bib$") then
return true
end
return false
end,
},
indent = {
enable = true,
disable = { "tex", "bib", "markdown" },
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
["aa"] = "@parameter.outer",
["ia"] = "@parameter.inner",
},
},
move = {
enable = true,
set_jumps = true,
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer" },
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer" },
goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer" },
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer" },
},
},
})
-- Better folding setup
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.opt.foldlevel = 20
vim.opt.foldenable = false
end,
},
}