Ответ 1
(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 вычисляет, что если он отступает с двумя вкладками и нулевыми пробелами, это приведет к соответствующему смещению столбца.
Это также означает, что вышеизложенное не будет работать правильно, если вы испортили свой tab-width
. Например, если вы установите его на 8
и отступы на один уровень в глубину, Emacs вычисляет, что даже если он вставляет только одну вкладку, смещение визуального столбца (8) будет больше, чем желаемое смещение (4). Таким образом, вместо этого будет вставлено четыре пробела. Попробуйте установить sgml-basic-offset
на то же, что и на tab-width
.