problem automatycznego wcięcia python


11

Używam Emacsa 24.4. Podczas pisania kodu w Pythonie Emacs zachowuje się dziwnie w odniesieniu do wcięć.

Na przykład:

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

Kiedy wprowadzam :, Emacs dodaje niepotrzebne wcięcie na początku trzeciego wiersza. To dość dziwne, czy to błąd?


Czy możesz dodać plik inicjujący .emacs
Vivian Maya

2
@VivianMaya To nie ma nic wspólnego z plikami konfiguracyjnymi, emacs -Qnadal ma ten problem
Hunger

mój przyjaciel czasami Wcięcie może coś przekroczyć, miałem taki problem i chodziło o przekroczenie definicji. Jeśli jesteś pewien, że to nie ma nic wspólnego, to wyraźnie nie wiem, co się dzieje.
Vivian Maya

Odpowiedzi:


16

Jest to spowodowane przez electric-indent-mode, który jest domyślnie włączony w Emacs 24.4. Możesz to wyłączyć za pomocą

(electric-indent-mode -1)

Jeśli nie chcesz całkowicie wyłączać trybu wcięcia elektrycznego, ale chcesz powstrzymać dwukropek przed aktywowaniem trybu wcięcia elektrycznego w trybie Python, możesz usunąć znak dwukropka, z electric-indent-charsktórego tryb Python nadaje wartość lokalną.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))

To, co naprawdę chciałbym zobaczyć, to: kiedy wcięcie, które wstawiłem, jest zgodne z prawnym Pythonem, POZOSTAJ SAM. tryb wcięcia elektrycznego bezmyślnie zgaduje, czego chcę, gdy już to powiedziałem ...
AdamC

A oto wiele lat później wciąż jest zepsuty.
AdamC
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.