exuberant ctags исключают не входящий в состав конструктор переполнение стека

Когда я пытаюсь перейти к определению класса, очень удобно иметь уникальную запись в ctags. Конструкторы разделяют имя класса и приводят к созданию дополнительных записей ctags, которые усложняют навигацию. Например, в Vim, g<c-]> будет переходить к ctag без запроса, если есть одна запись, но заставит пользователя вручную устранять неоднозначность в других случаях.

Я не хочу пропустить конструкторы вне строки, которые могут где-то скрываться, но я согласен с отсутствующими конструкторами в теле основного класса (даже если само тело довольно велико).

Вот шаблон класса в файле foo.cpp,

template <typename T> class LinkedList {
public:
T head;
LinkedList<T> *tail;

LinkedList(T item) : head(head), tail(nullptr) {}
};

И вот ctags -f- foo.cpp (для обильных ctags 5.8).

LinkedList  foo.cpp /^  LinkedList(T item) : head(head), tail(nullptr) {}$/;"   f   class:LinkedList
LinkedList  foo.cpp /^template <typename T> class LinkedList {$/;"  c   file:
head    foo.cpp /^  T head;$/;" m   class:LinkedList    file:
tail    foo.cpp /^  LinkedList<T> *tail;$/;"    m   class:LinkedList    file:

Вход LinkedList foo.cpp /^ LinkedList(T item) ... f class:LinkedList это не так интересно.

Было бы довольно просто написать сценарий для анализа вывода ctags и исключения вещей, которые выглядят как конструкторы вне строки, или для применения некоторой эвристики … Мне интересно, есть ли более общий / традиционный / Принято решение о деклаттерации вывода ctags.

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]