fold.lua 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. local M = {
  2. "bbjornstad/pretty-fold.nvim",
  3. }
  4. M.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. { "%(", ")" },
  21. { "%[", "]" },
  22. },
  23. process_comment_signs = ({ "delete", "spaces", false })[2],
  24. }
  25. local function ft_setup(lang, options) -- {{{
  26. local opts = vim.tbl_deep_extend("force", global_setup, options)
  27. if opts and opts.matchup_patterns and global_setup.matchup_patterns then
  28. opts.matchup_patterns = vim.list_extend(opts.matchup_patterns, global_setup.matchup_patterns)
  29. end
  30. require("pretty-fold").ft_setup(lang, opts)
  31. end -- }}}
  32. require("pretty-fold").setup(global_setup)
  33. ft_setup("lua", {
  34. matchup_patterns = {
  35. { "^%s*do$", "end" },
  36. { "^%s*if", "end" },
  37. { "^%s*for", "end" },
  38. { "function[^%(]*%(", "end" },
  39. },
  40. })
  41. ft_setup("vim", {
  42. matchup_patterns = {
  43. { "^%s*function!?[^%(]*%(", "endfunction" },
  44. },
  45. })
  46. end
  47. return M