spotless
spotless copied to clipboard
Better names for `indentWithSpaces` and `indentWithTabs`
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
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.
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.
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
@wheelerlaw If you're still willing and able to create a PR for this issue, then please feel free to go ahead. :)