2010-06-11 17 views
8

Ich bin nicht einmal sicher, ob das ein vorheriger Befehl oder ein nicht abgeschlossener Befehl oder was auch immer ist, aber ich weiß, dass ich es wirklich nicht mag.Wie kann ich verhindern, dass der Mini-Puffer frühere Befehle in Emacs anzeigt?

Mein Problem ist, dass einige Befehle (oder Nachrichten oder was auch immer) im Mini-Puffer stecken bleiben, so dass wenn ich einen neuen Befehl eintippe, es wirklich schnell erscheint, und dann der Mini-Puffer zurück zum störrischen Befehl ist . Einige Befehle scheinen gewählt zu sein, und nachdem ich viele Befehle benutzt habe, bleibt da noch etwas anderes hängen, aber es wird immer etwas gezeigt, das ich nicht sehen will. Ich habe viele Male versucht, C-g zu tippen, um zu sehen, ob es aufhören würde, aber das funktioniert nicht.

Dies ist ein Bild von dem, was ich habe jetzt:

alt text

Es ist egal, was ich tue, dass Bit

Label: hl-line

werde nicht gehen. Wenn ein neuer Befehl getippt wird, wird er jedoch vorübergehend verlassen. Ich mag es nicht, es ist verwirrend, und ich würde lieber den zuletzt benutzten Befehl sehen.

Ich habe die Anpassungsoptionen für den Mini-Puffer überprüft (der untere Teil davon kann in meinem Bild gesehen werden), aber ich fand nichts, das zu sein schien, wonach ich suchte.

Irgendwelche Ideen?

+2

Sie befinden sich in (zwei Ebenen) rekursiver Bearbeitung, wie die [[..]] um die Klammern herum erkennen, die die Modusnamen umgeben. Sie können die rekursive Bearbeitung mit 'C-]' abbrechen. Weitere Informationen finden Sie unter http://www.cs.cmu.edu/cgi-bin/info2www?(emacs)Recursive%20Edit. –

Antwort

10

Der Minipuffer hat den Fokus verloren. Probieren Sie C-x o (Strg + x o), um den Fokus wiederherzustellen. Um den Befehl abzubrechen, drücken Sie C-g , wenn Sie den Fokus im Minipuffer haben.

+0

Oh, also war es wie ein unfertiger Befehl? Ich habe das C-xo gemacht und musste den ganzen Befehlsstream beenden (um eine Umgebung in Latex einzufügen, Label, Position, etc.), so dass das Ding verschwinden würde. Danke dafür! – Vivi

14

Wahrscheinlich sind Sie in der Situation, weil Sie einen Befehl gestartet und Ihre Maus verwendet, um etwas in einem anderen Fenster auszuwählen. Wenn dies der Fall ist, können Sie Emacs den Befehl automatisch abbrechen, wenn Sie eine solche Aktion ausführen.

Dies ist der Code, den Sie zu Ihrem .emacs hinzufügen würde:

(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) 

Hinweis: Ich packte aus meiner blog post on the topic.

Und es gibt auch eine super Benutzer Frage, die dieses Problem anspricht, und meine Antwort gibt einen Befehl an jump back to the minibuffer.

+0

Ganz möglich, dass ich das gemacht habe ... Ich versuche zwar, die Maus nicht zu benutzen, also hoffe ich, dass dieser Befehl bald überflüssig wird. Passiert das, wenn ich auch ** C-x b ** benutze? Übrigens bevorzuge ich den Code, den Sie auf die Antwort auf eine Superuser-Frage setzen und in einem Kommentar zu Ihrem Blog-Beitrag verlinken :) (derjenige, der einen Schlüssel bindet, um zum aktiven Minibuffer-Fenster zu gehen) – Vivi

+0

@Vivi Ahhh .. Richtig die SU Antwort. Ich bin nicht so glücklich, wie SO und SU die Emacs-Fragen geteilt haben. Ich werde das auch in dieser Antwort verlinken. –

+1

Dies kann passieren, wenn Sie einen Befehl starten und eine Fehlerbedingung erhalten. Der Trick, den Fokus in den Mini-Puffer zu bekommen und dann Strg-G zum Abbrechen, wird es beheben. –