diff --git a/dot_config/nvim/exact_lua/exact_plugins/exact_editor/fold.lua b/dot_config/nvim/exact_lua/exact_plugins/exact_editor/fold.lua new file mode 100644 index 0000000..19a27ae --- /dev/null +++ b/dot_config/nvim/exact_lua/exact_plugins/exact_editor/fold.lua @@ -0,0 +1,60 @@ +return { + { + 'kevinhwang91/nvim-ufo', + dependencies = { + 'kevinhwang91/promise-async' + }, + config = function() + vim.o.foldcolumn = '1' -- '0' is not bad + 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 + + -- Using ufo provider need 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) + + -- Option 1: coc.nvim as LSP client + -- use {'neoclide/coc.nvim', branch = 'master', run = 'yarn install --frozen-lockfile'} + -- require('ufo').setup() + -- + + -- Option 2: nvim lsp as LSP client + -- Tell the server the capability of foldingRange, + -- Neovim hasn't added foldingRange to default capabilities, users must add it manually + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true + } + local language_servers = vim.lsp.get_clients() -- or list servers manually like {'gopls', 'clangd'} + for _, ls in ipairs(language_servers) do + require('lspconfig')[ls].setup({ + capabilities = capabilities + -- you can add other fields for setting up lsp server in this table + }) + end + require('ufo').setup() + -- + + -- Option 3: treesitter as a main provider instead + -- (Note: the `nvim-treesitter` plugin is *not* needed.) + -- ufo uses the same query files for folding (queries//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 + -- }) + -- + + -- Option 4: disable all providers for all buffers + -- Not recommend, AFAIK, the ufo's providers are the best performance in Neovim + -- require('ufo').setup({ + -- provider_selector = function(bufnr, filetype, buftype) + -- return '' + -- end + -- }) + end, + } +} diff --git a/dot_config/nvim/exact_lua/exact_plugins/exact_editor/gitsigns.lua b/dot_config/nvim/exact_lua/exact_plugins/exact_editor/gitsigns.lua index b8d66c7..6f53a80 100644 --- a/dot_config/nvim/exact_lua/exact_plugins/exact_editor/gitsigns.lua +++ b/dot_config/nvim/exact_lua/exact_plugins/exact_editor/gitsigns.lua @@ -1,3 +1,4 @@ +-- if true then return {} end -- 暫時停用(不會用🫠) return { "lewis6991/gitsigns.nvim", opts = {