如果您正在编写C / C ++ / Java / Emacs Lisp / Python,那么语义粘滞功能模式将满足您的需求。
注意:这似乎与Git的CEDET一起使用,而不是Emacs 24.4中当前没有的CEDET。要从Git获取Emacs:
git clone http://git.code.sf.net/p/cedet/git cedet
并将CEDET首先加载到init文件中的所有其他文件之上:
(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))
启用时,此模式显示功能点当前在当前缓冲区的第一行。当您拥有一个非常长的功能而不是一个屏幕时,这很有用,并且您无需向上滚动以读取功能名称,然后向下滚动至原始位置。
它显示完整的功能界面(返回类型,功能名称和参数),而不仅仅是功能名称。
要启用它,请将以下代码放在您的init文件中:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
更新:当前的问题之一semantic-stickyfunc-mode
是它不能显示分散在多行上的所有参数。为了解决这个问题,我创建了package stickyfunc-enhance包。
演示:
这是C语言的演示:
这是Emacs Lisp中的一个演示:
更新:或者,您可以使用helm-semantic-or-imenu。当您在函数内部并运行命令时,光标将位于列表中该函数的右边,因此您始终可以看到完整的函数界面。演示:
首先,我使用helm-semantic-or-imenu
移至该函数helm-define-key-with-subkeys
并在该处移动点。
然后,我helm-semantic-or-imenu
再次开始并被helm-define-key-with-subkeys
预选。
然后,将光标移到变量helm-map并helm-semantic-or-imenu
再次执行两个函数:helm-next-source和helm-previous-source。这次,它没有显示我正在使用的当前语义标记(即helm-map),而是显示了Helm Semantic缓冲区中的其他两个标记。这是因为我在运行命令之前提供了一个前缀参数。
这个演示同样在Emacs Lisp中,它也适用于C / C ++,如果您有一个很长的函数接口,它会更加灵活。