Python Auto Indent Problem

11

Ich benutze Emacs 24.4. Beim Schreiben von Python-Code verhält sich Emacs in Bezug auf Einrückungen seltsam.

Beispielsweise:

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

Bei der Eingabe :fügt Emacs am Anfang der dritten Zeile einen unnötigen Einzug hinzu. Das ist ziemlich seltsam, ist das ein Fehler?

Hunger
quelle
Können Sie Ihre .emacs Init-Datei hinzufügen
Vivian Maya
2
@ VivianMaya Dies hat nichts mit Konfigurationsdateien zu tun, hat emacs -Qimmer noch dieses Problem
Hunger
Mein Freund, manchmal, Einrückung könnte etwas kreuzen, ich hatte ein Problem wie dieses und das war über das Überqueren der Definition. Wenn Sie sicher sind, dass es nichts damit zu tun hat, dann weiß ich eindeutig nicht, was los ist.
Vivian Maya

Antworten:

16

Dies wird verursacht durch electric-indent-mode, was in Emacs 24.4 standardmäßig aktiviert ist. Sie können es mit ausschalten

(electric-indent-mode -1)

Wenn Sie den elektrischen Einrückungsmodus nicht vollständig deaktivieren möchten, aber den Doppelpunkt daran hindern möchten, den elektrischen Einrückungsmodus im Python-Modus zu aktivieren, können Sie das Doppelpunktzeichen entfernen, aus electric-indent-charsdem der Python-Modus einen lokalen Wert ergibt.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Kyle Meyer
quelle
Was ich wirklich gerne sehen würde, ist: Wenn der Einzug, den ich eingefügt habe, legal Python ist, LASSEN SIE ES ALLEIN. Elektro-Einrückungs-Modus errät gedankenlos, was ich will, wenn ich es bereits gesagt habe ...
AdamC
Und siehe da, diese vielen Jahre später ist es immer noch kaputt.
AdamC vor