Вкладки в режиме HTML в Emacs

Я человек табуляции. Если я не работаю над проектом, который уже использует пробелы, я использую вкладки. Я в основном работаю php и html. У меня есть вкладки в php, хорошо работающие. Но я не могу понять, как использовать html-режим для вкладок вместо двух пробелов.

Вот что я до сих пор:

(setq c-default-style "python")
(setq-default c-basic-offset 4
              tab-width 4
              indent-tabs-mode t)

Что я могу установить, чтобы html-режим использовал вкладки?

Ответ 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.

Ответ 2

На самом деле, indent-tabs-mode, вероятно, должен быть t по умолчанию.

Попробуйте M-i, только для жаворонок. Это должно вставить символ табуляции. Это не БОЛЬШОЕ решение, но это может сработать.

ТАКЖЕ, как вы тестировали пространство и вкладку? двигаясь через него? или удалить его? у вас может быть "backward-delete- char -untabify", воспитывающий его.