摆脱 emacs 要求添加换行符的烦人消息

Get rid of the annoying message of emacs asking to add newline

我正在使用 org-mode 生成我的 PDF 报告。每次生成 tex 时,emacs 都会询问我

Buffer hw1.tex<2> does not end in newline. Add one? (y or n) y

我怎样才能摆脱这条消息并自动添加一个新行?

我尝试将 mode-require-final-newline 和 require-final-newline 设置为 t,但这并没有改变任何东西。

编辑: 我还尝试将 mode-require-final-newline 和 require-final-newline 设置为 nil,即使我可以检查它们的值是否已更改(通过 C-h v),问题仍然存在。

根据评论的建议,我添加了一个钩子来更改那些变量的值:

(add-hook 'org-mode-hook (lambda () (setq require-final-newline nil) (setq mode-require-final-newline nil)))

但问题仍然存在。

编辑:

另外,我想我找到了负责这个的命令:

(el-get 'sync my-packages)

,所以我怀疑我安装的某些包在我的配置中丢失了。

这是我使用 el-get 安装的软件包列表:

           auctex
           auto-complete
           autopair
           color-theme-solarized
           cdlatex-mode
           ecb
           ein
           elpy
           expand-region
           flycheck
           folding
           gnuplot-mode
           helm
           helm-descbinds
           jedi
           js2-mode
           jump-char
           key-chord
           latex-preview-pane
           lua-mode
           magit
           markdown-mode
           matlab-mode
           multiple-cursors
           ;nxhtml
           nyan-mode
           org-mode
           outshine
           popup
           popwin
           pyenv
           pydoc-info
           scss-mode
           yaml-mode
           yasnippet

谢谢!

[以下解决方案在没有用户配置的情况下进行了测试——即,Emacs -Q——使用 Emacs 24.5.1。尝试在没有用户配置的情况下加载 Emacs,然后添加解决方案并进行测试。然后尝试使用完整的用户配置——如果它不能使用完整的用户配置,则可能需要将代码一分为二并注释掉,直到找到罪魁祸首。仅对 require-final-newline.]

的用户配置进行单词搜索可能会更容易

截至 Emacs 轴承版本号 24.5.1 的最后一个稳定 public 版本,require-final-newline 的默认值为 nil。该变量的文档字符串(部分)指出“某些主要模式将其本地设置为从 mode-require-final-newline. 获得的值”函数 basic-save-buffer 在库 files.el 在决定​​用 (and require-final-newline (y-or-n-p (format "Buffer %s does not end in newline. Add one? " (buffer-name)))) 提示用户时检查 require-final-newline 的值(以及其他标准)。在没有用户配置的情况下启用 org-mode——例如,Emacs -Q——require-final-newline 的值设置为 locally 在缓冲区中为 torg-mode的PARENT模式为outline-modeoutline-mode 的 PARENT 模式是 text-modetext-mode 启用后包含一行代码,如下所示:(set (make-local-variable 'require-final-newline) mode-require-final-newline)。变量mode-require-final-newline定义在库files.el中,默认值为t.

现在我们已经完成了尽职调查,我们可以从几个不同的角度来解决这个问题。我们可以通过将 t 更改为 nil 来更改 mode-require-final-newline 的全局值:(setq mode-require-final-newline nil)。或者,我们可以保留与 org-mode:

相关的新用户配置缓冲区本地
(defun my-org-mode-config-fn ()
  (setq require-final-newline nil))

(add-hook 'org-mode-hook 'my-org-mode-config-fn)