GNU Emacs等效的func-menu是什么?

7
有没有类似于GNU Emacs的func-menu的等效物?我在使用xemacs时使用过func-menu,并且我更喜欢它的行为方式,而不是speedbar或sr-speedbar。具体来说:
  • 我喜欢只显示当前文件的函数。

  • 可以从当前框架弹出函数列表,而不是一个可能被覆盖的单独窗口。

  • 当前函数名称显示在模式行中。

有没有适用于GNU Emacs的软件包更接近func-menu?
3个回答

8

imenu是GNU Emacs中类似的功能。

查看C-hfimenu-add-menubar-indexRET。您可以在支持imenu的模式挂钩中调用它。

自然支持elisp,因此进行快速演示:

  • M-xfind-libraryRETimenuRET
  • M-ximenu-add-menubar-indexRET

然后在菜单栏上看到新的“索引”项目,以及在C-<mouse3>上也有。

当然,也有一个键盘界面,只需调用M-ximenuRET(使用TAB完成),但我强烈建议添加EmacsWiki*中可以找到的ido集成--我发现这通常比使用鼠标更快的接口。

有关更多详细信息,请参见C-hig(elisp) ImenuRET

有关配置,请参见M-xcustomize-groupRETimenuRET

(*) 还有许多其他增强功能的方法,因此即使您不想使用ido,在查看基本版本后,您也应该阅读该Wiki页面。


3

您说的是XEmacs中的func-menu模式吗?它会列出当前文件中所有的函数。

如果是这样,那么你可以使用GNU Emacs的开发工具集合CEDET(特别是Semantic代码解析器)和Emacs代码浏览器ECB来复制大部分功能。

  • ECB方法窗口会向您显示所选源代码缓冲区中的所有符号。它是一个单独的窗口,在Emacs中被称为编辑区域,显示单个缓冲区,多个缓冲区可以在单个窗口管理器窗口中。它不是一个Emacs框架,因此不会被覆盖。
  • Semantic的stickyfunc-mode可以在您的源代码缓冲区顶部的一行中显示当前的函数。它使用GNU Emacs特有的header line特性。这与在模式行中显示函数名不完全相同,但足够接近了。

请注意,ECB需要CEDET,并且安装这两个工具通常比使用XEmacs的软件包管理器更加棘手。


要在模式行中放置函数名称,您可以使用 which-function-mode - Ivan Andrus
谢谢,which-function-mode 是我正在寻找的一部分。 - perogiex

0

我不确定,但我认为“跳转到缓冲区内的函数”被称为fume-mode。如果是这样,搜索fume-mode的类比可能会帮助您找到您要查找的内容。

以下是XEmacs手册中提到fume-mode的摘录:

“41.跳转到缓冲区内的函数。

假设您有一个包含许多函数的文件。好吧,这个软件包使得轻松跳转到任何这些函数之一。当前缓冲区中函数的名称自动放入菜单栏菜单中,您选择一个函数名称,光标就会移动到该函数。标记被推送到标记环中,因此您可以轻松返回到原来的位置。或者,您可以通过迷你缓冲区输入所需函数的名称,该缓冲区提供完成读取输入。此外,可选地在模型行中显示点前的函数名称。

支持以下模式:

Ada、Assembly、BibTex、C++、C、Dired、Ehdm、ELisp、FORTRAN、Ksh、Latex、Lelisp、Makefile、Maple、Modula2、Modula3、Outline、Objective-C、Pascal、Perl、Postscript、Prolog、PVS、Python、SGML、Scheme、Tcl、Verilog、Manual、Ruby、JavaScript。
要安装此软件包,请将以下内容添加到您的初始化文件中:
(add-hook 'find-file-hooks 'fume-setup-buffer)

(add-hook 'Manual-mode-hook 'turn-on-fume-mode)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接