1

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

我试图添加一个钩子,magit-diff-mode-hook但根本无法让它工作。

我应该使用哪个钩子(如果有的话),我该怎么做才能使该窗口处于活动状态?

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

4

2 回答 2

2

magit-diff-mode-hook不是很有帮助,因为它的功能在差异缓冲区刚刚构建并且仍然处于活动状态时运行。仅display-buffer调用差异缓冲区。因此,焦点又回到了调用者身上。但是,差异缓冲区是窗口堆栈上的下一个缓冲区。因此,以下应该有效(请比我更彻底地测试它):

(defadvice magit-diff (after switch-to-diff activate)
  (other-window 1))
于 2013-11-25T07:34:48.693 回答
1

Magit 实际上可以满足您的要求。当我使用dD差异显示在另一个窗口中并且该窗口获得焦点时。我不确定它是否总是那样做,我可能会magit-diff-*在某个时候改变行为,而不是在我触摸它之前所做的任何事情。

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

于 2013-12-31T20:17:27.657 回答