使用我的.emacs init文件时,我有时会犯错误。当我执行eval-buffer时,我收到消息“解析期间文件结束”。
如何让Emacs告诉我错误的确切位置?
答案 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获得。