feat: select with nil

This commit is contained in:
Michael Paulson 2023-12-01 14:47:58 -07:00
parent 245875a29f
commit c131b4b61b
2 changed files with 8 additions and 8 deletions

View File

@ -12,21 +12,17 @@ M.DEFAULT_LIST = DEFAULT_LIST
---@alias HarpoonListFileOptions {split: boolean, vsplit: boolean}
---@class HarpoonPartialConfigItem
---@field select_with_nil? boolean defaults to false
---@field encode? (fun(list_item: HarpoonListItem): string)
---@field decode? (fun(obj: string): any)
---@field display? (fun(list_item: HarpoonListItem): string)
---@field select? (fun(list_item: HarpoonListItem, options: any?): 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(config: HarpoonPartialConfigItem, item: any?): HarpoonListItem
---@field BufLeave? fun(evt: any, list: HarpoonList): nil
---@field VimLeavePre? fun(evt: any, list: HarpoonList): nil
---@field get_root_dir? fun(): string
---@class HarpoonWindowSettings
---@field width number
---@field height number
---notehunthoeunthoeunthoeunthoeunthoeunth
---@class HarpoonSettings
---@field save_on_toggle boolean defaults to true
---@field key (fun(): string)
@ -62,6 +58,9 @@ function M.get_default_config()
},
default = {
--- select_with_nill allows for a list to call select even if the provided item is nil
select_with_nil = false,
---@param obj HarpoonListItem
---@return string
encode = function(obj)
@ -79,7 +78,8 @@ function M.get_default_config()
return list_item.value
end,
---@param list_item HarpoonListFileItem
--- the select function is called when a user selects an item from the corresponding list and can be nil if select_with_nil is true
---@param list_item? HarpoonListFileItem
---@param options HarpoonListFileOptions
select = function(list_item, options)
options = options or {}

View File

@ -155,7 +155,7 @@ end
function HarpoonList:select(index, options)
local item = self.items[index]
if item then
if item or self.config.select_with_nil then
Listeners.listeners:emit(
Listeners.event_names.SELECT,
{ list = self, item = item, idx = index }