1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 07:50:05 +08:00
SpaceVim/lua/spacevim/api/vim/window.lua
Eric Wong a3944d67fb fix(git): fix close_diff_win in diff.lua
winnr('$') includes floating windows in neovim
2024-03-02 21:28:27 +08:00

55 lines
1.1 KiB
Lua

local M = {}
function M.get_cursor(window_id)
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
function M.set_cursor(window_id, pos)
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
local w = vim.window(winindex)
w.line = pos[0]
w.col = pos[1]
end
function M.close(window_id)
end
-- 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)
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
return M