Информация о ctags для встроенных функций в PHP / Python / Etc - PullRequest
5 голосов
/ 22 мая 2011

Есть ли способ заставить ctags каким-то образом поддерживать встроенные функции, предоставляемые PHP / Python (или с чем бы я ни работал в данный момент), чтобы я мог также использовать их в Source Explorer в vim и так?

Обновление:

Хорошо, поэтому с python я могу просто запустить ctags в исходной папке, чтобы получить файл тегов со встроенными функциями, хотя с PHP это не работает, однако исходные файлы PHP содержат строки, подобные следующим:

/* {{{ proto resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])

Так что, если бы я мог как-то разобрать это с помощью ctags, я бы получил соответствующие функции в моем файле тегов. Я попытался использовать --regex-C, чтобы он поднял его, но следующее, похоже, не сработало.

--regex-C='/\/\* \{\{\{ proto ([^ ]+) ([^ (]*)/\2/f/'

Есть идеи, как заставить это работать?

Также с python я, кажется, получаю строку "class ClassName:" с классами, есть ли способ для этого также включить функцию init ?

Обновление: Я просто создам отдельный вопрос для PHP, спасибо за ответы.

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

ctags позволяет постепенно наращивать базу данных тегов с опцией --append;если вы хотите, чтобы определение C для подпрограмм Python (многое - некоторые - немного - реализовано непосредственно в C, некоторые - в самом Python) вы можете выполнить:

ctags -R
ctags --append -R /path/to/python-source

Если вам нужна только частьисходный код Python включен, вы можете дать только эту часть;как вы сказали в своем комментарии, Lib/ - это место для начала:)

ctags -R
ctags --append -R /path/to/python-source/Lib

Учитывая, что большинство интерпретируемых языков (и даже языков, скомпилированных с байт-кодом) заканчивают тем, что реализуют изрядное количество своего интерфейсав C за кулисами может быть трудно иметь плавные переходы между вашим источником и источником API, на которые вы полагаетесь.

Я считаю полезным иметь несколько баз данных для исходного кода;иногда на вопросы лучше всего отвечать cscope, иногда gid, иногда ctags.ctags превосходно подходит для интеграции в vim, но gid часто проще для сценариев.

1 голос
/ 22 мая 2011

ctags имеет много проблем с синтаксисом python, потому что он пытается найти фигурные скобки, а у python их нет.

Я бы сказал, посмотрите на это .

...