无法更改Emacs在HTML标记之间的默认缩进

时间:2010-01-16 08:59:53

标签: emacs indentation

我对Emacs缩进范例感到困惑。

我在.emacs文件中有这个:

(setq-default tab-width 4)

如果我在以下情况下按TAB

                    <ul>
(caret)
                    </ul>

它最终会像这样

                   <ul>
                     (caret)
                   </ul>

(HTML标记之间有2个空格缩进。)

它最终应该是这样的:

                   <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 个答案:

答案 0 :(得分:23)

设置标签宽度不适用于此方案,但我理解您的困惑; Emacs提供了几个与选项卡相关的变量,并且确定特定场景的正确变量可能会令人困惑。

This EmacsWiki article provides more details about setting the indentation level for 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的解决方法。