暂时禁止在 Emacs 中添加新行
Posted
技术标签:
【中文标题】暂时禁止在 Emacs 中添加新行【英文标题】:Temporarly disable adding of newlines in Emacs 【发布时间】:2014-05-19 13:20:37 【问题描述】:我启用了require-final-newline
,因为我通常希望 Emacs 将换行符添加到我缺少的文件中。但在某些情况下,我希望 Emacs 删除换行符(例如在编辑不应产生换行符的 yasn-p 时,请参阅emacs + latex + yasnippet: Why are newlines inserted after a snippet?)。
有没有办法暂时实现这一点(比如启用模式或其他东西),而无需更改 .emacs
并重新启动 Emacs?
【问题讨论】:
【参考方案1】:除了@eldrich 提到的之外,您还可以在给定缓冲区中本地设置其值。将类似这样的东西放在模式挂钩上,以在给定模式下关闭它:
(defun foo () (set (make-local-variable 'require-final-newline) nil))
(add-hook 'some-mode-hook 'foo)
【讨论】:
谢谢,我喜欢将其设置为缓冲区本地的想法,而不必记住重新启用它。我想出了一个缓冲区通用版本:(defun disable-final-newline () (interactive) (set (make-local-variable 'require-final-newline) nil))
【参考方案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)
【讨论】:
【参考方案3】:我认为应该是:
(defun toggle-final-newline ()
(interactive)
(setq require-final-newline (not require-final-newline)))
(global-set-key (kbd "C-c f") 'toggle-final-newline)
【讨论】:
请解释一下——为什么你认为应该是这个?答案应该更自信以上是关于暂时禁止在 Emacs 中添加新行的主要内容,如果未能解决你的问题,请参考以下文章