Files
yadm/.config/nvim/lua/plugins/fold.lua
2024-06-03 23:36:36 +02:00

85 lines
2.6 KiB
Lua

-- return {
-- 'anuvyklack/pretty-fold.nvim',
-- config = function()
-- require('pretty-fold').setup()
-- require('pretty-fold').ft_setup('cpp', {
-- process_comment_signs = false,
-- --comment_signs = {
-- -- '//', -- C++ Doxygen comments
-- --},
-- })
-- end
-- },
-- {
-- 'anuvyklack/fold-preview.nvim',
-- dependencies = 'anuvyklack/keymap-amend.nvim',
-- config = function()
-- require('fold-preview').setup({
-- -- Your configuration goes here.
-- })
-- end
-- },
return
{
{
"chrisgrieser/nvim-origami",
event = "BufReadPost", -- later or on keypress would prevent saving folds
opts = {
keepFoldsAcrossSessions = false,
},
enabled = true
}, {
"kevinhwang91/nvim-ufo",
dependencies = {
"kevinhwang91/promise-async"
},
config = function()
local handler = function(virtText, lnum, endLnum, width, truncate)
local newVirtText = {}
local suffix = (' 󰁂 %d '):format(endLnum - lnum)
local sufWidth = vim.fn.strdisplaywidth(suffix)
local targetWidth = width - sufWidth
local curWidth = 0
for _, chunk in ipairs(virtText) do
local chunkText = chunk[1]
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
if targetWidth > curWidth + chunkWidth then
table.insert(newVirtText, chunk)
else
chunkText = truncate(chunkText, targetWidth - curWidth)
local hlGroup = chunk[2]
table.insert(newVirtText, {chunkText, hlGroup})
chunkWidth = vim.fn.strdisplaywidth(chunkText)
-- str width returned from truncate() may less than 2nd argument, need padding
if curWidth + chunkWidth < targetWidth then
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
end
break
end
curWidth = curWidth + chunkWidth
end
table.insert(newVirtText, {suffix, 'MoreMsg'})
return newVirtText
end
vim.cmd [[
hi default UfoFoldedFg guifg=Normal.foreground
hi default UfoFoldedBg guibg=Visual.background
hi default link UfoPreviewSbar PmenuSbar
hi default link UfoPreviewThumb PmenuThumb
hi default link UfoPreviewWinBar UfoFoldedBg
hi default link UfoPreviewCursorLine Visual
hi default link UfoFoldedEllipsis Visual
hi default link UfoCursorFoldedLine Normal
hi Folded gui=NONE guibg=Normal.background
]]
require("ufo").setup({
fold_virt_text_handler = handler
})
end
}
}