masalah indentasi python otomatis

11

Saya menggunakan Emacs 24.4. Saat menulis kode Python, Emacs berperilaku aneh sehubungan dengan indentasi.

Sebagai contoh:

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

Saat saya input :, Emacs menambahkan indentasi yang tidak perlu di awal baris ketiga. Ini sangat aneh, apakah ini bug?

Kelaparan
sumber
Bisakah Anda menambahkan file .emacs init Anda
Vivian Maya
2
@VivianMaya Ini tidak ada hubungannya dengan file konfigurasi, emacs -Qmasih memiliki masalah ini
Lapar
teman saya kadang-kadang lekukan bisa melewati sesuatu, saya punya masalah seperti ini dan itu tentang definisi persimpangan. Jika Anda yakin itu tidak ada hubungannya, maka saya jelas tidak tahu apa yang sedang terjadi.
Vivian Maya

Jawaban:

16

Ini disebabkan oleh electric-indent-mode, yang diaktifkan secara default di Emacs 24.4. Anda dapat mematikannya dengan

(electric-indent-mode -1)

Jika Anda tidak ingin sepenuhnya menonaktifkan mode indent listrik tetapi ingin menghentikan titik dua dari mengaktifkan mode indentasi listrik dalam mode Python, maka Anda dapat menghapus karakter titik dua dari electric-indent-chars, yang mode Python memberikan nilai lokal.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Kyle Meyer
sumber
Yang benar-benar ingin saya lihat adalah: ketika indentasi yang saya masukkan adalah Python legal, TINGGALKAN SAJA. electric-indent-mode tanpa berpikir menebak apa yang saya inginkan ketika saya sudah mengatakannya ...
AdamC
Dan lihat, bertahun-tahun kemudian, ini masih rusak.
AdamC