hindent: Extensible Haskell pretty printer

[ bsd3, development, library, program ] [ Propose Tags ]

Extensible Haskell pretty printer. Both a library and an executable.

See the Github page for usage/explanation: https://github.com/chrisdone/hindent


[Skip to Readme]
Versions [faq] 0.0, 1.0, 2.0, 2.1, 2.2, 2.3, 2.4, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.9.1, 4.0, 4.1.0, 4.1.1, 4.2.0, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 4.3.0, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.3.7, 4.3.8, 4.3.9, 4.3.10, 4.3.11, 4.3.12, 4.4.0, 4.4.1, 4.4.2, 4.5.0, 4.5.1, 4.5.2, 4.5.3, 4.5.4, 4.5.5, 4.5.6, 4.5.7, 4.6.0, 4.6.1, 4.6.2, 4.6.3, 4.6.4, 5.0.0, 5.0.1, 5.1.0, 5.1.1, 5.2.0, 5.2.1, 5.2.2, 5.2.3, 5.2.4, 5.2.4.1, 5.2.5, 5.2.6, 5.2.7, 5.3.0, 5.3.1 (info)
Change log CHANGELOG.md
Dependencies base (>=4.7 && <4.11), bytestring, containers, descriptive (>=0.7 && <0.10), directory, exceptions, ghc-prim, haskell-src-exts (>=1.18 && <1.20), hindent, monad-loops, mtl, text, transformers, utf8-string [details]
License BSD-3-Clause
Copyright 2014 Chris Done, 2015 Andrew Gibiansky
Author Chris Done, Andrew Gibiansky, Tobias Pflug, Pierre Radermecker
Maintainer chrisdone@gmail.com
Revised Revision 1 made by HerbertValerioRiedel at Sat Mar 16 18:26:14 UTC 2019
Category Development
Home page http://www.github.com/chrisdone/hindent
Bug tracker https://github.com/chrisdone/hindent/issues
Source repo head: git clone https://github.com/chrisdone/hindent
Uploaded by ChrisDone at Sat Aug 20 10:44:01 UTC 2016
Distributions Arch:5.3.1, NixOS:5.3.1
Executables hindent
Downloads 36750 total (1003 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2016-11-21 [all 1 reports]

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for hindent-5.0.1

[back to package description]

hindent Hackage Build Status

Extensible Haskell pretty printer. Both a library and an executable.

Install

$ stack install

Usage

hindent is used in a pipeline style:

$ cat path/to/sourcefile.hs | hindent > outfile.hs

Emacs

In elisp/hindent.el there is hindent-mode, which provides keybindings to reindent parts of the buffer:

  • M-q reformats the current declaration. When inside a comment, it fills the current paragraph instead, like the standard M-q.
  • C-M-\ reformats the current region.

To enable it, add the following to your init file:

(add-to-list 'load-path "/path/to/hindent/elisp")
(require 'hindent)
(add-hook 'haskell-mode-hook #'hindent-mode)

Vim

The 'formatprg' option lets you use an external program (like hindent) to format your text. Put the following line into ~/.vim/ftplugin/haskell.vim to set this option for Haskell files:

setlocal formatprg=hindent

Then you can format with hindent using gq. Read :help gq and help 'formatprg' for more details.

Note that unlike in emacs you have to take care of selecting a sensible buffer region as input to hindent yourself. If that is too much trouble you can try vim-textobj-haskell which provides a text object for top level bindings.

Atom

Basic support is provided through atom/hindent.coffee. Mode should be installed as package into .atom\packages\${PACKAGE_NAME}, here is simple example of atom package.