Git在emacs中提交而不改变窗口布局?

时间:2011-08-05 22:24:14

标签: git emacs

我通常在emacs中工作,框架分为两个并排的窗口。通过git(C-x v v)提交更改会在另一个窗口中为更改注释打开一个缓冲区。问题是,当我完成注释并输入C-c C-c时,包含注释的窗口将与VC-log缓冲区一起被终止。然后我必须再次将帧拆分为两个窗口,找到已删除窗口中的缓冲区。

有没有办法让这个过程(C-x v v [提交消息] C-c C-c)搞乱我的窗口布局?我很高兴VC-log在另一个窗口中打开,然后在不改变窗口布局的情况下消失,或者VC-log暂时拆分其中一个窗口,只要恢复原始缓冲区/窗口布局当我完成提交。我可以为vc-next-action编写一个保存和恢复窗口配置的包装函数,但似乎应该有一种更简单的方法来执行此操作。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

快速查看vc选项是不可能的,但您可以使用vc-next-action恢复窗口C-x v v(绑定到save-window-excursion)建议

(defadvice vc-next-action (around keep-windows activate)
  (save-window-excursion
    ad-do-it))

还有winner-mode进行一般恢复。如果你使用git,你肯定应该看看magit。

答案 1 :(得分:1)

我遇到了同样的问题。这似乎有效。

(defadvice log-edit-done (around keep-windows activate)
  (save-window-excursion
    ad-do-it))

vc-log缓冲区中C-c C-c的帮助显示了这一点:

C-c C-c运行命令log-edit-done,这是一个交互式命令 在`log-edit.el'中编译了Lisp函数。