problème de retrait automatique de python

11

J'utilise Emacs 24.4. Lors de l'écriture de code Python, Emacs se comporte étrangement en ce qui concerne l'indentation.

Par exemple:

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

Lorsque j'entre :, Emacs ajoute un retrait inutile au début de la troisième ligne. C'est assez étrange, est-ce un bug?

Faim
la source
Pouvez-vous ajouter votre fichier init .emacs
Vivian Maya
2
@VivianMaya Cela n'a rien à voir avec les fichiers de configuration, a emacs -Qtoujours ce problème
Hunger
mon ami, parfois, l'indentation pourrait traverser quelque chose, j'ai eu un problème comme celui-ci et il s'agissait de traverser la définition. Si vous êtes sûr que cela n'a rien à voir, alors je ne sais clairement pas ce qui se passe.
Vivian Maya

Réponses:

16

Cela est dû à electric-indent-mode, qui est activé par défaut dans Emacs 24.4. Vous pouvez le désactiver avec

(electric-indent-mode -1)

Si vous ne voulez pas désactiver complètement le mode de retrait électrique mais que vous voulez empêcher le côlon d'activer le mode de retrait électrique en mode Python, vous pouvez supprimer le caractère deux-points electric-indent-charsdont le mode Python donne une valeur locale.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Kyle Meyer
la source
Ce que j'aimerais vraiment voir, c'est: lorsque le retrait que j'ai mis est Python légal, LAISSEZ-LE SEUL. le mode électrique-indenté devine sans réfléchir ce que je veux quand je l'ai déjà dit ...
AdamC
Et voilà, ces nombreuses années plus tard, c'est encore cassé.
AdamC