-- https://github.com/nvim-treesitter/nvim-treesitter/blob/main/doc/nvim-treesitter.txt local treesitter_languages = require("config.treesitter").languages local function enable_treesitter_features() if not pcall(vim.treesitter.start) then return end vim.wo.foldmethod = "expr" vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end vim.api.nvim_create_autocmd("FileType", { pattern = treesitter_languages, callback = enable_treesitter_features, }) -- https://github.com/nvim-tree/nvim-tree.lua/wiki/Auto-Close vim.api.nvim_create_autocmd("QuitPre", { callback = function() local invalid_win = {} local wins = vim.api.nvim_list_wins() for _, w in ipairs(wins) do local bufname = vim.api.nvim_buf_get_name(vim.api.nvim_win_get_buf(w)) if bufname:match("NvimTree_") ~= nil then table.insert(invalid_win, w) end end if #invalid_win == #wins - 1 then -- Should quit, so we close all invalid windows. for _, w in ipairs(invalid_win) do vim.api.nvim_win_close(w, true) end end end, }) vim.api.nvim_create_autocmd("LspAttach", { callback = function(event) local client = vim.lsp.get_client_by_id(event.data.client_id) local keymaps = require("config.keymaps") keymaps.lsp(event.buf, client) end, })