emacs: существует ли семантический переход к объявлению (с использованием semantic.el)? - PullRequest
6 голосов
/ 07 мая 2010

Предположим, я редактирую буфер, содержащий C-код.

Я начал семантическую с semantic-load-enable-code-helpers.

У меня есть точка на имя функции.Если я затем вызову senator-jump, я могу перейти к тому месту, где этот fn впервые объявлен, в этом модуле.Если в этом модуле есть объявление extern, оно переходит к этому объявлению extern.Иногда?Иногда это не работает, хотя.

Существует также semantic-ia-fast-jump, который также переходит к первому объявлению.Я не уверен, чем этот fn отличается от senator-jump.На самом деле этот работает все время для функций, определенных в локальном буфере.

Что если функция, к которой я хочу перейти, является внешней?Можно ли использовать senator для перехода к определению fn, если это определение находится в отдельном модуле?Разве EDE не должен делать что-то подобное?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 07 мая 2010

Посмотрите на функцию semantic-ia-fast-jump, определенную в semantic-ia.Для C & C ++ также неплохо сгенерировать базу данных с помощью gtags из GNU Global - CEDET имеет поддержку для этого.

PS Я только что проверил - он перешел из моего источника в объявление std :: string в / usr /включают /....

1 голос
/ 07 мая 2010

Я не использовал сенатор, но у вас не работает etags?Я создаю таблицу тегов всего .c.h файлы, используя

find . -name \*.c -o -name \*.h | xargs etags

, а затем используйте find-tag (по умолчанию ограничено M - . ) и перейдите к соответствующему определению.pop-tag-mark (привязанный по умолчанию к M - *) может быть использован для возврата туда, откуда вы приехали.

Он отлично работает для меня, но я его используюв основном при просмотре больших кодовых баз проекта, а не при редактировании C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...