Я создаю IDE и хочу реализовать переход к определению.
Я нашел идеальный инструмент для этого: ctags (https://github.com/universal-ctags/ctags)
Теперь единственная проблема заключается в том, что тегиФайл, который создает ctags, выглядит примерно так:
QLineNumberArea 2point56mb.py /^class QLineNumberArea(QWidget):$/;" c
Я понимаю формат: {tagname} Tab {tagfile} Tab {tagaddress}
Итак, из чего японять: tagname
: QLineNumberArea, tagfile
: 2point56mb.py и tagaddress
: / ^ class QLineNumberArea (QWidget): $ /; "c`
Тег-адрес выглядит как бред, но это vim /Команда бывшего редактора, которая приведет вас к определению.
Теперь из того, что я прочитал на этом сайте: https://github.com/cztchoice/ctags/wiki/Tag-Format
Под Security
указано:
Specifically, these two Ex commands are allowed:
A decimal line number:
89
A search command. It is a regular expression pattern, as used by Vi, enclosed in // or ??:
/^int c;$/
?main()?
Теперь возникает проблема:
В моем файле тегов должен быть номер строки, а не команда поиска. Я попытался найти документацию для ctags (http://docs.ctags.io/en/latest/), но не смог найти ничего, что могло бы мне помочь.
Кто-нибудь знает, как заставить ctags давать адреса тегов в виде номера строки, а не команды поиска?