problema de recuo automático do python

11

Estou usando o Emacs 24.4. Ao escrever código Python, o Emacs se comporta de maneira estranha em relação à indentação.

Por exemplo:

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

Quando eu insiro :, o Emacs adiciona um recuo desnecessário no início da terceira linha. Isso é muito estranho, isso é um bug?

Fome
fonte
Você pode adicionar o seu arquivo .emacs init
Vivian Maya
2
@VivianMaya Isto não tem nada a ver com arquivos de configuração, emacs -Qainda tem esse problema
Fome
meu amigo, às vezes, o recuo pode cruzar algo, eu tive um problema como esse e isso era sobre cruzar a definição. Se você tem certeza que não tem nada a ver, então eu claramente não sei o que está acontecendo.
Vivian Maya

Respostas:

16

Isso é causado por electric-indent-mode, que é ativado por padrão no Emacs 24.4. Você pode desligá-lo com

(electric-indent-mode -1)

Se você não deseja desativar completamente o modo de indentação elétrica, mas deseja impedir que os dois pontos ativem o modo de indentação elétrica no modo Python, é possível remover o caractere de dois pontos electric-indent-chars, do qual o modo Python fornece um valor local.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Kyle Meyer
fonte
O que eu realmente gostaria de ver é: quando o travessão que eu coloquei for legal em Python, DEIXE-O SOZINHO. -indent elétrica em modo sem pensar adivinha o que eu quero, quando eu já disse isso ...
adamc
E eis que, muitos anos depois, ainda está quebrado.
AdamC 18/02