Ne jamais créer de cadre dans ediff

14

En général, je n'aime pas les cadres. En ce moment, j'utilise

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

Pour s'assurer que ediffcela ne crée pas de cadre au démarrage.

Cependant, certaines commandes, comme ediff-show-registrytoujours ouvrir de nouveaux cadres.

Existe-t-il un moyen de désactiver complètement la création de cadres dans ediff?

PythonNut
la source
Que diriez - vous de modifier ediff-skip-unsuitable-framesou de commentaires que entièrement à l' intérieur ediff-show-registry- par exemple, en commentaire: (ediff-skip-unsuitable-frames 'ok-unsplittable)?
lawlist
5
Pendant que vous y êtes, pensez à rechercher la source de la edifffamille de bibliothèques (make-frameet vous trouverez quelques endroits qui doivent être corrigés en fonction de vos préférences. Votre demande est certainement raisonnable et mériterait (à mon avis) une demande de fonctionnalité à l'auteur et / ou à l'équipe d'Emacs - la plupart des gens supposeront que cela ediff-setup-windows-plaindevrait s'appliquer à tous les niveaux sans les différentes make-frameexceptions.
lawlist

Réponses:

3

Il existe un prédicat interne ediff-init.el, appelé ediff-window-display-p. Quand je l'ai redéfini (après avoir chargé ediff, bien sûr) comme ça, tout fonctionne dans une seule image, y compris la fonction que vous avez mentionnée comme problème:

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

Je suis d'accord avec @lawlist qu'il s'agit d'une belle demande de fonctionnalité - à corriger ediff-window-setup-function.

cyberbisson
la source
2
Cela pourrait être mieux écrit (advice-add 'ediff-window-display-p :override #'ignore), qui peut plus facilement être inversé avec advice-remove(en plus, il ne nécessite pas de charger ediff en premier).
npostavs
@npostavs super! Merci pour le code plus intelligent!
cyberbisson
J'ai essayé, mais malheureusement, ediff a cessé d'utiliser ma fonction de configuration de fenêtre personnalisée.
tboyce12
@ tboyce12 C'est déroutant ... pourquoi avez-vous une fonction de configuration de fenêtre personnalisée si vous ne voulez pas que de nouvelles fenêtres (cad cadres) s'affichent? Que fait la fonction?
cyberbisson
Je veux de nouvelles fenêtres, mais pas de nouveaux cadres. La valeur par défaut ediff-setup-windows-plainreprend tout le cadre - je veux garder mes fenêtres "contextuelles" ouvertes (par exemple les notes et autres fichiers). J'ai donc écrit une fonction de configuration de fenêtre personnalisée (utilise un tampon d'affichage personnalisé alimenté par ace-window pour choisir où peut-être diviser les fenêtres et afficher de nouveaux tampons). Il semble que lorsque Ediff démarre, il vérifie cela ediff-window-display-pet s'il est faux, contourne la fonction de configuration de fenêtre personnalisée et l'utilise ediff-setup-windows-plain. Donc, pour ma configuration personnalisée, je vais soit éviter ediff-show-registry, soit écrire une commande personnalisée.
tboyce12