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..dc38c85 --- /dev/null +++ b/lua/config/ufo.lua @@ -0,0 +1,22 @@ +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 -- Don't set nofoldenable in ftplugin + +-- 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 +}) + +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' }) diff --git a/lua/plugin_specs.lua b/lua/plugin_specs.lua index f18dda4..c59030e 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 @@ -492,6 +492,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.