配置 Flycheck 以使用 C++11
Configuring Flycheck to work with C++11
我在为 C++11 配置 flycheck 时遇到了很大的问题。现在,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")))
但是,我不建议这样做。相反,使用 Directory Variables 配置每个项目的语言标准。
使用 C-x d
在 Dired 中打开项目的根目录,然后键入 M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11"
。这将在项目的根目录中创建一个 .dir-locals.el
文件。每当您从该目录或任何子目录访问文件时,Emacs 都会读取该文件,并根据该文件中的规则设置变量。具体来说,Emacs 现在将为您项目中的所有 C++ 文件将 Flycheck 语法检查的语言标准设置为 C++ 11。
已经很好的答案了。我只是想补充一点,如果你使用 clang
代替,那么需要修改的变量是 flycheck-clang-language-standard
.
我在为 C++11 配置 flycheck 时遇到了很大的问题。现在,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")))
但是,我不建议这样做。相反,使用 Directory Variables 配置每个项目的语言标准。
使用 C-x d
在 Dired 中打开项目的根目录,然后键入 M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11"
。这将在项目的根目录中创建一个 .dir-locals.el
文件。每当您从该目录或任何子目录访问文件时,Emacs 都会读取该文件,并根据该文件中的规则设置变量。具体来说,Emacs 现在将为您项目中的所有 C++ 文件将 Flycheck 语法检查的语言标准设置为 C++ 11。
已经很好的答案了。我只是想补充一点,如果你使用 clang
代替,那么需要修改的变量是 flycheck-clang-language-standard
.