从魔术状态自动切换到magit diff窗口

时间:2013-11-24 21:58:19

标签: emacs buffer elisp diff magit

我正在尝试为 magit 添加一个钩子,这样当一个*magit-diff *缓冲区(使用magit-diff-mode主模式)在Emacs窗口内打开时,我的光标移动(从magit-status窗口)到那个窗口。

我尝试向magit-diff-mode-hook添加一个钩子,但根本无法使其工作。

我应该使用哪个钩子(如果有的话)以及如何使该窗口处于活动状态?

P.S:如果有两个差异窗口(比如因为另一个项目中的另一个magit-diff会打开),我想去那个刚打开的窗口。

2 个答案:

答案 0 :(得分:2)

magit-diff-mode-hook不是很有用,因为它的函数是在刚构造的diff-buffer并且仍处于活动状态时运行的。只为扩散缓冲区调用display-buffer。因此,焦点可以追溯到调用者。但是,diff-buffer是窗口堆栈中的下一个。因此,以下内容应该有效(请比我更彻底地测试它):

(defadvice magit-diff (after switch-to-diff activate)
  (other-window 1))

答案 1 :(得分:1)

Magit实际上就是你所要求的。当我使用dD时,差异会显示在另一个窗口中,并且该窗口会获得焦点。我不确定它是否总能这样做,我可能已经改变magit-diff-*在某个时刻表现出来,而不是在我碰到它之前做的任何事情。

如果这与您的经验(与开发版本)不符,请打开一个问题。