emacs исправить отступ вкладки для Python

Отступ табуляции Emacs в режиме Python использует табуляцию вместо 4-х пробелов.

Мой файл emacs init.el содержит:

(setq-default indent-tabs-mode t)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

Я пытался:

(setq-default indent-tabs-mode nil)

но это не имело никакого значения. Используя режим white-space в emacs, я вижу, что вкладка НЕ ​​делает отступ в 4 пробела, а untabify фиксирует табуляцию на 4 пробела. Как заставить TAB работать как четыре пробела?

ОБНОВЛЕНИЕ исправлено изменением конфигурации init.el на:

(add-hook 'python-mode-hook
      (lambda ()
        (setq-default indent-tabs-mode nil)
        (setq-default tab-width 4)
        (setq-default python-indent 4)))

person SKV    schedule 07.03.2014    source источник


Ответы (2)


Если вы хотите вставить табуляцию, режим indent-tabs-mode должен быть `t '. Измените это в показанном крючке. Писать

(setq indent-tabs-mode t)

Кажется, в python.el есть ошибка при установке значения nil вместе с режимом. Поскольку хуки запускаются после инициализации режима, он должен это исправить.

Если нет, попробуйте python-mode.el, который разрешает выбор. Также вы можете установить режим indent-tabs-mode, который python.el делает локальным для буфера, в каждом буфере явно.

person Andreas Röhler    schedule 07.03.2014

Хотя уже поздно, у меня сработали следующие хуки. Только пробелы

(add-hook 'python-mode-hook
      (lambda ()
        (setq indent-tabs-mode nil)
        (setq python-indent 4)
        (setq tab-width 4))
      (untabify (point-min) (point-max)))

Только вкладки

 (add-hook 'python-mode-hook
          (lambda ()
            (setq indent-tabs-mode t)
            (setq python-indent 4)
            (setq tab-width 4))
          (tabify (point-min) (point-max)))
person userx    schedule 14.10.2016