我希望在c-mode / c ++模式下向ffap-c-path
添加其他路径,我更喜欢延迟加载机制。我有两种选择:
add-hook
/ c-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
仍然是旧值时。根据文档,如果eval-after-load 'cc-mode
是图书馆/功能,我可以使用eval-after-load "cc-mode"
或cc-mode
;但这里都不起作用。我看一下定义了cc-mode的源代码,发现它使用的是cc-provide
,它是根本原因吗?
add-hook
方法;要添加新路径,但每次打开另一个c / c ++文件时,代码都会执行一次,最后ffap-c-path
包含许多重复路径。
答案 0 :(得分:1)
您可能希望改为使用add-to-list
:
(eval-after-load 'cc-mode
'(progn
(require 'ffap)
(add-to-list 'ffap-c-path "/usr/lib/llvm-3.1/include")))
这样,您可以保证不插入重复值。
答案 1 :(得分:0)
您错误拼写ffap-c-path
为fap-c-path
。
您最好使用add-to-list
,它实际上处理重复的条目,只添加一个新的列表项(如果它尚未存在)。