Skip to content

Commit 1b2a6f6

Browse files
committed
perf(plugin): de-duplicate dependencies, keys, ft, event and cmd
1 parent da4e8cc commit 1b2a6f6

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

lua/lazy/core/plugin.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ function Spec:merge(old, new)
287287
end
288288

289289
if new.dependencies and old.dependencies then
290-
vim.list_extend(new.dependencies, old.dependencies)
290+
Util.extend(new.dependencies, old.dependencies)
291291
end
292292

293293
new._.super = old
@@ -424,7 +424,7 @@ function M.values(plugin, prop, is_list)
424424
end
425425

426426
values = type(values) == "table" and values or { values }
427-
return is_list and vim.list_extend(ret, values) or Util.merge(ret, values)
427+
return is_list and Util.extend(ret, values) or Util.merge(ret, values)
428428
end
429429

430430
return M

lua/lazy/core/util.lua

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,23 @@ function M.lsmod(modname, fn)
222222
end)
223223
end
224224

225+
---@generic T
226+
---@param list T[]
227+
---@param add T[]
228+
---@return T[]
229+
function M.extend(list, add)
230+
local idx = {}
231+
for _, v in ipairs(list) do
232+
idx[v] = v
233+
end
234+
for _, a in ipairs(add) do
235+
if not idx[a] then
236+
table.insert(list, a)
237+
end
238+
end
239+
return list
240+
end
241+
225242
---@alias LazyNotifyOpts {lang?:string, title?:string, level?:number}
226243

227244
---@param msg string|string[]

0 commit comments

Comments
 (0)