chore: replaced nvim-treesitter with native integration 275fb3a0
Steve · 2026-03-17 18:28 6 file(s) · +17 −105
nushell/config.nu +5 −0
900 900
      }
901 901
    }]
902 902
903 +
def tsi [parser: string] {
904 +
  let tree = $"($env.HOME)/.local/share/nvim/site"
905 +
  luarocks --lua-version=5.1 $"--tree=($tree)" install $"tree-sitter-($parser)"
906 +
}
907 +
903 908
# Function to open sesh
904 909
def t [] {
905 910
  let selected = (sesh list -i | gum filter --limit 1 --placeholder "Choose a session" --height 50 --prompt="> " --indicator.foreground="2" --match.foreground="2")
nvim/init.lua +1 −0
10 10
require("config.options")
11 11
require("core.lazy")
12 12
require("core.lsp")
13 +
require("core.treesitter")
13 14
require("config.keymaps")
14 15
require("config.autocmds")
nvim/lazy-lock.json +0 −2
3 3
  "darkmatter-nvim": { "branch": "main", "commit": "5663ddc9d8580c0c43b996e01bfe1a335789e9c9" },
4 4
  "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
5 5
  "mini.nvim": { "branch": "main", "commit": "a995fe9cd4193fb492b5df69175a351a74b3d36b" },
6 -
  "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
7 -
  "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
8 6
  "vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" }
9 7
}
nvim/lua/config/autocmds.lua +6 −0
6 6
  end,
7 7
})
8 8
9 +
vim.api.nvim_create_autocmd("FileType", {
10 +
    callback = function(ev)
11 +
        pcall(vim.treesitter.start, ev.buf)
12 +
    end
13 +
})
14 +
9 15
-- Reload files automatically if edited externally
10 16
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, {
11 17
  pattern = "*",
nvim/lua/core/treesitter.lua (added) +5 −0
1 +
-- Native treesitter parsers installed via luarocks
2 +
local rocks_path = vim.fn.stdpath("data") .. "/site/lib/luarocks/rocks-5.1"
3 +
for _, parser_dir in ipairs(vim.fn.glob(rocks_path .. "/tree-sitter-*/*/", true, true)) do
4 +
  vim.opt.runtimepath:prepend(parser_dir)
5 +
end
nvim/lua/plugins/treesitter.lua (deleted) +0 −103
1 -
return {
2 -
	"nvim-treesitter/nvim-treesitter",
3 -
	version = false,
4 -
	build = ":TSUpdate",
5 -
	event = { "BufReadPost", "BufNewFile" },
6 -
	dependencies = {
7 -
		"nvim-treesitter/nvim-treesitter-textobjects",
8 -
	},
9 -
	config = function()
10 -
		require("nvim-treesitter.configs").setup({
11 -
			sync_install = false,
12 -
			ignore_install = { "javascript" },
13 -
			modules = {},
14 -
			highlight = {
15 -
				enable = true,
16 -
				additional_vim_regex_highlighting = false,
17 -
			},
18 -
			indent = { enable = true },
19 -
			auto_install = true,
20 -
			ensure_installed = {
21 -
				"bash",
22 -
				"c",
23 -
				"html",
24 -
				"javascript",
25 -
				"json",
26 -
				"lua",
27 -
				"luadoc",
28 -
				"luap",
29 -
				"query",
30 -
				"regex",
31 -
				"vim",
32 -
				"vimdoc",
33 -
				"yaml",
34 -
				"rust",
35 -
				"go",
36 -
				"gomod",
37 -
				"gowork",
38 -
				"gosum",
39 -
			},
40 -
			incremental_selection = {
41 -
				enable = true,
42 -
				keymaps = {
43 -
					init_selection = "<leader>vv",
44 -
					node_incremental = "+",
45 -
					scope_incremental = false,
46 -
					node_decremental = "_",
47 -
				},
48 -
			},
49 -
			textobjects = {
50 -
				select = {
51 -
					enable = true,
52 -
					lookahead = true,
53 -
54 -
					keymaps = {
55 -
						-- You can use the capture groups defined in textobjects.scm
56 -
						["af"] = { query = "@function.outer", desc = "around a function" },
57 -
						["if"] = { query = "@function.inner", desc = "inner part of a function" },
58 -
						["ac"] = { query = "@class.outer", desc = "around a class" },
59 -
						["ic"] = { query = "@class.inner", desc = "inner part of a class" },
60 -
						["ai"] = { query = "@conditional.outer", desc = "around an if statement" },
61 -
						["ii"] = { query = "@conditional.inner", desc = "inner part of an if statement" },
62 -
						["al"] = { query = "@loop.outer", desc = "around a loop" },
63 -
						["il"] = { query = "@loop.inner", desc = "inner part of a loop" },
64 -
						["ap"] = { query = "@parameter.outer", desc = "around parameter" },
65 -
						["ip"] = { query = "@parameter.inner", desc = "inside a parameter" },
66 -
					},
67 -
					selection_modes = {
68 -
						["@parameter.outer"] = "v", -- charwise
69 -
						["@parameter.inner"] = "v", -- charwise
70 -
						["@function.outer"] = "v", -- charwise
71 -
						["@conditional.outer"] = "V", -- linewise
72 -
						["@loop.outer"] = "V",  -- linewise
73 -
						["@class.outer"] = "<c-v>", -- blockwise
74 -
					},
75 -
					include_surrounding_whitespace = false,
76 -
				},
77 -
				move = {
78 -
					enable = true,
79 -
					set_jumps = true, -- whether to set jumps in the jumplist
80 -
					goto_previous_start = {
81 -
						["[f"] = { query = "@function.outer", desc = "Previous function" },
82 -
						["[c"] = { query = "@class.outer", desc = "Previous class" },
83 -
						["[p"] = { query = "@parameter.inner", desc = "Previous parameter" },
84 -
					},
85 -
					goto_next_start = {
86 -
						["]f"] = { query = "@function.outer", desc = "Next function" },
87 -
						["]c"] = { query = "@class.outer", desc = "Next class" },
88 -
						["]p"] = { query = "@parameter.inner", desc = "Next parameter" },
89 -
					},
90 -
				},
91 -
				swap = {
92 -
					enable = true,
93 -
					swap_next = {
94 -
						["<leader>a"] = "@parameter.inner",
95 -
					},
96 -
					swap_previous = {
97 -
						["<leader>A"] = "@parameter.inner",
98 -
					},
99 -
				},
100 -
			},
101 -
		})
102 -
	end,
103 -
}