Невозможно изменить отступ по умолчанию Emacs между тегами HTML

Я запутался в парадигме вдавливания Emacs.

У меня это в моем файле .emacs:

(setq-default tab-width 4)

Если я нажму TAB в следующей ситуации

                    <ul>
(caret)
                    </ul>

он заканчивается таким образом

                   <ul>
                     (caret)
                   </ul>

(с двумя отступами между тегами HTML.)

Это должно закончиться следующим образом:

                   <ul>
                       (caret)
                   </ul>

Я пробовал все:

(setq-default tab-width 4)
(setq-default indent-tabs-mode t)
(setq tab-stop-list '(4 8 12 16))

Я установил каждую возможную настройку Emacs об отступлении в 4, но этот 2-й отступ еще не найден.

Любые предложения?

Ответ 1

Настройка ширины закладки не применима в этом сценарии, но я понимаю вашу путаницу; Emacs предоставляет несколько переменных, связанных с вкладками, и определение правильного для конкретного сценария может сбить с толку.

В этой статье EmacsWiki содержится более подробная информация об установке уровня отступов для HTML; в общем, EmacsWiki - отличный ресурс для советов Emacs.

В этом конкретном случае, поскольку вы используете стандартный режим HTML Emacs (html-mode, как определено sgml-mode), переменная, которую вы хотите установить, sgml-basic-offset. Эта переменная по умолчанию равна 2, но вы можете изменить ее на 4 следующим образом:

(setq sgml-basic-offset 4)

Чтобы изменить это изменение только на html-mode, вы можете использовать следующий код:

(add-hook 'html-mode-hook
  (lambda ()
    ;; Default indentation is usually 2 spaces, changing to 4.
    (set (make-local-variable 'sgml-basic-offset) 4)))

Все это предполагает, что вы используете Emacs 22 или новее; если это не так, на странице EmacsWiki, с которой я связан, содержится обходной путь для более ранних версий Emacs.