nixfmt icon indicating copy to clipboard operation
nixfmt copied to clipboard

Suggestion: commented out lines at the end of a `let` block should stay in the `let` block

Open jfly opened this issue 4 months ago • 0 comments

Description

I often comment/uncomment swaths of code when developing. Since adopting nixfmt, I've found that sometimes those lines of code move around when I comment them, which makes uncommenting them a chore: I have to uncomment them, and then laboriously move them back to where they came from. I'd prefer if nixfmt just didn't move them around.

I haven't been able to find a past discussion about this. I have not read the entire RFC, but https://github.com/nix-rfc-101/rfcs/blob/master/rfcs/0166-nix-formatting.md#comments does say:

  • Anything after the first # of single-line comments must be preserved.
    • This allows the common pattern of prefixing many lines with # to comment them out, without the formatter trying to change anything.

Which (to my eyes) looks like it's talking about this use case (commenting/uncommenting code).

Small example input

(Yes this code is silly. It does reflect a simplified version of things that happen to me when I'm trashing about during development, though.)

let
  # unused = 42;
in
42

Expected output

let
  unused = 42;
in
unused

Actual output

let
in
# unused = 42;
42

Note how unused = 42; got moved out of the let ... in block. This is easier to see in gif form:

2024-10-20_09-31-31_pattern

jfly avatar Oct 20 '24 14:10 jfly