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.