1

ffap-c-pathc-mode/c++-mode に追加のパスを追加したいと考えており、遅延読み込みメカニズムを好みます。私には2つの選択肢があります:

  • /add-hookに使用c-mode-hookc++-mode-hook
  • eval-after-load

しかし、@sanityinc がこのページで述べたように、ここでは後者の方が優れているようです。だから私は以下のようなコードを追加します:

(eval-after-load 'cc-mode
'(progn
  (require 'ffap)
  (setq fap-c-path (append ffap-c-path '("/usr/lib/llvm-3.1/include")))
  )
)

ただし、後でacソースファイルを開いて、fap-c-pathまだ古い値であることがわかりました。ドキュメントによると、eval-after-load 'cc-modeまたはライブラリ/機能であるeval-after-load "cc-mode"場合は使用できます。cc-modeしかし、どちらもここでは機能しません。cc-mode が定義されているソース コードを調べたところ、cc-provide代わりに a が使用されていることがわかりました。それが根本的な原因ですか?

ところで:私もadd-hookアプローチを試みました。新しいパスは追加されますが、別の c/c++ ファイルを開くたびに、コードが 1 回実行され、最終的ffap-c-pathに多くの重複したパスが含まれます。

4

2 に答える 2

1

add-to-listおそらく代わりに使用したいでしょう:

(eval-after-load 'cc-mode
  '(progn
     (require 'ffap)
     (add-to-list 'ffap-c-path "/usr/lib/llvm-3.1/include")))

そうすれば、重複する値が挿入されないことが保証されます。

于 2013-04-30T03:03:40.660 に答える
0

とスペルffap-c-pathを間違えましfap-c-pathた。

add-to-listまた、重複したエントリを実際に処理し、まだ存在しない場合にのみ新しいリスト項目を追加する を使用することをお勧めします。

于 2013-04-30T03:00:08.740 に答える