gpt4 book ai didi

emacs - 在 emacs 中设置每个项目的缩进变量

转载 作者:行者123 更新时间:2023-12-04 12:52:16 24 4
gpt4 key购买 nike

我的 emacs 设置为全局使用 2 个空格进行缩进:

(setq-default indent-tabs-mode nil)
(setq tab-width 2)
(setq js-indent-level 2)
(setq css-indent-offset 2)

但我想为一个使用 4 个空格进行缩进的 Web 项目(主要是 html、css 和 js)做贡献。所以我试图在项目目录中设置一个 .dir-locals.el 文件。该文件具有以下设置(使用 add-dir-local-variable 命令添加):

((nil . ((tab-width . 4)
(js-indent-level . 4)))

;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((js-mode
(tab-width . 4)))
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((js-mode
(js-indent-level . 4)))
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.

((html-mode
(tab-width . 4)))

但是这些设置没有生效。当我在项目子目录中打开 .js 或 .html 文件时,按 Tab 键会缩进两个空格。

我做错了什么?

最佳答案

首先,您的 .dir-locals.el 数据是不平衡的(M-x check-parens)。

我不确定那是怎么发生的,但如果你能让 Emacs 做到这一点,那么你应该 M-x report-emacs-bug。我假设它来自手动编辑。

我不确定多个 js-mode 项目是否有效。也许这很好,但这似乎很不寻常。 (不过,可能 Emacs 被不平衡的括号弄糊涂了。)

这是您的文件,使用更常见的(或至少已记录的)点对符号重写:

((nil . ((tab-width . 4)
(js-indent-level . 4)))

(js-mode . ((tab-width . 4)
(js-indent-level . 4)))

(html-mode . ((tab-width . 4))))

请注意(对于此特定数据)您不需要 js-modehtml-mode 条目,因为它们复制了nil 模式入口。

编辑:根据实验,一旦文件处于有效状态,add-dir-local-variable 似乎会按预期运行。

它更喜欢在可能的情况下创建更紧凑的列表符号——这很好;它们是等价的——但了解格式差异很有用。
请参见 C-hig (elisp) 点对表示法 RET

关于emacs - 在 emacs 中设置每个项目的缩进变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27731433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com