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?


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.