vscode-java
vscode-java copied to clipboard
Use google-format-code instead of eclipse ?
Is there a way to use google-format-code instead of the eclipse formatter with vscode-java ?
At the moment i'm forced to use it with the SaveAndRun extension, but this has issues like me doing changes while the file is saved and having to reconcile the buffer as it tries to reload.
I could work on a PR for this if you give a few stating points on how to implement this, it would help ?
Thanks,
Take a look at https://github.com/eclipse/eclipse.jdt.ls/pull/640 I think it provides what you need.
@gorkem Yeah unfortunately even using like:
{ "java.format.enabled": true, "java.saveActions.organizeImports": true, "java.format.onType.enabled": true, "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml" }
The style is still different than what I get when I run google-format-code :(
@hexa00 Try to add:
"editor.tabSize": 2,
"editor.detectIndentation": false,
"editor.insertSpaces": true,
@snjeza Thanks but no luck it's like eclipse will format:
Like this:
List<String> someIds = foo.stream()
.map(id -> Something.Func(ABC, id))
.collect(Collectors.toList());
But google-format-code will do:
List<String> someIds =
foo
.stream()
.map(id -> Something.Func(ABC, id))
.collect(Collectors.toList());
I think Eclipse formatter does not have an option to insert newline before '.' references. I am not sure if there is any value over SaveAndRun extension to making this internal to vscode-java. What is the issue that you are having with SaveAndRun?
@gorkem The main problem is that there's a delay to between the save and reload of the formatted code in vscode. So if I save and continue to type then I have modifications that are not in the reloaded file causing vscode to prompt me to compare the unsaved buffer and the reload file. It can get quite annoying :(
edit: @fbricon will you please relabel? Thanks in advance
@gorkem will you please label this as an enhancement rather than a question?
I think embed google-java-format into language server will be the best option. Just like the IntelliJ IDEA's google-java-format plugin did.
Bumping because Google released binary versions of google-java-format this week.
Not sure if they are useful to this extension (the binaries are huge). But for future readers, you can just download the binary and put it on PATH (rename it to google-java-format
or google-java-format.exe
if on Windows), then run it with the vscode-runonsave extension.
Example config:
// settings.json
{
"emeraldwalk.runonsave": {
"commands": [
{
"match": ".java$",
"cmd": "google-java-format --replace ${file}"
}
]
}
}