Merge pull request #233 from rsynnest/master

Performance improvements
This commit is contained in:
ThePrimeagen 2022-11-23 06:38:27 -07:00 committed by GitHub
commit 21d0d1bfa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 14 deletions

View File

@ -142,7 +142,7 @@ end
local function read_config(local_config) local function read_config(local_config)
log.trace("_read_config():", local_config) log.trace("_read_config():", local_config)
return vim.fn.json_decode(Path:new(local_config):read()) return vim.json.decode(Path:new(local_config):read())
end end
-- 1. saved. Where do we save? -- 1. saved. Where do we save?

View File

@ -136,7 +136,7 @@ local function filter_filetype()
end end
end end
function M.get_index_of(item) function M.get_index_of(item, marks)
log.trace("get_index_of():", item) log.trace("get_index_of():", item)
if item == nil then if item == nil then
log.error( log.error(
@ -150,8 +150,11 @@ function M.get_index_of(item)
if type(item) == "string" then if type(item) == "string" then
local relative_item = utils.normalize_path(item) local relative_item = utils.normalize_path(item)
for idx = 1, M.get_length() do if marks == nil then
if M.get_marked_file_name(idx) == relative_item then marks = harpoon.get_mark_config().marks
end
for idx = 1, M.get_length(marks) do
if marks[idx] and marks[idx].filename == relative_item then
return idx return idx
end end
end end
@ -190,13 +193,13 @@ function M.status(bufnr)
return "" return ""
end end
function M.valid_index(idx) function M.valid_index(idx, marks)
log.trace("valid_index():", idx) log.trace("valid_index():", idx)
if idx == nil then if idx == nil then
return false return false
end end
local file_name = M.get_marked_file_name(idx) local file_name = M.get_marked_file_name(idx, marks)
return file_name ~= nil and file_name ~= "" return file_name ~= nil and file_name ~= ""
end end
@ -245,9 +248,10 @@ end
function M.store_offset() function M.store_offset()
log.trace("store_offset()") log.trace("store_offset()")
local ok, res = pcall(function() local ok, res = pcall(function()
local marks = harpoon.get_mark_config().marks
local buf_name = get_buf_name() local buf_name = get_buf_name()
local idx = M.get_index_of(buf_name) local idx = M.get_index_of(buf_name, marks)
if not M.valid_index(idx) then if not M.valid_index(idx, marks) then
return return
end end
@ -259,8 +263,8 @@ function M.store_offset()
cursor_pos[2] cursor_pos[2]
) )
) )
harpoon.get_mark_config().marks[idx].row = cursor_pos[1] marks[idx].row = cursor_pos[1]
harpoon.get_mark_config().marks[idx].col = cursor_pos[2] marks[idx].col = cursor_pos[2]
end) end)
if not ok then if not ok then
@ -300,15 +304,23 @@ function M.get_marked_file(idxOrName)
return harpoon.get_mark_config().marks[idxOrName] return harpoon.get_mark_config().marks[idxOrName]
end end
function M.get_marked_file_name(idx) function M.get_marked_file_name(idx, marks)
local mark = harpoon.get_mark_config().marks[idx] local mark
if marks ~= nil then
mark = marks[idx]
else
mark = harpoon.get_mark_config().marks[idx]
end
log.trace("get_marked_file_name():", mark and mark.filename) log.trace("get_marked_file_name():", mark and mark.filename)
return mark and mark.filename return mark and mark.filename
end end
function M.get_length() function M.get_length(marks)
if marks == nil then
marks = harpoon.get_mark_config().marks
end
log.trace("get_length()") log.trace("get_length()")
return table.maxn(harpoon.get_mark_config().marks) return table.maxn(marks)
end end
function M.set_current_at(idx) function M.set_current_at(idx)