【问题标题】:Ctags not working with .inc-filesCtags 不适用于 .inc 文件
【发布时间】:2015-08-11 18:00:28
【问题描述】:

我喜欢在 Emacs 中使用标签,就像 Vim 一样。但是,我在设置它时遇到了一些问题## 设置: GNU Emacs GUI 版本 25.0.5.1 (x86_64-w64-mingw32) Compiled from Harroogan Emacs.

Projectile 和 Helm,使用 MELPA 的最新版本 Projectile/Helm

Exuberant Ctags binary 58 for Windows

Windows 7 x64 位。

行动:

二进制文件ctags.exe 在PATH 中,当我在Windows 的命令行中使用ctags --help 调用它时会响应。

我尝试了各种方法来创建 TAGS 文件,但没有任何结果。我似乎有结果的一件事是在包projectile 的帮助下。但它给了我奇怪的结果。

当我在一个项目中时,当前正在打开缓冲区index.php。在该缓冲区内,我使用 projectile-regenate-tags 重新生成标记文件,并使用 C-c p R.

消息缓冲区为我提供以下信息:

Starting a new list of tags tables
Making tags-file-name local to Dev/digiloket3/TAGS while let-bound!

我看到文件 TAGS 正在项目根目录中创建。

目录根结构如下:

index.php
.projectile
|- INCLUDE
    |- AJAX
    |- SCRIPTS
    |- PHP

问题:

然后我用find-tag (g C-]) 访问标签列表。当我注意到我没有得到项目中定义的所有变量和类/函数时。 当我调用helm-etags-select 时,我会看到标签旁边的目录/文件。让我感到困惑的是,标签列表中只有 AJAX 目录中的文件中的函数/类和变量可见,PHP 目录中的文件中的变量/类/函数不可见。

然后我在命令提示符下手动创建 TAGS 文件,并在 ctags -R 上使用正确的目录。

没有帮助。

文件夹 PHP 中的所有文件都称为 ****.inc。

当我将其中一个文件重命名为 ****.php 时,它们会在我的 ctags 表中弹出。

所以这里真正的问题是我如何告诉 projectile/ctags 将 .inc 文件识别为 PHP 文件,或将其编入索引

但我也愿意在 Windows 平台上使用命令行上可用的ctags 创建一个 TAGS 表。

有什么建议吗?

【问题讨论】:

    标签: emacs ctags


    【解决方案1】:

    man ctags 对于初学者(如果您可以在 Windows 中这样做?无论如何都有documentation 可用。)

    使用--langmap 为语言分配文件扩展名。运行以下命令以查看该参数的工作原理:
    ctags --langmap=php:+.inc.foo.bar --list-maps=php

    所以在你的情况下,你可能会使用这样的东西来生成你的 TAGS 文件:
    ctags -e -R --langmap=php:+.inc

    另外,请注意运行ctags --list-kinds=php 时列出的选项。然后,您可以控制将使用哪些:ctags --php-kinds=-v-j --list-kinds=php

    【讨论】:

    • 知道如何指定 TAGS 文件应放置在标签的位置吗?我在man ctags 中没有找到任何关于此的信息,仅关于 TAGS 文件应该具有的文件名。
    • 尝试使用 -f 选项指定输出文件。您可能还想使用 -e 创建一个用于 Emacs 的 TAGS 文件。
    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多