Emacs版本24.4:击中RETURN时出现新的令人讨厌的缩进损失

时间:2014-12-31 08:26:31

标签: emacs indentation

从Emacs 24.4开始,当我输入以空格开头的行时(一种典型的方式) 表示一个新的段落),在它结束时我点击RETURN,白色空间消失。   “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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

以下内容会阻止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)

答案 2 :(得分:-1)

;;(global-set-key“\ em”'换行符);;对于emacs 23

global-set-key“\ em”'electric-newline-and-maybe-indent);; for emacs 24