Eclipse Javascript格式化程序(ctrl-shift-f)

Jef*_*eff 26 javascript eclipse code-formatting

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

这是一个简单的问题.我已经使用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>';
    });
}
Run Code Online (Sandbox Code Playgroud)

非常简单的东西.现在,如果我点击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>';
                    });
}
Run Code Online (Sandbox Code Playgroud)

为什么要将.transaction移动到新行?它没有接近80的线宽.看起来真的很乱.它也与第二个.executeSql一样,它仍然没有正确包装.这很奇怪.

现在我当然知道Window> Preferences> JavaScript> Code Style,但无论我在这里做什么都修复了这个问题.我希望有人有更多的Eclipse经验,知道出了什么问题.

我安装了Android Dev Tools和PDT.但是,此行为预先存在这些插件的安装.

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

Luc*_*oli 47

这个问题可以通过访问来解决

Preferences > JavaScript > Code Style > Formatter
Run Code Online (Sandbox Code Playgroud)

继续:

  1. 创建一个新的配置文件(因为您无法编辑已构建的配置文件),如果尚未编辑,请单击Edit....
  2. 打开Line Wrapping选项卡.
  3. 在该Maximum line width字段中,输入9999.
  4. 点击Apply,然后Ok.

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

  • 这是最好的答案,应该是公认的答案. (2认同)

Ste*_* H. 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>';
    });
}
Run Code Online (Sandbox Code Playgroud)