база данных ctag для Go - PullRequest
       28

база данных ctag для Go

23 голосов
/ 21 ноября 2011

Как создать файл тегов для исходного кода Go

В Mac я установил exuberant ctags и попробовал следующую команду в исходном каталоге

ctags -f gosource.tags -R `pwd`

Но он не учитывает файлы * .go. Должен ли я использовать опцию -h? Но разве это не только для заголовочных файлов, согласно инструкции?

Пожалуйста, дайте мне правильную команду, чтобы я мог использовать файл тегов с vim. Я также предпочитаю абсолютный путь, чтобы я мог хранить файл где угодно

Спасибо.

Edit: Я предположил, что текущие ctags поддерживают Go, видя http://groups.google.com/group/golang-nuts/browse_thread/thread/3a4848db231b02c9.

но, http://ctags.sourceforge.net/languages.html нет в списке.

Ответы [ 4 ]

40 голосов
/ 23 ноября 2011

Добавьте следующее в ~ / .ctags

--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/

(From http://go -wise.blogspot.com / 2011/09 / using-ctags-with-go.html )

17 голосов
/ 24 августа 2012
--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/f,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/v,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/t,type/

Действительно работает с ctags 5.8. Небольшое отличие от предыдущего постера: ctags требует уникальных 1-символьных типов на концах строк регулярного выражения. Таким образом, /d,func/ должно читаться /f,func/ интуитивно. Это позволяет ctags различать и идентифицировать типы, позволяя ctags --go-types=fvt, т.е.

3 голосов
/ 29 ноября 2014

Я видел ваш пост, немного суетился, пытаясь найти хороший инструмент для работы, пробовал ctags, и в итоге остался неудовлетворенным.Я написал программу gotags на Go, которая генерирует файл ctags для кода Go.Это лучше, чем текущая поддержка ctags, потому что, например, он помечает имена структурных полей, а также само имя структуры.Вы можете получить его здесь: https://github.com/necro351/gotags.

Хорошая короткая простая программа Go, потому что она использует стандартный синтаксический анализатор библиотеки и не имеет никаких дополнительных функций, кроме хорошего анализа и тегирования Go.Просто проверьте его (или получите его) и выполните установку.Кроме того, если у вас есть какие-либо предложения или идеи по его улучшению, сообщите мне.

Редактировать: Я активный суслик, и со временем буду обновлять этот инструмент и по мере его использования.

Edit: я больше не активно развиваю Go.Но мой инструмент очень короткий и в значительной степени работает как есть, поэтому он должен "просто работать":)

0 голосов
/ 21 ноября 2011

Check Go Dashborad / Проекты , раздел «Генераторы тегов».Статус этих инструментов мне неизвестен.

Редактировать 2011-11-22: Последний анонс egotags анонсирован сегодня (возможен циклический эталон;

...