styler icon indicating copy to clipboard operation
styler copied to clipboard

Set off each comment with one blank line?

Open IndrajeetPatil opened this issue 2 years ago • 4 comments
trafficstars

Preamble

An effective way to get an overview of the code is to read the comments without reading the code. Setting comments off with a blank line helps distinguish code from comments and makes it easy for the reader to scan the code or the comment.

Actual

This is a minimal reprex to illustrate the issue, but you can scale this to more complex comments and highly involved code block below each comment.

styler::style_text("# comment-1
if (TRUE) {
  # comment-2
  x <- 1
  # comment-3
  a <- 3
}
# comment-4
x + 1")
#> # comment-1
#> if (TRUE) {
#>   # comment-2
#>   x <- 1
#>   # comment-3
#>   a <- 3
#> }
#> # comment-4
#> x + 1

Created on 2022-11-30 with reprex v2.0.2

Expected

Note that this doesn't apply to the comments at the start of the scope.

#> # comment-1
#> if (TRUE) {
#>   # comment-2
#>   x <- 1
+ #>               
#>   # comment-3
#>   a <- 3
#> }
+ #>               
#> # comment-4
#> x + 1

IndrajeetPatil avatar Nov 30 '22 14:11 IndrajeetPatil

I see the use case, but most people won't want this always. Note that {styler} preserves line breaks around comments in certain situations (search the issues for more context), e.g. in your case,

styler::style_text("# comment-1
if (TRUE) {
  
  # comment-2
  x <- 1
  
  # comment-3
  a <- 3
}

# comment-4
x + 1")
#> # comment-1
#> if (TRUE) {
#>   # comment-2
#>   x <- 1
#> 
#>   # comment-3
#>   a <- 3
#> }
#> 
#> # comment-4
#> x + 1

Created on 2022-11-30 with reprex v2.0.2

Hence, I consider such an invasive formatting out of scope for {styler}. Maybe also check out https://github.com/lionel-/codegrip?

lorenzwalthert avatar Nov 30 '22 15:11 lorenzwalthert

I see the use case, but most people won't want this always.

Maybe this can be an optional argument? E.g. offset_comment_with_one_blank_line?

https://github.com/r-lib/styler/blob/d137eb6f88cfd88e621f7c92cb8a4de868e5a93c/R/style-guides.R#L68

Note that {styler} preserves line breaks around commas in certain situations

I didn't get the connection between this comment and the reprex in your comment.

Hence, I consider such an invasive formatting out of scope for {styler}. Maybe also check out https://github.com/lionel-/codegrip?

Looking at the roadmap section of codegrip, I doubt it's in the scope of that package either.

IndrajeetPatil avatar Nov 30 '22 16:11 IndrajeetPatil

I didn't get the connection between this comment and the reprex in your comment.

Fixed, I meant comments, not commas :D

lorenzwalthert avatar Nov 30 '22 16:11 lorenzwalthert

I am not gonna implement this, but if you want, you can send a PR. I think the default should be the current behavior.

lorenzwalthert avatar Dec 27 '22 15:12 lorenzwalthert