Nunca cree marco en ediff

14

En general, no me gustan los marcos. En este momento, estoy usando

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

Para asegurarse de que ediffno crea un marco cuando se inicia.

Sin embargo, ciertos comandos, como ediff-show-registrytodavía abren nuevos marcos.

¿Hay alguna forma de deshabilitar completamente la creación de marcos ediff?

PythonNut
fuente
¿Qué hay de modificar ediff-skip-unsuitable-frameso comentar eso completamente dentro ediff-show-registry, por ejemplo, comentar (ediff-skip-unsuitable-frames 'ok-unsplittable):?
leyes del
55
Mientras lo hace, considere buscar en la fuente de la edifffamilia de bibliotecas (make-framey encontrará algunos lugares que deben arreglarse según sus preferencias. Su solicitud es ciertamente razonable y merecería (en mi opinión) una solicitud de función al autor y / o al equipo de Emacs; la mayoría de las personas asumirán que ediff-setup-windows-plaindeben presentar una solicitud en todos los ámbitos sin las diversas make-frameexcepciones.
leyes del

Respuestas:

3

Hay un predicado interno en ediff-init.el, llamado ediff-window-display-p. Cuando lo redefiní (después de cargar ediff, por supuesto), todo funciona en un solo marco, incluida la función que mencionó como un problema:

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

Estoy de acuerdo con @lawlist en que esta es una buena solicitud de función: solucionar ediff-window-setup-function.

cyberbisson
fuente
2
Esto podría estar mejor escrito (advice-add 'ediff-window-display-p :override #'ignore), lo que se puede revertir más fácilmente advice-remove(además, no requiere cargar primero el ediff).
npostavs
@npostavs genial! ¡Gracias por el código más inteligente!
cyberbisson
Intenté esto, pero desafortunadamente causó que ediff dejara de usar mi función de configuración de ventana personalizada.
tboyce12
@ tboyce12 Eso es confuso ... ¿por qué tiene una función de configuración de ventana personalizada si no desea que se muestren nuevas ventanas (es decir, marcos)? ¿Qué hace la función?
cyberbisson
Quiero nuevas ventanas, pero no nuevos marcos. El valor predeterminado se ediff-setup-windows-plainhace cargo de todo el marco: quiero mantener abiertas mis ventanas de "contexto" (por ejemplo, notas y otros archivos). Así que escribí una función de configuración de ventana personalizada (utiliza un búfer de visualización personalizado impulsado por ace-window para elegir dónde dividir las ventanas y mostrar nuevos búferes). Parece que cuando Ediff arranca, comprueba esto ediff-window-display-py, si es falso, omite la función de configuración de la ventana personalizada y la usa ediff-setup-windows-plain. Entonces, para mi configuración personalizada, evitaré ediff-show-registryo escribiré un comando personalizado.
tboyce12