emacs indentation

Emacs versión 24.4: Nueva pérdida de sangría desagradable al golpear VOLVER



indentation (3)

Comenzando con Emacs 24.4, cuando escribo una línea que comienza con un espacio en blanco (una forma típica de indicar un nuevo párrafo) y al final de ella presiono RETORNO, el espacio en blanco desaparece. Este problema también aparece con ''emacs -Q''. Mi archivo .emacs utiliza un esquema de párrafos en modo texto bastante simple, a saber,

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

que ha estado funcionando sin problemas durante una docena de años. El error apareció cuando instalé la versión actual (24.4).

Básicamente, escribo:

This is a line beginning with four spaces

y tan pronto como escribo RETORNO mi línea se convierte inmediatamente

This is a line beginning with four spaces

Es decir, la sangría se desvanece. Apreciaría mucho algún consejo. ¿Debo publicar un error?


En Emacs 24.4, electric-indent-mode está habilitado por defecto. Parece que eso es lo que está causando este problema en combinación con paragraph-indent-minor-mode . Puede evitar eso apagando el modo de Sangría Eléctrica en todas partes ( Mx electric-indent-mode ) o simplemente en el búfer local ( Mx electric-indent-local-mode ).


Lo siguiente tratará de evitar que electric-indent-mode de electric-indent-mode pise los dedos de los pies del paragraph-indent-minor-mode . No intenta ser robusto en todas las situaciones, pero sospecho que es totalmente suficiente en su situación.

(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)

Si no está ejecutando al menos Emacs 24.3, reemplace el defvar-local con:

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


;; (global-set-key "/ em" ''nueva línea) ;; para emacs 23

global-set-key "/ em" ''electric-newline-and-maybe-indent) ;; para emacs 24