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, поскольку он должен полагаться на информацию, которая ему вручается.