информация о ctags для встроенных функций в PHP / Python / Etc

#php #python #function #vim #ctags

#php #python #функция #vim #ctags

Вопрос:

Могу ли я каким-либо образом заставить 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:» с классами, есть ли какой-либо способ для этого также включить функцию инициализации?

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

Комментарии:

1. Поможет ли выполнение, ctags -R за ctags --append -R /path/to/python-source которым следуют?

2. Не приведет ли это к тому, что в конечном итоге я получу функции, определенные в исходном коде python (который является C), а не встроенные функции при написании кода на python?

3. Кажется, работает с библиотекой / папкой в исходном коде Python, так что, да, работает, спасибо

Ответ №1:

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. Это действительно работает для python, но теперь я все еще застрял на PHP, все еще спасибо за вашу помощь ^^

Ответ №2:

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

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

Комментарии:

1. Вы проверили вывод ctags --list-languages ? Вы заметили, что ваша ссылка действительно использует ctags ?

2. Я сделал, и я просто говорил, что поддержка python может быть не такой полной.

3. Python действительно работает, теперь мне просто нужно выяснить функции PHP по умолчанию :/