feat(nvim): make ufo zm
, zr
act like native vim
This commit is contained in:
parent
d114443c3a
commit
b4d7f931ad
@ -1,3 +1,23 @@
|
|||||||
|
vim.api.nvim_create_autocmd("BufReadPre", {
|
||||||
|
callback = function()
|
||||||
|
vim.b.ufo_foldlevel = 0
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
local change_buf_foldlevel_by = function(num)
|
||||||
|
local foldlevel = vim.b.ufo_foldlevel or 0
|
||||||
|
if foldlevel + num >= 0 then
|
||||||
|
foldlevel = foldlevel + num
|
||||||
|
end
|
||||||
|
vim.b.ufo_foldlevel = foldlevel
|
||||||
|
require("ufo").closeFoldsWith(foldlevel)
|
||||||
|
end
|
||||||
|
|
||||||
|
local set_buf_foldlevel = function(num)
|
||||||
|
vim.b.ufo_foldlevel = num
|
||||||
|
require("ufo").closeFoldsWith(num)
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"kevinhwang91/nvim-ufo",
|
"kevinhwang91/nvim-ufo",
|
||||||
@ -5,10 +25,57 @@ return {
|
|||||||
"kevinhwang91/promise-async",
|
"kevinhwang91/promise-async",
|
||||||
},
|
},
|
||||||
event = { "BufRead", "BufNewFile" },
|
event = { "BufRead", "BufNewFile" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"zR",
|
||||||
|
function()
|
||||||
|
require("ufo").openAllFolds()
|
||||||
|
end,
|
||||||
|
desc = "UFO: Open All Folds"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"zM",
|
||||||
|
function()
|
||||||
|
require("ufo").closeAllFolds()
|
||||||
|
end,
|
||||||
|
desc = "UFO: Close All Folds"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"zm",
|
||||||
|
function()
|
||||||
|
local count = vim.v.count
|
||||||
|
if count == 0 then
|
||||||
|
count = nil
|
||||||
|
end
|
||||||
|
change_buf_foldlevel_by(count or -1)
|
||||||
|
end,
|
||||||
|
desc = "UFO: Fold Less"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"zr",
|
||||||
|
function()
|
||||||
|
local count = vim.v.count
|
||||||
|
if count == 0 then
|
||||||
|
count = nil
|
||||||
|
end
|
||||||
|
change_buf_foldlevel_by(count or 1)
|
||||||
|
end,
|
||||||
|
desc = "UFO: Fold More"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"zS",
|
||||||
|
function()
|
||||||
|
if vim.v.count == 0 then
|
||||||
|
vim.notify("No foldlevel given to set!", vim.log.levels.WARN)
|
||||||
|
else
|
||||||
|
set_buf_foldlevel(vim.v.count)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
desc = "UFO: Set Foldlevel"
|
||||||
|
},
|
||||||
|
},
|
||||||
opts = function()
|
opts = function()
|
||||||
vim.keymap.set("n", "zR", require("ufo").openAllFolds)
|
vim.opt.foldlevel = 99
|
||||||
vim.keymap.set("n", "zM", require("ufo").closeAllFolds)
|
|
||||||
vim.keymap.set("n", "zm", require("ufo").closeFoldsWith)
|
|
||||||
|
|
||||||
-- Show numbers for fold text
|
-- Show numbers for fold text
|
||||||
local handler = function(virtText, lnum, endLnum, width, truncate)
|
local handler = function(virtText, lnum, endLnum, width, truncate)
|
||||||
|
Loading…
Reference in New Issue
Block a user