breadcrumbs.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. local M = {}
  2. local icons = lvim.icons.kind
  3. local function close_menu()
  4. local menu = require("dropbar.api").get_current_dropbar_menu()
  5. if not menu then
  6. return false
  7. end
  8. menu:close()
  9. return true
  10. end
  11. local function close_all_menus()
  12. while close_menu() do
  13. end
  14. end
  15. M.config = function()
  16. lvim.builtin.breadcrumbs = {
  17. active = true,
  18. on_config_done = nil,
  19. options = {
  20. icons = {
  21. kinds = {
  22. symbols = {
  23. Array = icons.Array .. " ",
  24. Boolean = icons.Boolean .. " ",
  25. Class = icons.Class .. " ",
  26. Color = icons.Color .. " ",
  27. Constant = icons.Constant .. " ",
  28. Constructor = icons.Constructor .. " ",
  29. Enum = icons.Enum .. " ",
  30. EnumMember = icons.EnumMember .. " ",
  31. Event = icons.Event .. " ",
  32. Field = icons.Field .. " ",
  33. File = icons.File .. " ",
  34. Folder = icons.Folder .. " ",
  35. Function = icons.Function .. " ",
  36. Interface = icons.Interface .. " ",
  37. Key = icons.Key .. " ",
  38. Keyword = icons.Keyword .. " ",
  39. Method = icons.Method .. " ",
  40. Module = icons.Module .. " ",
  41. Namespace = icons.Namespace .. " ",
  42. Null = icons.Null .. " ",
  43. Number = icons.Number .. " ",
  44. Object = icons.Object .. " ",
  45. Operator = icons.Operator .. " ",
  46. Package = icons.Package .. " ",
  47. Property = icons.Property .. " ",
  48. Reference = icons.Reference .. " ",
  49. Snippet = icons.Snippet .. " ",
  50. String = icons.String .. " ",
  51. Struct = icons.Struct .. " ",
  52. Text = icons.Text .. " ",
  53. TypeParameter = icons.TypeParameter .. " ",
  54. Unit = icons.Unit .. " ",
  55. Value = icons.Value .. " ",
  56. Variable = icons.Variable .. " ",
  57. },
  58. },
  59. ui = {
  60. bar = {
  61. separator = " " .. lvim.icons.ui.ChevronRight .. " ",
  62. extends = "…",
  63. },
  64. -- menu = {
  65. -- separator = " ",
  66. -- indicator = lvim.icons.ui.TriangleShortArrowRight,
  67. -- -- indicator = " ",
  68. -- },
  69. },
  70. },
  71. menu = {
  72. quick_navigation = true,
  73. keymaps = {
  74. ["<ESC>"] = close_menu,
  75. ["q"] = close_all_menus,
  76. },
  77. win_configs = {
  78. border = "rounded",
  79. },
  80. },
  81. },
  82. }
  83. end
  84. M.setup = function()
  85. local status_ok, dropbar = pcall(require, "dropbar")
  86. if not status_ok then
  87. return
  88. end
  89. dropbar.setup(lvim.builtin.breadcrumbs.options)
  90. if lvim.builtin.breadcrumbs.on_config_done then
  91. lvim.builtin.breadcrumbs.on_config_done()
  92. end
  93. end
  94. return M