我尝试了使用emacs的第一步将元素"\\.synctex\\.gz"从LaTeX-clean-intermediate-suffixes中移除。
(eval-after-load 'latex
'(setq my-LaTeX-clean-intermediate-suffixes (remove '"\\.synctex\\.gz" LaTeX-clean-intermediate-suffixes)); that's not working
'(setq LaTeX-clean-intermediate-suffixes
(append my-LaTeX-clean-intermediate-suffixes (list "-blx\\.bib" "\\.run\\.xml"))))我如何在这里删除这个元素?我找到了remove和delete,两种方法都试过了,但是我得到了错误的wrong-number-of-arguments-type。
更新
我试过这个:
(eval-after-load 'latex
(setq LaTeX-clean-intermediate-suffixes (delete "\\.synctex\\.gz" LaTeX-clean-intermediate-suffixes))
'(setq LaTeX-clean-intermediate-suffixes
(append LaTeX-clean-intermediate-suffixes (list "-blx\\.bib" "\\.run\\.xml"))))但我在回溯中得到了相当长的输出:
发布于 2012-07-20 07:21:52
您所看到的错误不是由于对列表的操作,而是由于错误地使用了“后加载”。这个函数只允许两个参数:(eval-after-load FILE FORM)。所以你的片段应该读
(eval-after-load 'latex
'(setq LaTeX-clean-intermediate-suffixes (delete "\\.synctex\\.gz" LaTeX-clean-intermediate-suffixes)
LaTeX-clean-intermediate-suffixes (append LaTeX-clean-intermediate-suffixes (list "-blx\\.bib" "\\.run\\.xml"))))(在单个setq语句中允许多个赋值)或更一般的变体(在单个progn中包含任意多个表单):
(eval-after-load 'latex
'(progn
(setq LaTeX-clean-intermediate-suffixes (delete "\\.synctex\\.gz" LaTeX-clean-intermediate-suffixes))
(setq LaTeX-clean-intermediate-suffixes (append LaTeX-clean-intermediate-suffixes (list "-blx\\.bib" "\\.run\\.xml")))))发布于 2012-07-20 06:14:26
正如assem所指出的,代码中似乎有额外的空格,从而阻止了对remove的正确调用。
请注意,delete和remove都是为此目的工作的,只要列表中的元素可以通过用于它们的equal进行正确的比较。如果要使用eq进行比较,请使用delq或remq函数。
delete和remove (或delq和remq分别)的主要区别是,delete按副作用删除给定的元素,即更改给定的列表,而remove不返回给定列表的副本,并删除元素。
(setq list1 '("foo" "bar" "baz"))
(setq list2 (remove "bar" list1))
(message "list1: %s" list1)
(message "list2: %s" list2)
(setq list3 (delete "bar" list1))
(message "list1: %s" list1)
(message "list3: %s" list3)如果对上述代码进行评估,您将在*Message*缓冲区中找到以下输出:
list1: (foo bar baz)
list2: (foo baz)
list1: (foo baz)
list3: (foo baz)如您所见,在list1上调用list1之后,它没有改变。但是当你在上面打电话给delete之后,情况就变了。
发布于 2012-07-20 06:13:09
delete应该能工作
node/elisp/Sets-And-Lists.html
(setq LaTeX-clean-intermediate-suffixes (delete "\\.synctex\\.gz" LaTeX-clean-intermediate-suffixes))https://stackoverflow.com/questions/11573395
复制相似问题