diff --git a/config/nvim/lua/plugins/ufo.lua b/config/nvim/lua/plugins/ufo.lua index 7dc9e36..f71ce4c 100644 --- a/config/nvim/lua/plugins/ufo.lua +++ b/config/nvim/lua/plugins/ufo.lua @@ -1,79 +1,79 @@ -- Not UFO in the sky, but an ultra fold in Neovim. -- https://github.com/kevinhwang91/nvim-ufo return { - "kevinhwang91/nvim-ufo", - dependencies = "kevinhwang91/promise-async", - config = function() - vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]] - vim.o.foldcolumn = "0" - vim.o.foldlevel = 99 - vim.o.foldlevelstart = 100 - vim.o.foldenable = true + "kevinhwang91/nvim-ufo", + dependencies = "kevinhwang91/promise-async", + config = function() + vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]] + vim.o.foldcolumn = "0" + vim.o.foldlevel = 99 + vim.o.foldlevelstart = 100 + vim.o.foldenable = true - 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) - 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 + 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) + 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 - require("ufo").setup({ - fold_virt_text_handler = handler, - close_fold_kinds_for_ft = { - default = { "imports", "comment" }, - }, - open_fold_hl_timeout = 300, - enable_get_fold_virt_text = false, - preview = {}, - provider_selector = function() - return { "lsp", "indent" } - end, - }) - end, - keys = { - { - "zR", - function() - require("ufo").openAllFolds() - end, - desc = "Open all folds", - }, - { - "zM", - function() - require("ufo").closeAllFolds() - end, - desc = "Close all folds", - }, - { - "zK", - function() - local winid = require("ufo").peekFoldedLinesUnderCursor() - if not winid then - vim.lsp.buf.hover() - end - end, - desc = "Peek fold", - }, - }, + require("ufo").setup({ + fold_virt_text_handler = handler, + close_fold_kinds_for_ft = { + default = { "imports", "comment" }, + }, + open_fold_hl_timeout = 300, + enable_get_fold_virt_text = false, + preview = {}, + provider_selector = function() + return { "lsp", "indent" } + end, + }) + end, + keys = { + { + "zR", + function() + require("ufo").openAllFolds() + end, + desc = "Open all folds", + }, + { + "zM", + function() + require("ufo").closeAllFolds() + end, + desc = "Close all folds", + }, + { + "zK", + function() + local winid = require("ufo").peekFoldedLinesUnderCursor() + if not winid then + vim.lsp.buf.hover() + end + end, + desc = "Peek fold", + }, + }, }