проблема с автоматическим отступом Python

11

Я использую Emacs 24.4. При написании кода на Python Emacs ведет себя странно по отношению к отступам.

Например:

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

Когда я вводю :, Emacs добавляет ненужный отступ в начале третьей строки. Это довольно странно, это ошибка?

голодание
источник
Можете ли вы добавить свой файл инициализации .emacs
Vivian Maya
2
@VivianMaya Это не имеет никакого отношения к файлам конфигурации, emacs -Qвсе еще имеет эту проблему
Голод
мой друг, иногда отступы могут что-то пересекать, у меня была такая проблема, и речь шла о пересечении определения. Если вы уверены, что это не имеет ничего общего, то я явно не знаю, что происходит.
Вивиан Майя

Ответы:

16

Это вызвано тем electric-indent-mode, что по умолчанию включено в Emacs 24.4. Вы можете отключить его с

(electric-indent-mode -1)

Если вы не хотите полностью отключать режим электрического отступа, но хотите запретить двоеточию активировать режим электрического отступа в режиме Python, то вы можете удалить символ двоеточия electric-indent-chars, для которого режим Python дает локальное значение.

(add-hook 'python-mode-hook
          (lambda ()
            (setq electric-indent-chars (delq ?: electric-indent-chars))))
Кайл Мейер
источник
То, что я действительно хотел бы видеть: когда отступ, который я поставил, является законным Питоном, ОСТАВЛЯЙ ЭТО ОДИН. Режим электрического отступа бездумно угадывает, чего я хочу, когда я уже сказал это ...
AdamC
И вот, эти много лет спустя, он все еще сломан.
AdamC