VIM: взломайте ctags или настройте тэгбар для лучшей поддержки PHP

Недавно я сдался Taglist за Tagbar, Tagbar работает как ожидается для всех языков, кроме PHP. Он перечисляет класс, методы и переменные в их соответствующие категории вместо отображения методов и переменных в их соответствующей области видимости.

Я узнал, что ctags имеет слабую поддержку PHP.

Есть ли способ улучшить ctags а также Tagbar's поддержка PHP? Я прыгаю за какой-то хак или твик, или любой другой способ.

2 ответа

Решение

Я только что использовал PHP_Parser в качестве механизма синтаксического разбора, написал инструмент phpctags для генерации ctags-совместимого индексного файла и дополнительный плагин для tagbar под названием tagbar-phpctags для улучшения поддержки PHP для tagbar.

Методы и свойства, даже локальные переменные, назначенные в функциях, теперь могут быть перечислены в их собственной области видимости, а также в информации о доступе.

Может быть, это могло бы помочь.

К сожалению, нет простого ответа на это. Парсер PHP ctags просто использует регулярные выражения, и в результате - как вы заметили - поддержка областей отсутствует.

Было бы два способа заставить работать правильную поддержку области действия: кто-то должен написать либо реальный рекурсивный модуль парсера для ctags, либо какую-то другую программу, которая может выводить теги в формате, совместимом с ctags. Теоретически это может быть даже написано на PHP, что может упростить его - возможно, уже имеется некоторая доступная функциональность, позволяющая получить доступ к AST, которую затем нужно будет просто распечатать в правильном формате. Но до тех пор, пока кто-то не сделает этого, я боюсь, что нет реального способа правильно отобразить области PHP в Tagbar, поскольку он должен полагаться на информацию, которая ему вручается.

Другие вопросы по тегам