首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从键调用Imenu

从键调用Imenu
EN

Stack Overflow用户
提问于 2014-12-14 21:09:51
回答 2查看 184关注 0票数 1

目前,emacs有一些有用的imenu功能,它允许我查看当前缓冲区中的函数列表。为此,我需要键入M-x,然后键入imenu,然后按下return键,然后它将在小型缓冲区“索引项”中显示提示符,而我需要键入func,然后显示另一个具有当前缓冲区中所有函数完成的小型缓冲区提示。这是非常好的和有用的,但现在我想减少键入量,并以某种方式宏化第一部分的序列。我试过这种方法:

代码语言:javascript
复制
(defun my-imenu-go-function-list ()
  (interactive)
  (imenu "func"))

(global-set-key (kbd "C-x C-o") 'my-imenu-go-function-list)

另一次尝试:

代码语言:javascript
复制
(defun my-imenu-go-function-list ()
  (interactive)
  (imenu)
  (execute-kbd-macro [?f ?u ?n ?c return]))

但都没有用,还有其他的可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-14 22:24:36

您需要以交互方式调用您的函数。

试试看以下几点。应该管用的。

更新:

代码语言:javascript
复制
(defun my-imenu-go-function-list ()
  (interactive) 
  (let ((unread-command-events  (listify-key-sequence "func\n") ))
  (call-interactively 'imenu)))

如果您在Windows中,您可能必须将回车改为"\r“或"\r\n”

票数 1
EN

Stack Overflow用户

发布于 2014-12-17 04:20:48

sebs的回答显示了一个我以前从未见过的非常巧妙的技巧;然而,下面的回答会更直接一些:

代码语言:javascript
复制
(imenu (assoc "func" (imenu--make-index-alist)))

不过,它确实依赖于私有(按约定)函数,所以YMMV。我看不出有一个明显的API来返回这个主义者的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27474144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档