mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-04-14 15:19:12 +08:00
feat(git): check buf is valid before setline
This commit is contained in:
parent
23446bed8f
commit
166c277645
@ -7,6 +7,8 @@ local log = require('git.log')
|
||||
local status_bufnr = -1
|
||||
local lines = {}
|
||||
|
||||
local jobid = -1
|
||||
|
||||
local function close_status_window()
|
||||
if vim.fn.winnr('$') > 1 then
|
||||
vim.cmd('close')
|
||||
@ -35,6 +37,9 @@ local function openStatusBuffer()
|
||||
end
|
||||
|
||||
local function on_stdout(id, data)
|
||||
if id ~= jobid then
|
||||
return
|
||||
end
|
||||
for _, v in ipairs(data) do
|
||||
log.debug('git-status stdout:' .. v)
|
||||
table.insert(lines, v)
|
||||
@ -42,6 +47,9 @@ local function on_stdout(id, data)
|
||||
end
|
||||
|
||||
local function on_stderr(id, data)
|
||||
if id ~= jobid then
|
||||
return
|
||||
end
|
||||
for _, v in ipairs(data) do
|
||||
log.debug('git-status stderr:' .. v)
|
||||
table.insert(lines, v)
|
||||
@ -49,13 +57,18 @@ local function on_stderr(id, data)
|
||||
end
|
||||
|
||||
local function on_exit(id, code, single)
|
||||
if id ~= jobid then
|
||||
return
|
||||
end
|
||||
log.debug('git-status exit code:' .. code .. ' single:' .. single)
|
||||
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', true)
|
||||
vim.api.nvim_buf_set_lines(status_bufnr, 0, -1, false, lines)
|
||||
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', false)
|
||||
if vim.api.nvim_buf_is_valid(status_bufnr) then
|
||||
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', true)
|
||||
vim.api.nvim_buf_set_lines(status_bufnr, 0, -1, false, lines)
|
||||
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', false)
|
||||
end
|
||||
end
|
||||
|
||||
function M.run(...)
|
||||
function M.run(argv)
|
||||
if
|
||||
vim.api.nvim_buf_is_valid(status_bufnr)
|
||||
and vim.fn.index(vim.fn.tabpagebuflist(), status_bufnr) ~= -1
|
||||
@ -65,9 +78,15 @@ function M.run(...)
|
||||
else
|
||||
status_bufnr = openStatusBuffer()
|
||||
end
|
||||
local cmd = { 'git', 'status', '.' }
|
||||
local cmd = { 'git', 'status' }
|
||||
if #argv > 0 then
|
||||
for _, v in ipairs(argv) do
|
||||
table.insert(cmd, v)
|
||||
end
|
||||
end
|
||||
lines = {}
|
||||
job.start(cmd, {
|
||||
log.debug('git-status cmd:' .. vim.inspect(cmd))
|
||||
jobid = job.start(cmd, {
|
||||
on_stdout = on_stdout,
|
||||
on_stderr = on_stderr,
|
||||
on_exit = on_exit,
|
||||
|
Loading…
x
Reference in New Issue
Block a user