diff --git a/home/.config/nvim/lua/plugins/init.lua b/home/.config/nvim/lua/plugins/init.lua index 96484bc..7c81793 100644 --- a/home/.config/nvim/lua/plugins/init.lua +++ b/home/.config/nvim/lua/plugins/init.lua @@ -212,6 +212,13 @@ local plugins = { config = require("plugins.dashboard"), dependencies = { { "kyazdani42/nvim-web-devicons" } }, }, + + -- Better folds + { + "kevinhwang91/nvim-ufo", + dependencies = { "kevinhwang91/promise-async" }, + config = require("plugins.ufo"), + }, } local lazy_opts = {} diff --git a/home/.config/nvim/lua/plugins/mason.lua b/home/.config/nvim/lua/plugins/mason.lua index f6848f8..df9a76c 100644 --- a/home/.config/nvim/lua/plugins/mason.lua +++ b/home/.config/nvim/lua/plugins/mason.lua @@ -12,6 +12,13 @@ function m.setup() -- Inform lsp about completion capabilities from cmp local capabilities = require("cmp_nvim_lsp").default_capabilities() + -- Neovim hasn't added foldingRange to default capabilities, users must add it manually + -- for ufo + capabilities.textDocument.foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true, + } + require("mason").setup() local mason_lsp = require("mason-lspconfig") mason_lsp.setup() diff --git a/home/.config/nvim/lua/plugins/ufo.lua b/home/.config/nvim/lua/plugins/ufo.lua new file mode 100644 index 0000000..dbdce24 --- /dev/null +++ b/home/.config/nvim/lua/plugins/ufo.lua @@ -0,0 +1,7 @@ +return function() + require("ufo").setup({ + close_fold_kinds = { + "imports", + }, + }) +end diff --git a/home/.config/nvim/lua/plugins/which-key.lua b/home/.config/nvim/lua/plugins/which-key.lua index 62ad276..e7e9fad 100644 --- a/home/.config/nvim/lua/plugins/which-key.lua +++ b/home/.config/nvim/lua/plugins/which-key.lua @@ -17,4 +17,8 @@ return function() -- Exit terminal insert mode with esc vim.keymap.set("t", "", "", {}) + + -- Using ufo, need to remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself + vim.keymap.set("n", "zR", require("ufo").openAllFolds) + vim.keymap.set("n", "zM", require("ufo").closeAllFolds) end diff --git a/home/.config/nvim/lua/settings.lua b/home/.config/nvim/lua/settings.lua index 87293e5..06c984a 100644 --- a/home/.config/nvim/lua/settings.lua +++ b/home/.config/nvim/lua/settings.lua @@ -49,10 +49,16 @@ o.shiftwidth = 4 o.smartindent = true -- Firenvim settings -vim.g.firenvim_config = { +g.firenvim_config = { localSettings = { [".*"] = { takeOver = "never", }, }, } + +-- Fold settings (for ufo) +o.foldcolumn = "1" +o.foldlevel = 99 +o.foldlevelstart = 99 +o.foldenable = true