* feat(mappings): add key map to close file buffer * feat: implement Api.node.buffer.delete * feat: implement Api.node.buffer.wipe * refactor: add util fn for common delete ops on bufs * fix: minor fixes * refactor: fix lint issues * fix: undo unintended ApiTreeToggleOpts change * fix: change error message level to info * fix: remove unused opts * refactor: merge delete-buffer and wipe-buffer into single buffer file * refactor: make wipe and delete fns take a node instead of a file path * docs: update help with new API commands * remove refactored utils.lua * remove unused static setup * tweak doc --------- Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
parent
db7403243d
commit
fee1da8897
@ -2164,6 +2164,28 @@ node.run.cmd({node}) *nvim-tree-api.node.run.cmd()*
|
||||
node.run.system({node}) *nvim-tree-api.node.run.system()*
|
||||
Execute |nvim-tree.system_open|
|
||||
|
||||
node.buffer.delete({node}, {opts}) *nvim-tree-api.node.buffer.delete()*
|
||||
Deletes node's related buffer, if one exists.
|
||||
Executes |:bdelete| or |:bdelete|!
|
||||
|
||||
Parameters: ~
|
||||
• {node} (Node|nil) file or folder
|
||||
• {opts} (table) optional parameters
|
||||
|
||||
Options: ~
|
||||
• {force} (boolean) delete even if buffer is modified, default false
|
||||
|
||||
node.buffer.wipe({node}, {opts}) *nvim-tree-api.node.buffer.wipe()*
|
||||
Wipes node's related buffer, if one exists.
|
||||
Executes |:bwipe| or |:bwipe|!
|
||||
|
||||
Parameters: ~
|
||||
• {node} (Node|nil) file or folder
|
||||
• {opts} (table) optional parameters
|
||||
|
||||
Options: ~
|
||||
• {force} (boolean) wipe even if buffer is modified, default false
|
||||
|
||||
==============================================================================
|
||||
6.4 API GIT *nvim-tree-api.git*
|
||||
|
||||
@ -3178,6 +3200,8 @@ highlight group is not, hard linking as follows: >
|
||||
|nvim-tree-api.marks.navigate.prev()|
|
||||
|nvim-tree-api.marks.navigate.select()|
|
||||
|nvim-tree-api.marks.toggle()|
|
||||
|nvim-tree-api.node.buffer.delete()|
|
||||
|nvim-tree-api.node.buffer.wipe()|
|
||||
|nvim-tree-api.node.navigate.diagnostics.next()|
|
||||
|nvim-tree-api.node.navigate.diagnostics.next_recursive()|
|
||||
|nvim-tree-api.node.navigate.diagnostics.prev()|
|
||||
|
||||
58
lua/nvim-tree/actions/node/buffer.lua
Normal file
58
lua/nvim-tree/actions/node/buffer.lua
Normal file
@ -0,0 +1,58 @@
|
||||
-- Copyright 2019 Yazdani Kiyan under MIT License
|
||||
local notify = require("nvim-tree.notify")
|
||||
|
||||
local M = {}
|
||||
|
||||
---@param node Node
|
||||
---@param opts ApiNodeDeleteWipeBufferOpts|nil
|
||||
---@return nil
|
||||
function M.delete(node, opts)
|
||||
M.delete_buffer("delete", node.absolute_path, opts)
|
||||
end
|
||||
|
||||
---@param node Node
|
||||
---@param opts ApiNodeDeleteWipeBufferOpts|nil
|
||||
---@return nil
|
||||
function M.wipe(node, opts)
|
||||
M.delete_buffer("wipe", node.absolute_path, opts)
|
||||
end
|
||||
|
||||
---@alias ApiNodeDeleteWipeBufferMode '"delete"'|'"wipe"'
|
||||
|
||||
---@param mode ApiNodeDeleteWipeBufferMode
|
||||
---@param filename string
|
||||
---@param opts ApiNodeDeleteWipeBufferOpts|nil
|
||||
---@return nil
|
||||
function M.delete_buffer(mode, filename, opts)
|
||||
if type(mode) ~= "string" then
|
||||
mode = "delete"
|
||||
end
|
||||
|
||||
local buf_fn = vim.cmd.bdelete
|
||||
if mode == "wipe" then
|
||||
buf_fn = vim.cmd.bwipe
|
||||
end
|
||||
|
||||
opts = opts or { force = false }
|
||||
|
||||
local notify_node = notify.render_path(filename)
|
||||
|
||||
-- check if buffer for file at cursor exists and if it is loaded
|
||||
local bufnr_at_filename = vim.fn.bufnr(filename)
|
||||
if bufnr_at_filename == -1 or vim.fn.getbufinfo(bufnr_at_filename)[1].loaded == 0 then
|
||||
notify.info("No loaded buffer coincides with " .. notify_node)
|
||||
return
|
||||
end
|
||||
|
||||
local force = opts.force
|
||||
-- check if buffer is modified
|
||||
local buf_modified = vim.fn.getbufinfo(bufnr_at_filename)[1].changed
|
||||
if not force and buf_modified == 1 then
|
||||
notify.error("Buffer for file " .. notify_node .. " is modified")
|
||||
return
|
||||
end
|
||||
|
||||
buf_fn({ filename, bang = force })
|
||||
end
|
||||
|
||||
return M
|
||||
@ -4,6 +4,7 @@ M.file_popup = require("nvim-tree.actions.node.file-popup")
|
||||
M.open_file = require("nvim-tree.actions.node.open-file")
|
||||
M.run_command = require("nvim-tree.actions.node.run-command")
|
||||
M.system_open = require("nvim-tree.actions.node.system-open")
|
||||
M.buffer = require("nvim-tree.actions.node.buffer")
|
||||
|
||||
function M.setup(opts)
|
||||
require("nvim-tree.actions.node.system-open").setup(opts)
|
||||
|
||||
@ -24,6 +24,7 @@ local Api = {
|
||||
},
|
||||
run = {},
|
||||
open = {},
|
||||
buffer = {},
|
||||
},
|
||||
events = {},
|
||||
marks = {
|
||||
@ -286,6 +287,16 @@ Api.node.navigate.diagnostics.prev_recursive = wrap_node(actions.moves.item.fn({
|
||||
Api.node.navigate.opened.next = wrap_node(actions.moves.item.fn({ where = "next", what = "opened" }))
|
||||
Api.node.navigate.opened.prev = wrap_node(actions.moves.item.fn({ where = "prev", what = "opened" }))
|
||||
|
||||
---@class ApiNodeDeleteWipeBufferOpts
|
||||
---@field force boolean|nil default false
|
||||
|
||||
Api.node.buffer.delete = wrap_node(function(node, opts)
|
||||
actions.node.buffer.delete(node, opts)
|
||||
end)
|
||||
Api.node.buffer.wipe = wrap_node(function(node, opts)
|
||||
actions.node.buffer.wipe(node, opts)
|
||||
end)
|
||||
|
||||
Api.git.reload = wrap_explorer("reload_git")
|
||||
|
||||
Api.events.subscribe = events.subscribe
|
||||
|
||||
Loading…
Reference in New Issue
Block a user