Пользовательские оболочки запускаются автоматически из .emacs

Я хотел бы запустить несколько оболочек и установить их каталоги из моего .emacs. Открыть их легко:

;; run a few shells.
(shell "*shell5*")
(shell "*shell6*")
(shell "*shell7*")

Но я хотел бы указать и их каталог.


person sandos    schedule 18.02.2010    source источник
comment
Просто идея, и немного хакерская, но происходит ли каталог оболочки из текущего открытого каталога буфера? Если это так, вы можете открыть временный файл в каждом каталоге и запустить оболочку после открытия файла.   -  person Skilldrick    schedule 18.02.2010


Ответы (2)


Следующие работы для меня

(let ((default-directory "/path/to/whereever/"))
  (shell "*shell1*"))
person Ivan Andrus    schedule 18.02.2010
comment
У меня не сработало, например, если я использую /usr/src, оболочка запускается только на /usr, то же самое происходит с /home/guest, начиная с /home - person coelhudo; 18.02.2010
comment
Попробуйте добавить косую черту в конце, например, /path/to/whereever/. - person jlf; 18.02.2010
comment
Работает даже с \\ для обратной косой черты в Windows. Благодарю вас! - person sandos; 19.02.2010

(shell "*shell5*")
(with-current-buffer "*shell5*"
(goto-char (point-max))
(insert "cd dir")) ;;for example
(comint-send-input nil t) ;; enter

На данный момент у меня есть это, я думаю, что оно нуждается в некотором улучшении. Когда я использую в своем emacs, это вызывает ошибку, но делает то, что вы хотите. Я попытаюсь понять, почему.

person coelhudo    schedule 18.02.2010
comment
Это было бы круто. Нет времени играть с этим сейчас, может быть, сегодня вечером. - person sandos; 18.02.2010
comment
Я думаю, что мое принятое решение, вероятно, лучше, но эта идея все еще интересна, если я хочу сделать что-нибудь еще в оболочке! - person sandos; 19.02.2010
comment
Да, ответ Ивана - простое решение :) - person coelhudo; 19.02.2010