#java #visual-studio-code #redhat
#java #visual-studio-code #redhat
Вопрос:
Я использую VS Code IDE для Java project. Я устанавливаю поддержку языка Java (TM) от Red Hat для форматирования кода.
settings.json:
{
"java.configuration.updateBuildConfiguration": "automatic",
"java.debug.settings.hotCodeReplace": "auto",
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml",
"java.format.settings.profile": "GoogleStyle",
}
Я пишу такой класс:
public class Foo {
private int theFirstVariable, theSecondVariable, theThirdVariable, theFourthVariable, theFifthVariable, theSixthVariable;
Foo(
int theFirstVariable,
int theSecondVariable,
int theThirdVariable,
int theFourthVariable,
int theFifthVariable,
int theSixthVariable
) {
this.theFirstVariable = theFirstVariable;
this.theSecondVariable = theSecondVariable;
this.theThirdVariable = theThirdVariable;
this.theFourthVariable = theFourthVariable;
this.theFifthVariable = theFifthVariable;
this.theSixthVariable = theSixthVariable;
}
}
Когда я форматирую код (нажимаю Ctrl s
), он становится:
public class Foo {
private int theFirstVariable, theSecondVariable, theThirdVariable, theFourthVariable,
theFifthVariable, theSixthVariable;
Foo(int theFirstVariable, int theSecondVariable, int theThirdVariable, int theFourthVariable,
int theFifthVariable, int theSixthVariable) {
this.theFirstVariable = theFirstVariable;
this.theSecondVariable = theSecondVariable;
this.theThirdVariable = theThirdVariable;
this.theFourthVariable = theFourthVariable;
this.theFifthVariable = theFifthVariable;
this.theSixthVariable = theSixthVariable;
}
}
В конструкторе кажется, что форматор пытался заполнить все параметры в одну строку, пока не будет превышена максимальная длина строки. Можем ли мы сохранить формат fommer и как это сделать, если сможем?
Ответ №1:
Я попытался создать пользовательский eclipse-java-google-style.xml
и изменить, как предложила @Molly Wang. И я нашел некоторые изменения, которые могли бы дать желаемый результат:
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="1" />
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
После форматирования код становится:
public class Foo {
private int theFirstVariable, theSecondVariable, theThirdVariable, theFourthVariable, theFifthVariable, theSixthVariable;
Foo(
int theFirstVariable,
int theSecondVariable,
int theThirdVariable,
int theFourthVariable,
int theFifthVariable,
int theSixthVariable) {
this.theFirstVariable = theFirstVariable;
this.theSecondVariable = theSecondVariable;
this.theThirdVariable = theThirdVariable;
this.theFourthVariable = theFourthVariable;
this.theFifthVariable = theFifthVariable;
this.theSixthVariable = theSixthVariable;
}
}
Если вы хотите, чтобы в следующей строке был параметр конструктора close paren, добавьте пустую строку следующим образом:
public class Foo {
private int theFirstVariable, theSecondVariable, theThirdVariable, theFourthVariable,
theFifthVariable, theSixthVariable;
Foo(
int theFirstVariable,
int theSecondVariable,
int theThirdVariable,
int theFourthVariable,
int theFifthVariable,
int theSixthVariable
) {
this.theFirstVariable = theFirstVariable;
this.theSecondVariable = theSecondVariable;
this.theThirdVariable = theThirdVariable;
this.theFourthVariable = theFourthVariable;
this.theFifthVariable = theFifthVariable;
this.theSixthVariable = theSixthVariable;
}
}
Ответ №2:
Невозможно сохранить весь требуемый стиль форматирования. но есть необязательная настройка.
Загрузите GoogleStyle.xml и измените настройки:
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
Затем в Settings.json:
"java.format.settings.url": "<local path to java-google-style.xml>",
Это не приведет к тому, что ваш код будет таким же, как тот, который вы записываете, но, по крайней мере, параметры будут разбиты на строки. Хотя и не так хорошо: