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?

ediff-skip-unsuitable-frameso comentar eso completamente dentroediff-show-registry, por ejemplo, comentar(ediff-skip-unsuitable-frames 'ok-unsplittable):?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 queediff-setup-windows-plaindeben presentar una solicitud en todos los ámbitos sin las diversasmake-frameexcepciones.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-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 estoediff-window-display-py, 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-registryo escribiré un comando personalizado.