2012-04-08 11 views
4

Ich bin neugierig, ob es möglich ist, Echo-Bereich und Minibuffer zu trennen, so dass zwei verschiedene Orte (Linien, Scheiben, Rahmen) für die Ausgabe von Nachrichten und die Eingabe von Befehlen verwendet werden.Ist es möglich, Minibuffer und Echobereich in Emacs zu trennen?

Wie es in Hide Emacs echo area during inactivity gesagt wird, ist es unmöglich, von Echobereich vollständig loszuwerden, aber einige Vorschläge sind:

Welche Optionen habe ich? Ist es theoretisch möglich, Echobereich und Minibuffer zu trennen? Würde es theoretisch erfordern, C-Quellcode umzuschreiben und Emacs neu zu kompilieren? Bitte posten Sie Ihre Gedanken und Ideen.

+0

Manchmal habe ich Emacs interaktiven Prompt Block Statusmeldung gefunden. Trennung würde Emacs besser machen! – Abdillah

Antwort

9

Basierend auf dem Handbuch und einen Blick auf den C-Code, glaube ich, die Antwort ist "Nein".

M-:(info "(elisp) Echo Area Customization")RET sagt:

Die Variable `max-Mini-Fenster-height‘, die zum Ändern der Größe Minipuffer Fenster die maximale Höhe angibt, gelten auch für den Echobereich (Das ist wirklich eine spezielle Verwendung des Minibuffer-Fensters; * Anmerkung Minibuffer Misc: :).

Der Minibuffer Misc Link diskutiert nicht, dass die spezifischen Punkt weiter, aber wenn der Echobereich den Minipuffer Fenster explizit verwendet dann werden Sie nicht in der Lage sein, sie zu trennen.

Edit:

Zur Bestätigung, wenn Sie für die C-Funktion message3_nolog() in xdisp.c an der Quelle suchen, erhält sie den Rahmen für den Minipuffer des ausgewählten Rahmens, wählt das, und geht dann durch zu echo_area_display(), die verwendet das Minibufferfenster des aktuell ausgewählten Rahmens als das Echobereichfenster.

(Emacs 24.0.95)

So ist das „Mini-Fenster“ für den Minipuffer und Echobereich verwendet wird, ist in der Tat ein und dasselbe, ebenso wie die manuellen Zustände.

Die einzige Möglichkeit, die ich denken kann, ist zu versuchen, einen Weg automatisch Kopieren Echobereich Nachrichten zu einem anderen Fenster zu finden, aber da dies alles in C-Code geschieht, nicht ausgesetzt in Funktionen elisp, vermute ich, das ist auch nicht möglich.

Edit 2:

Wäre es theoretisch erfordern C-Quellcode umschreiben und Emacs neu zu kompilieren?

Wenn Sie echte Trennung benötigen, dann ja, ich glaube, das ist der Fall.

Wenn der Kopiervorgang ausreichend war, können Sie in der Lage sein, das rein in elisp zu verwalten, indem Sie alle Funktionen angeben, die dazu führen können, dass Nachrichten in den Echobereich geschrieben werden. Sie könnten beginnen hier, um zu lesen, was das könnte zur Folge haben:

M-:(info "(elisp) The Echo Area")RET

(aber wenn Sie wirklich verzweifelt sind, um dies zu implementieren, würde ich Ihre Zeit vorschlagen würde besser ausgegeben werden Arbeits in C und Bereitstellung eines Patches, die eine solche Trennung gemacht werden könnte, weil ich ein wenig zweifelhaft bin, wäre dieser Rat auf lange Sicht robust.)

Verwandte Themen