find window instead of saving it
This commit is contained in:
@@ -19,7 +19,13 @@ M.Tree = {
|
|||||||
win_width = vim.g.lua_tree_width or 30,
|
win_width = vim.g.lua_tree_width or 30,
|
||||||
loaded = false,
|
loaded = false,
|
||||||
bufnr = nil,
|
bufnr = nil,
|
||||||
winnr = nil,
|
winnr = function()
|
||||||
|
for _, i in ipairs(api.nvim_list_wins()) do
|
||||||
|
if api.nvim_buf_get_name(api.nvim_win_get_buf(i)):match('.*/'..M.Tree.buf_name..'$') then
|
||||||
|
return i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
buf_options = {
|
buf_options = {
|
||||||
'noswapfile',
|
'noswapfile',
|
||||||
},
|
},
|
||||||
@@ -71,7 +77,7 @@ local function get_node_at_line(line)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.get_node_at_cursor()
|
function M.get_node_at_cursor()
|
||||||
local cursor = api.nvim_win_get_cursor(M.Tree.winnr)
|
local cursor = api.nvim_win_get_cursor(M.Tree.winnr())
|
||||||
local line = cursor[1]
|
local line = cursor[1]
|
||||||
if line == 1 and M.Tree.cwd ~= "/" then
|
if line == 1 and M.Tree.cwd ~= "/" then
|
||||||
return { name = ".." }
|
return { name = ".." }
|
||||||
@@ -169,7 +175,7 @@ function M.set_index_and_redraw(fname)
|
|||||||
end
|
end
|
||||||
renderer.draw(M.Tree, reload)
|
renderer.draw(M.Tree, reload)
|
||||||
if index then
|
if index then
|
||||||
api.nvim_win_set_cursor(M.Tree.winnr, {index, 0})
|
api.nvim_win_set_cursor(M.Tree.winnr(), {index, 0})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -246,23 +252,25 @@ local function create_win()
|
|||||||
api.nvim_command("wincmd "..window_opts.side)
|
api.nvim_command("wincmd "..window_opts.side)
|
||||||
api.nvim_command("vertical resize "..M.Tree.win_width)
|
api.nvim_command("vertical resize "..M.Tree.win_width)
|
||||||
|
|
||||||
M.Tree.winnr = api.nvim_get_current_win()
|
local winnr = api.nvim_get_current_win()
|
||||||
|
|
||||||
for opt, val in pairs(M.Tree.win_options) do
|
for opt, val in pairs(M.Tree.win_options) do
|
||||||
api.nvim_win_set_option(M.Tree.winnr, opt, val)
|
api.nvim_win_set_option(winnr, opt, val)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.close()
|
function M.close()
|
||||||
api.nvim_win_close(M.Tree.winnr, true)
|
if #api.nvim_list_wins() == 1 then
|
||||||
M.Tree.winnr = nil
|
return vim.cmd ':q!'
|
||||||
|
end
|
||||||
|
api.nvim_win_close(M.Tree.winnr(), true)
|
||||||
M.Tree.bufnr = nil
|
M.Tree.bufnr = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.open()
|
function M.open()
|
||||||
create_buf()
|
create_buf()
|
||||||
create_win()
|
create_win()
|
||||||
api.nvim_win_set_buf(M.Tree.winnr, M.Tree.bufnr)
|
api.nvim_win_set_buf(M.Tree.winnr(), M.Tree.bufnr)
|
||||||
|
|
||||||
for _, opt in pairs(M.Tree.buf_options) do
|
for _, opt in pairs(M.Tree.buf_options) do
|
||||||
api.nvim_command('setlocal '..opt)
|
api.nvim_command('setlocal '..opt)
|
||||||
@@ -276,12 +284,7 @@ function M.open()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.win_open()
|
function M.win_open()
|
||||||
for _, win in pairs(api.nvim_list_wins()) do
|
return M.Tree.winnr() ~= nil
|
||||||
if win == M.Tree.winnr then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.toggle_ignored()
|
function M.toggle_ignored()
|
||||||
|
|||||||
Reference in New Issue
Block a user