Семантические дополнения Emacs CEDET «не удается найти типы для …»

#c #emacs #cedet

#c #emacs #cedet

Вопрос:

Поэтому в процессе перехода на 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 с помощью bazaar, а затем скомпилировал ее byte. Я не настраивал проект, потому что все мои проекты основаны на cmake, и у них нет единого пути для включенных файлов. каждая вложенная библиотека моего проекта имеет заголовки в одном каталоге. Есть ли способ проанализировать CMakeLists.txt и передать эту информацию в ede или semantic? Даже если этого не было, этот базовый пример должен работать. Я делаю что-то не так?

Ответ №1:

Ну, на случай, если у кого-нибудь снова возникнет эта проблема, мне удалось решить ее, настроив мои файлы инициализации 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))