Используемые вами инструменты CEDET ограничены способностью Emacs отслеживать каждый символ во всем вашем проекте. Хорошей отправной точкой для регулирования того, что делает CEDET / Semantic, является semanticdb-find-default-throttle
. Если вы знаете, как организован ваш проект, вы можете отключить некоторые виды поиска, чтобы ускорить процесс.
CEDET проанализирует множество файлов, которые, по его мнению, могут вам понадобиться, что также заполнит память. В этом случае вы можете настроить semantic-idle-scheduler-max-buffer-size
, чтобы отключить синтаксический анализ больших файлов, semantic-idle-work-parse-neighboring-files-flag
, чтобы отключить анализ случайных соседних объектов, и `semantic-idle-work-update-headers-flag ', чтобы отключить анализ заголовков. Обратите внимание, что последние 2 значения по умолчанию равны nil, но они включены некоторыми функциями автоматической настройки.
CEDET / Semantic будет кэшировать много данных в памяти и создавать отсортированные таблицы поиска для повышения производительности. Если вы обнаружите, что много редактируете заголовочные файлы, эти изменения приводят к тому, что кэши устаревают и вынуждают их перестраивать. Если вы часто выходите из Emacs и перезапускаете его, это заставляет Semantic перезагрузить большие таблицы базы данных.
Другая возможность - установить semanticdb-persistent-path
, чтобы перечислять только те каталоги, которые вас очень волнуют. Это сократит сохраненные данные, которые не будут перезагружены. Если это необходимо, он будет выполнять повторный анализ по мере необходимости, но это поможет сохранить общее количество данных.
Вы также можете использовать semantic--before-fetch-tags-hook
для функции, которая возвращает ноль при различных условиях. Найдите файлы, для анализа которых требуется много времени из-за размера, задержки в сети или чего-либо еще, и установите их так, чтобы они никогда не анализировались. Это тоже сэкономит время.
Использование GNU Global - хороший способ ускорить процесс. Использование его с семантическим symref приведет к тому, что найденные файлы будут анализироваться для предоставления запрашиваемых данных для вывода на экран. С этим ничего не поделаешь.
Если вы нашли ошибку, указанную выше, если вы можете определить способ ее воспроизведения, сообщите о ней в списке рассылки cedet-devel, чтобы ее можно было исправить. Этот тип ошибки обнаруживался раньше, обычно когда глобальный тег GNU не удается преобразовать в буферный тег.
Чтобы отладить выход CEDET из-под контроля, используйте semantic-debug-idle-function
и semantic-debug-idle-work-function
, чтобы сузить круг. См. Выше о некоторой конфигурации там.
Вы можете использовать cedet-gnu-global-create/update-database
для обновления базы данных или добавить ее в ловушку. Я не думаю, что это вошло в документ.
Управление проектом сложно. Большинство встроенных проектов хороши для мелочей. Особенно большие проекты с пользовательскими системами сборки обычно требуют пользовательского типа проекта EDE. Создание новых проектов не так уж плохо. Если вы посмотрите на ede-linux или ede-emacs, вы можете понять основы. В своем пользовательском проекте вы можете свернуть все связанные проекты и переопределить такие функции, как макросы, включить каталоги и команды компиляции. Я должен был написать собственный проект для моей работы. Это было очень похоже на ede-linux с вещами, уникальными для того места, где я работаю.