Javascript 如何组合多个CTAG,如标签工具?

Javascript 如何组合多个CTAG,如标签工具?,javascript,ruby,trace,ctags,jsctags,Javascript,Ruby,Trace,Ctags,Jsctags,Ctags是最著名的标签工具。然而,CTAG也有一些缺点,不同的目标语言也有一些更好的选择 例如,对于Ruby,我更喜欢使用。对于JavaScript,人们经常使用。也有类似的东西 所以,我的问题是,如何集成或组合这些工具? 是否可以编写shell脚本(或其他内容),例如:omni-tags,这样我就可以对所有类型的文件使用omni-tags。它会根据文件类型自动调用不同的标记工具 有时一个项目中有多个文件类型,因此如果我们可以使用统一的工具来生成标记,将更加方便 谢谢。假设您处理的项目只有一种

Ctags是最著名的标签工具。然而,CTAG也有一些缺点,不同的目标语言也有一些更好的选择

例如,对于Ruby,我更喜欢使用。对于JavaScript,人们经常使用。也有类似的东西

所以,我的问题是,如何集成或组合这些工具? 是否可以编写shell脚本(或其他内容),例如:
omni-tags
,这样我就可以对所有类型的文件使用
omni-tags
。它会根据文件类型自动调用不同的标记工具

有时一个项目中有多个文件类型,因此如果我们可以使用统一的工具来生成标记,将更加方便


谢谢。

假设您处理的项目只有一种特定的源代码,那么您假设的
omni-tags
命令很容易在shell或任何脚本语言(Perl、Python、Ruby等)中实现。只需递归扫描一个项目目录,查找其中主要的文件类型(通过匹配文件扩展名,或使用Unix
file
程序),然后运行与特定类型的源文件关联的标记生成程序

如果您有一个包含多种语言代码的项目,这将变得更加困难,但并非不可能。一个例子是RubyGem,它包含Ruby
.rb
源文件和一些实现本机c扩展的
.c
.h
文件。在这种情况下,Ruby和C文件通常是完全分开的——即,gem根目录下的一个目录树都是Ruby,另一个是全部C。因此可以编写
omni标记
来识别这种情况,并在
.C
.h
文件上运行
ctags
,在
.rb
文件上运行
裂土器标记
。由于大多数编辑器可以为每个项目集成多个标记文件(至少,我知道Emacs可以),因此您可以在C源代码中定义的符号和Ruby源代码中使用的符号之间导航(例如)

最棘手的部分是如何处理混合了多种语言的代码库,您需要标记这些代码库。例如,对于JavaScript示例,您是否可能有一个同时包含JavaScript和CoffeeScript文件的目录?在这种情况下,
omni标记
需要在每个源文件上运行适合于每种语言的工具。如果将标记生成工具编写为忽略任何类型不正确的文件,则可以从项目的根目录运行每个文件,然后再次使用集成多个标记文件的编辑器。如果工具只需要输入正确类型的文件,则
omni tags
需要建立相关文件的索引,然后只向每个工具输入正确文件的名称。这不是不可能的,但需要更多的工作(与第一段中描述的最简单的情况相反,这可能在大约10行Python或Ruby中实现)