Отступ не работает должным образом в 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)