反讽模式不包括路径

时间:2013-11-28 12:31:03

标签: emacs cc-mode

我最近开始使用irony-mode在emacs(24.3.1)中完成。但是,我似乎无法添加其他系统包含路径来打包。

我在配置中有这个代码:

(defun ac-cc-mode-clang-hooks ()
  (yas/minor-mode-on)
  (auto-complete-mode 1)

  ;; avoid enabling irony-mode in modes that inherits c-mode, e.g: php-mode
  (when (member major-mode irony-known-modes)
       (irony-mode 1))

  ;; set compiler flags to include header files
  (setq irony-compile-flags '("-Iinc"))
  (irony-reload-flags))

(add-hook 'c++-mode-hook 'ac-cc-mode-clang-hooks)
(add-hook 'c-mode-hook 'ac-cc-mode-clang-hooks)

正确加载反讽模式并且完成工作完全适用于编译器明确知道的包含路径(即echo "" | g++ -v -x c++ -E -打印的所有内容)但附加包含路径inc未被拾取(无关紧要)无论是相对路径还是绝对路径)。

但是,如果我将信息添加到.clang_complete文件并使用C-c C-b加载,则会识别并使用包含路径。显然这是一个不太理想的设置,因为

  1. 我不想为我正在处理的每一段代码创建一个.clang_complete文件
  2. 未自动加载.clang_complete文件。
  3. 是否有一些工作方法(不涉及每个项目的设置,我不想为每段代码创建项目管理文件)来告诉irony-mode寻找头文件?

1 个答案:

答案 0 :(得分:4)

您可以在此处查看:https://github.com/Sarcasm/irony-mode#i-got-an-error-due-to-stdargh-how-to-solve-this

变量irony-libclang-additional-flags应该满足您的需求。 它应该可以在不调用irony-reload-flags的情况下工作。

虽然它不是缓冲区局部变量,所以你不需要把它放在钩子里。

我会推荐以下内容:

(setq irony-libclang-additional-flags
      (append '("-I" "inc") irony-libclang-additional-flags))