我正在尝试为 magit 添加一个钩子,这样当一个*magit-diff
*缓冲区(使用magit-diff-mode
主模式)在Emacs窗口内打开时,我的光标移动(从magit-status窗口)到那个窗口。
我尝试向magit-diff-mode-hook
添加一个钩子,但根本无法使其工作。
我应该使用哪个钩子(如果有的话)以及如何使该窗口处于活动状态?
P.S:如果有两个差异窗口(比如因为另一个项目中的另一个magit-diff会打开),我想去那个刚打开的窗口。
答案 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实际上就是你所要求的。当我使用d
或D
时,差异会显示在另一个窗口中,并且该窗口会获得焦点。我不确定它是否总能这样做,我可能已经改变magit-diff-*
在某个时刻表现出来,而不是在我碰到它之前做的任何事情。
如果这与您的经验(与开发版本)不符,请打开一个问题。