google / styleguide

Style guides for Google-originated open-source projects
https://google.github.io/styleguide/
Apache License 2.0
37.23k stars 13.3k forks source link

Java style for Eclipse formats imports incorrectly #273

Open donce opened 7 years ago

donce commented 7 years ago

From https://google.github.io/styleguide/javaguide.html#s3.3.3-import-ordering-and-spacing:

If there are both static and non-static imports, a single blank line separates the two blocks.

Now, all imports are in a single block:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.net.URI;
import java.util.Collections;
import org.eclipse.core.runtime.CoreException;
import org.junit.Test;

Empty line should be left between static and non-static imports, so it should be like this:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

import java.net.URI;
import java.util.Collections;
import org.eclipse.core.runtime.CoreException;
import org.junit.Test;

This formatting is done by this line in config:

<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="0"/>

The problem is that Eclipse doesn't seem to support custom spacing between static and non-static groups.

nicolai86 commented 6 years ago

Is there a workaround available besides running the formatter outside of eclipse?

donce commented 6 years ago

Using IntelliJ? :D

mkolesnikov commented 5 years ago

For those who still comes to this issue for solution, here is how to Organize Import should be set up:

MarceloLeite2604 commented 4 years ago

Thanks @mkolesnikov for the workaround. It helped me out organize import groups on my project. I also used your second workaround to add a blank line between import groups. I think GoogleStyle formatting profile defined on eclipse-java-google-style.xml should have this value defined, so it wouldn't be necessary to change it after import. Is it possible to add it?

oliviercailloux commented 3 years ago

Just stumbled upon this problem. Indeed, this would be a nice and easy change: just set <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/> instead of 0 currently, here.

florianlacreuse commented 2 months ago

There has been an open PR #279 for a long time.