From 90a0645d42784bcf6d02f10c052b004db204990b Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 19 Jan 2024 15:44:08 +0800 Subject: [PATCH 1/2] add nvim-ufo for folding --- after/ftplugin/json.vim | 6 +----- lua/config/ufo.lua | 14 ++++++++++++++ lua/plugin_specs.lua | 10 +++++++++- 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 lua/config/ufo.lua diff --git a/after/ftplugin/json.vim b/after/ftplugin/json.vim index 90db3ec..ab459da 100644 --- a/after/ftplugin/json.vim +++ b/after/ftplugin/json.vim @@ -1,6 +1,2 @@ " let the initial folding state be that all folds are closed. -set foldlevel=0 - -" Use nvim-treesitter for folding -set foldmethod=expr -set foldexpr=nvim_treesitter#foldexpr() +setlocal foldlevel=0 diff --git a/lua/config/ufo.lua b/lua/config/ufo.lua new file mode 100644 index 0000000..0f7ed82 --- /dev/null +++ b/lua/config/ufo.lua @@ -0,0 +1,14 @@ + -- disable foldcolumn, see https://github.com/kevinhwang91/nvim-ufo/issues/4 +vim.o.foldcolumn = '0' +vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value +vim.o.foldlevelstart = 99 +vim.o.foldenable = true + +-- treesitter as a main provider instead +-- Only depend on `nvim-treesitter/queries/filetype/folds.scm`, +-- performance and stability are better than `foldmethod=nvim_treesitter#foldexpr()` +require('ufo').setup({ + provider_selector = function(bufnr, filetype, buftype) + return {'treesitter', 'indent'} + end +}) diff --git a/lua/plugin_specs.lua b/lua/plugin_specs.lua index 8f9c4be..9a874c5 100644 --- a/lua/plugin_specs.lua +++ b/lua/plugin_specs.lua @@ -50,7 +50,7 @@ local plugin_specs = { { "nvim-treesitter/nvim-treesitter", enabled = function() - if vim.g.is_mac then + if vim.g.is_mac or vim.g.is_linux then return true end return false @@ -488,6 +488,14 @@ local plugin_specs = { require("config.fidget-nvim") end, }, + { + 'kevinhwang91/nvim-ufo', + dependencies = {'kevinhwang91/promise-async'}, + event = { "VeryLazy" }, + config = function() + require("config.ufo") + end + } } -- configuration for lazy itself. From 4d289d16b3f619e12b62b8971db6818c420e39eb Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 24 Jan 2024 22:47:54 +0800 Subject: [PATCH 2/2] update nvim-ufo --- lua/config/ufo.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lua/config/ufo.lua b/lua/config/ufo.lua index 0f7ed82..dc38c85 100644 --- a/lua/config/ufo.lua +++ b/lua/config/ufo.lua @@ -1,8 +1,10 @@ - -- disable foldcolumn, see https://github.com/kevinhwang91/nvim-ufo/issues/4 +local keymap = vim.keymap + +-- disable foldcolumn, see https://github.com/kevinhwang91/nvim-ufo/issues/4 vim.o.foldcolumn = '0' vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value vim.o.foldlevelstart = 99 -vim.o.foldenable = true +vim.o.foldenable = true -- Don't set nofoldenable in ftplugin -- treesitter as a main provider instead -- Only depend on `nvim-treesitter/queries/filetype/folds.scm`, @@ -12,3 +14,9 @@ require('ufo').setup({ return {'treesitter', 'indent'} end }) + +local ufo = require('ufo') +keymap.set('n', 'zR', ufo.openAllFolds, { desc = 'Open all folds' }) +keymap.set('n', 'zM', ufo.closeAllFolds, { desc = 'Close all folds' }) +keymap.set('n', 'zr', ufo.openFoldsExceptKinds, { desc = 'Fold less' }) +keymap.set('n', 'zm', ufo.closeFoldsWith, { desc = 'Fold more' })