Im Allgemeinen mag ich keine Frames. Im Moment benutze ich
(setq ediff-window-setup-function #'ediff-setup-windows-plain)
Damit wird sichergestellt, dass ediff
beim Start kein Frame erstellt wird.
Bestimmte Befehle, wie zB, ediff-show-registry
eröffnen jedoch noch neue Frames.
Kann ich die Erstellung von Frames in irgendeiner Weise vollständig deaktivieren ediff
?
ediff-skip-unsuitable-frames
, wenn Sie dies vollständig innerhalb vonediff-show-registry
- zB auskommentieren: - ändern oder auskommentieren(ediff-skip-unsuitable-frames 'ok-unsplittable)
?ediff
Wenn Sie schon dabei sind, sollten Sie die Quelle der Bibliotheksfamilie durchsuchen,(make-frame
um 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-plain
dass sie sich ohne die verschiedenenmake-frame
Ausnahmen pauschal bewerben sollten .Antworten:
Es gibt ein internes Prädikat in
ediff-init.el
, genanntediff-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:Ich bin mit @lawlist einverstanden, dass dies eine nette Feature-Anfrage ist - zu beheben
ediff-window-setup-function
.quelle
(advice-add 'ediff-window-display-p :override #'ignore)
, was einfacher rückgängig gemacht werden kannadvice-remove
(und es muss nicht zuerst ediff geladen werden).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üftediff-window-display-p
und, falls dies falsch ist, die benutzerdefinierte Fenster-Setup-Funktion umgeht und verwendetediff-setup-windows-plain
. Für mein benutzerdefiniertes Setup vermeide ich daher entwederediff-show-registry
benutzerdefinierte Befehle oder schreibe sie.