A volte desidero visualizzare le informazioni nello stile del buffer della Guida, quindi ho usato un codice come questo:
(with-help-window (help-buffer)
(princ "Type q to exit this help buffer.\n\n")
(princ result))
Funziona bene, ma la finestra di aiuto usa solo metà della mia cornice. Normalmente ho diviso il mio telaio in orizzontale, per dare due finestre alte. Il buffer della guida visualizzato utilizza una delle due finestre.
Preferirei utilizzare l'intero frame in alcuni casi, per visualizzare più informazioni e per ridurre il numero di volte in cui ho bisogno di scorrere le informazioni visualizzate. Il problema da risolvere è come utilizzare temporaneamente l'intero frame per la with-help-window
chiamata e ripristinare automaticamente le dimensioni dei buffer / finestre originali quando digito "q" nella finestra della guida.
Come posso raggiungere al meglio questo obiettivo? Penso di essere alla ricerca di qualcosa del genere:
(with-FULL-FRAME-help-window (help-buffer)
...)
Ho esaminato la modalità vincitore, i segnalibri, il salvataggio dei layout nei registri, i vari (e potenti, ma complessi) (display-buffer ...)
metodi. La maggior parte di essi sembra leggermente fuori bersaglio rispetto al mio intento desiderato perché tendono a correggere / ripristinare un layout dopo un'operazione di visualizzazione a pieno formato. E mi sembra che molti di loro mi richiedano di ripristinare manualmente il layout della mia finestra (cosa che preferirei non fare).
Mi chiedo se qualcuno abbia sentito parlare di un modo per risolvere questo semplicemente. Spero in qualcosa di semplice come questi possibili approcci, in cui posso scavalcare qualcosa con un frame let ...
(let ((help-window-width-display-option fullwidth))
(with-help-window (help-buffer)
...))
O questo tipo di approccio, che non so ancora come fare, e che sembra alquanto difficile / difficile per il mio attuale livello di abilità.
(let ((save original configuration somehow)
(delete-other-windows)
(with-help-window (help-buffer)
...)
;; somehow, when I type "q" in the help buffer
;; - catch that action in code after the buffer is killed
;; - and restore the original window configuration
)
Mi sembra che il problema chiave da risolvere sia come ripristinare automaticamente la configurazione della finestra originale quando digito "q" nel buffer temporaneo della modalità di aiuto. Grazie
display-buffer-pop-up-frame
, poiché è abbastanza vicino a quello che cerco. Ma ... il frame si apre in un altro posto (non il mio frame corrente), e devo inviarlo con cmd-w, non "q" in stile help. Il salvataggio / ripristino delle configurazioni della finestra non è il problema sottostante. Attualmente mi sto orientando verso la clonazione e la modifica della fonte di with-help-window per dargli un'opzione che posso lasciare legare, o concludere con un defmacro o qualcosa del genere. Sorrido a quanto schizzinosi siamo gli emacs che le persone vogliono esattamente ciò che vogliamo da Emacs.
help-return-method
, quit-window
il quit-restore
parametro window e probabilmente un codice personalizzato per impostare / usare tutte quelle cose per creare l'effetto desiderato.
display-buffer-pop-up-frame
: gnu.org/software/emacs/manual/html_node/elisp/… Un'altra idea sarebbe quella di rilasciare unmake-frame
po 'di tempo usandodisplay-buffer
una funzione personalizzata per indirizzare quel nuovo frame. Se siete interessati a localizzare e il targeting una cornice esistente, allora date un'occhiata a questo esempio: stackoverflow.com/questions/18346785/...