Emacs, Cedet и семантика
Я настроил CEDET для emacs, следуя статье Алекса (отлично!!). Теперь вопросы:
- Я создал GTAGS с Gnu Global в моем
/usr/include
Как я могу проверить, если семантика использует GTAGS? - Могу ли я сохранить свои GTAGS в другом каталоге и дать указание семантике использовать этот каталог?
- В источниках C/C++ завершение оператора include (из системных заголовков) не перечисляет все доступные заголовки. Хорошо, это глупая проблема.. но заставляет меня думать, что что-то не работает правильно
1 ответ
Вы можете использовать команду:
M-x semantic-c-describe-environment RET
чтобы узнать о вашем пути включения и настройках макроса CPP.
Чтобы проверить использование GNU Global, вы можете использовать:
M-x semanticdb-test-gnu-global RET printf RET
искать "printf" в каком-то проекте. Поскольку в вашем проекте (возможно, в /home/you/myproject) отсутствует printf, он потерпит неудачу, но если вы открыли файл в /usr/include и выполнили ту же команду, он, вероятно, идентифицирует printf.
Более общий способ задать вопрос о GNU Global:
M-x cedet-gnu-global-version-check RET
Тем не менее, глобальная поддержка GNU лучше всего подходит в ситуациях, когда вы хотите иметь много и много предварительно проанализированных файлов, к которым вы обращаетесь нечасто. Как только к заголовку обращаются один раз (как для printf), глобальная база данных GNU больше не будет использоваться, потому что для нее будет создана эквивалентная семантическая база данных. Это необходимо, потому что GNU Global не предоставляет достаточно информации для умного завершения.