Как сделать режим Emacs Python генерировать TAB для отступа?

Я работаю с кучей программистов на Python, которые используют vim, и они делают Python, используя TAB для отступа. Я использую Emacs с python-mode, который переводит ключ табуляции в 4 пробела (как и должен, но неважно). Поскольку я не хочу вызывать проблемы, я хочу добавить что-то в файл .emacs(или что-то еще), чтобы сделать отступы, используя реальную TABS, вместо того, чтобы переводить их в пробелы. Как?

Прошу прощения, если на это ответят где-то еще: я не нашел его.

Ответ 1

Вы можете определить специфичные для Python настройки в ~/.emacs с помощью python-mode-hook. Чтобы использовать вкладки для отступов, вы можете использовать:

(add-hook 'python-mode-hook
  (lambda () (setq indent-tabs-mode t)))

Так как python.el имеет отступы только 4 столбца, то по умолчанию вышеупомянутые будут использовать вкладки, когда отступ будет кратным 8 и вкладкам, за которыми следуют пробелы для других отступов.

Если вам нужно использовать одну вкладку для каждого уровня отступа, вам также необходимо установить python-indent в 8. Затем вы можете установить tab-width на любую ширину, которую хотите видеть вкладки, отображаемые как.

(add-hook 'python-mode-hook
  (lambda ()
    (setq indent-tabs-mode t)
    (setq python-indent 8)
    (setq tab-width 4)))

Ответ 2

возможно, нужно сделать это в режиме python:

(setq indent-tabs-mode t)

Ответ 3

Как правильно сказали комментаторы сообщения, использование вкладок для отступов - плохая идея, а использование нестандартной ширины табуляции еще хуже. Тем не менее, иногда у вас нет выбора, если вы хотите сотрудничать.

В зависимости от того, как ваши коллеги сконфигурировали vim, вам может понадобиться как включить indent-tabs-mode, так и установить tab-width на 4.

Удобный способ сделать это, который не испортит вашу другую работу, заключается в использовании локальных переменных файла. В конце каждого оскорбительного файла поместите это:

# Local Variables:
# indent-tabs-mode: 1
# tab-width: 4
# End:

(Вы должны указать Emacs, что indent-tabs-mode - безопасная локальная переменная.)