У меня возникают значительные проблемы с настройкой flycheck для C ++ 11. Прямо сейчас, flycheck помечает такие вещи, как std::to_string()
, Я использую чекер просто g ++. Что я могу добавить в файл .emacs, чтобы flycheck по умолчанию принимал C ++ 11?
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 на C ++ 11 для всех файлов C ++ в вашем проекте.
Очень хорошие ответы уже. Я просто хочу добавить, что если вы используете clang
вместо этого, переменная должна быть изменена flycheck-clang-language-standard
,