Как я регистрирую использование M-x в emacs?

Я хочу зарегистрировать свое использование M-x в emacs в файл так, чтобы я видел, какие функции я должен узнать, что ярлык на / связывает ярлык для. Это предпочтительно просто добавило бы названия используемых функций к file/emacs-buffer, возможно, с меткой времени, так, чтобы я видел, в каком контексте я использую их. Кто-либо знает, как решить это?

6
задан 27.02.2010, 18:27

3 ответа

Я предложил бы добавить консультативную функцию к 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 к мини-буферным результатам затемнения команды.

3
ответ дан 07.12.2019, 15:59

Можно запустить с этого 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))))
5
ответ дан 07.12.2019, 15:59

Править: При перечитывании я полагаю, что ответил на неправильный вопрос. Вы, возможно, были более обеспеченным выяснением у этого на Переполнении стека, так как ответ, вероятно, потребовал взламывания elisp.

C-h f function-name

получит Вас документация относительно function-name, включая текущую привязку клавиш.

C-h k <key stroke>

покажет текущую функцию, связанную с любым нажатием клавиши

C-h b

перечислит всю активную привязку клавиш

0
ответ дан 07.12.2019, 15:59

Теги

Похожие вопросы