当缓冲区包含语法错误时,如何防止 Emacs 保存它?
它对于编辑源代码特别有用。
我正在将一些源代码写入缓冲区,点击 Cx Cs,Emacs 应该会将光标定位在包含错误的行上。我正在更正错误,再次点击保存命令,Emacs 应该会保存文件。
答案1
我解决这个问题的方法是将 Cx Cs 重新绑定到astropanic-save-buffer
一个 elisp 函数,该函数将通过您的编译器/构建过程运行当前缓冲区的内容。如果通过,它将运行save-buffer
,如果出现错误,它将创建一个带有错误消息的新缓冲区/窗口分割,以便您可以修复它。
还可以考虑使用write-file-functions
(更多信息) 挂钩来附加工作流程save-buffer
,但我对此持谨慎态度,因为虽然我可能认为我在某些模式下想要这样做,但并不是在所有模式下我都会这样做。
答案2
Emacs飞马模式可能接近您想要的。它对当前缓冲区的源代码进行动态编译/语法检查。