fix: don't close floating windows we didn't open (#64)
This commit is contained in:
parent
0b2a4ddde1
commit
073ecb3d68
2 changed files with 20 additions and 4 deletions
|
|
@ -254,6 +254,7 @@ M.open_float = function(dir)
|
||||||
border = config.float.border,
|
border = config.float.border,
|
||||||
zindex = 45,
|
zindex = 45,
|
||||||
})
|
})
|
||||||
|
vim.w[winid].is_oil_win = true
|
||||||
local winleave_autocmd
|
local winleave_autocmd
|
||||||
winleave_autocmd = vim.api.nvim_create_autocmd("WinLeave", {
|
winleave_autocmd = vim.api.nvim_create_autocmd("WinLeave", {
|
||||||
desc = "Close floating oil window",
|
desc = "Close floating oil window",
|
||||||
|
|
@ -292,8 +293,7 @@ end
|
||||||
|
|
||||||
---Restore the buffer that was present when oil was opened
|
---Restore the buffer that was present when oil was opened
|
||||||
M.close = function()
|
M.close = function()
|
||||||
local util = require("oil.util")
|
if vim.w.is_oil_win then
|
||||||
if util.is_floating_win(0) then
|
|
||||||
vim.api.nvim_win_close(0, true)
|
vim.api.nvim_win_close(0, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
@ -308,7 +308,7 @@ M.close = function()
|
||||||
end
|
end
|
||||||
|
|
||||||
---Select the entry under the cursor
|
---Select the entry under the cursor
|
||||||
---@param opts table
|
---@param opts nil|table
|
||||||
--- vertical boolean Open the buffer in a vertical split
|
--- vertical boolean Open the buffer in a vertical split
|
||||||
--- horizontal boolean Open the buffer in a horizontal split
|
--- horizontal boolean Open the buffer in a horizontal split
|
||||||
--- split "aboveleft"|"belowright"|"topleft"|"botright" Split modifier
|
--- split "aboveleft"|"belowright"|"topleft"|"botright" Split modifier
|
||||||
|
|
@ -397,7 +397,7 @@ M.select = function(opts)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if util.is_floating_win() then
|
if vim.w.is_oil_win then
|
||||||
vim.api.nvim_win_close(0, false)
|
vim.api.nvim_win_close(0, false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -31,4 +31,20 @@ a.describe("regression tests", function()
|
||||||
entry = oil.get_cursor_entry()
|
entry = oil.get_cursor_entry()
|
||||||
assert.equals("README.md", entry and entry.name)
|
assert.equals("README.md", entry and entry.name)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- https://github.com/stevearc/oil.nvim/issues/64
|
||||||
|
a.it("doesn't close floating windows oil didn't open itself", function()
|
||||||
|
local winid = vim.api.nvim_open_win(vim.fn.bufadd("README.md"), true, {
|
||||||
|
relative = "editor",
|
||||||
|
row = 1,
|
||||||
|
col = 1,
|
||||||
|
width = 100,
|
||||||
|
height = 100,
|
||||||
|
})
|
||||||
|
oil.open()
|
||||||
|
a.util.sleep(10)
|
||||||
|
oil.close()
|
||||||
|
a.util.sleep(10)
|
||||||
|
assert.equals(winid, vim.api.nvim_get_current_win())
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue