目前,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]))但都没有用,还有其他的可能吗?
发布于 2014-12-14 22:24:36
您需要以交互方式调用您的函数。
试试看以下几点。应该管用的。
更新:
(defun my-imenu-go-function-list ()
(interactive)
(let ((unread-command-events (listify-key-sequence "func\n") ))
(call-interactively 'imenu)))如果您在Windows中,您可能必须将回车改为"\r“或"\r\n”
发布于 2014-12-17 04:20:48
sebs的回答显示了一个我以前从未见过的非常巧妙的技巧;然而,下面的回答会更直接一些:
(imenu (assoc "func" (imenu--make-index-alist)))不过,它确实依赖于私有(按约定)函数,所以YMMV。我看不出有一个明显的API来返回这个主义者的值。
https://stackoverflow.com/questions/27474144
复制相似问题