Как я могу перезагрузить интерактивную оболочку и запустить некоторые команды при запуске emacs? - PullRequest
1 голос
/ 11 апреля 2010

Я полагаю, что мне нужно добавить что-то вроде:

ракушка

: в мой файл .emacs. Но тогда как я могу заставить его выполнять такие команды оболочки, как:

cd / mydirectory

: и другие действия оболочки

Ответы [ 3 ]

4 голосов
/ 11 апреля 2010

Это функция, которая делает то, что вы хотите. Вы можете добавить его (настроить действия) или просто добавить тело:

(defun shell-and-stuff ()
  "run a shell, then do some extra stuff"
  (interactive)
  (let ((shell-buf (get-buffer-create "*shell*")))
    (shell shell-buf)
    (comint-send-string
     (get-buffer-process shell-buf)
     "cd some-directory
ls
touch frog
")))
(shell-and-stuff)
1 голос
/ 11 апреля 2010

Идея Трея Джексона выглядит хорошо. Также обратите внимание, что в руководстве (info "(emacs) Interactive Shell") написано

Emacs отправляет новой оболочке содержимое файла ~/.emacs_SHELLNAME в качестве ввода, если оно существует, где SHELLNAME является имя файла, из которого была загружена оболочка. Например, если вы используйте bash, файл, отправленный на это ~/.emacs_bash. Если этот файл не Emacs пытается откатиться на ~/.emacs.d/init_SHELLNAME.sh.

Чтобы вы могли поместить свои команды в этот файл.

1 голос
/ 11 апреля 2010

Часть cd проста, просто let связывает переменную default-directory. См. этот вопрос для некоторых возможных решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...