По крайней мере в Emacs 24 (сейчас я не могу проверить предыдущую версию) строка документации для view-lossage
указывает:
Отображение последних 300 нажатий клавиш ввода.
Чтобы записать все ваши входные данные в файл, используйте `open-dribble-file '.
и Ch f open-dribble-file
RET говорит мне:
open-dribble-file - это интерактивная встроенная функция в `C исходном коде '.
(open-dribble-file FILE)
Начните записывать все символы клавиатуры в файл дриблинга с именем FILE.Если FILE равен nil, закройте любой открытый файл капли.Файл закроется, когда выйдет Emacs.
Так что просто добавьте что-то вроде следующего в ваш файл .emacs:
(open-dribble-file (expand-file-name "~/.emacs.d/lossage.txt"))
Экспериментально это затирает файл, если он уже существуетпоэтому вам нужно разобраться с этим.
Вот один из подходов.Он учитывает несколько сеансов Emacs, используя make-temp-name
, чтобы сгенерировать полуслучайное имя файла для файла dribble, а затем добавляет его содержимое в основной файл журнала потерь, когда Emacs существует.(Если Emacs аварийно завершит работу, он оставит временный файл, с которым вам придется иметь дело вручную.)
(defmacro my-persistent-dribble-file (file)
"Append the dribble-file for this session to persistent lossage log FILE."
`(let* ((persistent-file (expand-file-name ,file))
(temporary-file (make-temp-name (concat persistent-file "-")))
(persistent-arg (shell-quote-argument persistent-file))
(temporary-arg (shell-quote-argument temporary-file))
(append-dribble-command (format
"cat %s >>%s && rm %s"
temporary-arg persistent-arg temporary-arg)))
(open-dribble-file temporary-file)
(eval `(add-hook 'kill-emacs-hook
(lambda () (shell-command ,append-dribble-command))))))
(my-persistent-dribble-file "~/.emacs.d/lossage")