(add-hook 'html-mode-hook
(lambda()
(setq sgml-basic-offset 4)
(setq indent-tabs-mode t)))
Это работает, потому что, когда indent-tabs-mode
является t
, отступы по умолчанию логика Emacs' заменяет пробелы с вкладками, когда он может в то же время сохраняя правильный столбец смещения для отступа. Например, если ваш код должен быть смещен на четыре символа на уровень отступа (т. Е. sgml-basic-offset
равен 4
, как указано выше), ваш код должен быть отступом на два уровня в глубину, и на уровне отступа есть четыре столбца, а затем Emacs вычисляет, что if он отступы с двумя вкладками и нулевыми пробелами, что приведет к соответствующему смещению столбца.
Это также означает, что вышеуказанное не будет работать совершенно правильно, если вы испортили свой tab-width
. Например, если вы установите его на 8
и отступом на один уровень, Emacs вычисляет, что даже если он вставляет только одну вкладку, смещение визуального столбца (8) будет больше, чем желаемое смещение (4). Таким образом, вместо этого будет вставлено четыре пробела. Попробуйте установить sgml-basic-offset
на ту же самую вещь, что и ваш tab-width
.
Могу ли я сделать что-то не так? Этот код не влияет на меня. Запуск Emacs 22.3.1 кстати. – Echo
Вы используете html-режим, который поставляется вместе с emacs или сторонним? –
Только по умолчанию html-режим, который поставляется с emacs. – Echo