Семантические дополнения Emacs CEDET "не удается найти типы для ..." - PullRequest
3 голосов
/ 03 ноября 2011

Так что в процессе перехода на emacs мне очень трудно отказаться от Visual Studio 2010 для C ++. Попытка настроить cedet для emacs не облегчила задачу. Поэтому я использовал мягкое вступление Алекса Отта, и мой файл инициализации выглядит примерно так:

(load-file "~/.emacs.d/plugins/cedet/common/cedet.el")
(global-ede-mode 1)     
(semantic-load-enable-excessive-code-helpers)
(require 'semanticdb)
(global-semanticdb-minor-mode 1)
(setq semantic-ectag-program "C:/devel/ctags/ctags58/ctags.exe")
(semantic-load-enable-secondary-exuberent-ctags-support)
(require 'semantic-ia)
(require 'semantic-gcc)
(setq-mode-local c-mode semanticdb-find-default-throttle
                          '(local unloaded system recursive))
(ede-enable-generic-projects)
(global-srecode-minor-mode 1)

Все хорошо, но когда я пытаюсь открыть файл cpp с заголовком (array_loader.h) в той же директории и пытаюсь выполнить завершение кода для метода register_reader ():

array_loader al; al.register_reader();

Я получаю "не могу найти типы для 'array_loader al'". Как ни парадоксально, режим автозаполнения работает без проблем. Они мешают?

Я только что проверил бета-версию 1.1, используя базар, а затем скомпилировал ее. Я не настраивал проект, потому что все мои проекты основаны на cmake, и у них нет единого пути для включаемых файлов. каждая подбиблиотека моего проекта имеет заголовки в том же каталоге. Есть ли способ проанализировать CMakeLists.txt и передать эту информацию в ede или семантическую? Даже если бы не было этого базового примера, он должен работать. Я что-то не так делаю?

1 Ответ

3 голосов
/ 16 ноября 2011

Что ж, если у кого-то снова возникла эта проблема, мне удалось ее решить, настроив файлы инициализации cedet, как указано Алексом Оттом:

https://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el

Также я определил свой cmakeи использовал рекурсивный поиск, чтобы просмотреть папки моего проекта cmake, чтобы найти заголовки.Все еще странно, что внешние по отношению к проекту файлы cpp не смогли найти сигнатуру классов / методов, хотя они были определены в заголовках, найденных в той же папке.дроссель semanticcdb был установлен следующим образом

(setq-mode-local cpp-mode semanticdb-find-default-throttle 
                      '(project local unloaded system recursive)) 
...