在js2-mode中如何将缩进设置为2个空格?

34
我在我的.emacs文件末尾添加了这行代码:
(setq-default indent-tabs-mode nil)

(setq tab-stop-list (number-sequence 2 120 2))

在其他模式下它能够正常工作 - 每当我按tab键时,会添加两个空格。但是在js2-mode中,它会添加4个空格。

3个回答

43

您可以将 js2-basic-offset 设置为 2。

  1. M-x customize-variable
  2. 输入 js2-basic-offset
  3. 将值设置为 2

然后在自定义选项缓冲区中点击 应用并保存 按钮。这将添加一个用于设置变量的项目到 .emacsinit.el 文件中。


我有这个集合,在某些情况下使用2,但在其他情况下使用4。 - Ashnur
当我这样做时,两个缩进级别的任何内容都会变成一个制表符,而不是四个空格。我该如何防止这种情况发生? - Dan Jones
我认为将 indent-tabs-mode 设置为 nil 会有所帮助。 - ntalbs
谢谢!但如果每个emacs模式都使用相同的名称来设置索引或带有特定前缀的模式接近,那就太好了。 - Samantha Atkins

15

回复有点晚,但如果你和我一样在单独的文件中保存主要模式的配置,你可以添加以下行,并且它也能正常工作。

(add-hook 'js2-mode-hook (lambda () (setq js2-basic-offset 2)))

13

对我来说,js2-basic-offsetjs-indent-level的别名,因此我必须更改后者才能使其正常工作。


2
我还没有尝试过像被接受的答案建议的那样将js2-basic-offset更改为用户自定义变量,但是在.emacs中使用简单的setq来更改它应该是可以的。如果设置js2-basic-offset也无法正常工作,那么你的回答应该是正确的。对于js2-basic-offset,使用setq-default也可以起到同样的效果。 - ABu
1
推荐的其他所有东西似乎都失败了。js2-indent-level 运行良好! - Mapsy
@Mapsy,如果我没记错的话应该是 js-indent-level,而不是 js2-indent-level - Andrii Tykhonov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接