feat(api): api.tree.open/toggle: add current_window option (#1935)
* feat(api): api.tree.open: add current_window option * feat(api): api.tree.toggle: add current_window option * feat(api): api.tree.toggle: add current_window option * doc: api.tree.* * doc: api.tree.*
This commit is contained in:
committed by
GitHub
parent
16f2806d59
commit
f1c2d6d372
@@ -16,14 +16,33 @@ local function inject_node(f)
|
||||
end
|
||||
end
|
||||
|
||||
---@class ApiTreeOpenOpts
|
||||
---@field path string|nil path
|
||||
---@field current_window boolean|nil
|
||||
|
||||
Api.tree.open = require("nvim-tree").open
|
||||
|
||||
---@class ApiTreeToggleOpts
|
||||
---@field path string|nil
|
||||
---@field current_window boolean|nil
|
||||
---@field focus boolean|nil
|
||||
---@field find_file boolean|nil
|
||||
---@field update_root boolean|nil
|
||||
|
||||
Api.tree.toggle = require("nvim-tree").toggle
|
||||
|
||||
Api.tree.close = require("nvim-tree.view").close
|
||||
|
||||
Api.tree.close_in_this_tab = require("nvim-tree.view").close_this_tab_only
|
||||
|
||||
Api.tree.close_in_all_tabs = require("nvim-tree.view").close_all_tabs
|
||||
|
||||
Api.tree.focus = require("nvim-tree").focus
|
||||
|
||||
Api.tree.reload = require("nvim-tree.actions.reloaders.reloaders").reload_explorer
|
||||
|
||||
Api.tree.change_root = require("nvim-tree").change_dir
|
||||
|
||||
Api.tree.change_root_to_node = inject_node(function(node)
|
||||
if node.name == ".." then
|
||||
require("nvim-tree.actions.root.change-dir").fn ".."
|
||||
@@ -31,18 +50,31 @@ Api.tree.change_root_to_node = inject_node(function(node)
|
||||
require("nvim-tree.actions.root.change-dir").fn(require("nvim-tree.lib").get_last_group_node(node).absolute_path)
|
||||
end
|
||||
end)
|
||||
|
||||
Api.tree.change_root_to_parent = inject_node(require("nvim-tree.actions.root.dir-up").fn)
|
||||
|
||||
Api.tree.get_node_under_cursor = require("nvim-tree.lib").get_node_at_cursor
|
||||
|
||||
Api.tree.get_nodes = require("nvim-tree.lib").get_nodes
|
||||
|
||||
Api.tree.find_file = require("nvim-tree.actions.finders.find-file").fn
|
||||
|
||||
Api.tree.search_node = require("nvim-tree.actions.finders.search-node").fn
|
||||
|
||||
Api.tree.collapse_all = require("nvim-tree.actions.tree-modifiers.collapse-all").fn
|
||||
|
||||
Api.tree.expand_all = inject_node(require("nvim-tree.actions.tree-modifiers.expand-all").fn)
|
||||
|
||||
Api.tree.toggle_gitignore_filter = require("nvim-tree.actions.tree-modifiers.toggles").git_ignored
|
||||
|
||||
Api.tree.toggle_git_clean_filter = require("nvim-tree.actions.tree-modifiers.toggles").git_clean
|
||||
|
||||
Api.tree.toggle_no_buffer_filter = require("nvim-tree.actions.tree-modifiers.toggles").no_buffer
|
||||
|
||||
Api.tree.toggle_custom_filter = require("nvim-tree.actions.tree-modifiers.toggles").custom
|
||||
|
||||
Api.tree.toggle_hidden_filter = require("nvim-tree.actions.tree-modifiers.toggles").dotfiles
|
||||
|
||||
Api.tree.toggle_help = require("nvim-tree.actions.tree-modifiers.toggles").help
|
||||
|
||||
Api.fs.create = inject_node(require("nvim-tree.actions.fs.create-file").fn)
|
||||
|
||||
@@ -150,15 +150,22 @@ function M.prompt(prompt_input, prompt_select, items_short, items_long, callback
|
||||
end
|
||||
end
|
||||
|
||||
function M.open(cwd)
|
||||
---Open the tree, initialising as needed. Maybe hijack the current buffer.
|
||||
---@param opts ApiTreeOpenOpts|string|nil legacy case opts is path string
|
||||
function M.open(opts)
|
||||
opts = opts or {}
|
||||
|
||||
M.set_target_win()
|
||||
if not core.get_explorer() or cwd then
|
||||
core.init(cwd or vim.loop.cwd())
|
||||
if not core.get_explorer() or opts.path then
|
||||
core.init(opts.path or vim.loop.cwd())
|
||||
end
|
||||
if should_hijack_current_buf() then
|
||||
view.close_this_tab_only()
|
||||
view.open_in_current_win()
|
||||
renderer.draw()
|
||||
elseif opts.current_window then
|
||||
view.open_in_current_win { hijack_current_buf = false, resize = false }
|
||||
renderer.draw()
|
||||
else
|
||||
open_view_and_draw()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user