{"id":16339017,"url":"https://github.com/phadej/cabal-fmt","last_synced_at":"2025-04-12T18:52:24.198Z","repository":{"id":36420660,"uuid":"162038281","full_name":"phadej/cabal-fmt","owner":"phadej","description":"An experiment of formatting .cabal files","archived":false,"fork":false,"pushed_at":"2024-06-20T03:32:12.000Z","size":183,"stargazers_count":108,"open_issues_count":15,"forks_count":25,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-26T13:11:09.739Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phadej.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-16T20:29:47.000Z","updated_at":"2025-03-04T04:20:46.000Z","dependencies_parsed_at":"2024-04-27T14:02:08.581Z","dependency_job_id":"ac2fe39e-378a-491c-b46b-2fa6e30e5745","html_url":"https://github.com/phadej/cabal-fmt","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phadej%2Fcabal-fmt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phadej%2Fcabal-fmt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phadej%2Fcabal-fmt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phadej%2Fcabal-fmt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phadej","download_url":"https://codeload.github.com/phadej/cabal-fmt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618237,"owners_count":21134200,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T23:53:19.562Z","updated_at":"2025-04-12T18:52:24.145Z","avatar_url":"https://github.com/phadej.png","language":"Haskell","funding_links":[],"categories":["Lang,LSP,DAP,Formatter,Linter"],"sub_categories":[],"readme":"# cabal-fmt\n\n## Synopsis\n\n```sh\n$ cabal install cabal-fmt\n$ ...\n$ cabal-fmt --inplace example.cabal\n```\n\n## Output\n\nTurns this...\n\n```cabal\ncabal-version: 2.4\nname: cabal-fmt\nversion: 0\n\n-- An example formatter\nexecutable cabal-fmt\n    default-language: Haskell2010\n    hs-source-dirs: src \n    main-is: CabalFmt.hs\n    -- build depends will be in\n    -- a nice tabular format\n    build-depends: base \u003e=4.11 \u0026\u0026 \u003c4.13, pretty \u003e=1.1.3.6 \u0026\u0026 \u003c1.2, bytestring, Cabal ^\u003e=2.5, containers ^\u003e=0.5.11.0 || ^\u003e=0.6.0.1\n    -- extensions will be sorted\n    other-extensions:\n      DeriveFunctor FlexibleContexts ExistentialQuantification OverloadedStrings\n      RankNTypes\n```\n\n...into this:\n\n```cabal\ncabal-version: 2.4\nname:          cabal-fmt\nversion:       0\n\n-- An example formatter\nexecutable cabal-fmt\n  default-language: Haskell2010\n  hs-source-dirs:   src\n  main-is:          CabalFmt.hs\n\n  -- build depends will be in\n  -- a nice tabular format\n  build-depends:\n    , base        \u003e=4.11      \u0026\u0026 \u003c4.13\n    , bytestring\n    , Cabal       ^\u003e=2.5\n    , containers  ^\u003e=0.5.11.0 || ^\u003e=0.6.0.1\n    , pretty      \u003e=1.1.3.6   \u0026\u0026 \u003c1.2\n\n  -- extensions will be sorted\n  other-extensions:\n    DeriveFunctor\n    ExistentialQuantification\n    FlexibleContexts\n    OverloadedStrings\n    RankNTypes\n```\n\n## Editor Integration\n\n### Emacs\n\nIf you have `cabal-fmt` in your `$PATH`, you can auto-format `.cabal` files in\nyour project by putting this in the project directory's `.dir-locals.el`:\n\n```elisp\n((haskell-cabal-mode\n  (eval .\n    (add-hook 'before-save-hook\n      (lambda () (haskell-mode-buffer-apply-command \"cabal-fmt\")) nil t))))\n```\n\n### Vim\n\nThere are currently two options, both requiring `cabal-fmt` to be in your `$PATH`:\n\n  - [`vim-cabalfmt`](https://github.com/sdiehl/vim-cabalfmt), a standalone plugin\n  - [`neoformat`](https://github.com/sbdchd/neoformat), a general formatter with `cabal-fmt` support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphadej%2Fcabal-fmt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphadej%2Fcabal-fmt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphadej%2Fcabal-fmt/lists"}