在 emacs 中设置每个项目的缩进变量
Setting per-project indent variables in emacs
我的 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 键会缩进 2 个空格。
我做错了什么?
首先,您的 .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-mode
和 html-mode
条目,因为它们复制了 nil
模式条目的默认值。
编辑: 根据实验,一旦文件处于有效状态,add-dir-local-variable
似乎会按预期运行。
它更喜欢在可能的情况下创建更紧凑的列表符号——这很好;它们是等价的——但了解格式差异很有用。
参见 C-hig (elisp) Dotted Pair Notation
RET
我的 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 键会缩进 2 个空格。
我做错了什么?
首先,您的 .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-mode
和 html-mode
条目,因为它们复制了 nil
模式条目的默认值。
编辑: 根据实验,一旦文件处于有效状态,add-dir-local-variable
似乎会按预期运行。
它更喜欢在可能的情况下创建更紧凑的列表符号——这很好;它们是等价的——但了解格式差异很有用。
参见 C-hig (elisp) Dotted Pair Notation
RET