2010-06-16 14 views
24

Ho iniziato a scrivere su un monitor da 30 pollici e mi chiedo se è possibile spostare il minibuffer nella parte superiore dello schermo in emacs? le ricerche su google non mostrano nulla.è possibile spostare il minibuffer emacs nella parte superiore dello schermo?

Acclamazioni Nimài Etheridge

+4

Interessante. Non sono sicuro se lo userei (il minibuffer è stato in fondo a Windows per me da più di 20 anni ...), ma pensiero molto interessante. – dmckee

risposta

8

Dai un'occhiata alla documentazione per default-minibuffer-frame e initial-frame-alist vars. Sembra che tu possa essere in grado di avere una cornice separata per il tuo minibuffer (che potresti posizionare nella parte superiore dello schermo), e quindi generare fotogrammi senza minibuffer che la utilizzano.

Si noti che in initial-frame-alist afferma che "Se le chiamate di valore per una cornice senza un minibuffer, e non hanno creato una cornice minibuffer da soli, una cornice minibuffer viene creato secondo minibuffer-frame-alist", che suona come esattamente ciò che sarebbe necessario.

Ci sono modi per salvare e ripristinare le configurazioni dei frame, quindi se questo ha funzionato è possibile ricreare automaticamente il layout quando viene avviato emacs.

Modifica:
Esempio di base/proof-of-concept di seguito per l'utilizzo di questa disposizione di frame. La cornice del minibuffer non può essere cancellata fino a quando i fotogrammi che la utilizzano non sono stati eliminati. Ti troverai nei guai quando fai cose come massimizzare la cornice dell'editor, ovviamente, quindi ci sarà sicuramente del lavoro da fare per cercare di far funzionare questo sistema in modo più fluido.

(setq default-minibuffer-frame 
     (make-frame 
     '((name . "minibuffer") 
     (width . 80) 
     (height . 1) 
     (minibuffer . only) 
     (top . 0) 
     (left . 0) 
     ))) 
(setq new-frame 
     (make-frame 
     '((name . "editor") 
     (width . 80) 
     (height . 30) 
     (minibuffer . nil) 
     (top . 50) 
     (left . 0) 
     ))) 

Naturalmente, è anche possibile combinare questo con il metodo di scottfrazer di spostare il modeline verso l'alto.

Questo potrebbe essere gestito nello window-setup-hook?

Si dovrebbe anche guardare le librerie built-in frame.el e dframe.el. Funzioni come dframe-reposition-frame possono fornire un modo conveniente per mantenere la cornice del minibuffer "collegata" alla parte superiore del fotogramma di modifica attivo.

La variabile minibuffer-auto-raise può anche essere configurata per aumentare la cornice del minibuffer ogni volta che il minibuffer viene attivato, il che può ridurre la necessità di renderlo visibile per il resto del tempo.

+0

acclamazioni amico, ci guarderò stasera e ti faccio sapere se trovo qualcosa di utile – nimms

7

Sono abbastanza sicuro che non è possibile spostare il minibuffer in sé, ma è possibile ordinare-di-ish rendere la linea modalità di essere in cima:

(setq-default header-line-format mode-line-format) ; Copy mode-line 
(setq-default mode-line-format nil) ; Remove mode-line 

Questo sovrascriverà cose come Info che usano la riga di intestazione, ma probabilmente è il più vicino possibile senza l'hacking C source.

2

Utilizzare un telaio di minibuffer autonomo. Questo dimostra come:

http://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame

http://www.emacswiki.org/emacs/oneonone.el

O un'occhiata a quel codice per avere un'idea o semplicemente utilizzarlo direttamente. È necessario personalizzare solo le impostazioni della posizione del telaio minibuffer:

  • 1on1-minibuffer-frame-left - Posizione del bordo sinistro del telaio minibuffer, in pixel.

  • 1on1-minibuffer-frame-top/bottom - Posizione della parte superiore (o inferiore) del telaio del minibuffer, in pixel.

Problemi correlati