求指导 emacs 25.1 c/c++ ggtags实现代码跳转

按照上一贴各位的热心帮忙下,又进行了google,依然无果,所以想再次请哪位大神给个详细的配置步骤,不胜感激。

好像没有太复杂的配置。大概描述一下我的使用经验,仅供参考。

我使用的系统是Linux(Debian Testing),Emacs 24.5.1,配置基于Spacemacs

  1. 安装GNU Global最新版 最好到官网下载最新的源代码进行编译安装。通过apt源安装的版本比较旧,有Bug。
  2. 配置Spacemacs 添加以下几个layer,示例代码 在~/.spacemacs.d/init.el文件中 dotspacemacs-configuration-layers '( … helm (c-c++ :variables c-c+±default-mode-for-headers 'c+±mode) gtags … )
  3. 创建gtags数据库 在项目代码根目录下运行命令gtags即可。 3.1 怎么识别C++头文件 gtags 缺省将.h头文件当成C头文件处理,如果是C++项目,需要先在终端(Bash Shell)执行命令:export GTAGSFORCECPP=“”

3.2 如何过滤一些目录和文件 我的做法是写一个Python脚本来干这个事。 将所有需要分析的源文件相对路径抓出来写到文件gtags.files 然后执行gtags -f gtags.files

4.如何使用 请参考gtags layer目录下的README.org. 它提供了一系列快捷键。

没有用Spacemacs,emacs版本是25.1的。在Terminal里面还能找到global,但是在emacs里面执行shell,然后which global就报command not find ,添加export PATH后,又报什么point-height *** (error-file )什么的。搞了几天都没搞好

不好意思,没法帮到你,没遇到过你这种问题哦。

谢谢帮忙看看!

我是这么设置的:

  (use-package ggtags
    :bind (("C-c f" . ggtags-find-file)
           ("M-." . ggtags-find-tag-dwim))
    :config
    ;; ggtags settings
    ;; Activate cygwin mount for gtags CDPATH issue on W32
    (cond ((eq window-system 'w32)
           (require 'cygwin-mount)
           (cygwin-mount-activate)))
    (setq ggtags-global-ignore-case t)
    (setq ggtags-sort-by-nearness t))

  (require 'ggtags)
  (add-hook 'c-mode-hook 'ggtags-mode)
  (add-hook 'c++-mode-hook 'ggtags-mode)

具体请查看:

最简单的方法,是使用陈斌的配置或者安装他写的c++插件,在你安装了global的情况下,第一次,gt会自动生成ggtags需要的文件,之后,gt即可跳转