Skip to content

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

@jfly

Description

@jfly

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
42

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions