目前,emacs具有有用的imenu
功能,可以让我查看当前缓冲区中的功能列表。要实现此目的,我需要输入M-x
,然后键入imenu
,然后按return
键,然后它将在迷你缓冲区中显示提示"索引项目:"我需要输入func
,然后它显示另一个迷你缓冲提示,其中包含当前缓冲区中所有函数的完成。
这是非常好的和有用的,但现在我想减少打字的数量,并以某种方式在序列的第一部分宏观化。我试过这种方法:
(defun my-imenu-go-function-list ()
(interactive)
(imenu "func"))
(global-set-key (kbd "C-x C-o") 'my-imenu-go-function-list)
另一次尝试:
(defun my-imenu-go-function-list ()
(interactive)
(imenu)
(execute-kbd-macro [?f ?u ?n ?c return]))
但没有一个有效,还有其他可能吗?
答案 0 :(得分:2)
(imenu (assoc "func" (imenu--make-index-alist)))
它依赖于私有(按惯例)功能,所以YMMV。我看不到用于返回此alist值的明显API。
答案 1 :(得分:1)
您需要以交互方式调用您的功能。
尝试以下方法。它应该工作。
<强>更新:强>
(defun my-imenu-go-function-list ()
(interactive)
(let ((unread-command-events (listify-key-sequence "func\n") ))
(call-interactively 'imenu)))
如果您在Windows中,则可能需要将回车更改为&#34; \ r&#34;或&#34; \ r \ n&#34;