我是Emacs的新手.我必须尝试搜索如何使用Emacs与大型C++项目一起使用,特别是索引代码和自动完成函数名称以及类似于Eclipse的行为.我一直在使用Vim一段时间,我使用ctags索引我的项目中的代码,Vim用来尝试使用选项的下拉菜单自动完成我的代码.我现在正试图用Emacs实现同样的目标.但是,在我的搜索过程中,结果指向CEDET和自动完成以及其他第三方插件.
我尝试使用ctags ctags -e -R .和etags,但没有成功.
我是否缺少Emacs的默认方式来实现相同的行为?哪个是实现我想要的最好和最简单的方法?
Ale*_* C. 16
我成功使用CEDET自动完成功能.基本上,自动完成是下拉框提供程序,它从各种事物中获取其来源,最有趣的是来自CEDET(还有来自etags和Gnu Global,我也推荐).
CEDET的一个很好的起点是http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html
Alex Ott的emacs配置就在那里:https://github.com/alexott/emacs-configs - 这是一个有用的资源.
请注意,您需要从bzr获取CEDET,并正确安装/配置自动完成.我强烈建议el-get安装自动完成(以及其他一些东西).您需要为EDE设置通用项目,以使自动完成功能适用于随机C/C++文件,而不是结构化EDE项目的一部分.
您将不得不花一些时间来配置emacs,但它会得到回报.一旦正确设置,该工具的效率非常高.
ffe*_*tte 11
索引
您可能希望使用GNU/global而不是ctags:它支持C++,并且在我看来对大型项目更有效(特别是因为您可以更新索引而不是从头开始重建它).使用CEDET/Semantic仍然要简单得多(如果你花时间设置它也是一个很棒的工具).
使用示例:
$ cd sources
$ gtags -v # create the index
$ cd subdirectory
$ [hack hack hack]
$ global -u # update the index (can be called from anywhere in the project)
Run Code Online (Sandbox Code Playgroud)
在Emacs中,激活gtags-mode源代码缓冲区以访问gtags命令:
gtags-find-tag(M-.):在源文件中找到指定标记的gtags定义(如果有多个,可以在所有可能的定义之间进行选择,如果只有一种可能,则可以直接跳转)gtags-pop-stack(M-*):返回上一个位置gtags-find-rtag :在源文件中查找指定标记的所有用法以下是我的配置gtags,gtags-mode如果找到索引则自动激活:
;; gtags-mode
(eval-after-load "gtags"
'(progn
(define-key gtags-mode-map (kbd "M-,") 'gtags-find-rtag)))
(defun ff/turn-on-gtags ()
"Turn `gtags-mode' on if a global tags file has been generated.
This function asynchronously runs 'global -u' to update global
tags. When the command successfully returns, `gtags-mode' is
turned on."
(interactive)
(let ((process (start-process "global -u"
"*global output*"
"global" "-u"))
(buffer (current-buffer)))
(set-process-sentinel
process
`(lambda (process event)
(when (and (eq (process-status process) 'exit)
(eq (process-exit-status process) 0))
(with-current-buffer ,buffer
(message "Activating gtags-mode")
(gtags-mode 1)))))))
(add-hook 'c-mode-common-hook 'ff/turn-on-gtags)
Run Code Online (Sandbox Code Playgroud)
自动完成
我不知道有什么更好的工具auto-complete.即使它不包含在Emacs中,也可以使用包装系统(例如在果酱或melpa存储库中)轻松安装.
这取决于您在IDE中寻找的内容.我一直在使用Emacs进行相当大的C++项目.当然,您需要将emacs配置为工作,因为您希望它在更大程度上与其他任何IDE一起工作.
但是,CEDET是一个开始,即使它并不完美.
然而,有一个非常好的自动完成模式为Emacs http://cx4a.org/software/auto-complete/它不是智能,但它应该以某种方式与CEDET集成,以给你一个很好的自动完成.
我经常使用的另一个重要功能是ff-find-other-file从标题和实现文件轻松跳转的功能.
那么当然你需要自己打造.CEDET对项目有一些支持,但我还没有测试过.但是,Emacs与make等命令行构建工具很好地集成.错误打印在缓冲区中,您可以在Emacs中轻松跳转到正确的行.
GDB也与Emacs很好地集成M-x gdb,然后记住gdb-many-windows 命令.
| 归档时间: |
|
| 查看次数: |
16928 次 |
| 最近记录: |