如何在Emacs中的lisp文件中找到错误?

时间:2013-02-25 18:28:57

标签: emacs lisp elisp

使用我的.emacs init文件时,我有时会犯错误。当我执行eval-buffer时,我收到消息“解析期间文件结束”。

如何让Emacs告诉我错误的确切位置?

2 个答案:

答案 0 :(得分:19)

首先要检查括号和字符串引号的平衡。

对于Emacs Lisp在GNU Emacs中使用M-x check-parens

其他类似Emacs的编辑器也有类似的命令。例如,在LispWorks中,可以使用M-x Find Unbalanced Parentheses

答案 1 :(得分:4)

这些错误实际上很难找到。

最好尽量避免使用括号不匹配。有几种内置和第三方次要模式可以帮助您:

  • electric-pair-mode:自动插入匹配的右括号(内置)
  • show-paren-mode:当点在括号上时,突出显示匹配的(内置)
  • rainbow-delimiters-mode:突出显示不同面孔中每个级别的括号
  • paredit-mode:始终保持括号平衡。通常,在Sexps上进行焦点编辑而不是字符和单词。

我建议启用所有这些功能。因此,合理的配置可以打败不匹配的括号:

(add-hook 'emacs-lisp-mode-hook 'paredit-mode)
(add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode)
(show-paren-mode 1)
(electric-pair-mode 1)

Paredit和Rainbow Delimiters可从MELPA获得。