./devel/ormolu, Formatter for Haskell source code

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.7.4.0nb1, Package name: ormolu-0.7.4.0nb1, Maintainer: pkgsrc-users

Ormolu is a formatter for Haskell source code. The project was created with
the following goals in mind:

* Using GHC's own parser to avoid parsing problems caused by
haskell-src-exts.
* Let some whitespace be programmable. The layout of the input influences
the layout choices in the output. This means that the choices between
single-line/multi-line layouts in certain situations are made by the
user, not by an algorithm. This makes the implementation simpler and
leaves some control to the user while still guaranteeing that the
formatted code is stylistically consistent.
* Writing code in such a way so it's easy to modify and maintain.
* Implementing one "true" formatting style which admits no configuration.
* The formatting style aims to result in minimal diffs.
* Choose a style compatible with modern dialects of Haskell. As new Haskell
extensions enter broad use, we may change the style to accommodate them.
* Idempotence: formatting already formatted code doesn't change it.
* Be well-tested and robust so that the formatter can be used in large
projects.


Master sites:

Filesize: 342.644 KB

Version history: (Expand)


CVS history: (Expand)


   2023-11-02 07:37:49 by Masatake Daimon | Files touched by this commit (1141)
Log message:
Revbump all Haskell after updating lang/ghc96
   2023-10-30 07:28:51 by Masatake Daimon | Files touched by this commit (4)
Log message:
devel/ormolu: Update to 0.7.3.0

Ormolu 0.7.3.0
* Switched to ghc-lib-parser-9.8, with the following new syntactic features:
  - ExtendedLiterals: 123#Int8 is a literal of type Int8#. (disabled by
    default)
  - TypeAbstractions: @k-binders in data type declarations (enabled by
    default)
  - GHC proposal #134: deprecating/warning about exports
  - GHC proposal #541: warning categories

Ormolu 0.7.2.0
* Preserve necessary braces for final function arguments. Issue 1044.
* Put "this" PackageImports at the end. Issue 1048.
* Format parenthesized operators starting with a # correctly in the
  presence of UnboxedSums. Issue 1062.
* Fix false positives in AST diffing related to empty Haddock comments in
  data declarations. Issue 1065.

Ormolu 0.7.1.0
* Include base fixity information when formatting a Haskell file that's not
  mentioned in an existing cabal file. Issue 1032
* Update displayException for OrmoluException to pretty print the
  exception. PR 1031.
* Ormolu is now aware of more common module re-exports by default.
* Support explicit mention of target package name in module
  re-exports. Even if the exported package is not specified as a direct
  dependency of the component being formatted it will still be taken into
  account correctly. Issue 1037.
* Ormolu no longer fails when CPP directly follows the import section (a
  regression introduced in 0.7.0.0). Issue 1040.

Ormolu 0.7.0.0
* Inference of operator fixity information is now more precise and takes
  into account the import section of the module being formatted. Issue 892
  and issue 929.
* Ormolu can now be made aware of module re-exports through either special
  declarations in .ormolu files (see the readme for a description of the
  syntax), or on the command line with the --reexport/-r option. Issue
  1017.
* Ormolu now looks for .ormolu files independently of .cabal files. This
  means that it is now possible to have one .ormolu file for multiple Cabal
  packages. Issue 1019.
* Consistently format do blocks/cases/MultiWayIfs with 4 spaces if and only
  if they occur as the applicand. Issue 1002 and issue 730.
* Support the (deprecated) DatatypeContexts extension to avoid
  surprises. Issue 1012.
* Don't let comments escape from empty export lists. Issue 906.
* Format \cases with multiple patterns across multiple lines
  correctly. Issue 1025.

Ormolu 0.6.0.1
* Fix false positives in AST diffing related to UnicodeSyntax. PR 1009.

Ormolu 0.6.0.0
* Haddocks attached to arguments of a data constructor are now formatted in
  the pipe style (rather than the caret style), consistent with everything
  else. As a consequence, now Ormolu's output will be deemed invalid by the
  Haddock shipped with GHC <9.0. Issue 844 and issue 828.
* Insert space before char literals in ticked promoted constructs when
  necessary. Issue 1000.
* Switched to ghc-lib-parser-9.6:
  - Extended OverloadedLabels: #Foo, #3, #"Hello there".
  - Also, it is now disabled by default, as it causes e.g. a#b to be parsed
    differently.
  - New extension: TypeData, enabled by default.
  - Parse errors now include error codes, cf. https://errors.haskell.org.
* Updated to Cabal-syntax-3.10.
* Now whenever Ormolu fails to parse a .cabal file it also explains why. PR
  999.

Ormolu 0.5.3.0
* Stop making empty lets move comments. Issue 917.
* Now .ormolu fixity override files can use both LF and CRLF line
  endings. PR 969.
* Normalize parentheses around constraints. Issue 264.
* The ormolu function now consumes Text instead of String due to an
  internal refactoring.
* Exposed a more complete public API in the Ormolu module. The API is
  supposed to be stable and change according to PVP.
* Now warnings regarding Ormolu not being able to find .cabal files or
  finding such files but them not mentioning the source file in question
  are only displayed when --debug is used. Printing the warnings by default
  seems to have been confusing, see e.g. Issue 971 and issue 924.
   2023-10-09 06:55:01 by Masatake Daimon | Files touched by this commit (988)
