我想将我在 emacs 中对 Mx 的使用记录到一个文件中,以便我可以看到我应该学习哪些函数的快捷方式/绑定快捷方式。这最好只是将使用的函数的名称附加到文件/emacs 缓冲区,可能带有时间戳,以便我可以看到我在什么上下文中使用它们。有谁知道如何解决这个问题?
您可以从这个 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))))
Run Code Online (Sandbox Code Playgroud)
我建议添加一个咨询函数到execute-extended-command,另一个到read,这样当执行扩展命令正在运行时,在迷你缓冲区中读取的任何内容都会被记录到您定义的缓冲区中并带有时间戳。
我一直想学习如何使用 Advise,所以一旦我有了执行此操作的代码(应该少于十行),我将在稍后使用工作 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"))))
Run Code Online (Sandbox Code Playgroud)
这会记录时间戳、命令和键绑定,并且不会掩盖 mx 命令的任何回显。
您必须像保存任何其他 emacs 缓冲区一样手动保存日志文件,这与 Trey 的版本不同。当文件被写入但没有消息回显到迷你缓冲区从而模糊命令结果时,可能存在妥协。
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |