如何阻止emacs缩进javascript逗号分隔列表的第二行(例如array或json) ?

How can I stop emacs from indenting the 2nd line of a javascript comma-separated list (e.g. array or json)?

本文关键字:二行 array json 例如 javascript 缩进 emacs 何阻止 列表 分隔      更新时间:2023-09-26

Emacs将我的代码缩进如下:

var myArray = [
    1,
        2,
        3,
        4,
        5,
    ];

而不是像这样:

var myArray = [
    1,
    2,
    3,
    4,
    5,
];

我该如何预防?

M-x版本给我:GNU Emacs 23.1.1 (x86_64-pc-linux-gnu, GTK+ version 2.18.3) 2010-03-26 on crested,由Debian修改

我不能更新我的emacs版本,不幸的是。

看起来您正在使用java-mode编辑JavaScript代码。虽然Java和JavaScript共享足够的语法,这可能会正常工作,但最好使用专用的JavaScript模式¹。

Emacs包括23.2版的js-mode,这是一个相当好的基本JavaScript编辑模式。如果可以升级Emacs,这可能是最简单的选择。您还可以在Emacs 23.1上安装js-mode(或其前身espresso-mode)。这是最新版本。

或者,您可以使用第三方模式,如js2-mode,它实际上包含了一个完整的JavaScript解释器。还有js3-mode,它声称是

js2-mode和js-mode的嵌合分叉

js2-modejs-mode版本都内置在我的Emacs 24.4中,完全按照您的需要缩进您的示例代码:

var myArray = [
    1,
    2,
    3,
    4,
    5,
];

¹不幸的是,仍然有足够的困惑,值得指出的是,Java和JavaScript是完全不同的语言。你可能已经知道了;我认为Emacs实际上默认为java-mode的JavaScript代码有一段时间了