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

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

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

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

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

【问题讨论】:

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

标签: javascript eclipse code-formatting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    3. 点击编辑

    4. 在Indentation 标签中,将Tab policy 设置为仅限空格。

    5. 将Indentation size 和Tab size 都设置为3。

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

    7. 按 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) 的一个技巧。

    1. 启动 Eclipse
    2. 打开首选项/JavaScript/代码样式/格式化程序
    3. 点击“新建”
    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 个)

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

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

    【讨论】:

      【解决方案4】:

      问题可以通过访问解决

      Preferences > JavaScript > Code Style > Formatter
      

      这些是步骤:

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

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

      【讨论】:

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