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

Git在emacs中提交而不更改窗口布局?,git,emacs,Git,Emacs,我通常在emacs中工作,框架分为两个并排的窗口。通过git(C-xv)提交更改会在另一个窗口中打开一个用于更改注释的缓冲区。问题是,当我完成注释并键入C-C-C时,包含注释的窗口与VC日志缓冲区一起被杀死。然后,我必须再次将帧拆分为两个窗口,并找到已删除窗口中的缓冲区 有什么方法可以防止这个过程(C-xv[commit message]C-C-C)弄乱我的窗口布局?我很高兴VC日志在另一个窗口中打开,然后消失,而不改变窗口布局,或者VC日志临时拆分其中一个窗口,只要我完成提交后恢复了原始的缓冲

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


有什么方法可以防止这个过程(
C-xv
[commit message]
C-C-C
)弄乱我的窗口布局?我很高兴VC日志在另一个窗口中打开,然后消失,而不改变窗口布局,或者VC日志临时拆分其中一个窗口,只要我完成提交后恢复了原始的缓冲区/窗口布局。我可以为
vc next action
编写一个包装函数来保存和恢复窗口配置,但似乎应该有一种更简单的方法来实现这一点。有什么想法吗?

快速浏览vc选项是不可能的,但是您可以建议
vc下一步操作(绑定到
C-x v
)使用
保存窗口偏移
,以恢复窗口

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

对于一般恢复,还有
赢家模式
。如果你使用git,你肯定应该看看magit。

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

(defadvice log-edit-done (around keep-windows activate)
  (save-window-excursion
    ad-do-it))
vc日志缓冲区中C-C-C的帮助显示:

C-C C-C运行命令log edit done,这是一个交互式
“log edit.el”中编译的Lisp函数。

这似乎并没有完全满足我的要求(VC日志缓冲区在视线之外创建,当我选择它并使用
C-C-C
完成时,同样的问题也会出现),但我认为它已经接近尾声了。我不知道关于诽谤的事,所以谢谢!我会玩一下,看看能不能让它做我想做的事。
赢家模式
真的很棒。上一个窗口配置只是一个
C-C
away(并重复以继续返回窗口配置历史记录)。在任何情况下,如果你的窗口发生了意外的变化,那么拥有这种能力是非常棒的,这意味着你可以做一些事情,比如暂时最大化一个窗口,然后简单地回到以前的状态。我只是瞥了一眼,但赢家模式看起来像是我真正需要的东西!我现在就要离开办公室了,但我今晚晚些时候再查。谢谢Michael和phils!好的,赢家模式是解决方案,不仅仅是为了这个,任何时候我想恢复我的窗口配置。谢谢你的提示。我试试看。幸运的是,这已在Emacs 24中修复。