#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 по умолчанию :/