From 8b461f90789eff1594bc25e3493c9cb451110905 Mon Sep 17 00:00:00 2001 From: andrzej Date: Thu, 7 Nov 2024 13:34:26 +0100 Subject: [PATCH] custom v text --- nvim/.config/nvim/lua/plugins/ufo-folding.lua | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/nvim/.config/nvim/lua/plugins/ufo-folding.lua b/nvim/.config/nvim/lua/plugins/ufo-folding.lua index 39ff839..39f053d 100644 --- a/nvim/.config/nvim/lua/plugins/ufo-folding.lua +++ b/nvim/.config/nvim/lua/plugins/ufo-folding.lua @@ -8,7 +8,47 @@ return { vim.o.foldenable = true vim.keymap.set("n", "zR", require("ufo").openAllFolds) vim.keymap.set("n", "zM", require("ufo").closeAllFolds) + + local handler = function(virtText, lnum, endLnum, width, truncate, x) + -- 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 virtText + end + require("ufo").setup({ + fold_virt_text_handler = handler, + open_fold_hl_timeout = 0, + close_fold_kinds_for_ft = {}, + enable_get_fold_virt_text = true, + preview = { + win_config = { + border = { "", "─", "", "", "", "─", "", "" }, + winhighlight = "Normal:Folded", + winblend = 0, + }, + }, provider_selector = function(bufnr, filetype, buftype) return { "treesitter", "indent" } end,