Невозможно изменить отступ Emacs по умолчанию между тегами HTML - PullRequest
12 голосов
/ 16 января 2010

Я запутался в парадигме отступов 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 Ответ

23 голосов
/ 16 января 2010

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

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

В этом конкретном случае, поскольку вы используете стандартный режим Emacs для HTML (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.

...