Eclipse JavaScript 格式化程序疯狂(即:太多的填充)

Posted

技术标签:

【中文标题】Eclipse JavaScript 格式化程序疯狂(即:太多的填充)【英文标题】:Eclipse JavaScript formatter crazy (i.e: too much padding) 【发布时间】:2013-02-15 22:34:38 【问题描述】:

我无法很好地获取 Eclipse 格式的 javascript。 在第一个示例中,它的行为符合预期(不是第二个 url 的长度):

每当我有一个较长的 url 时,eclipse 就会疯狂地格式化我的代码,并且到处都有额外的填充,如下例所示:

为什么 JavaScript 格式化程序会有这样的行为,我该如何解决?

(以防万一:我没有安装任何格式化程序插件,我只是使用Eclipse Juno自带的默认)

【问题讨论】:

不要在函数中间放置长 URL。在其他地方定义它们。 我已经想到了,但我真的不想有一堆字符串变量。我知道我可以创建一个 JSON 对象,但是,像 Eclipse 这样的大平台不应该表现得像这样。 【参考方案1】:

这是我发现的:在“换行 > 函数调用”中,将底部的“缩进策略”设置为“缩进一个”。这会创建没有过多空格(或制表符)的缩进。我没有用你的确切代码尝试过,但我看到了类似的问题。

【讨论】:

【参考方案2】:

我找到了一个临时解决方案:

    转到 Window -> Preferences -> JavaScript -> Code Style -> Formatter

    将活动配置文件设置为 JavaScript 约定。

    点击编辑

    Indentation 标签中,将Tab policy 设置为仅限空格

    Indentation sizeTab size 都设置为3

    由于您无法覆盖默认配置文件,请更改配置文件名称并保存。

    Ctrl+Shift+F 即可享受。

注意:我不喜欢有 3 个空格,我更喜欢我的旧 4 个空格,但这是一个临时解决方案,直到有人找到更好的方法来解决这个问题。我只是想分享。

【讨论】:

可能您的解决方案取决于字符串的长度。使字符串更长,它会再次发生。如果您超出它,它与页边距有关。我通过在长字符串文字的中心插入“+”来解决这个问题。这是一个糟糕的解决方案,但它确实有效。【参考方案3】:

示例中的长url会影响“$.ajax(...”和“$(function()...”。

对于“$(function()...”,设置在 Preferences/JavaScript/Code Style/Formatter/Line Wrapping/Function Calls/Arguments 中。'Do not wrap' 可用。

至于"$.ajax(...",它类似于Java格式化程序中的'Qualified invocation'。(Preferences/Java/Code Style/Formatter/Line Wrapping/Function Calls)不幸的是,JSDT没有UI为此。(首选项/JavaScript/代码样式/格式化程序/换行/函数调用)

这是 JSDT 1.4.1(WTP R3.4.1) 的一个技巧。

    启动 Eclipse 打开首选项/JavaScript/代码样式/格式化程序 点击“新建” 根据需要输入配置文件名称,在列表框中选择'Eclipse [built-in]'(或JavaScript Conventions),取消选中'Open the edit dialog now'(无需编辑),然后单击'OK' 关闭首选项并退出 Eclipse 使用文本编辑器打开以下文件workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.jsdt.core.prefs 找到以下行并将 16 替换为 0org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16 保存 启动 Eclipse

(由于您有自己的个人资料,可能不需要 1-5 个)

当您在首选项中编辑格式化程序设置时,此 hack 将被恢复。 - (为防止覆盖,您需要做的就是导出格式化程序配置文件,编辑 XML 并将 'org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation' 更改为 0。现在再次保存并重新导入。此更改是永久的。

我认为这不能满足您的需求,我想最好使用其他格式化程序(3rd 方插件)。

【讨论】:

【参考方案4】:

问题可以通过访问解决

Preferences > JavaScript > Code Style > Formatter

这些是步骤:

    创建一个新的配置文件(因为您无法编辑内置的配置文件),如果您还没有,请点击Edit...。 打开Line Wrapping 标签。 在Maximum line width 字段中,输入9999。 点击ApplyOk

对于超过 9999 个字符的代码行,问题再次出现,但我可以忍受。

【讨论】:

其实我也试过了,但这实际上只是将问题推迟到当你有一个长度为 500 的字符串时,那么括号仍然会表现不佳。 我个人更喜欢这种方法而不是 hack,这无论如何代表了一种临时解决方案,直到您出于任何原因需要更改格式化程序设置。我已经编辑了我的答案,将 Eclipse 允许的最大值:从 500 到 9999。

以上是关于Eclipse JavaScript 格式化程序疯狂(即:太多的填充)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以设置 Eclipse Javascript 格式化程序以符合 JSLint?

java写安卓脚本,全网疯传

eclipse怎么格式化js代码

求助,快折磨疯了,win32 agent.gi病毒

idea配置html和javascript的格式化文件?

大厂疯抢“程序员”