Gcommit 后是否可以自动关闭 Gstatus 窗口?
我找到了一些代码,但我不知道如何使它工作。
function! s:close_gstatus()
for l:winnr in range(1, winnr('$'))
if !empty(getwinvar(l:winnr, 'fugitive_status'))
execute l:winnr.'close'
endif
endfor
endfunction
Gcommit 后是否可以自动关闭 Gstatus 窗口?
我找到了一些代码,但我不知道如何使它工作。
function! s:close_gstatus()
for l:winnr in range(1, winnr('$'))
if !empty(getwinvar(l:winnr, 'fugitive_status'))
execute l:winnr.'close'
endif
endfor
endfunction
要根据某些事件自动调用您的代码,有一种称为autocommands
. 这样,您可以在某些特定事件触发时调用函数、命令或表达式。
下面的例子是在COMMIT_EDITMSG
缓冲区为deleted
.
" .vimrc
augroup my_fugitive_commit_hook
autocmd!
autocmd BufDelete COMMIT_EDITMSG call s:close_gstatus()
augroup END
所有事件列表都可以通过 找到:h autocommand-events
。
并不是说autocmd
上面的定义会在 COMMIT_EDITMSG 缓冲区随时关闭时关闭状态窗口,即使提交因空提交消息而失败也是如此。要改善这种行为,您需要检查 git commit 是否实际提交并以某种方式成功。我的 2 美分是检查 COMMIT_EDITMSG 缓冲区是否包含适当的提交消息行,并且实际上是使用BufWritePost
自动命令保存的。例如
autocmd BufWritePost COMMIT_EDITMSG call s:set_commit_buffer_status()