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

如何在Emacs中的lisp文件中查找错误?,emacs,lisp,elisp,Emacs,Lisp,Elisp,使用.emacs init文件时,有时会出错。当我评估缓冲区时,我得到消息“解析期间文件结束” 如何让Emacs告诉我错误的确切位置 第一件事是检查括号和字符串引号的平衡 对于GNU Emacs中的Emacs Lisp,请使用M-x复选框 其他类似于emac的编辑器也有类似的命令。例如,在LispWorks中,可以使用M-x查找不平衡括号这些错误实际上很难找到 最好尽量避免括号不匹配。有几种内置和第三方次要模式可帮助您实现这一点: 电对模式:自动插入匹配的右括号(内置) 显示参数模式:当点位于

使用.emacs init文件时,有时会出错。当我评估缓冲区时,我得到消息“解析期间文件结束”


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

第一件事是检查括号和字符串引号的平衡

对于GNU Emacs中的Emacs Lisp,请使用
M-x复选框


其他类似于emac的编辑器也有类似的命令。例如,在LispWorks中,可以使用
M-x查找不平衡括号

这些错误实际上很难找到

最好尽量避免括号不匹配。有几种内置和第三方次要模式可帮助您实现这一点:

  • 电对模式
    :自动插入匹配的右括号(内置)
  • 显示参数模式
    :当点位于圆括号上方时,突出显示匹配的圆括号(内置)
  • 彩虹分隔符模式
    :突出显示不同面中的每一级括号
  • paredit模式
    :始终保持括号平衡。一般来说,编辑的重点是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)

MELPA提供了Paredit和Rainbow分隔符。

对于这种错误,确切位置是文件的结尾,但这没有多大帮助:)尝试重新识别文件,看看缩进哪里出错。Anton是对的,这真的很痛苦,但通常可以通过使用良好的lisp编辑模式并在缓冲区上调用
indent region
来避免这些问题。当缩进不符合预期时,您可以看到哪里出了问题。此错误表示括号不匹配。@pmr谢谢。那么什么是好的lisp编辑模式呢?@PeterSalazar对于Emacs lisp,内置模式可能是您能获得的最好模式。您已经使用Emacs很长时间了,从未错过过此功能。这当然改变了,因为我现在意识到它的存在。你是救生员:)