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

发布于 2024-08-17 16:46:24 字数 745 浏览 5 评论 0原文

我对 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 个空格缩进仍然存在。

有什么建议吗?

I'm confused about the Emacs indentation paradigm.

I have this in my .emacs file:

(setq-default tab-width 4)

If I press TAB in the following situation

                    <ul>
(caret)
                    </ul>

it end up like this

                   <ul>
                     (caret)
                   </ul>

(with 2 spaces indentation between the HTML tags.)

It should end up like this:

                   <ul>
                       (caret)
                   </ul>

I tried everything:

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

I've set every possible Emacs setting about indentation to 4 but that 2 space indentation is still there.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紅太極 2024-08-24 16:46:24

设置制表符宽度不适用于这种情况,但我理解您的困惑; 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 的解决方法。

Setting the tab width isn't applicable in this scenario, but I understand your confusion; Emacs provides several tab-related variables and determining the correct one for a particular scenario can be confusing.

This EmacsWiki article provides more details about setting the indentation level for HTML; in general, EmacsWiki is a great resource for Emacs tips.

In this specific case, since you're using Emacs' standard HTML mode (html-mode, as defined by sgml-mode), the variable that you want to set is sgml-basic-offset. That variable defaults to 2, but you can change it to 4 as follows:

(setq sgml-basic-offset 4)

To make this change specific only to html-mode, you can use the following code:

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

This all assumes that you're using Emacs 22 or later; if that's not the case, the EmacsWiki page that I linked to contains a workaround for earlier versions of Emacs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文