2016-05-29 7 views
1

Wenn meine dämonische Emacs startet, möchte ich automatisch mehrere Shell-Puffer erstellen, die jeweils einige Initialisierungscode ausführen.Start spezifische Shells mit Initialisierungscode bei emacs Start

z.B. in einem (mit einem Puffer *foo* genannt) Ich möchte

cd devel/foo 
source setup.sh 

in einem anderen (genannt *sudo*) laufen möchte ich

exec sudo -i 

und in (benannt *journal*) ein anderes Ich würde gerne laufen laufen

journalctl -f 

ich habe dies in meiner init.el kann

(shell "*foo*") 
(shell "*sudo*") 
(shell "*journal*") 

, die alle Puffer startet und benennt, aber ich weiß nicht, wie die ersten Befehle ausgeführt werden. Beachten Sie, dass ich weiterhin möchte, dass sie normale interaktive Shell-Modus-Puffer sind, als ob ich sie von Hand gestartet hätte und den Initialisierungscode eingegeben hätte.

Antwort

0

Die Dokumentation der shell Funktion (vgl C-h f shell RET) sagt ausdrücklich:

If a file `~/.emacs_SHELLNAME' exists, or `~/.emacs.d/init_SHELLNAME.sh', 
it is given as initial input. 

So konnten Sie bekommen, was Sie wollen, indem Sie eine Datei ~/.emacs.d/init_*foo*.sh und enthält Namen erstellen:

cd devel/foo 
source setup.sh 

Und so weiter für die anderen Dateien.

Vorsicht vor dem '*' im Namen der Dateien!

Wenn Sie es mit "Standard" Emacs-Lisp-Code tun möchten, können Sie vielleicht einen Blick auf den Haken Variable haben wollen:

C-h v comint-input-sender RET 

welche Standardinhalt ist die Funktion:

C-h f comint-simple-send RET 
Verwandte Themen