Ⅰ. 插件描述
Haskell pretty printerⅡ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'chrisdone/hindent'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'chrisdone/hindent'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'chrisdone/hindent'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/chrisdone/hindent
Ⅳ. 文档说明
Haskell pretty printer
Install
$ stack install hindent
Usage
$ hindent --help
hindent --version --help --style STYLE --line-length <...> --indent-size <...> --no-force-newline [-X<...>]* [<FILENAME>]
Version 5.1.1
Default --indent-size is 2. Specify --indent-size 4 if you prefer that.
-X to pass extensions e.g. -XMagicHash etc.
The --style option is now ignored, but preserved for backwards-compatibility.
Johan Tibell is the default and only style.
hindent is used in a pipeline style
$ cat path/to/sourcefile.hs | hindent
The default indentation size is 2 spaces. Configure indentation size with --indent-size:
$ echo 'example = case x of Just p -> foo bar' | hindent --indent-size 2; echo
example =
case x of
Just p -> foo bar
$ echo 'example = case x of Just p -> foo bar' | hindent --indent-size 4; echo
example =
case x of
Just p -> foo bar
Customization
Create a .hindent.yaml file in your project directory or in your~/ home directory. The following fields are accepted and are the
default:
indent-size: 2
line-length: 80
force-trailing-newline: trueBy default, HIndent preserves the newline or lack of newline in your input. With force-trailing-newline, it will make sure there is always a trailing newline.
Emacs
In
elisp/hindent.el
there is hindent-mode, which provides keybindings to reindent parts of the
buffer:
M-qreformats the current declaration. When inside a comment, it fills the
current paragraph instead, like the standardM-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.
In order to format an entire source file execute:
:%!hindent
Alternatively you could use the
vim-hindent plugin which runs hindent
automatically when a Haskell file is saved.
Atom
Fortunately, you can use https://atom.io/packages/ide-haskell with the
path to hindent specified instead of that to stylish-haskell. Works
like a charm that way!
IntelliJ / other JetBrains IDEs
- Install the "HaskForce" Haskell plugin (this is so we get the language type recognized in the file watcher)
- Install the "File Watchers" plugin under "Browse Repositories"
Add a File Watcher with
- File type: Haskell Language
- Program:
/path/to/hindent - Arguments:
$FilePath$ - Immediate file synchronization: off
- Show console: Error

Now whenever you save a file, hindent should autoformat it.