暂时禁用在Emacs中添加新行

时间:2014-05-19 13:20:38

标签: emacs elisp

我启用了require-final-newline,因为我通常希望Emacs在我丢失的文件中添加换行符。但在某些情况下,我希望 Emacs 删除换行符(例如编辑不应生成换行符的yasnippet时,请参阅emacs + latex + yasnippet: Why are newlines inserted after a snippet?)。< / p>

有没有办法实现这种临时性(比如启用模式或其他),而无需更改.emacs并重新启动Emacs?

3 个答案:

答案 0 :(得分:2)

.emacs文件中设置的任何内容都可以即时更改。对于诸如require-final-newline之类的变量,这只涉及更改变量。例如,您可以键入以下代码,然后使用C-x e对其进行评估。

(setq require-final-newline (not require-final-newline))

如果您愿意,可以将其绑定为键盘快捷键。

(defun toggle-final-newline
    (interactive)
    (setq require-final-newline (not require-final-newline)))
(global-set-key (kbd "C-c f") 'toggle-final-newline)

答案 1 :(得分:2)

除了@eldrich提到的内容之外,您还可以在给定缓冲区中本地设置其值。在模式挂钩上放置这样的东西,为给定的模式关闭它:

(defun foo () (set (make-local-variable 'require-final-newline) nil))
(add-hook 'some-mode-hook 'foo)

答案 2 :(得分:0)

我认为应该是:

(defun toggle-final-newline ()
    (interactive)
    (setq require-final-newline (not require-final-newline)))
(global-set-key (kbd "C-c f") 'toggle-final-newline)