问题标签 [ctags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
570 浏览

ruby - 当类定义为“class Gem::SystemExitException”时,ctags 不起作用

您可以像这样在命名空间中定义一个类

或者

当代码使用类定义的第一种方法时,ctags 像这样索引类定义:

使用第二种方式,ctags 像这样索引它:

第二种方法的问题是,您不能将光标(在 vim 中)放在对“Gem::SystemExitException”的引用上,并直接跳转到类定义。您唯一的办法是翻阅所有以“Gem::”开头的(110 个!)类定义并找到您要查找的类定义。

有谁知道解决方法?也许我应该将此报告给 ctags 的维护者?

0 投票
5 回答
4752 浏览

ctags - ctags 不理解 -e 选项(没有旺盛的标签选项)

当我键入ctags -e时,它返回一个错误,说它不知道该命令行选项。我认为它应该知道 exuberant 标签,因为它etags适用于 cli。

此外,我收到以下错误:ctags: unrecognized option --langdef=arc我的 ~/.ctags 文件中有以下内容:

0 投票
2 回答
3247 浏览

cygwin - 知道为什么 ctags 不会在 Cygwin 上递归吗?

我每次运行时都会收到“跳过 XXX:它不是常规文件” ctags -R XXX。出于某种原因,Cygwin 上的 ctags 不是递归目录。当然,我一定是在做一些愚蠢的事情。

每当我在项目根目录中尝试事实上的标准ctags -R时,它都会抱怨我没有指定任何输入文件。当我指定一个目录时,它似乎认为它是一个文件。

我有点难过。上周我从头开始安装了一个新的 Cygwin 版本。我安装了所有东西。我很少使用 Cygwin。ctags 在我所有的 BSD、Linux、Mac 和 Solaris 机器上都能完美运行。

我认为 Perforce 的只读权限可能是罪魁祸首,但chmod 777没有任何改变。

有任何想法吗?我应该从源代码重新编译吗?

0 投票
1 回答
901 浏览

java - 为动态调用的方法生成调用层次结构

当今动态调用、反射和运行时注入的世界与ctagsdoxygen和 CDOC 等传统工具并不能很好地配合使用。

我正在寻找可以显示静态和动态方法调用的方法调用层次结构可视化工具。它应该易于使用,在执行过程中轻便,并提供有关记录的运行时会话的有用详细信息。

现在我猜Callgrind可以被认为是 C 族的有效解决方案。

您建议使用什么工具/技术为基于 JVM 的字节码的静态和动态方法调用创建调用图?预期的最终结果是图形显示(最好是交互式的),它可以显示从 main() 到被调用的每个方法的路径。

在研究这篇文章的过程中,我偶然发现了javashot,这似乎是我想要的一种方法,我希望这将被集成到一种探查器或类似的东西中,而不是可以在我的 IDE 中使用( Eclipse、IntelliJ、Netbeans 等)。

谢谢你,马克西姆。

0 投票
3 回答
3265 浏览

emacs - Emacs:标签文件有问题?

我正在使用 ctags 为我的 Emacs 创建标签以使用 cygwin 从中读取符号。

Emacs 说“访问标签表缓冲区:文件 /home/superman/tags 不是有效的标签表”

这是我查找文件和生成标签的选项。

0 投票
1 回答
1668 浏览

c++ - 为 C/C++ 标准库、boost 和第三方库设置单独的 ctags db

我想为各种库设置单独的 ctags 数据库以/usr/include/用于OmniCppComplete

这个想法是能够仅提取目标语言(C 或 C++)中特定项目所需的库。

例如,我想要一个用于标准 C 库的数据库,一个用于可能被 C 或 C++ 程序使用的系统库(想到套接字/网络),一个用于标准 C++ 库/STL / Boost,然后是各种第三方库的其他数据库,例如 QT 或 glib。然后我可以简单地通过输入set tags+= ~/.vim/somelib.tagsvim 来获取一些东西。

我假设与 C++ stdlib 和 STL 相关的/usr/include/c++所有内容都在/usr/include/boost. 不幸的是,标准 C 库和系统库似乎只是直接/usr/include/与各种其他东西一起倾倒。

如何获取哪些文件和目录属于哪些库的列表?我在 Ubuntu 8.04 上。

0 投票
4 回答
6935 浏览

c++ - 为 Boost 生成合理的 ctags 数据库

我正在运行 Ubuntu 8.04 并运行了以下命令:

为我的系统上的标准 C++ 库和 STL ( libstdc++ ) 生成一个 ctags 数据库,以便与OmniCppComplete vim 脚本一起使用。这给了我一个非常合理的 4MB 标签文件,它似乎工作得很好。

但是,当我对已安装的 Boost 标头运行相同的命令时:

我最终得到了一个 1.4 GB 的标签文件! 我还没有尝试过,但这似乎太大而无用。有没有办法为我安装的 Boost 标头获取更纤薄、更可用的标签文件?

编辑

请注意,libstdc++ 包括 TR1,其中包含 Boost 库。因此,对于 libstdc++ 输出 4 MB 标签文件和 Boost 最终输出 1.4 GB 标签文件,一定有一些奇怪的事情发生。

刚刚在 Boost 邮件列表中遇到了这个:

Boost-users Boost 和自动补全

答案

感谢 Neg_EV 找出问题所在,但解决问题的方法比他建议的要好得多:

确保安装了 apt-file,然后运行以下命令

(我将库标签保存在 ~/.vim/tags/ 中):

我已经升级到 Ubuntu 10.04 和 Boost 1.40,这就是我测试这个解决方案的原因,但据我所知,它应该适用于任何 Boost 版本。

0 投票
2 回答
2109 浏览

c++ - Vim + OmniCppComplete:在作为 STL 容器的类成员上完成

作为 STL 容器的类成员的完成失败。

作为 STL 容器的本地对象的完成工作正常。

例如,给定以下文件:

我使用以下方法为这两个文件生成了标签:

当我输入temp.cpp 时,我得到了string预期的成员函数列表。但是如果我输入str.omnicppcomplete 会吐出“找不到模式”。

我注意到temp.只有在我有using std::string;声明的情况下才能完成。

如何完成对属于 STL 容器的班级成员的工作?

编辑

我发现如果我对标头进行以下修改,则对 STL 容器的成员的补全是有效的:

基本上,如果我添加using std::string;然后std::从成员中删除名称空间限定符string str;并重新生成标签文件,那么 OmniCppComplete 能够在str..

我是否let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]设置在.vimrc.

