r-lib / styler

Non-invasive pretty printing of R code
https://styler.r-lib.org
Other
725 stars 72 forks source link

Remove empty lines between roxygen docs and code? #936

Open IndrajeetPatil opened 2 years ago

IndrajeetPatil commented 2 years ago

AFAIK, there are currently no guidelines about this in the tidyverse style guide, but I was wondering if {styler} should adopt a convention to remove empty lines between roxygen documentation and the code.

In the wild, I often come across codebases that have formatting like the following. The count of empty spurious lines may differ across files. Currently, {styler} preserves such empty lines.

styler::style_text(
  "#' @export

  foo <- function() NULL"
)
#> #' @export
#> 
#> 
#> 
#> foo <- function() NULL

I wish {styler} could remove such inconsistencies and adopt a single rule. I'd propose that it removes all empty lines by default, but I am also open to other rules (e.g. always have a single empty line). The point is more about consistency in formatting.

#> #' @export
#> foo <- function() NULL

Just like in formatting R6 lists, I think one exception to this rule could be the presence of a comment block before the function. In such cases, a single empty line can be preserved.

styler::style_text(
  "#' @export

  # bla bla bla
  foo <- function() NULL"
)
#> #' @export
#> 
#> # bla bla bla
#> foo <- function() NULL

Curious to hear what you think.

MichaelChirico commented 2 years ago

I see this a lot too and regular favor styler removing it by default . I think of it like trailing_blank_lines_linter for roxygen blocks

lorenzwalthert commented 2 years ago

I agree we could remove blank lines after #'. This could be a new transformer in R/rules-line-break.R, and it could be off for strict = FALSE. @IndrajeetPatil interested in a PR? I can provide guidance. You can see how rules were added previously, e.g. https://github.com/r-lib/styler/pull/569/files.

IndrajeetPatil commented 2 years ago

@IndrajeetPatil interested in a PR? I can provide guidance.

Let me give this a try! And, yes, I will definitely need your guidance 🙃

You can see how rules were added previously, e.g. https://github.com/r-lib/styler/pull/569/files

That's a good starting point. Thanks.