Erstellen Sie niemals einen Rahmen in ediff

14

Im Allgemeinen mag ich keine Frames. Im Moment benutze ich

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

Damit wird sichergestellt, dass ediffbeim Start kein Frame erstellt wird.

Bestimmte Befehle, wie zB, ediff-show-registryeröffnen jedoch noch neue Frames.

Kann ich die Erstellung von Frames in irgendeiner Weise vollständig deaktivieren ediff?

PythonNut
quelle
Wie wäre es ediff-skip-unsuitable-frames, wenn Sie dies vollständig innerhalb von ediff-show-registry- zB auskommentieren: - ändern oder auskommentieren (ediff-skip-unsuitable-frames 'ok-unsplittable)?
Gesetzesliste
5
ediffWenn Sie schon dabei sind, sollten Sie die Quelle der Bibliotheksfamilie durchsuchen, (make-frameum einige Stellen zu finden, die nach Ihren Wünschen repariert werden müssen. Ihre Anfrage ist auf jeden Fall vernünftig und verdient (meiner Meinung nach) eine Feature-Anfrage an den Autor und / oder das Emacs-Team - die meisten Leute gehen davon aus, ediff-setup-windows-plaindass sie sich ohne die verschiedenen make-frameAusnahmen pauschal bewerben sollten .
Gesetzesliste

Antworten:

3

Es gibt ein internes Prädikat in ediff-init.el, genannt ediff-window-display-p. Wenn ich es neu definiere (natürlich nach dem Laden von ediff), funktioniert alles in einem einzigen Frame, einschließlich der Funktion, die Sie als Problem erwähnt haben:

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

Ich bin mit @lawlist einverstanden, dass dies eine nette Feature-Anfrage ist - zu beheben ediff-window-setup-function.

Cyberbisson
quelle
2
Dies könnte besser geschrieben sein (advice-add 'ediff-window-display-p :override #'ignore), was einfacher rückgängig gemacht werden kann advice-remove(und es muss nicht zuerst ediff geladen werden).
Npostavs
@npostavs großartig! Danke für den schlaueren Code!
Cyberbisson
Ich habe es versucht, aber es hat leider dazu geführt, dass ediff meine benutzerdefinierte Fenster-Setup-Funktion nicht mehr verwendet.
tboyce12
@ tboyce12 Das ist verwirrend ... warum hast du eine benutzerdefinierte Fenstereinstellungsfunktion, wenn du nicht möchtest, dass neue Fenster (dh Rahmen) angezeigt werden? Was macht die Funktion?
Cyberbisson
Ich möchte neue Fenster, aber keine neuen Frames. Die Standardeinstellung ediff-setup-windows-plainübernimmt den gesamten Frame - ich möchte meine "Kontext" -Fenster geöffnet lassen (z. B. Notizen und andere Dateien). Also habe ich eine benutzerdefinierte Fenster-Setup-Funktion geschrieben (verwendet einen benutzerdefinierten Anzeigepuffer, der von ace-window angetrieben wird, um auszuwählen, wo Fenster aufgeteilt und neue Puffer angezeigt werden sollen). Es scheint, dass Ediff beim Hochfahren dies überprüft ediff-window-display-pund, falls dies falsch ist, die benutzerdefinierte Fenster-Setup-Funktion umgeht und verwendet ediff-setup-windows-plain. Für mein benutzerdefiniertes Setup vermeide ich daher entweder ediff-show-registrybenutzerdefinierte Befehle oder schreibe sie.
Tboyce12