Отступ не работает должным образом в emacs для python

Я использую emacs-for-python, предоставленный gabrielelanaro по этой ссылке.

Отступ, похоже, не работает для меня вообще.

Это происходит не автоматически, когда я создаю класс, функцию или любой другой блок кода, который требует автоматического отступа (если, для и т.д.) И нажмите enter или Ctrl + j. Вместо этого emacs говорит "Арифметическая ошибка".

Этого не происходит, когда я нажимаю Tab любом месте файла.py. Опять же, каждое нажатие Tab вызывает "Арифметическую ошибку".

Кроме того, когда я вручную отступать код, используя пробелы, я не могу стереть эти пробелы! Замещение этих отступов также вызывает "Арифметическую ошибку".

Эта проблема возникает, когда я использую обычный режим Python AC.

emacs: GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.7) от 2014-03-07 на lamiak, измененный Debian

Ответ 1

Проверьте значение python-indent-offset. Если это 0, измените его Mx set-variable RET python-indent-offset RET 4 RET.

Emacs пытается угадать смещение, используемое в файле Python при его открытии. Он может запутаться и установить эту переменную в 0 для некоторого плохо отформатированного файла Python. Если это действительно проблема, сделайте файл с сообщением об ошибке, используя Mx report-emacs-bug и текст файла Python, чтобы можно было установить автоматическое обнаружение.

Ответ 2

Это связано с этой ошибкой

http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15975

Самое быстрое обходное решение, которое я нашел, слишком добавило Jorgens в файл.emacs, добавьте следующее в конец вашего файла.emacs

(add-hook 'python-mode-hook
  (lambda () (setq python-indent-offset 4)))

Ответ 3

Можете ли вы прокомментировать строки, связанные с автозаполнением в init.el?

; (add-to-list 'load-path "~/.emacs.d/auto-complete-1.3.1")
; (require 'auto-complete)
; (add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
; (require 'auto-complete-config)
; (ac-config-default)
; (global-auto-complete-mode t)