Emacs / Cedet.Несколько проектов и завершение кода - PullRequest
8 голосов
/ 20 октября 2010

Я настроил emacs 23.1.50.1 с CEDET 1.0 и ECB 2.40 (воодушевленный настройкой Алекса Отца на http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el и его мягким введением в Cedet (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html), спасибо Алекс).Это работает довольно хорошо, но мне нужно больше понимания того, как обрабатывается завершение кода и ссылки на символы при работе с несколькими проектами.

Я создал простой проект ede, подобный этому:

(ede-cpp-root-project "test"
                      :file "~/src/sw/anchor"
                      :include-path '("/Common")
                      :system-include-path '("~/include"))

Когда этот проект загружен, Semantic будет искать только дополнения в различных каталогах, указанных в конфигурациях проекта?

Я следовал http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend, чтобы использовать cscope в качестве бэкэнда для semanticdb.Я могу запустить semanticdb-enable-cscope-in-buffer без emacs, выдающего какие-либо ошибки, но я понятия не имею, использует ли semantic мою базу данных.Могу ли я добавить ссылку на cscope.out в моем определении проекта, чтобы иметь больше контроля над тем, какие файлы искать в моем текущем контексте?

Пара странностей:

Когда я пытаюсь открыть новый исходный файл, я получаю сообщение об ошибке «apply: Поиск программы: нет такого файла или каталога, глобальный», и ничего не происходит.Если я пытаюсь открыть его снова, все в порядке.

Когда я пытаюсь загрузить проект, указывая на файл привязки, я получаю эту ошибку: "if: Неверный аргумент типа: class-p, ede-CPP-корень "

1 Ответ

5 голосов
/ 21 октября 2010

Когда вы получаете ошибки в вашей конфигурации, лучшее, что нужно сделать, это:

M-x toggle-debug-on-error RET

и получите трассировку стека, которая укажет на проблемную область. Часто это полезно при определении проблемы конфигурации.

CEDET будет пытаться связать каждый файл с одним проектом, и все команды, работающие в этом буфере, будут ограничены пределами этого проекта. Для поддержки CScope он также будет использовать EDE для определения корневого каталога, что поможет найти файл cscope.out, который связан как с инструментами завершения, так и с инструментами справки.

Исключением, конечно же, является системный путь включения, который обычно / usr / include или что-то еще. Это дополнение к пути включения системы по умолчанию, которое рассчитывается с поддержкой GCC. В одном из ваших файлов C вы можете сделать:

M-x semantic-c-describe-environment RET

и это должно показать, что Semantic попытается использовать.

Чтобы дважды проверить, используется ли CScope для завершения кода, вы можете проверить с помощью:

M-x semanticdb-find-test-translate-path RET

и проверьте конец списка на предмет CScope.

...