26

我不喜欢问这个问题,但老实说,很长一段时间以来我一直在寻找一种方法来解决这个问题。

这是一个简单的问题。我已经使用 NetBeans 很长时间了,但最近因为一些我不会深入讨论的原因切换到了 Eclipse。无论如何,我发现 javascript 源格式的行为非常奇怪。

这是我自己格式化的 javascript 代码示例块:

function buildDatabase () {
    db.transaction(function (tx) {
        tx.executeSql('DROP TABLE IF EXISTS calendar');
        tx.executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
    }, function (err) {
        document.querySelector('#debugLog').innerHTML += '<p><code>' + err.message + '</code></p>';
    });
}

很简单的东西。现在,如果我按Ctrl++Shift对其F进行格式化(因为坦率地说,这个功能可以节省大量时间),由于我无法理解的原因,它现在看起来像这样:

function buildDatabase() {
    db
            .transaction(
                    function(tx) {
                        tx.executeSql('DROP TABLE IF EXISTS calendar');
                        tx
                                .executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
                    },
                    function(err) {
                        document.querySelector('#debugLog').innerHTML += '<p><code>'
                                + err.message + '</code></p>';
                    });
}

为什么要将 .transaction 移到新行?它没有接近 80 的线宽。看起来真的很乱。第二个 .executeSql 也是如此,但仍然无法正确包装。这很奇怪。

现在我当然知道Window > Preferences > JavaScript > Code Style但无论我在这里做什么都可以解决这个问题。我希望有人对 Eclipse 有更多的经验来知道出了什么问题。

我安装了 Android 开发工具和 PDT。但是,此行为预先存在这些插件的安装。

任何帮助将不胜感激,谢谢。

4

5 回答 5

47

该问题可以通过访问解决

Preferences > JavaScript > Code Style > Formatter

继续:

  1. 创建一个新配置文件(因为您无法编辑内置配置文件),如果您还没有,然后单击Edit...
  2. 打开Line Wrapping选项卡。
  3. 在该Maximum line width字段中,输入9999
  4. 单击ApplyOk

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

于 2013-04-24T08:33:39.950 回答
4

根据我的经验,导致此问题的原因是长而牢不可破的线路。很烦人。尝试将长字符串常量(如“'CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)'”)放入一个单独的变量中,或者如果它真的让你烦恼,你可以把它分开并与 + 连接。

我试过这个:

function buildDatabase() {
    var sql1 = 'CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)';

    db.transaction(function(tx) {
        tx.executeSql('DROP TABLE IF EXISTS calendar');
        tx.executeSql(sql1);
    }, function(err) {
        document.querySelector('#debugLog').innerHTML += '<p><code>'
            + err.message + '</code></p>';
    });
}
于 2013-02-11T22:06:12.830 回答
4

首选项 > JavaScript > 代码样式 > 格式化程序 > 换行(选项卡)

取消选中>> 更喜欢包装外部表达式(将嵌套表达式保持在一行)

于 2014-09-27T03:24:47.513 回答
3

我有同样的问题。我所做的是安装Aptana Studio 插件并开始使用它附带的 JavaScript 编辑器。它比 WTP 附带的要好得多。

于 2013-02-11T21:53:06.443 回答
0

我也发现了这一点,这也是我在很大程度上回到 NetBeans 的主要原因之一。

我没有解决方案,但我可以给你一些对我有用的一般提示,至少在某种程度上是这样。

  1. 而不是这样的括号:}); 试着把每一个放在一个新的行上。
  2. 而不是像这样解析参数:

    日历(ID UNIQUE、摘要、描述、位置、开始日期、结束日期)

也许试试

calendar(id 
UNIQUE, 
summary, 
description, 
location, 
startdate, 
enddate)

   3. 最后,您可以尝试在连接字符串时将 + 放在新行上。

就像我说的,我知道这并不能解决您的问题,但我认为至少在出现更好的解决方案之前它可能会对您有所帮助。

祝你好运。

于 2013-02-11T06:55:42.777 回答