feat: Moved tree-sitter config from other config over

This commit is contained in:
Nicholas Novak
2026-05-03 15:45:31 -07:00
parent ba583727d2
commit a01b800c0a
+63 -23
View File
@@ -249,6 +249,8 @@ require("lazy").setup({
local servers = { local servers = {
-- clangd = {}, -- clangd = {},
gopls = {}, gopls = {},
svelte = {},
tailwindcss = {},
-- pyright = {}, -- pyright = {},
-- rust_analyzer = {}, -- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
@@ -635,11 +637,13 @@ require("lazy").setup({
{ -- Highlight, edit, and navigate code { -- Highlight, edit, and navigate code
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
lazy = false,
build = ":TSUpdate", build = ":TSUpdate",
main = "nvim-treesitter.config", -- Sets main module to use for opts branch = "main",
-- [[ Configure Treesitter ]] See `:help nvim-treesitter` -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
opts = { config = function()
ensure_installed = { -- ensure basic parser are installed
local parsers = {
"bash", "bash",
"c", "c",
"diff", "diff",
@@ -651,25 +655,61 @@ require("lazy").setup({
"query", "query",
"vim", "vim",
"vimdoc", "vimdoc",
"typescript", }
}, require("nvim-treesitter").install(parsers)
-- Autoinstall languages that are not installed
auto_install = true, ---@param buf integer
highlight = { ---@param language string
enable = true, local function treesitter_try_attach(buf, language)
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. -- check if parser exists and load it
-- If you are experiencing weird indenting issues, add the language to if not vim.treesitter.language.add(language) then
-- the list of additional_vim_regex_highlighting and disabled languages for indent. return
additional_vim_regex_highlighting = { "ruby" }, end
}, -- enables syntax highlighting and other treesitter features
indent = { enable = true, disable = { "ruby" } }, vim.treesitter.start(buf, language)
},
-- There are additional nvim-treesitter modules that you can use to interact -- enables treesitter based folds
-- with nvim-treesitter. You should go explore a few and see what interests you: -- for more info on folds see `:help folds`
-- -- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` -- vim.wo.foldmethod = 'expr'
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects -- check if treesitter indentation is available for this language, and if so enable it
-- in case there is no indent query, the indentexpr will fallback to the vim's built in one
local has_indent_query = vim.treesitter.query.get(language, "indents") ~= nil
-- enables treesitter based indentation
if has_indent_query then
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end
end
local available_parsers = require("nvim-treesitter").get_available()
vim.api.nvim_create_autocmd("FileType", {
callback = function(args)
local buf, filetype = args.buf, args.match
local language = vim.treesitter.language.get_lang(filetype)
if not language then
return
end
local installed_parsers = require("nvim-treesitter").get_installed("parsers")
if vim.tbl_contains(installed_parsers, language) then
-- enable the parser if it is installed
treesitter_try_attach(buf, language)
elseif vim.tbl_contains(available_parsers, language) then
-- if a parser is available in `nvim-treesitter` auto install it, and enable it after the installation is done
require("nvim-treesitter").install(language):await(function()
treesitter_try_attach(buf, language)
end)
else
-- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter`
treesitter_try_attach(buf, language)
end
end,
})
end,
}, },
{ {