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[]
function HarpoonList:encode()
local out = {}
for _, v in ipairs(self.items) do
table.insert(out, self.config.encode(v))
for k, v in pairs(self.items) do
out[k] = self.config.encode(v)
end
return out
@ -357,9 +357,8 @@ end
--- @param items string[]
function HarpoonList.decode(list_config, name, items)
local list_items = {}
for _, item in ipairs(items) do
table.insert(list_items, list_config.decode(item))
for k, item in pairs(items) do
list_items[k] = item ~= vim.NIL and list_config.decode(item) or nil
end
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 = 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()
eq(displayed, {
"foo---bar",
"",
"baz---qux",
})
end)