Repository navigation
Use google-format-code instead of eclipse ? #663
Description
Activity
Take a look at eclipse-jdtls/eclipse.jdt.ls#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 :(
Reacted by Arjun Surendra, joehanlon, Tomas Aschan, Ferlim Putra and Will 保哥@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());Reacted by Arjun Surendra and Will 保哥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 :(
Reacted by Arjun Surendra and pcdlynnI think embed google-java-format into language server will be the best option. Just like the IntelliJ IDEA's google-java-format plugin did.
Reacted by Marc JakobiBumping 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-formatorgoogle-java-format.exeif 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}" } ] } }
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,