Подтвердить что ты не робот

Формат Eclipse Javascript (ctrl-shift-f)

Мне не нравится задавать этот вопрос, но я честно искал способ понять это в течение очень долгого времени.

Это простой вопрос. Я использую 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 Dev Tools и PDT. Однако это поведение предшествует установке этих плагинов.

Любая помощь будет оценена, спасибо.

4b9b3361

Ответ 1

Из моего опыта, это длинные, нерушимые линии, которые вызывают эту проблему. Очень раздражает. Попробуйте поместить длинные строковые константы (например, "CREATE TABLE IF NOT EXISTS calendar (id UNIQUE, summary, description, location, startdate, enddate)" ) в отдельный var, или, если это действительно вас задевает, вы можете разбить его и concat с +.

Я пробовал это:

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>';
    });
}

Ответ 2

Проблема может быть решена путем доступа к

Preferences > JavaScript > Code Style > Formatter

Продолжить

  • Создайте новый профиль (так как вы не можете отредактировать встроенный), если вы еще этого не сделали, и нажмите Edit....
  • Откройте вкладку Line Wrapping.
  • В поле Maximum line width введите 9999.
  • Нажмите Apply и Ok.

Проблема снова появляется для строк кода, которые имеют более 9999 символов, но я могу жить с этим.

Ответ 3

У меня была та же проблема. Я сделал установку Aptana Studio Plugin и начал использовать редактор JavaScript, с которым он поставляется. Это намного лучше, чем тот, который поставляется с WTP.

Ответ 4

Настройки > JavaScript > Стиль кодa > Formatter > Линейная упаковка (вкладка)

снимите флажок → предпочитайте обертывание внешних выражений (сохраняйте вложенное выражение в одной строке)

Ответ 5

Я тоже нашел это, и это одна из основных причин, почему я в основном вернулся к NetBeans.

У меня нет решения, но я могу дать вам несколько общих советов, которые работали для меня, по крайней мере в некоторой степени.

  • Вместо скобок вроде:}); попробуйте поместить их в новую строку.
  • Вместо синтаксического анализа таких параметров:

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

возможно, попробуйте

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

3. Наконец, вы можете попытаться поместить символ + в новую строку при конкатенации строк.

Как я уже сказал, я знаю, что это не решает вашу проблему, но я подумал, что, по крайней мере, это может помочь вам, пока не появится лучшее решение.

Желаем удачи.