永远不要在ediff中创建框架


14

总的来说,我不喜欢框架。现在,我正在使用

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

确保ediff启动时不会创建框架。

但是,某些命令(例如,ediff-show-registry仍然)会打开新的框架。

有什么办法可以完全禁止在其中创建帧ediff


如何在ediff-skip-unsuitable-frames其中完全修改或注释掉ediff-show-registry-例如注释掉: (ediff-skip-unsuitable-frames 'ok-unsplittable)
法律名单

5
在使用它时,请考虑搜索ediff-family 的来源,(make-frame您会发现一些需要修复的位置以适合您的喜好。您的要求当然是合理的,并且(对我个人而言)值得向作者和/或Emacs团队提出功能要求-大多数人会认为ediff-setup-windows-plain应该在所有情况下都应适用make-frame
法律名单

Answers:


3

中有一个内部谓词ediff-init.el,称为ediff-window-display-p。当我这样重新定义它(当然,在加载ediff之后)时,所有内容都可以在一个框架中运行,包括您提到的问题功能:

(defun ediff-window-display-p () nil)

我同意@lawlist的观点,认为这是一个不错的功能要求-可以解决ediff-window-setup-function


2
编写起来可能更好(advice-add 'ediff-window-display-p :override #'ignore),可以更轻松地将其反转advice-remove(而且它不需要先加载ediff)。
npostavs

@npostavs太好了!感谢您提供的更聪明的代码!
cyberbisson

我尝试了此操作,但不幸的是,它导致ediff停止使用我的自定义窗口设置功能。
tboyce12

@ tboyce12令人困惑...如果您不希望显示新窗口(即框架),为什么要有自定义窗口设置功能?该功能做什么?
cyberbisson

我确实需要新的窗口,但不需要新的框架。默认值ediff-setup-windows-plain占据整个框架-我想保持“上下文”窗口(例如注释和其他文件)打开。因此,我编写了一个自定义窗口设置功能(使用由ace-window驱动的自定义显示缓冲区来选择在何处分割窗口并显示新缓冲区)。似乎Ediff启动时会检查它ediff-window-display-p,如果为false,则绕过自定义窗口设置功能并使用ediff-setup-windows-plain。因此,对于我的自定义设置,我将避免ediff-show-registry或编写自定义命令。
tboyce12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.