1

我希望ffap-c-path在 c-mode/c++-mode 中添加额外的路径,我更喜欢延迟加载机制。对我来说有两个选择:

  • 用于/ 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的源代码,发现它使用acc-provide代替,是根本原因吗?

BTW:我也尝试过这种add-hook方法;新路径确实附加,但每次我打开另一个 c/c++ 文件时,代码都会执行一次,最后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-pathfap-c-path

您还可以更好地使用add-to-list,它实际上处理重复条目,仅在新列表项不存在时才添加它。

于 2013-04-30T03:00:08.740 回答