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?


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.