diff --git a/lua/lazyvim/plugins/extras/editor/dropbar.lua b/lua/lazyvim/plugins/extras/editor/dropbar.lua new file mode 100644 index 00000000..eded8966 --- /dev/null +++ b/lua/lazyvim/plugins/extras/editor/dropbar.lua @@ -0,0 +1,56 @@ +return { + { + "Bekaboo/dropbar.nvim", + event = "LazyFile", + dependencies = { + "nvim-telescope/telescope-fzf-native.nvim", + }, + keys = { + { + "D", + function() + require("dropbar.api").pick() + end, + desc = "Winbar pick", + }, + }, + opts = function() + local menu_utils = require("dropbar.utils.menu") + + -- Closes all the windows in the current dropbar. + local function close() + local menu = menu_utils.get_current() + while menu and menu.prev_menu do + menu = menu.prev_menu + end + if menu then + menu:close() + end + end + + return { + menu = { + preview = false, + keymaps = { + -- Navigate back to the parent menu. + ["h"] = "q", + -- Expands the entry if possible. + ["l"] = function() + local menu = menu_utils.get_current() + if not menu then + return + end + local row = vim.api.nvim_win_get_cursor(menu.win)[1] + local component = menu.entries[row]:first_clickable() + if component then + menu:click_on(component, nil, 1, "l") + end + end, + ["q"] = close, + [""] = close, + }, + }, + } + end, + }, +}