find window instead of saving it

This commit is contained in:
kiyan42
2020-07-23 11:36:58 +02:00
parent 8f49843a3e
commit 371941b3b2

View File

@@ -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()