最近,我放弃Taglist
了Tagbar
。Tagbar
对除 PHP 之外的所有语言都按预期工作。它将类、方法和变量列出到它们各自的类别中,而不是将方法和变量显示到它们各自的范围内。
我开始知道ctags
对 PHP 的支持很差。
有什么方法可以改进ctags
和Tagbar's
支持 PHP 吗?我正在寻求某种黑客或调整,或任何其他方式。
我刚刚使用PHP_Parser作为语法解析后端编写了一个名为phpctags的工具来生成 ctags 兼容索引文件和一个名为tagbar-phpctags 的 tagbar插件插件来增强对 tagbar 的 PHP 支持。
方法和属性,甚至在函数中分配的局部变量现在都可以在它们自己的范围内列出,以及它们的访问信息。
也许这些会有所帮助。
不幸的是,对此没有简单的答案。ctags PHP 解析器只使用正则表达式,结果——正如您所注意到的——是缺少对范围的支持。
有两种方法可以让适当的范围支持工作:有人必须为 ctags 编写一个实际的递归解析器模块,或者一些其他可以以 ctags 兼容格式输出标签的程序。理论上,这甚至可以用 PHP 编写,这可能会更容易——也许已经有一些功能可以访问 AST,然后只需要以正确的格式打印出来。但在有人这样做之前,恐怕没有真正的方法可以在 Tagbar 中正确显示 PHP 范围,因为它必须依赖 ctags 提供给它的信息。