Skip to content

Use google-format-code instead of eclipse ? #663

Description

@hexa00

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,

Activity

  1. gorkem commented on Oct 5, 2018

    @gorkem
    Contributor

    Take a look at eclipse-jdtls/eclipse.jdt.ls#640 I think it provides what you need.

  2. hexa00 commented on Oct 5, 2018

    @hexa00
    Author

    @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 :(

  3. snjeza commented on Oct 5, 2018

    @snjeza
    Collaborator

    @hexa00 Try to add:

    "editor.tabSize": 2,
    "editor.detectIndentation": false,
    "editor.insertSpaces": true,
    
  4. hexa00 commented on Oct 5, 2018

    @hexa00
    Author

    @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());
    
  5. gorkem commented on Oct 6, 2018

    @gorkem
    Contributor

    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?

  6. hexa00 commented on Oct 6, 2018

    @hexa00
    Author

    @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 :(

  7. anthonyvdotbe commented on Mar 22, 2020

    @anthonyvdotbe

    edit: @fbricon will you please relabel? Thanks in advance

    @gorkem will you please label this as an enhancement rather than a question?

  8. doggy8088 commented on Sep 4, 2022

    @doggy8088
    Contributor

    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.

  9. abceleung commented on Feb 21, 2024

    @abceleung

    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}"
          }
        ]
      }
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions