Автоматическое сохранение истории оболочки в Emacs - PullRequest
3 голосов
/ 09 февраля 2012

Есть ли простой способ автоматически сохранять каждую команду, которую я выполняю, в буфере режима оболочки?Я запускаю такие вещи, как python и lua из буфера оболочки Emacs и хочу сохранить их в дополнение к обычным командам bash.

Поведение по умолчанию сохраняет историю в .history или .bash_history, но не сохраняет вводподпроцессам.Например, если я сделаю следующее

ls /export/hda3/tmp
python
a=2+3
import sys
sys.exit()
ls /export/hda3/tmp

, следующее будет сохранено

#1328903075
ls /export/hda3/tmp
#1328903081
python
#1328903087
ls /export/hda3/tmp

1 Ответ

2 голосов
/ 09 февраля 2012

Команды сохраняются автоматически, только вам нужно убедиться, что вы действительно выходите из оболочки. Если вы просто уничтожите буфер оболочки, никакие команды не будут сохранены.

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

(defun my-check-if-no-shell-buffer-exists ()
  (if (not (get-buffer "*shell*"))
      t
    (message "you have a shell buffer, make sure you exit it manually")
    nil))

(add-hook 'kill-emacs-query-functions 'my-check-if-no-shell-buffer-exists)

Было бы даже лучше, если бы буфер оболочки делал это автоматически при уничтожении буфера. Я думаю, что это ошибка в Emacs, что он не может это сделать.

Редактировать : Я заметил, что у меня есть настройка, которая запрещает запускать предупреждения процесса при выходе из emacs, и поэтому мне нужна была указанная выше функция. Если вы получаете предупреждение о работающей оболочке уже при выходе, то вам это не нужно, вам нужно только выйти из оболочки вручную, чтобы сохранить историю.

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