spotless icon indicating copy to clipboard operation
spotless copied to clipboard

Better names for `indentWithSpaces` and `indentWithTabs`

Open wheelerlaw opened this issue 3 years ago • 4 comments

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

wheelerlaw avatar Feb 10 '21 22:02 wheelerlaw

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.

jbduncan avatar Feb 10 '21 23:02 jbduncan

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.

wheelerlaw avatar Feb 10 '21 23:02 wheelerlaw

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

  • [ ] should keep working
  • [ ] be marked as deprecated
  • [ ] emit a warning saying something like replace 'foo' with 'bar' in your gradle buildscript

nedtwigg avatar Feb 10 '21 23:02 nedtwigg

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

jbduncan avatar Apr 27 '21 17:04 jbduncan