Eclipse JavaScript格式化程序出现问题(即:填充过多)

6
我在使用Eclipse格式化JavaScript时出了问题。 在第一个示例中,它的表现如预期一样(不是第二个url的长度): 表现良好 每当我有一个更长的url时,Eclipse会精神错乱地格式化我的代码,并且我会得到额外的填充,如下面的示例所示: 表现不佳 为什么JavaScript格式化程序会这样,我该如何修复它?
(以防万一:我没有安装任何格式化插件,我只使用Eclipse Juno自带的默认插件。)

不要在函数中间放置过长的URL。请将它们定义在其他地方。 - Gilbert Le Blanc
我已经考虑过这个问题,但我真的不想有一堆字符串变量。我知道我可以制作一个JSON对象,但是,像Eclipse这样的大平台不应该表现出这种行为。 - Twinone
4个回答

12

通过访问,问题可以得到解决。

Preferences > JavaScript > Code Style > Formatter

以下是步骤:

  1. 创建一个新配置文件(由于无法编辑内置配置文件),如果你还没有创建,请点击 Edit...
  2. 打开 Line Wrapping 选项卡。
  3. Maximum line width 字段中输入 9999
  4. 点击 Apply,然后点击 Ok

对于具有超过 9999 个字符的代码行,问题仍会出现,但我可以忍受它。


其实我也试过那个方法,但那只是把问题推迟到当你有一个长度为500的字符串时,括号仍然会表现不好。 - Twinone
我个人更喜欢这种方式,而不是使用hack,因为后者只是一个临时解决方案,直到你因任何原因需要更改格式设置。我已经编辑了我的答案,将Eclipse允许的最大值从500更改为9999。 - Luca Fagioli

10
在示例中的长网址影响了 "$.ajax(..." 和 "$(function()..."。
至于 "$(function()...",设置在 Preferences/JavaScript/Code Style/Formatter/Line Wrapping/Function Calls/Arguments 中。'Do not wrap' 可用。
至于 "$.ajax(...",它类似于 Java formatter 中的 'Qualified invocation'。(Preferences/Java/Code Style/Formatter/Line Wrapping/Function Calls)不幸的是,JSDT 没有 UI 可供使用。(Preferences/JavaScript/Code Style/Formatter/Line Wrapping/Function Calls)
这是 JSDT 1.4.1(WTP R3.4.1)的技巧。
  1. 打开Eclipse
  2. 打开“Preferences/JavaScript/Code Style/Formatter”(首选项/JavaScript/代码样式/格式化)
  3. 点击“New”(新建)
  4. 输入你想要的配置文件名称,在列表框中选择“Eclipse [built-in]”(或JavaScript Conventions),取消勾选“Open the edit dialog now”(不需要编辑),然后点击“OK”
  5. 关闭偏好设置并退出Eclipse
  6. 使用文本编辑器打开以下文件:
    workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.jsdt.core.prefs
  7. 找到以下行并将16替换为0:
    org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16
  8. 保存文件
  9. 重新启动Eclipse

(因为您有自己的配置文件,也许1-5步骤是不必要的)

这个修改会在您在偏好设置中编辑格式化设置时被还原。 - (为了防止覆盖,您只需要导出您的格式化配置文件,编辑XML并将“org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation”更改为0。保存并重新导入即可。此更改是永久性的。

我认为这并不满足您的需求,最好使用其他格式化程序(第三方插件),我想是这样的。

2
我找到了一个临时解决方案:
  1. 进入 Window -> Preferences -> JavaScript -> Code Style -> Formatter

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

  3. 点击 Edit

  4. Indentation 选项卡中,将 Tab policy 设置为仅限空格

  5. Indentation sizeTab size 都设置为3

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

  7. 按下 Ctrl+Shift+F 并享受。

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


可能你的解决方案取决于字符串的长度。让字符串变长,问题会再次出现。这与页面边距有关,如果超过它,就会发生这种情况。我通过在长字符文字串的中心插入“+”来解决这个问题。这是一个糟糕的解决方案,但它有效。 - codefactor

1
我找到了这个:在“换行 > 函数调用”中,将底部的“缩进策略”设置为“缩进一个”。这样可以创建缩进而不会有过多的空格(或制表符)。我没有尝试过您的确切代码,但我曾经遇到过类似的问题。

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