2010-06-11 8 views
8

Non sono nemmeno sicuro che si tratti di un comando precedente o di un comando non finito o altro, ma so che non mi piace davvero.Come posso impedire al mini-buffer di visualizzare comandi precedenti in Emacs?

Il mio problema è che alcuni comandi (o messaggi, o qualsiasi altra cosa) rimangono bloccati nel mini-buffer in modo tale che quando digito un nuovo comando appare molto velocemente, e quindi il mini-buffer ritorna al comando testardo . Alcuni comandi sembrano essere scelti, e dopo aver usato molti comandi qualcos'altro rimane bloccato lì, ma c'è sempre qualcosa che viene mostrato che non voglio vedere. Ho provato a digitare C-g un sacco di volte per vedere se sarebbe uscito, ma non funziona.

Questa è una foto di quello che ho adesso:

alt text

Non importa quello che faccio, quel po '

Etichetta: hl-line

non me ne andrò. Lascia momentaneamente quando viene digitato un nuovo comando, ma torna indietro. Non mi piace, è confusionario, e preferirei vedere l'ultimo comando usato.

Ho controllato le opzioni di personalizzazione per il mini-buffer (la parte inferiore di esso può essere vista nella mia foto), ma non ho trovato nulla che sembrava essere quello che stavo cercando.

Qualche idea?

+2

Sei in (due livelli di) modifica ricorsiva, come si può vedere dal [[..]] attorno alle parentesi che circondano i nomi della modalità. Puoi annullare la modifica ricorsiva usando 'C-]'. Vedi http://www.cs.cmu.edu/cgi-bin/info2www?(emacs)Recursive%20Edit per maggiori informazioni. –

risposta

10

Il mini-buffer ha perso la messa a fuoco. Prova C-x o (Control + x o) per riprendere la messa a fuoco. Per annullare il comando, premere C-g quando si ha lo stato attivo nel mini-buffer.

+0

Oh, quindi era come un comando incompiuto? Ho fatto il C-x o e ho dovuto finire tutto quel flusso di comandi (per inserire un ambiente in lattice, mettere etichetta, posizione, ecc.) In modo che la cosa scomparisse. Grazie per quello! – Vivi

14

È probabile che tu stia entrando nella situazione perché hai iniziato un comando e hai utilizzato il mouse per selezionare qualcosa in una finestra diversa. In tal caso, puoi fare in modo che Emacs annulli automaticamente il comando quando esegui un'azione del genere.

Questo è il codice che ci si aggiunge ai tuoi .emacs:

(defun stop-using-minibuffer() 
    "kill the minibuffer" 
    (when (and (>= (recursion-depth) 1) (active-minibuffer-window)) 
    (abort-recursive-edit))) 

(add-hook 'mouse-leave-buffer-hook 'stop-using-minibuffer) 

Nota: ho preso questo dal mio blog post on the topic.

E c'è anche una domanda per superutente che risolve questo problema e la mia risposta fornisce un comando a jump back to the minibuffer.

+0

Molto probabilmente l'ho fatto ... sto provando a non usare il mouse, quindi spero che questo comando sarà presto ridondante. Succede quando uso ** C-x b **? A proposito, preferisco il codice che hai inserito nella risposta a una domanda di superutente e linkato in un commento al tuo post sul blog :) (quello che fornisce un'associazione chiave per andare alla finestra del minibuffer attivo) – Vivi

+0

@Vivi Ahhh .. destra la risposta SU. Non sono così felice di come SO e SU abbiano diviso le domande di Emacs. Collegherò anche quello in questa risposta. –

+1

Ciò può accadere se si avvia un comando e si verifica una condizione di errore. Il trucco per mettere a fuoco il mini-buffer e poi Ctrl-G per interrompere lo risolverà. –

Problemi correlati