2013-04-30 30 views
1

我希望在c-mode/C++模式中添加ffap-c-path的額外路徑,我更喜歡延遲加載機制。有兩種選擇對我來說:如何在Emacs中使用eval-after-load進行c/C++模式設置?

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

但作爲@sanityinc在this page說,似乎這裏後者更好。所以我想補充像下面的代碼:

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

然而,當我後來開了一個C源文件並找到fap-c-path仍然是舊值。根據文檔,如果cc-mode是庫/功能,我可以使用eval-after-load 'cc-modeeval-after-load "cc-mode";但在這裏都不起作用。我看看定義了cc模式的源代碼,並發現它使用cc-provide代替,它是根本原因嗎?

順便說一句:我也試過add-hook的方法;新的路徑不追加,但每次我打開另一個C/C++文件時,執行一次代碼,並最終ffap-c-path包含許多重複的路徑。

回答

0

您拼錯了ffap-c-pathfap-c-path

也將更好地利用add-to-list,這實際上與重複條目涉及,只是增加一個新的列表項,如果它是不存在的。

1

你可能想使用add-to-list代替:

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

這樣,就保證了重複值不被插入。

+0

感謝您的建議,我會記住它。但這一次是由於我的錯字。 – 2013-04-30 03:09:26

相關問題