В Emacs 23 встроенный отступ python.el нарушен с помощью вкладок шириной 4 - PullRequest
4 голосов
/ 24 февраля 2011

Я использую версию python.el , найденную здесь , в течение нескольких лет в Emacs 23 без происшествий. Я решил попробовать стоковый python.el и столкнулся со странной проблемой:

При использовании вкладок для отступа и ширины вкладок 4, набор python.el будет иметь два символа табуляции для каждого уровня вместо 1. При ширине вкладки 5 отступ будет равен 1 вкладке и 3 пробелам. Таким образом, когда indent-tabs-mode равно t, indent-for-tab-command, кажется, всегда заставляет размер вкладки 8, независимо от того, что tab-width установлено в.

Есть ли какая-либо другая переменная, связанная с табуляцией, которую я могу установить, чтобы переопределить это поведение?

Ответы [ 2 ]

4 голосов
/ 24 февраля 2011

Думаю, я понял это после того, как покопался в исходном коде Emacs 23 python.el и новейших python.el в блоке .

С учетом этих настроекв буфере python-mode отступ с вкладками и шириной вкладок 4 работает, как и ожидалось на складе python.el:

(setq indent-tabs-mode t
      tab-width 4
      python-indent 4)

Для нового python.el вам необходимо изменить python-indent наpython-indent-offset.Я использую обе настройки для обоих режимов без проблем.

Если у кого-то есть лучшее решение этой проблемы, добавьте его, и я с радостью приму его как правильный ответ.

1 голос
/ 24 февраля 2011

застрял с помощью вкладок?проверить

пробовать emacs 23 с python.el?check

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

Выустановка ширины табуляции в вашей инициализации или с помощью customize?

Я должен был убедиться, что изменил ширину табуляции в разделе «Основы редактирования» через настройку, чтобы вкладки «4 пробела» прилипали (что-то делать с глобальной / локальной областью действия).Но веселье на этом не заканчивается ... Кажется, python.el хочет сделать отступ только к первой позиции табуляции (теперь столбец 4), и не важно, что я установил: indent-tab-mode или tab-всегда-отступк.Я, наконец, сдался и вернулся к использованию python-mode.el, который имеет свой собственный набор особенностей, но, по крайней мере, код python делает отступ «правильно».

...