mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 00:40:05 +08:00
fix(git): fix close_diff_win in diff.lua
winnr('$') includes floating windows in neovim
This commit is contained in:
parent
f56ae9c4db
commit
a3944d67fb
@ -3,6 +3,7 @@ local M = {}
|
|||||||
local job = require('spacevim.api.job')
|
local job = require('spacevim.api.job')
|
||||||
local nt = require('spacevim.api.notify')
|
local nt = require('spacevim.api.notify')
|
||||||
local log = require('git.log')
|
local log = require('git.log')
|
||||||
|
local win = require('spacevim.api.vim.window')
|
||||||
|
|
||||||
local diff_lines = {}
|
local diff_lines = {}
|
||||||
local jobid = -1
|
local jobid = -1
|
||||||
@ -30,10 +31,10 @@ local function on_stderr(id, data)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function close_diff_win()
|
local function close_diff_win()
|
||||||
if vim.fn.winnr('$') > 1 then
|
if win.is_last_win() then
|
||||||
vim.cmd('close')
|
|
||||||
else
|
|
||||||
vim.cmd('bd!')
|
vim.cmd('bd!')
|
||||||
|
else
|
||||||
|
vim.cmd('close')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -18,19 +18,8 @@ local function close_commit_win()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function 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 win.is_float(v) then
|
|
||||||
num = num - 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return num == 1
|
|
||||||
end
|
|
||||||
|
|
||||||
local function close_log_win()
|
local function close_log_win()
|
||||||
if vim.fn.tabpagenr('$') > 1 and is_last_win() then
|
if vim.fn.tabpagenr('$') > 1 and win.is_last_win() then
|
||||||
vim.cmd('quit')
|
vim.cmd('quit')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local window = {}
|
local M = {}
|
||||||
|
|
||||||
function window.get_cursor(window_id)
|
function M.get_cursor(window_id)
|
||||||
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
||||||
local w = vim.window(winindex)
|
local w = vim.window(winindex)
|
||||||
if w == nil then
|
if w == nil then
|
||||||
@ -10,18 +10,32 @@ function window.get_cursor(window_id)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function window.set_cursor(window_id, pos)
|
function M.set_cursor(window_id, pos)
|
||||||
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
||||||
local w = vim.window(winindex)
|
local w = vim.window(winindex)
|
||||||
w.line = pos[0]
|
w.line = pos[0]
|
||||||
w.col = pos[1]
|
w.col = pos[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
function window.close(window_id)
|
function M.close(window_id)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function window.is_float(winid)
|
|
||||||
|
-- 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
|
if winid > 0 then
|
||||||
local ok, c = pcall(vim.api.nvim_win_get_config, winid)
|
local ok, c = pcall(vim.api.nvim_win_get_config, winid)
|
||||||
if ok and c.col ~= nil then
|
if ok and c.col ~= nil then
|
||||||
@ -35,6 +49,6 @@ function window.is_float(winid)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
return window
|
return M
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user