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

inc*_*man 7 lisp emacs elisp

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

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

Rai*_*wig 20

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

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

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


小智 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)
Run Code Online (Sandbox Code Playgroud)

Paredit 和 Rainbow Delimiters 可从 MELPA 获取。