Семантическое завершение emacs24

Я пытаюсь получить семантические дополнения, работая с emacs 24 и версией cedet, которая идет с ним. Завершения работают для классов, которые я определил в своем собственном исходном файле, но завершение не работает для стандартной библиотеки или STL. Вот моя конфигурация emacs:

(require 'cedet)
(require 'semantic)
(require 'semantic/ia)
(require 'semantic/bovine/gcc)
(semantic-add-system-include "/usr/include/c++/4.6.3" 'c++-mode)
(setq semantic-default-submodes
      '(global-semantic-idle-scheduler-mode
        global-semanticdb-minor-mode
        global-semantic-idle-summary-mode
        global-semantic-idle-completions-mode
        global-semantic-highlight-func-mode
        global-semantic-decoration-mode
        global-semantic-mru-bookmark-mode))
(setq semanticdb-default-save-directory "~/.semanticdb/"
  semantic-complete-inline-analyzer-idle-displayor-class 'semantic-displayor-ghost)
(semantic-mode t)

В моем каталоге ~/.semanticdb я вижу только "! Usr! Include! C++!4.6! X86_64-linux-gnu! Bits! Semantic.cache", который даже не использует версию, указанную в конфигурации.

Когда я, например, пытаюсь выполнить Mx semantic-analysis-возможных-дополнения в std::list, я получаю сообщение об ошибке: "Не удается найти типы для std::list"

Любые предложения о том, как отладить это или как это исправить?

1 ответ

Сегодня я устанавливал свежую Ubuntu 13.04 на мой новый SSD, и вот мои шаги по настройке CEDET (я проверил, что он дает дополнения для std::list).

Базовая настройка

  1. Получить свежий Emacs и собрать его из исходного кода. Это так же просто, как

    ./configure && make && sudo make install

  2. добавить в .emacs(семантический режим 1)

Вот и все настройки.

тестирование

  1. Запустите emacs без загрузки чего-либо:

    emacs -q test.cc

  2. введите код

    #include <list>

    int main() {
        std::list lst;
        lst.$
        return 0;
    }
    
  3. Mx semantic-mode

  4. с точкой на $, Мкс semantic-ia-show-variants

Поиск проблемы

Если что-то не работает, вполне вероятно, что semanticdb поврежден.

Просто найдите, где это, для меня это semanticdb-default-save-directory="~/.emacs.d/semanticdb" и удалите все оттуда.

Затем, при посещении исходного файла, позвоните semantic-force-refresh,

Другие вопросы по тегам