Предположим, что я редактирую буфер, содержащий C код.
Я запустил семантический с semantic-load-enable-code-helpers
.
У меня есть точка, помещенная в название функции. Если я затем вызываю senator-jump
Я могу перейти к месту, где это fn сначала объявляется в том модуле. Если существует объявление экстерна в том модуле, то это переходит к тому оператору экстерна. Иногда? Иногда это не работает, все же.
Существует также semantic-ia-fast-jump
, который переходит к первому объявлению, также. Я не уверен, как этот fn отличается от senator-jump
. Этот на самом деле работает все время, тем не менее, на функции, определяемые в локальном буфере.
Кто такой, если это функция я хочу перейти к, экстерн? Действительно ли возможно использовать сенатора для перехода к определению fn, если то определение находится в отдельном модуле? Разве ЭДЕ, как предполагается, не делает что-то вроде этого?
Спасибо.
Обратитесь к функции semantic-ia-fast-jump, определенной в semantic-ia. Для C и C++ также неплохо сгенерировать базу данных с gtags из GNU Global - в CEDET есть поддержка этого.
P.S. Я только что проверил - он перескочил из моего исходника на объявление std::string в /usr/include/....
Я не использовал сенатор, но вам не подходят etags? Я создаю таблицу тегов для всех .c
. и файлы .h
, используя
find . -name \*.c -o -name \*.h | xargs etags
, а затем используйте find-tag
(по умолчанию привязанный к M - . ) и переходите к соответствующее определение. pop-tag-mark
(привязанный по умолчанию к M - * ) можно использовать для возврата туда, откуда вы пришли.
У меня он работает нормально, но я использую его в основном при просмотре кодовых баз больших проектов, а не при редактировании C.