Happy Haskell programming on Vim, powered by ghc-mod
Happy Haskell programming on Vim, powered by ghc-mod
ghc-mod type)
ghc-mod checkand
ghc-mod lint)
ghc-mod expand)
ghc-mod split)
Completions are supported by another plugin. See neco-ghc .
ghcmod.vim contains ftplugin. Please make sure that filetype plugin is enabled. To check it, type
:filetypeand you would see something like this:
filetype detection:ON plugin:ON indent:ON. You can enable it by
:filetype plugin on. I highly recommend adding
filetype plugin indent onto your vimrc. See
:help :filetype-overviewfor more details.
https://github.com/Shougo/vimproc
cabal install ghc-mod
If you'd like to give GHC options, set
g:ghcmod_ghc_options.
let g:ghcmod_ghc_options = ['-idir1', '-idir2']
Also, there's buffer-local version
b:ghcmod_ghc_options.
autocmd BufRead,BufNewFile ~/.xmonad/* call s:add_xmonad_path() function! s:add_xmonad_path() if !exists('b:ghcmod_ghc_options') let b:ghcmod_ghc_options = [] endif call add(b:ghcmod_ghc_options, '-i' . expand('~/.xmonad/lib')) endfunction
Type
:GhcModTypeon a expression, then the sub-expression is highlighted and its type is echoed. If you type
:GhcModTypemultiple times, the sub-expression changes.
Since ghc-mod 1.10.8, not only sub-expressions but name bindings and sub-patterns are supported.
Type
:GhcModTypeClearto clear sub-expression's highlight.
Sub-expressions are highlighted as
Searchby default. You can customize it by setting
g:ghcmod_type_highlight.
hi ghcmodType ctermbg=yellow let g:ghcmod_type_highlight = 'ghcmodType'
You can get compiler errors/warnings by
:GhcModCheckand they are available in quickfix window.
Similarly, type
:GhcModLintto get suggestions by
ghc-mod lint.
If you'd like to pass options to hlint, set
g:ghcmod_hlint_options.
let g:ghcmod_hlint_options = ['--ignore=Redundant $']
If you'd like to open in another way the quickfix, set
g:ghcmod_open_quickfix_function.
let g:ghcmod_open_quickfix_function = 'GhcModQuickFix' function! GhcModQuickFix() " for unite.vim and unite-quickfix :Unite -no-empty quickfix" for ctrlp ":CtrlPQuickfix
" for FuzzyFinder ":FufQuickfix endfunction
You can run check and/or lint asynchronously.
This would be useful when you'd like to run check and/or lint automatically (especially on
BufWritePost). See Customize wiki page for more detail.
You can see the expansion of splices by
:GhcModExpandand they are available in quickfix window.
This feature was introduced since ghc-mod 1.10.10.
Split the function case by examining a type's constructors.
f :: [a] -> a f x = _body
When you type
:GhcModSplitFunCaseat the
xposition, ghcmod-vim will replace it with:
f :: [a] -> a f [] = _body f (x:xs) = _body
Insert initial code from the given signature.
func :: [a] -> Maybe b -> (a -> b) -> (a,b)
ghcmod-vim will insert initial code using typed holes.
func x y z f = _func_body
Instance declarations are also supported.
newtype D = D (Int,String)class C a where cInt :: a -> Int cString :: a -> String
instance C D where
ghcmod-vim will insert:
cInt x = _cInt_body cString x = _cString_body
See wiki page Customize.
BSD3 License, the same license as ghc-mod.
Copyright (c) 2012-2013, eagletmt