Установить в Python отступ в 2 пробела в emacs 23?
Я использую emacs 23.1.1 в Ubuntu 10.04. Я хочу программировать на Python с отступом в 2 пробела. Похоже, в emacs есть режим по умолчанию для python (python.el?).
Я положил следующее в мой.emacs:
;; Only spaces, no tabs
(setq indent-tabs-mode nil)
;; Always end a file with a newline
(setq require-final-newline nil)
;; Don't know which of these might work
(setq-default tab-width 2)
(setq-default python-indent 2)
(setq-default py-indent-offset 2)
Когда я редактирую файл Python, он использует отступ в 4 пробела. Когда я пытаюсь сделать Ch v python-indent, он говорит:
python-indent's value is 4
Local in buffer webpage_cache.py; global value is 2
This variable is safe as a file local variable if its value
satisfies the predicate `integerp'.
Documentation:
Number of columns for a unit of indentation in Python mode.
See also `M-x python-guess-indent'
You can customize this variable.
То есть это 4, а не 2. Гр. Я попытался настроить переменную и сохранить, все еще 4. Я попытался настроить группу отступов, все еще 4.
Как заставить Emacs обратить внимание?
3 ответа
Либо в вашем файле.emacs, либо в файле, на который ссылается ваш.emacs, добавьте:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
Вы можете положить в крючок, если вы хотите локализовать
;; Python Hook
(add-hook 'python-mode-hook
(function (lambda ()
(setq indent-tabs-mode nil
tab-width 2))))
РЕДАКТИРОВАТЬ: я обнаружил, что следующие проблемы могут испортить мои настройки:
- установка переменной до загрузки библиотеки
- другие пакеты / конфиги, сбрасывающие глобальные переменные
Для обеих этих проблем я обнаружил, что создание хуков и локализация переменных могут помочь.
Вы можете поместить это в свой файл.emacs:
(add-hook 'python-mode-hook '(lambda ()
(setq python-indent 2)))
Причина по которой
(setq-default python-indent 2)
не работает может, потому что эта переменная не завершается при загрузке.emacs. (Но я новичок в Emacs. Я не уверен в своем объяснении.)
Однако PEP 8 - Руководство по стилю для кода Python рекомендует "4 пробела на уровень отступа", и я считаю, что 4 пробела более читабельны. Я на самом деле использую этот кусок кода, чтобы заставить отступ в 4 пробела.
Я только столкнулся с этой проблемой сам, и я думаю, что помощь для python-indent
содержит большой ключ, который никто не упомянул:
See also `M-x python-guess-indent'
Если вы не настраиваете python-guess-indent
установив его на nil
, затем python.el
будет автоматически установлен python-indent
для каждого буфера Python (который содержит текст с отступом), делая ваш python-indent
настройка неэффективна. (С другой стороны, когда в Риме...)
В конце концов, это то, что вошло в мой .emacs
файл (игнорируя все другие пользовательские переменные):
(custom-set-variables
'(python-guess-indent nil)
'(python-indent 2))