emacs lisp : How to remove/delete an element of a list?

标签 emacs elisp

我尝试了emacs lisp的第一步,从"\\.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"))))

如何在这里删除此元素?我找到了removedelete,对它们都进行了尝试,但是出现了wrong-number-of-arguments-错误类型。

更新

我尝试了这个:
(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"))))

但是我在Backtrace中收到了很长的输出:-(

最佳答案

您看到的错误不是由于对列表的操作,而是由于错误使用了eval-after-load。此函数仅允许两个参数:(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")))))

关于emacs lisp : How to remove/delete an element of a list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573395/

相关文章:

eclipse - emacs/vi能够实现Intellisense/Refactorings以及Visual Studio和Eclipse吗?

emacs - 组织模式。在列 View 中排序

emacs 劣质 lisp 滚动

emacs - 导航模式单窗口? (emacs)

python - 在带有 Python 或 IPython 的 Emacs 'python-mode' 中使用多个 Python shell

基于主机名的elisp条件

emacs - 在 Emacs 中,如何仅替换匹配的行

emacs - 如何确定emacs缩进一定量的原因?

emacs - 对齐来自emacs lisp的正则表达式

EMACS:打开新缓冲区时自动运行函数