Non creare mai frame in ediff


14

In generale, non mi piacciono i frame. In questo momento, sto usando

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

Per assicurarsi che ediffnon crei un frame all'avvio.

Tuttavia, alcuni comandi, come ediff-show-registryancora aprono nuovi frame.

Esiste un modo per disabilitare completamente la creazione di frame in ediff?


Come sulla modifica ediff-skip-unsuitable-frames, o commentando che fuori interamente all'interno ediff-show-registry- ad esempio, commentare out: (ediff-skip-unsuitable-frames 'ok-unsplittable)?
elenco delle leggi

5
Mentre ci sei, considera di cercare la fonte della famiglia ediffdi librerie (make-framee troverai alcuni posti che devono essere riparati per adattarsi alle tue preferenze. La tua richiesta è certamente ragionevole e meriterebbe (a mio avviso) una richiesta di funzionalità per l'autore e / o il team di Emacs - la maggior parte delle persone supporrà che ediff-setup-windows-plaindovrebbe applicare su tutta la linea senza le varie make-frameeccezioni.
elenco delle leggi

Risposte:


3

C'è un predicato interno in ediff-init.el, chiamato ediff-window-display-p. Quando l'ho ridefinito (dopo aver caricato ediff, ovviamente) in questo modo, tutto funziona in un singolo frame, inclusa la funzione che hai citato come problema:

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

Sono d'accordo con @lawlist che questa è una bella richiesta di funzionalità - da risolvere ediff-window-setup-function.


2
Questo potrebbe essere meglio scritto (advice-add 'ediff-window-display-p :override #'ignore), che può essere più facilmente invertito con advice-remove(inoltre non richiede il caricamento di ediff prima).
npostavs

@npostavs great! Grazie per il codice più intelligente!
cyberbisson,

Ci ho provato, ma sfortunatamente ha fatto sì che ediff smettesse di usare la mia funzione di impostazione della finestra personalizzata.
tboyce12,

@ tboyce12 Questo è confuso ... perché hai una funzione di impostazione della finestra personalizzata se non vuoi che vengano mostrate nuove finestre (ad esempio i frame)? Cosa fa la funzione?
cyberbisson,

Voglio nuove finestre, ma non nuove cornici. L'impostazione predefinita ediff-setup-windows-plainoccupa l'intero frame: voglio mantenere aperte le finestre del mio "contesto" (ad es. Note e altri file). Così ho scritto una funzione di impostazione della finestra personalizzata (utilizza un buffer di visualizzazione personalizzato basato su ace-window per scegliere dove dividere le finestre e visualizzare nuovi buffer). Sembra che quando Ediff si avvia controlla questo ediff-window-display-pe, se falso, ignora la funzione di impostazione della finestra personalizzata e la utilizza ediff-setup-windows-plain. Quindi, per la mia configurazione personalizzata, eviterò ediff-show-registryo scriverò un comando personalizzato.
tboyce12,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.