2012-02-12 40 views
3

我想附加一些正则表达式到latex命令LaTeX-clean-intermediate-suffixes。我试图emacs lisp:如何追加到列表中“LaTeX-clean-intermediate-suffixes”?

(setq LaTeX-clean-intermediate-suffixes 
     (append LaTeX-clean-intermediate-suffixes (list "\\.foo" "\\.bar"))) 

,但我收到以下警告:

Warning (initialization): An error occurred while loading `/Users/myusername/.emacs': 

Symbol's value as variable is void: LaTeX-clean-intermediate-suffixes 

To ensure normal operation, you should investigate and remove the 
cause of the error in your initialization file. Start Emacs with 
the `--debug-init' option to view a complete error backtrace. 

我怎样才能某些字符串/后缀添加到这个列表?

+0

你会得到什么错误? – 2012-02-12 17:18:14

+0

感谢您的帮助,我在上面添加了警告。 – 2012-02-12 17:28:50

回答

8

看起来您正试图在定义它的包加载之前修改该变量的值。 C-h v显示,该变量在“latex.el”文件中定义的,所以尝试做以下代替:

(eval-after-load 'latex 
    '(setq LaTeX-clean-intermediate-suffixes 
    (append LaTeX-clean-intermediate-suffixes (list "\\.foo" "\\.bar")))) 

注意eval-after-load是一个函数,并要求你要评估被引用的代码 - 一个有点混乱,因为它与名称相似的eval-when-compile和朋友是不同的,它们是宏。

顺便说一下,您还可以使用add-to-list将项目添加到列表中,并使用第三个参数t来使其添加而不是将它们放在前面。 add-to-list也是一个函数,所以这里变量的名字需要引用。有时候,这是比setqappend组合更具可读性,但你只可以一次添加一个项目:

(add-to-list 'LaTeX-clean-intermediate-suffixes "\\.foo" t) 

这样做的另一个好处是,它会检查"\\.foo"是否已经出现在名单前添加它 - 对加载路径等事情很有用。

+0

非常好,非常感谢! – 2012-02-12 17:53:32

+0

没问题!希望能帮助到你。 – 2012-02-12 18:02:03