在Eclipse中自动格式化JavaScript代码

Auto-formatting of JavaScript code in Eclipse

考虑以下JavaScript代码的格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$("#dataTable").jqGrid({
    url: base +"products-all",
    datatype:"json",
    jsonReader: {repeatitems: false, id:"ref"},
    colNames:["ID","Product name","Price"],
    colModel:[
        {name:"id",index:"id", width:40, align:"right", classes:"grid-col"},
        {name:"name",index:"name", width:600, align:"left", classes:"grid-col", editable:true, editoptions:{size:25}},
        {name:"price",index:"price", width:100, align:"right", classes:"grid-col", formatter:'currency', formatoptions:{decimalSeparator:".", thousandsSeparator:",", decimalPlaces: 2, prefix:"$"}}
    ],
    rowNum:5,
    rowList:[5,10,20],
    height:114,
    shrinkToFit: true,
    sortname: 'id',
    sortorder:"asc",
    pager:"#pagingDiv",
    viewrecords: true,
    caption:"Products"
});

如何在Eclipse中配置JavaScript格式化程序(即Preferences> JavaScript> Code Style> Formatter),以确保在将自动格式化(SHIFT + CTRL + F)应用于自动格式化后,此代码看起来可以接受它?我可以使Eclipse将JSON对象的每个字段放在换行符上,但是结果看起来很混乱。我还可以禁用在每个字段之后插入换行符,然后整个对象将在一行中。

是否可以禁止在JSON对象中插入/删除换行符?如果不可能,我应该如何处理此代码的自动格式化?

我还有另一个例子:

1
2
3
4
5
6
7
8
9
jQuery("#dataTable").jqGrid(
    'navGrid',
    '#pagingDiv',
    {},
    {reloadAfterSubmit:false},
    {reloadAfterSubmit:false},
    {reloadAfterSubmit:false},
    {sopt:['cn','bw','eq','ne','lt','gt','ew']}
);

这是一个方法调用。通常,所有方法参数都应在同一行中。但是在这里,我希望每个论点都换行。如何使此代码通过自动格式设置?

更新:

我将Eclipse Kepler用于Java EE开发人员。我认为我的JavaScript编辑器是JavaScript开发工具插件的一部分,而该插件又是Eclipse Web Developer Tools软件包的一部分。


如果您不想每次都按SHIFT + CTRL + F,则只需要转至"首选项"->" Javascript"->"编辑器"->"保存操作"
然后选中"格式化源代码"框。


This question is hopeless since even jQuery wont ever be validated/formatted correctly!

几年以来,Eclipse中的JavaScript-Plugin屡见不鲜。

由于浏览器的强大功能,它永远不会改变(例如,有些需要;,有些不需要,有些则带有JSON-Notation)!我投票赞成从Eclipse中删除JavaScript,以清理Eclipse。


对于Eclipse中的Java(非JavaScript)代码格式化程序,这里有一个类似的问题的答案。最受欢迎的两个答案建议使用// @formatter:off标记和Never join already wrapped lines选项。不幸的是,Eclipse的默认JavaScript编辑器(我认为这是JavaScript开发工具/ Eclipse Web开发工具的一部分)中没有这两种功能。

可能的解决方法是安装Aptana Studio插件并改用其JavaScript编辑器。该编辑器具有// @formatter:off功能(有关详细信息,请参见此处)。我没有找到类似Never join already wrapped lines选项的东西。 Aptana Studio是一个具有许多功能的插件,安装它以获取新的JavaScript编辑器可能不切实际。 Aptana Studio允许您编辑JavaScript文件,但是如果您在JSP文件中嵌入了任何JavaScript代码,这将无济于事。

另一个可能的解决方法是选择性地使用代码格式化:您可以选择一个代码块,然后按SHIFT + CTRL + F仅格式化此特定块。

如果您正在阅读这篇文章,则可能是JavaScript代码格式还有另一个问题:启用自动换行时,Eclipse会弄乱JavaScript代码。可以通过在Maximum line width字段中放置一个大数字来禁用它,如此答案中所述。


这些选项在Eclipse Preferences中。

要实现它,请遵循此步骤。

窗口菜单>>首选项>> Web >> JavaScript >> Formatter

这将为您提供Javascript的活动格式配置文件。

选择要更改的配置文件,然后对其进行编辑或创建新的配置文件。
这将为您提供一个新窗口,该窗口将为您定义代码格式样式所需的所有选项。

您也可以对HTML,Java和其他代码执行相同的操作。