有没有办法让Ediff不在外部窗口中打开它的导航界面?

时间:2009-11-05 13:57:13

标签: emacs

没有长时间使用Emacs(v23,windows)并且刚刚发现 M-x ediff 。太棒了。 虽然我不喜欢它在一个单独的框架/窗口中打开它的帮助/导航的事实,这意味着如果我失去对该窗口的焦点,单键快捷键不起作用。

例如,当我按来展开窗口时,它会在当前窗口的顶部移动,所以我必须拿起鼠标并将其移动到另一个屏幕。然后,如果我失去焦点到该窗口并按 p / n / j 或任何其他键来处理diff,它会将其插入我的文件。所以我必须撤消,抓住鼠标,聚焦到其他窗口,然后重复。

有没有办法配置这些选项以在分组中显示?

6 个答案:

答案 0 :(得分:29)

我不知道该怎么做,但通常很容易用Emacs学习。首先我询问了ediff自定义:

M-x customize-apropos
ediff

我看到有一种叫做 Ediff Window Setup Function 的东西,它取值多帧单帧其他功能即可。我的设置为多帧并将其更改为单帧,并将其保存以供将来的会话使用。和 Voila!正如他们所说的那样。

答案 1 :(得分:21)

简单地:

 (setq ediff-window-setup-function 'ediff-setup-windows-plain)

M-x describe-variable ediff-window-setup-function将启发你 进一步

作为参考,我的ediff定制非常简单:

(if (locate-library "ediff")
    (progn
      (autoload 'ediff-files "ediff")
      (autoload 'ediff-buffers "ediff")

       (eval-after-load "ediff" '(progn
              (message "doing ediff customisation")
              (setq diff-switches               "-u"
                ediff-custom-diff-options   "-U3"
                ediff-split-window-function 'split-window-horizontally
                ediff-window-setup-function 'ediff-setup-windows-plain)

              (add-hook 'ediff-startup-hook 'ediff-toggle-wide-display)
              (add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display)
              (add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display)))))

答案 2 :(得分:15)

Ediff用户手册中的 Window and Frame Configuration 章节

  

以下变量控制方式   窗口设置:

     

ediff-window-setup-function

     

多帧设置由ediff-setup-windows-multiframe完成   function,这是默认值   窗口显示。普通的设置,   所有窗户总是在那里   一帧,完成   ediff-setup-windows-plain,是   非窗口显示的默认值   (或在xterm窗口中)。事实上,   在Emacs下,你可以自由切换   通过执行这两个设置之间   命令ediff-toggle-multiframe   使用菜单栏的Minibuffer。

答案 3 :(得分:7)

(custom-set-variables    
  ...
 '(ediff-window-setup-function (quote ediff-setup-windows-plain))
  ...)

不是说你会以这种方式设置变量,但它可以让你知道这些事情:

  • 您感兴趣的变量是ediff-window-setup-function
  • 需要设置的值为ediff-setup-windows-plain
  • 您可以从自定义配置变量:M-x customize-group RET ediff-window

    Ediff Window设置功能:菜单单帧

答案 4 :(得分:4)

注意:您可以使用 M-x other-frame 来避免使用鼠标返回ediff控制窗口。也见于 C-x 5 o

答案 5 :(得分:0)

这不再适用于2017年gnu emacs(24.5,25.2,2017)的Windows

   (setq ediff-window-setup-function 'ediff-setup-windows-plain) ; stopped working

甚至

   ediff-toggle-multiframe ; no longer has any effect now.

它适用于windows上的emacs22.3,因此我使用了2008年以来的旧版emacs!