Я хочу зарегистрировать свое использование M-x в emacs в файл так, чтобы я видел, какие функции я должен узнать, что ярлык на / связывает ярлык для. Это предпочтительно просто добавило бы названия используемых функций к file/emacs-buffer, возможно, с меткой времени, так, чтобы я видел, в каком контексте я использую их. Кто-либо знает, как решить это?
Я предложил бы добавить консультативную функцию к execute-extended-command
, и другой к read
, таким образом, что, когда выполнять-расширенная-команда выполняется, что-либо, чтение в мини-буфере зарегистрировано к Вашему определенному буферу с меткой времени.
Я означал изучать, как использовать, советуют, таким образом, я буду редактировать этот комментарий позже с работой elisp код, после того как у меня есть код, который делает это (должны быть меньше чем десять строк).
править:
на основе очень замечательной работы Trey Jackson вот моя дополнительная версия:
(defvar my-m-x-log-file "~/mx.log")
(defadvice execute-extended-command
(after log-execute-extended-command activate)
(let ((logfile (find-file-noselect my-m-x-log-file)))
(with-current-buffer logfile
(goto-char (point-max))
(insert (format "%s --- %s --- "
(current-time-string)
this-command))
(where-is this-command t)
(insert "\n"))))
Это регистрирует метку времени, команду и привязки клавиш, и не затеняет echos от команд m-x.
Необходимо будет сохранить файл журнала вручную как Вы, был бы любой другой буфер emacs, в отличие от версии Trey. Может быть компромисс, возможный, где файл записан в, но нет никакого сообщения echod к мини-буферным результатам затемнения команды.
Можно запустить с этого elisp, который просто добавит команды, которые Вы выполняете к данному файлу журнала. Можно стать более необычными и сделать автоматическое соответствие, если Вы хотите. Или, можно иногда просто передавать файл по каналу через sort
|
uniq
-c
.
(defvar my-m-x-log-file "~/mx.log")
(defadvice execute-extended-command (after log-execute-extended-command activate)
(let ((logfile (find-file-noselect my-m-x-log-file)))
(with-current-buffer logfile
(goto-char (point-max))
(insert (format "%s\n" this-command))
(save-buffer))))
Править: При перечитывании я полагаю, что ответил на неправильный вопрос. Вы, возможно, были более обеспеченным выяснением у этого на Переполнении стека, так как ответ, вероятно, потребовал взламывания elisp.
C-h f function-name
получит Вас документация относительно function-name
, включая текущую привязку клавиш.
C-h k <key stroke>
покажет текущую функцию, связанную с любым нажатием клавиши
C-h b
перечислит всю активную привязку клавиш