【问题标题】:gtags produces empty GTAGS file with pygmentsgtags 生成带有 pygments 的空 GTAGS 文件
【发布时间】:2018-05-28 19:43:41
【问题描述】:

我正在尝试使用 pygments 插件解析器在 python 代码库上运行 gtags,但是生成的 GTAGS 文件是空的,并且 GRTAGS 引用了诸如“str”之类的东西,这对我来说似乎是错误的。

以下是 .globalrc 的相关部分:

default:\
    :tc=native:tc=pygments:
pygments:\
    :tc=pygments-parser:tc=htags:

我猜,pygments-parser 非常简单。 全局版本为 6.6.2。我已经读过这可能是 ctags 的问题,它是 pygment 用于定义标签的,但是 gtags --explain 没有提到 ctags 的任何用法 - 应该吗? .globalrc 没有指定 ctags 的任何配置,但根据 pygments 插件手册判断,这应该不是必需的,因为 pygments 内部使用它。那是对的吗? 可能是什么原因

【问题讨论】:

    标签: emacs global gnu ctags pygments


    【解决方案1】:

    我也使用global (GNU GLOBAL) 6.6.2。我没有自己的 .globalrc。以下方法中描述 /usr/share/gtags/PLUGIN_HOWTO.pygments 为我工作:

    $ export GTAGSCONF=/usr/share/gtags/gtags.conf
    $ export GTAGSLABEL=pygments
    $ gtags
    $ ls -Al G*
    -rw-r--r-- 1 ja users  32768 May 28 22:22 GPATH
    -rw-r--r-- 1 ja users 458752 May 28 22:22 GRTAGS
    -rw-r--r-- 1 ja users 253952 May 28 22:22 GTAGS
    

    之后我可以使用gtags modeEmacs 内跳转到函数定义和调用。

    编辑:我检查了为了让它工作我需要在我的$PATH 中有一个工作的ctags 二进制文件,它也在帮助中描述我提到的文件:

    Make sure python and ctags can be invoked in your command line.
    $ type python
    python is /usr/bin/python
    $ type ctags
    ctags is /usr/local/bin/ctags
    

    【讨论】:

    • 这不会改变任何东西。我刚刚编写了一个带有 def message() 的 hello.py 文件,并且在使用您建议的默认配置或我的 .globalrc 运行 gtags 后,GTAGS 中没有条目,仅在 GRTAGS 中 - 与任何相同的行为到目前为止的任意代码库。我在 $PATH 中也有 ctags,实际上我已经阅读了 pyments 插件上的 FAQ、HOWTO 和 github 手册。所以你是说一切都为你开箱即用?您是否通过 pip 安装了 pygments?我之所以问,是因为手册指出这些天 pygments 与 global 捆绑在一起。
    • 是的,它开箱即用。不,我没有通过 pip 安装 pygments。
    • ...但通过我的操作系统包管理器。如果pygments 模块未安装gtags 抱怨:ImportError: No module named pygments.lexers。我忘了我曾经安装过它。你有什么版本的Pygments?这里我有2.1.3
    • 问题确实出在 ctags 上,但在某些方面更准确地说是 apt:我的 ctags 并不活跃,尽管 apt 坚持是这样,并且 pygments 因缺少 --filter 选项而失败。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多