fix(#2878): nowrapscan prevents move from root (#2880)

* fix(#2878): nowrapscan prevents move from root

* fix(#2878): nowrapscan prevents move from root
This commit is contained in:
Alexander Courtis
2024-08-25 12:21:17 +10:00
committed by GitHub
parent 210478677c
commit 42340952af
2 changed files with 21 additions and 9 deletions

View File

@@ -33,11 +33,15 @@ end
---@param what string type of status
---@param skip_gitignored boolean default false
local function move(where, what, skip_gitignored)
local node_cur = lib.get_node_at_cursor()
local first_node_line = core.get_nodes_starting_line()
local nodes_by_line = utils.get_nodes_by_line(core.get_explorer().nodes, first_node_line)
local iter_start, iter_end, iter_step, cur, first, nex
local cursor = lib.get_cursor_position()
if cursor and cursor[1] < first_node_line then
cur = cursor[1]
end
if where == "next" then
iter_start, iter_end, iter_step = first_node_line, #nodes_by_line, 1
elseif where == "prev" then
@@ -52,7 +56,7 @@ local function move(where, what, skip_gitignored)
first = line
end
if node == node_cur then
if cursor and line == cursor[1] then
cur = line
elseif valid and cur then
nex = line

View File

@@ -15,25 +15,33 @@ local M = {
target_winid = nil,
}
---@return Node|nil
function M.get_node_at_cursor()
---Cursor position as per vim.api.nvim_win_get_cursor
---@return integer[]|nil
function M.get_cursor_position()
if not core.get_explorer() then
return
end
local winnr = view.get_winnr()
if not winnr then
if not winnr or not vim.api.nvim_win_is_valid(winnr) then
return
end
local cursor = vim.api.nvim_win_get_cursor(winnr)
local line = cursor[1]
return vim.api.nvim_win_get_cursor(winnr)
end
if line == 1 and view.is_root_folder_visible(core.get_cwd()) then
---@return Node|nil
function M.get_node_at_cursor()
local cursor = M.get_cursor_position()
if not cursor then
return
end
if cursor[1] == 1 and view.is_root_folder_visible(core.get_cwd()) then
return { name = ".." }
end
return utils.get_nodes_by_line(core.get_explorer().nodes, core.get_nodes_starting_line())[line]
return utils.get_nodes_by_line(core.get_explorer().nodes, core.get_nodes_starting_line())[cursor[1]]
end
---Create a sanitized partial copy of a node, populating children recursively.