fold.lua 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. return {
  2. "bbjornstad/pretty-fold.nvim",
  3. enabled = true,
  4. config = function()
  5. local global_setup = {
  6. sections = {
  7. left = { "content" },
  8. right = {
  9. " ",
  10. function()
  11. return ("[%dL]"):format(vim.v.foldend - vim.v.foldstart)
  12. end,
  13. "[",
  14. "percentage",
  15. "]",
  16. },
  17. },
  18. matchup_patterns = {
  19. { "{", "}" },
  20. { "%(", ")" }, -- % to escape lua pattern char
  21. { "%[", "]" }, -- % to escape lua pattern char
  22. },
  23. -- add_close_pattern = true,
  24. process_comment_signs = ({ "delete", "spaces", false })[2],
  25. }
  26. local function ft_setup(lang, options) -- {{{
  27. local opts = vim.tbl_deep_extend("force", global_setup, options)
  28. -- combine global and ft specific matchup_patterns
  29. if opts and opts.matchup_patterns and global_setup.matchup_patterns then
  30. opts.matchup_patterns = vim.list_extend(opts.matchup_patterns, global_setup.matchup_patterns)
  31. end
  32. require("pretty-fold").ft_setup(lang, opts)
  33. end -- }}}
  34. require("pretty-fold").setup(global_setup)
  35. ft_setup("lua", { -- {{{
  36. matchup_patterns = {
  37. { "^%s*do$", "end" }, -- do ... end blocks
  38. { "^%s*if", "end" }, -- if ... end
  39. { "^%s*for", "end" }, -- for
  40. { "function[^%(]*%(", "end" }, -- 'function( or 'function (''
  41. },
  42. }) -- }}}
  43. ft_setup("vim", { -- {{{
  44. matchup_patterns = {
  45. { "^%s*function!?[^%(]*%(", "endfunction" },
  46. },
  47. }) -- }}}
  48. end,
  49. }