refactor(sidebar): avoid temporary table in Sidebar:update_content()
Under the hood vim.list_extend() does the same loop over the source table and uses table.insert() to append the values to the destination table, so using a temporary table makes little sense. Switch to directly inserting (appending) values into history_lines table.
This commit is contained in:
@@ -1579,18 +1579,11 @@ function Sidebar:update_content(content, opts)
|
|||||||
history_lines = vim.deepcopy(self._cached_history_lines)
|
history_lines = vim.deepcopy(self._cached_history_lines)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 批量处理内容行,减少表操作
|
|
||||||
if content ~= nil and content ~= "" then
|
if content ~= nil and content ~= "" then
|
||||||
local content_lines = vim.split(content, "\n")
|
table.insert(history_lines, Line:new({ { "" } }))
|
||||||
local new_lines = { Line:new({ { "" } }) }
|
for _, line in ipairs(vim.split(content, "\n")) do
|
||||||
|
table.insert(history_lines, Line:new({ { line } }))
|
||||||
-- 预分配表大小,提升性能
|
|
||||||
for i = 1, #content_lines do
|
|
||||||
new_lines[i + 1] = Line:new({ { content_lines[i] } })
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 一次性扩展,而不是逐个插入
|
|
||||||
vim.list_extend(history_lines, new_lines)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 使用 vim.schedule 而不是 vim.defer_fn(0),性能更好
|
-- 使用 vim.schedule 而不是 vim.defer_fn(0),性能更好
|
||||||
|
|||||||
Reference in New Issue
Block a user