问题在于将using声明放在头文件中似乎是一个很大的禁忌,所以我又回到了原点。

0 投票
1 回答
469 浏览

emacs - 如何让 emacs 宏等待 cscope 查询结果?

我正在尝试编写一个宏,它调用缓冲区cscope-find-functions-calling-this-function中显示的文件中的每个标签*Tags List*(由list-tags命令创建)。这应该创建一个缓冲区,其中包含调用某个文件中定义的一组函数的所有函数的列表。

我只是将点定位在标签列表缓冲区中第一个标签的开头,然后运行以下键盘宏来执行此操作。这是键盘宏中的击键顺序:

问题: 我在缓冲区中没有得到任何结果,我发现这是因为步骤 3-7 甚至在 cscope 打印在步骤 1-2 中进行的查询结果之前执行。

我可以使用 Cx q 在宏中插入暂停,但我希望宏在第 2 步之后等待,直到 cscope 返回结果,然后自动继续。我怀疑这是不可能通过宏实现的,也许是 LISP 函数......我自己不是 lisp 专家。有人可以帮忙吗?谢谢!


细节:

  • 我安装了Icicles,所以默认情况下,我在当前缓冲区中的点处获取单词作为 minibuffer 中的输入。
  • F11 必然 cscope-find-functions-calling-this-function
  • windmove已安装并 Cx <right> (Cx ESC o - 如下所示) 将您带到右侧窗口。
  • F7 绑定 append-results-to-buffer的定义为:

此函数只是将当前标记的区域附加到名为“c1”的缓冲区。

0 投票
9 回答
8810 浏览

objective-c - 使用 Objective-c 替代 Ctags/Cscope?

在 Objective-c 支持下,是否有 ctags 和 cscope 的替代品。这确实与可可开发有关,所以我似乎不可避免地会使用 Xcode(并且可能应该)。我只是想知道我的 Vim 选项是什么。

也许有某种类型的插件系统,比如 eclim,但是对于 xcode?

编辑

所以似乎除了更新ctags来支持objective-c之外,我运气不好。有谁知道cscope是否相同?