Merge pull request #628 from PedroBinotto/harpoon2

[BUGFIX] Calling `remove_at` to manipulate elements when using Telescope UI causes items list to become malformed
This commit is contained in:
ThePrimeagen 2025-02-09 17:17:03 -10:00 committed by GitHub
commit 7f5bb6f187
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 6 deletions

View File

@ -344,8 +344,8 @@ end
--- @return string[] --- @return string[]
function HarpoonList:encode() function HarpoonList:encode()
local out = {} local out = {}
for _, v in ipairs(self.items) do for k, v in pairs(self.items) do
table.insert(out, self.config.encode(v)) out[k] = self.config.encode(v)
end end
return out return out
@ -357,9 +357,8 @@ end
--- @param items string[] --- @param items string[]
function HarpoonList.decode(list_config, name, items) function HarpoonList.decode(list_config, name, items)
local list_items = {} local list_items = {}
for k, item in pairs(items) do
for _, item in ipairs(items) do list_items[k] = item ~= vim.NIL and list_config.decode(item) or nil
table.insert(list_items, list_config.decode(item))
end end
return HarpoonList:new(list_config, name, list_items) return HarpoonList:new(list_config, name, list_items)

View File

@ -22,11 +22,16 @@ describe("list", function()
}) })
local list_config = Config.get_config(config, "foo") local list_config = Config.get_config(config, "foo")
local list = List.decode(list_config, "foo", { "foo:bar", "baz:qux" }) local list = List.decode(list_config, "foo", {
"foo:bar",
nil,
[3] = "baz:qux",
})
local displayed = list:display() local displayed = list:display()
eq(displayed, { eq(displayed, {
"foo---bar", "foo---bar",
"",
"baz---qux", "baz---qux",
}) })
end) end)