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 ediff
no crea un marco cuando se inicia.
Sin embargo, ciertos comandos, como ediff-show-registry
todavía abren nuevos marcos.
¿Hay alguna forma de deshabilitar completamente la creación de marcos ediff
?
ediff-skip-unsuitable-frames
o comentar eso completamente dentroediff-show-registry
, por ejemplo, comentar(ediff-skip-unsuitable-frames 'ok-unsplittable)
:?ediff
familia de bibliotecas(make-frame
y 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 queediff-setup-windows-plain
deben presentar una solicitud en todos los ámbitos sin las diversasmake-frame
excepciones.Respuestas:
Hay un predicado interno en
ediff-init.el
, llamadoediff-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:Estoy de acuerdo con @lawlist en que esta es una buena solicitud de función: solucionar
ediff-window-setup-function
.fuente
(advice-add 'ediff-window-display-p :override #'ignore)
, lo que se puede revertir más fácilmenteadvice-remove
(además, no requiere cargar primero el ediff).ediff-setup-windows-plain
hace 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 estoediff-window-display-p
y, si es falso, omite la función de configuración de la ventana personalizada y la usaediff-setup-windows-plain
. Entonces, para mi configuración personalizada, evitaréediff-show-registry
o escribiré un comando personalizado.