2010-04-24 13 views
5

Gibt es eine Möglichkeit, einen Shell-Befehl auszuführen, die Ausgabe in einem neuen Puffer anzuzeigen und diese Ausgabe inkrementell anzuzeigen? Eshell und andere Emacs-Terminalemulatoren tun dies, aber ich sehe keine Möglichkeit, sie zu skripten.Emacs und Long Shell-Befehle

Was ich tun möchte, ist schreiben kleine elisp Funktionen, um Dinge wie Lauf Unit Tests usw. zu tun und beobachten Sie die Ausgabe trickle in einen Puffer.

Die Elisp-Funktion Shell-Befehl ist nahe an dem, was ich will, aber es zeigt alle Ausgänge auf einmal, wenn der Prozess beendet ist.

+3

Nicht ganz, was Sie brauchen, aber 'M-x compile' zeigt den Übersetzungsfortschritt inkrementell an. – doublep

+0

Das ist genau das, was ich brauche. – darrint

Antwort

4

Wie doublep erwähnt, gibt es M-x kompilieren, und es gibt auch nur die einfache M-x Schale und in dieser Shell Sie laufen, was Sie wollen.

1

Sie können auch comint-run verwenden, um einen Befehl auszuführen, ohne zuerst eine Untershell zu starten. Ich glaube, M-x shell verwendet den COMINT-Modus mit einigen Modifikationen, so dass dies nicht viel anders sein wird. Wenn Sie jedoch ein Programm direkt aufrufen und seine Eingabe und Ausgabe mit einem Puffer verknüpfen möchten, ist comint-run die Funktion, die aufgerufen werden soll. Es ist ein wenig schwierig zu bedienen, also lesen Sie die Dokumentation: C-h f comint-run.