【问题标题】:Emacs version 24.4: New obnoxious loss of indentation on hitting RETURNEmacs 24.4 版:点击 RETURN 时新的令人讨厌的缩进丢失
【发布时间】:2014-12-31 08:26:31
【问题描述】:

从 Emacs 24.4 开始,当我键入以空格开头的行时(一种典型的 表示一个新的段落),最后我点击返回,空白消失。 'emacs -Q' 也会出现这个问题。 我的 .emacs 文件使用了一种相当简单的文本模式分段方案,即,

(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'paragraph-indent-minor-mode)

它已经运行了十几年没有问题。安装当前 (24.4) 版本时出现该错误。

基本上,我输入:

   This is a line beginning with four spaces

一旦我输入 RETURN,我的行就会立即变成

This is a line beginning with four spaces

也就是说,缩进消失了。我非常感谢一些建议。 我应该发布错误吗?

【问题讨论】:

  • 绝对M-x report-emacs-bug
  • 您已经正确识别出这个令人烦恼的问题,呃,闪亮的新功能!我在我的初始化文件中执行此操作:(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))。这适用于任何 Emacs 版本。

标签: emacs indentation


【解决方案1】:

在 Emacs 24.4 中,electric-indent-mode 默认启用。似乎这就是与paragraph-indent-minor-mode 结合导致此问题的原因。您可以通过在任何地方 (M-x electric-indent-mode) 或仅在本地缓冲区 (M-x electric-indent-local-mode) 中关闭电动缩进模式来避免这种情况。

【讨论】:

    【解决方案2】:

    以下内容将尽量防止electric-indent-mode 踩到paragraph-indent-minor-mode 的脚趾。它并没有试图在所有情况下都保持健壮,但我怀疑它在你的情况下完全足够了。

    (defvar-local my-local-electric-indent-status :unknown)
    
    (defun my-local-electric-indent-disable ()
      "Make `electric-indent-mode' ineffective in the current buffer."
      (setq my-local-electric-indent-status electric-indent-mode)
      (electric-indent-local-mode -1))
    
    (defun my-local-electric-indent-restore ()
      "Restore original status of `electric-indent-mode' in the current buffer."
      (unless (eq my-local-electric-indent-status :unknown)
        (electric-indent-local-mode my-local-electric-indent-status)))
    
    (add-hook 'paragraph-indent-minor-mode-on-hook #'my-local-electric-indent-disable)
    (add-hook 'paragraph-indent-minor-mode-off-hook #'my-local-electric-indent-restore)
    

    如果您没有运行至少 Emacs 24.3,请将 defvar-local 替换为:

    (defvar my-local-electric-indent-status :unknown)
    (make-variable-buffer-local 'my-local-electric-indent-status)
    

    【讨论】:

      【解决方案3】:

      ;;(global-set-key "\em" 'newline) ;;对于 emacs 23

      global-set-key "\em" 'electric-newline-and-maybe-indent) ;;对于 emacs 24

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-07
        • 2012-09-02
        • 2020-01-27
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        相关资源
        最近更新 更多