NixOS / nixfmt

The official (but not yet stable) formatter for Nix code
https://nixfmt.serokell.io
Mozilla Public License 2.0
731 stars 28 forks source link

Comment directive to disable nixfmt #91

Open PAI5REECHO opened 2 years ago

PAI5REECHO commented 2 years ago

Description

It'd be nice to have a way to disable formatting with a comment directive such as https://github.com/nix-community/nixpkgs-fmt/issues/265. If this were added I'd probably switch from using nixpkgs-fmt.

Small example input

# nixfmt: off
{
  "asd" = 123; "abc" = 321;
}
# nixfmt: on

Expected output

# nixfmt: off
{
  "asd" = 123; "abc" = 321;
}
# nixfmt: on

Actual output

# nixfmt: off
{
  "asd" = 123;
  "abc" = 321;
}
# nixfmt: on
spikespaz commented 1 year ago

Needed especially for this file: https://github.com/spikespaz/dotfiles/blob/bb736ba0cb12f96024c638df443c623d2e6a1997/packages/ttf-ms-win11/hashes.nix

This is a very top-priority feature for me. I've been wanting it for quite some time.

piegamesde commented 1 year ago

I think this would be incredibly difficult to implement. You are probably better off simply adding that file to your treefmt ignore list.

spikespaz commented 1 year ago

simply adding that file to your treefmt ignore list.

I don't know what treefmt is nor do I use Neovim.

yorickvP commented 11 months ago

It would be hard for us to not format certain sections, it would be easy to skip formatting the entire file.

However, there are already ways to achieve this: treefmt is a formatter runner, that calls the correct formatter for every file in your project. It supports specifying files to keep unformatted.

spikespaz commented 8 months ago

What about when I use

formatter = eachSystem (system: inputs.nixfmt.packages.${system}.default);

Is there a way to exclude a file then?

spikespaz commented 8 months ago

Perhaps a directive to disable a file would work well.

# @nixfmt off

For a whole file, not section.