2024-03-02 21:28:27 +08:00
|
|
|
local M = {}
|
2019-10-08 22:24:03 +08:00
|
|
|
|
2024-03-02 21:28:27 +08:00
|
|
|
function M.get_cursor(window_id)
|
2019-10-08 22:24:03 +08:00
|
|
|
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
|
|
|
local w = vim.window(winindex)
|
|
|
|
if w == nil then
|
|
|
|
vim.command("return [" .. table.concat({0, 0}, ", ") .. "]")
|
|
|
|
else
|
|
|
|
vim.command("return [" .. table.concat({w.line, w.col}, ", ") .. "]")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-03-02 21:28:27 +08:00
|
|
|
function M.set_cursor(window_id, pos)
|
2019-10-08 22:24:03 +08:00
|
|
|
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
|
|
|
local w = vim.window(winindex)
|
2019-10-12 00:10:29 +08:00
|
|
|
w.line = pos[0]
|
|
|
|
w.col = pos[1]
|
2019-10-08 22:24:03 +08:00
|
|
|
end
|
|
|
|
|
2024-03-02 21:28:27 +08:00
|
|
|
function M.close(window_id)
|
2019-10-08 22:24:03 +08:00
|
|
|
|
|
|
|
end
|
|
|
|
|
2024-03-02 21:28:27 +08:00
|
|
|
|
|
|
|
-- neovim winnr('$') includes floating windows
|
|
|
|
function M.is_last_win()
|
|
|
|
local win_list = vim.api.nvim_tabpage_list_wins(0)
|
|
|
|
local num = #win_list
|
|
|
|
for _, v in ipairs(win_list) do
|
|
|
|
if M.is_float(v) then
|
|
|
|
num = num - 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return num == 1
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
function M.is_float(winid)
|
2022-10-10 13:58:09 +08:00
|
|
|
if winid > 0 then
|
|
|
|
local ok, c = pcall(vim.api.nvim_win_get_config, winid)
|
|
|
|
if ok and c.col ~= nil then
|
|
|
|
return true
|
|
|
|
else
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
else
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-10-08 22:24:03 +08:00
|
|
|
|
2024-03-02 21:28:27 +08:00
|
|
|
return M
|
2019-10-08 22:24:03 +08:00
|
|
|
|
|
|
|
|