-- -- fold plugin -- -- Initialize folds with foldmethod = expr if a treesitter parser is available, then switch back to manual -- This is to have the folds calculated and closed when editing the file initially, but with foldmethod set to manual -- Without foldmethod set to manual folds are created while writing in insert mode which is annoying -- -- Skip floating windows, because they often are documentation (and thus should be visible by default) local function init_folds() if vim.api.nvim_win_get_config(0).relative ~= "" or vim.treesitter.get_parser(0) == nil then return end vim.opt_local.foldexpr = "v:lua.vim.treesitter.foldexpr()" vim.opt_local.foldmethod = "expr" vim.cmd.normal({ "zX", bang = true }) vim.opt_local.foldmethod = "manual" end -- Initial fold setup vim.api.nvim_create_autocmd("FileType", { desc = "Initialize folds", group = vim.g.dotfiles.augroup, callback = init_folds, }) vim.api.nvim_create_user_command("FoldInit", init_folds, { desc = "(Re)initialize folds" })