私は最近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
、インクルード パスが認識されて使用されます。明らかに、これは理想的とは言えない設定です。
.clang_complete
作業中のコードごとにファイル を作成したくない.clang_complete
ファイルは自動的にロードされません。
ヘッダー ファイルを探す場所を指定するための作業方法 (プロジェクトごとのセットアップを必要としない、コードごとにプロジェクト管理ファイルを作成したくない) はありますか?irony-mode