我启用了require-final-newline
,因为我通常希望Emacs在我丢失的文件中添加换行符。但在某些情况下,我希望 Emacs 删除换行符(例如编辑不应生成换行符的yasnippet时,请参阅emacs + latex + yasnippet: Why are newlines inserted after a snippet?)。< / p>
有没有办法实现这种临时性(比如启用模式或其他),而无需更改.emacs
并重新启动Emacs?
答案 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)