Log message:
Bump Haskell packages after updating lang/ghc94
   2023-01-26 11:58:24 by Masatake Daimon | Files touched by this commit (5)
Log message:
devel/ormolu: Update to 0.5.2.0

Ormolu 0.5.2.0
* Eliminated the fixity-th Cabal flag because it caused issues on GHC 9.4
  as well as on aarch64. See issue 941 and issue 927.
* Now operators without explicitly specified fixity default to left
  associativity and highest precedence. Issue 907.

Ormolu 0.5.1.0
* Imports are now sorted by package qualifier, if one is present. Issue
  905.
* Extension packs like GHC2021 and Haskell2010 are now bumped to the top of
  the list of language pragmas. Issue 922.
* Fix formatting of SCC pragmas in do blocks. Issue 925.
* Support type applications in patterns. Issue 930.
* Handle UnicodeSyntax variants more consistently. Issue 934.
* Fix an inconsistency in formatting of types in GADT declarations in
  certain cases. PR 932.
* Switched to ghc-lib-parser-9.4, which brings support for the following
  new syntactic features:
  - \cases via LambdaCase
  - OPAQUE pragmas
  - Unboxed sum type constructors like (# | #).
* Updated to Cabal-syntax-3.8, supporting cabal-version: 3.8.

Ormolu 0.5.0.1
* Fixed a bug in the diff printing functionality. Issue 886.
* Indent closing bracket for list comprehensions in do blocks. Issue 893.
* Fix hs-source-dirs: . resulting in failing to find a .cabal file for a
  Haskell source file. Issue 909.
* Comments in closed type family declarations are now indented
  correctly. Issue 913.
* Cache .cabal file parsing and processing when given multiple input files
  in the same project. This results in dramatic speedups on projects which
  have both huge .cabal files and a large number of individual
  modules. Issue 897.

Ormolu 0.5.0.0
* Changed the way operator fixities and precedences are inferred.
  - Ormolu now tries to locate .cabal files of source files by default and
    in addition to default extensions it also infers the list of
    dependencies.
  - Ormolu comes equipped with extensive knowledge of all packages on
    Hackage and operators that those packages define. Knowing the names of
    the dependencies it can select the right fixity and precedence info
    from its knowledge base.
  - You can ask Ormolu not to look for .cabal files by using the --no-cabal
    switch.
  - Dependencies can be selected manually by using the -p / --package
    option (can be repeated many times).
  - The default heuristic algorithm will still try to guess the right
    fixities and precedence.
  - Fixity overrides can be provided by the user in the familiar Haskell
    notation (e.g. infixr 9 ., one declaration per line). They are loaded
    by default from the .ormolu file that is expected to be in the same
    directory as the .cabal file of a given source file. However, if
    --no-cabal is supplied, the .ormolu file will not be looked for
    either. Fixity declarations can be also provided by using the -f /
    --fixity command line option, which see.
  - This resolves the following issues: Issue 826, Issue 785, Issue 690,
    Issue 825.
* Invalid haddock comments are formatted in a more consistent way. Leading
  haddock triggers (|, ^) in an invalid haddock comment block are now
  escaped with a backslash \. Issue 816.
* Type synonyms and families are now formatted correctly when the equals
  sign is preceded by a comment. Issue 829.
* Bidirectional pattern synonyms are formatted nicer in certain
  cases. Issue 843.
* Magic comments (like {- ORMOLU_DISABLED -}) now allow arbitrary
  succeeding text. This fixes use cases like Issue 856.
* Remove discrepancies between unboxed types and terms. Issue 856 .
  - Unboxed sum types are now formatted with a space before each |.
  - Unboxed unit tuples on type and value levels are formatted as (# #).
* Errors caused by AST differences now print before/after diffs. Issue 877.
* Improved formatting of data declarations in the case of
  single-constructor record with a Haddock. Issue 881.
   2022-09-07 08:50:53 by Masatake Daimon | Files touched by this commit (149) | Package updated
Log message:
Recursive bump for recently updated Haskell packages
   2022-02-26 09:12:56 by Masatake Daimon | Files touched by this commit (1)
Log message:
devel/ormolu: Generate shell completion scripts with optparse-applicative
   2022-02-26 04:58:36 by Masatake Daimon | Files touched by this commit (872)
Log message:
Bump all Haskell packages after enabling "split sections" in mk/haskell.mk
   2022-02-16 11:23:02 by Masatake Daimon | Files touched by this commit (6)
Log message:
devel/ormolu: import ormolu-0.4.0.0

Ormolu is a formatter for Haskell source code. The project was created with
the following goals in mind:

* Using GHC's own parser to avoid parsing problems caused by
  haskell-src-exts.
* Let some whitespace be programmable. The layout of the input influences
  the layout choices in the output. This means that the choices between
  single-line/multi-line layouts in certain situations are made by the
  user, not by an algorithm. This makes the implementation simpler and
  leaves some control to the user while still guaranteeing that the
  formatted code is stylistically consistent.
* Writing code in such a way so it's easy to modify and maintain.
* Implementing one "true" formatting style which admits no configuration.
* The formatting style aims to result in minimal diffs.
* Choose a style compatible with modern dialects of Haskell. As new Haskell
  extensions enter broad use, we may change the style to accommodate them.
* Idempotence: formatting already formatted code doesn't change it.
* Be well-tested and robust so that the formatter can be used in large
  projects.