暂时禁止在 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 中添加新行的主要内容,如果未能解决你的问题,请参考以下文章

禁止蒙层底部页面跟随滚动

HTTP POST 请求 Ionic 3 给出 403 禁止

如何禁止用户映射网络驱动器

自动驾驶技术再次致人死亡,该项技术或应暂时禁止提供给消费者

如何在C#中 禁止 dataGridView 自动添加行

判断当前app是不是被禁止使用网络