From e08020477a53aa3a6e5e193d77eba1e5e7a99dac Mon Sep 17 00:00:00 2001 From: mpaulson Date: Fri, 3 Nov 2023 19:43:44 -0600 Subject: [PATCH] partial: i don't know if the splits ackshually work --- lua/harpoon2/config.lua | 15 ++++++++++++--- lua/harpoon2/list.lua | 7 +++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lua/harpoon2/config.lua b/lua/harpoon2/config.lua index 6bd375e..8fc1659 100644 --- a/lua/harpoon2/config.lua +++ b/lua/harpoon2/config.lua @@ -8,7 +8,7 @@ local M = {} ---@field decode? (fun(obj: string): any) ---@field key? (fun(): string) ---@field display? (fun(list_item: HarpoonListItem): string) ----@field select? (fun(list_item: HarpoonListItem): nil) +---@field select? (fun(list_item: HarpoonListItem, options: any?): nil) ---@field equals? (fun(list_line_a: HarpoonListItem, list_line_b: HarpoonListItem): boolean) ---@field add? fun(item: any?): HarpoonListItem @@ -63,7 +63,7 @@ function M.get_default_config() end, ---@param file_item HarpoonListFileItem - select = function(file_item) + select = function(file_item, options) if file_item == nil then return end @@ -75,7 +75,16 @@ function M.get_default_config() bufnr = vim.fn.bufnr(file_item.value, true) end - vim.api.nvim_set_current_buf(bufnr) + if not options or not options.vsplit or not options.split then + vim.api.nvim_set_current_buf(bufnr) + elseif options.vsplit then + vim.cmd("vsplit") + vim.api.nvim_set_current_buf(bufnr) + elseif options.split then + vim.cmd("split") + vim.api.nvim_set_current_buf(bufnr) + end + if set_position then vim.api.nvim_win_set_cursor(0, { file_item.context.row or 1, diff --git a/lua/harpoon2/list.lua b/lua/harpoon2/list.lua index d7a2adc..c9eada4 100644 --- a/lua/harpoon2/list.lua +++ b/lua/harpoon2/list.lua @@ -96,6 +96,13 @@ function HarpoonList:resolve_displayed(displayed) self.items = new_list end +function HarpoonList:select(index, options) + local item = self.items[index] + if item then + self.config.select(item, options) + end +end + --- @return string[] function HarpoonList:display() local out = {}