Я переустановил emacs 24.2.50 на новом хосте linux и начал новую конфигурацию dotEmacs на основе magnars конфигурации emacs. Поскольку я использовал CEDET для некоторых успехов в моем предыдущем рабочем процессе, я начал настраивать его. Однако при загрузке исходного файла на С++ существует какое-то странное поведение.
[Эта часть решена]
Как и ожидалось, семантический анализ всех включенных файлов (и во время начальной настройки анализирует все файлы, указанные переменными с семантической добавкой-системой-include), но выводит это сообщение об ошибке, которое выглядит следующим образом:/p >
WARNING: semantic-find-file-noselect called for /usr/include/c++/4.7/vector while in set-auto-mode for /usr/include/c++/4.7/vector. You should call the responsible function into 'mode-local-init-hook'.
В приведенном выше примере ошибка печатается для вектора STL, но соответствующее сообщение об ошибке печатается для каждого файла, включенного в тот, который я посещаю, и последующего включения. В результате требуется довольно много времени, и, к сожалению, процесс повторяется любым типом, я открываю новый буфер.
[Эта проблема также решена]
Кроме того, похоже, что синтаксический анализ на самом деле не работает, когда я помещаю точку выше примитивного типа non-c (т.е. Не int, double, float и т.д.) Вместо того, чтобы печатать определение типа в modeline сообщение об ошибке, например
Idle Service Error semantic-idle-local-symbol-highlight-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, (((0) \"IndexMap\"))"
Idle Service Error semantic-idle-summary-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, ((\"fXBetween\" 0 nil nil))"
где DEPFETResolutionAnalysis.cc - это файл и буфер, которые я сейчас редактирую, а IndexMap и fXBetween - это типы, определенные в файлах, включенных в файл, который я редактирую/какой-либо файл, который входит в файл, который я редактирую.
Я не тестировал никаких дополнительных возможностей CEDET/semantic, так как проблема довольно раздражает. Моя конфигурация cedet находится здесь здесь.
EDIT: С помощью Alex Ott я решил первую проблему. Это было из-за моей ужасной инициализации седе. Посмотрите его первый ответ на правильный способ настройки CEDET!
Все еще остается проблема с Idle Service Error
(которая при включении global-semantic-idle-local-symbol-highlight-mode
возникает постоянно, причем не только при проверке определения типа в точке).
И есть новая проблема, как отключить файл инициализации сайта.
EDIT2: Я выполнил semantic-debug-idle-function
в буфере, где возникла проблема, и он выдает выход ~ 700kb [sic!]. Похоже, что он выполняет некоторые операции над контейнером данных, который, по внешнему виду, содержит информацию обо всех символах, определенных в проанализированных файлах. Поскольку я проанализировал довольно большой пакет (~ 20 Мб исходных файлов), эта таблица довольно большая. Может ли семантическая обработка базы данных большой или это невозможно и причина моей проблемы?
EDIT3: Удаление содержимого ~/.semanticdb
, а повторное использование всех включает в себя трюк. Мне все еще нужно отключить файлы инициализации сайта, но поскольку это не связано с CEDET, я закрою этот вопрос (вопрос, связанный с файлами init-wise, можно найти здесь).