4

私は最近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)

irony-mode は正しくロードされ、補完はコンパイラーが明示的に認識しているインクルード パス (つまり、 によって出力されるすべて) に対して完全に機能しますecho "" | g++ -v -x c++ -E -が、追加のインクルード パスincは取得されません (相対パスか絶対パスかは関係ありません)。

ただし、.clang_completeファイルに情報を追加してロードするとC-c C-b、インクルード パスが認識されて使用されます。明らかに、これは理想的とは言えない設定です。

  1. .clang_complete作業中のコードごとにファイル を作成したくない
  2. .clang_completeファイルは自動的にロードされません。

ヘッダー ファイルを探す場所を指定するための作業方法 (プロジェクトごとのセットアップを必要としない、コードごとにプロジェクト管理ファイルを作成したくない) はありますか?irony-mode

4

1 に答える 1

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))
于 2013-12-04T14:24:29.167 に答える