У меня возникли проблемы с настройкой flycheck для С++ 11. Прямо сейчас, flycheck отмечает такие вещи, как std::to_string()
. Контроллер, который я использую, просто g++. Что я могу добавить в файл .emacs, чтобы флайчех предположил, что С++ 11 по умолчанию?
Настройка Flycheck для работы с С++ 11
Ответ 1
Flycheck предоставляет для этой цели опцию flycheck-gcc-language-standard
. Вы не должны устанавливать его глобально, потому что это нарушит проверку файлов C, но вы можете установить его из c++-mode-hook
со следующим кодом в файле инициализации:
(add-hook 'c++-mode-hook (lambda () (setq flycheck-gcc-language-standard "c++11")))
Однако я бы рекомендовал против этого. Вместо этого используйте Переменные каталога для настройки стандарта языка для каждого проекта.
Откройте корневой каталог вашего проекта в Dired с помощью C-x d
, а затем введите M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11"
. Это создаст файл .dir-locals.el
в корневом каталоге вашего проекта. Emacs читает этот файл всякий раз, когда вы посещаете файл из этого каталога или любого подкаталога и задаете переменные в соответствии с правилами этого файла. В частности, Emacs теперь установит языковой стандарт для проверки синтаксиса Flycheck на С++ 11 для всех файлов на С++ в вашем проекте.
Ответ 2
Очень хорошие ответы. Я просто хочу добавить, что если вместо этого использовать clang
, тогда необходимо изменить переменную flycheck-clang-language-standard
.