Ответ 1
Для этих точных требований вам, вероятно, придется создать их сами: (
Я использую файлы тегов для завершения кода и для быстрого, встроенного просмотра параметров, перегрузок, файлов (где объявлено) и т.д. Где могу ли я найти свободно доступные теги для стандартных библиотек C99, С++ 03 и С++ 0x? (C89 лучше, чем ничего, но я бы предпочел иметь C99.)
Я предпочитаю теги без трещин; например реализация использует зарезервированные имена для параметров, поэтому вместо "std:: min (_M_a, _M_b)", я бы предпочел увидеть "std:: min (a, b)". Эта и другие проблемы исключают генерирование из фактических реализаций. Хотя я полагаю, что некоторая постобработка может очистить их (особенно проблему с идентификатором), похоже, что было бы проще писать с нуля.
Для этих точных требований вам, вероятно, придется создать их сами: (
Как правило, трудно извлечь теги из libc
, потому что объявления функций, вероятно, будут реализованы в заголовках как сложные макросы. Можно использовать nm
для поиска списка символов, экспортируемых библиотекой, но это не относится к списку параметров.
Я думаю, что лучшим решением здесь является анализ документации:
Вот список всех функций и макросов, экспортированных libc
в легко анализируемом формате:
http://www.gnu.org/s/libc/manual/html_node/Function-Index.html#Function-Index
Каждая функция ссылается на страницу, в которой перечислены параметры для этой функции, также в предсказуемом формате:
http://www.gnu.org/s/libc/manual/html_node/Block-Input_002fOutput.html#index-fread-1010
Анализ страниц довольно прост с использованием модуля BeautifulSoup
Python.
создайте себе библиотеку тегов, используя ctags в каталоге заголовков, как написано в блоге post, который вы указываете в своем вопросе
Это не полный ответ. Кто-то опубликовал perl script, чтобы извлечь теги из документации SGI STL. Он не включает имена параметров функции. Поскольку он работает над документацией, нет крути. Надеюсь, это немного помогает.
Если получение стандартных библиотек является основной проблемой, clang vim plugin делает это достаточно хорошо, не используя теги вообще. Однако в пополнениях есть еще какой-то параметр "cruft", поскольку он использует символы, используемые заголовком.
В основном вы просто отбрасываете один файл в ~/.vim/plugin, устанавливаете clang, и он работает. Гораздо проще, чем маршрут omnicomplete. Единственная проблема, с которой я до сих пор сталкивалась в своем ограниченном использовании, заключается в том, что она иногда медленно подходит к завершению.