Я хочу записать свое использование Mx в emacs в файл, чтобы я мог видеть, для каких функций я должен изучить ярлык для / привязать ярлык для. Желательно просто добавить имена используемых функций в файл / emacs-буфер, возможно, с отметкой времени, чтобы я мог видеть, в каком контексте я их использую. Кто-нибудь знает как это решить?
3 ответа
Вы можете начать с этого 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))))
Я бы предложил добавить консультативную функцию для execute-extended-command
и другую для read
, чтобы при запуске execute-extended-command все прочитанное в минибуфере записывалось в ваш определенный буфер с отметкой времени.
Я хотел узнать, как использовать совет, поэтому я буду редактировать этот комментарий позже с рабочим кодом elisp, как только у меня будет код, который делает это (должно быть меньше десяти строк).
редактировать:
на основе очень замечательной работы Трея Джексона, вот моя дополнительная версия:
(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"))))
Это регистрирует метку времени, команду и привязки клавиш и не скрывает эхо от команд mx.
Вам нужно будет сохранить файл журнала вручную, как любой другой буфер emacs, в отличие от версии Trey. Возможен компромисс, когда в файл записывается, но в минибуфере нет сообщения, отражающего результаты команды.
Изменить: при повторном чтении я считаю, что я ответил на неправильный вопрос. Возможно, вам лучше задать этот вопрос по переполнению стека, поскольку для ответа, вероятно, потребуется взломать elisp.
C-h f function-name
получите документацию по имени function-name
, включая текущую привязку ключа.
C-h k <key stroke>
покажет текущую функцию, привязанную к любому нажатию клавиши
C-h b
перечислит все активные привязки ключей