【问题标题】:Temporarly disable adding of newlines in Emacs暂时禁止在 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?

【问题讨论】:

    标签: emacs elisp


    【解决方案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)
      

      【讨论】:

      • 请解释一下——为什么你认为应该是这个?答案应该更自信
      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多