diffplug / spotless

Keep your code spotless
Apache License 2.0
4.57k stars 459 forks source link

Better names for `indentWithSpaces` and `indentWithTabs` #794

Open wheelerlaw opened 3 years ago

wheelerlaw commented 3 years ago

So I have this simple groovy formatter just to ensure that all files Groovy and Groovy related files end with newlines and are indented using 4 spaces. However, when I run ./gradlew spotlessApply, files that are indented with 2 spaces are not converted. Here is the block:

spotless {
    format 'groovy', {
        target '*.gradle', 'Jenkinsfile*', '*.groovy'
        indentWithSpaces()
        endWithNewline()
    }
}

I am not using the groovy formatter because I have Jenkins script files that are located outside of source sets. So according to the documentation, this should work, since I have defined the target file name matcher, and the rules I want applied.

Spotless version: 5.10.0 Gradle version: 6.7 Operating system: Fedora 33

jbduncan commented 3 years ago

Ah, that's something with indentWithSpaces() that people get confused about a lot. (I was confused about it in the past too!)

indentWithSpaces() doesn't translate stuff that already has spaces from e.g. 2 spaces per indent to 4 spaces; it only translates tabs to 4 spaces.

See @nedtwigg's rationale for this over at https://github.com/diffplug/spotless/issues/58#issuecomment-269416333. tl;dr: it would clobber spaces in Javadoc comments otherwise.

wheelerlaw commented 3 years ago

Ah, that's interesting. It should at the very least be renamed to remove the confusion, like tabsToSpaces() or something similar. I can create a PR for it.

nedtwigg commented 3 years ago

leadingTabsToSpaces and leadingSpacesToTabs are better names, good call! Important checklist for the old methods:

jbduncan commented 3 years ago

@wheelerlaw If you're still willing and able to create a PR for this issue, then please feel free to go ahead. :)

anaconda875 commented 3 months ago

@jbduncan @wheelerlaw @alexvetter I have the issue that indent does not work with palandir https://github.com/diffplug/spotless/issues/2204 Did this fix fix the issue? If yes, which config I need to put to my pom.xml? Thanks