Из семантических документов:
2.3.1 Не анализировать определенные буферы
Вы можете запретить синтаксический анализ, используя переменную semantic-inhibit-functions.
— Переменная: semantic-inhibit-functions Список функций, которые нужно вызвать без аргументов до того, как семантика установит буфер. Если какая-либо из этих функций возвращает ненулевое значение, текущий буфер не настроен на использование семантики.
Вы можете запретить синтаксический анализ очень больших файлов или файлов, которые вызывают определенные проблемы с семантикой.
Пример правильного использования:
;; Disable Semantic's source referencing in lisp buffers.
(add-hook 'semantic-inhibit-functions
(lambda () (member major-mode '(emacs-lisp-mode))))
Это добавляет его в список (вместо перезаписи списка) и гарантирует, что он запускается только после загрузки семантики.
Вы должны использовать with-eval-after-load
, так как семантический пакет может не быть загружен при инициализации вашей пользовательской конфигурации. И в этом случае вы получите сообщение об ошибке, говорящее о том, что переменная семантической-запретной-функции не существует, и ваше переопределение не будет применено.
Это устраняет эти проблемы и лучше, чем ответы @Tom и @Dmitry.
Да, и я настоятельно рекомендую блокировать emacs-lisp-mode, потому что в противном случае Semantic будет пытаться анализировать все дерево исходного кода работающего экземпляра Emacs всякий раз, когда срабатывает автодополнение, что зависает Emacs, если у вас много пакетов.
person
gw0
schedule
11.12.2016