problema de sangría automática de Python

11

Estoy usando Emacs 24.4. Al escribir código Python, Emacs se comporta de manera extraña con respecto a la sangría.

Por ejemplo:

for i in range(10):
    print(i)
for i in range(10)

Cuando ingreso :, Emacs agrega una sangría innecesaria al comienzo de la tercera línea. Esto es bastante extraño, ¿es esto un error?

Hambre
fuente
¿Puede agregar su archivo de inicio .emacs
Vivian Maya
2
@VivianMaya Esto no tiene nada que ver con los archivos de configuración, emacs -Qtodavía tiene este problema
Hambre
mi amigo, a veces, la sangría podría cruzar algo, tuve un problema como este y se trataba de cruzar la definición. Si está seguro de que no tiene nada que ver, entonces claramente no sé qué está pasando.
Vivian Maya

Respuestas:

16

Esto es causado por electric-indent-mode, que está habilitado por defecto en Emacs 24.4. Puedes apagarlo con

(electric-indent-mode -1)

Si no desea deshabilitar por completo el modo de sangría eléctrica, pero desea evitar que los dos puntos activen el modo de sangría eléctrica en el modo Python, entonces puede eliminar el carácter de dos puntos electric-indent-chars, de lo cual el modo Python le da un valor local.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Kyle Meyer
fuente
Lo que realmente me gustaría ver es: cuando la sangría que he puesto es Python legal, DEJARLO SOLO. -eléctrica guión en modo sin pensar adivina lo que quiero cuando ya he dicho que ...
AdamC
Y he aquí, muchos años después, todavía está roto.
AdamC