-
Notifications
You must be signed in to change notification settings - Fork 59
Customize
ghcmod.vim passes these options to GHC via ghc-mod.
By default, ghcmod.vim doesn’t pass any GHC options.
Example: passing -idir1 and -idir2 to GHC
let g:ghcmod_ghc_options = ['-idir1', '-idir2']ghmod.vim passes these options to hlint via ghc-mod.
By default, ghcmod.vim doesn’t pass any hlint options.
Example: passing '--ignore=Redundant $' to hlint
let g:ghcmod_hlint_options = ['--ignore=Redundant $']The highlight group used in :GhcModType.
By default, the Search group is used.
See :help :highlight for details on Vim’s highlighting.
Example: highlighting sub-expressions with yellow background
hi ghcmodType ctermbg=yellow
let g:ghcmod_type_highlight = 'ghcmodType'Put the below in your ~/.vimrc.
When you write *.hs buffer to a file, both check and lint are run.
autocmd BufWritePost *.hs call s:check_and_lint()
function! s:check_and_lint()
let l:qflist = ghcmod#make('check')
call extend(l:qflist, ghcmod#make('lint'))
lcd `=expand('%:p:h')`
call setqflist(l:qflist)
lcd -
cwindow
endfunctionIf you like asynchronous checking, put the below instead.
autocmd BufWritePost *.hs call GhcModCheckAndLintAsyncThese autoload functions would be useful if you want to define a new command using ghcmod.vim.
ghcmod#type() highlights the current sub-expression and returns highlighted region [line1, col1, line2, col2] and its type.
Example return value: [['6', '10', '6', '17'], 'Maybe a']
ghcmod#type_clear() clears the highlight created by ghcmod#type().
ghcmod#parse_make() parses lines (which is ghc-mod’s output) and returns a list of quickfix items which can be used as an argument of setqflist().
This function is used by ghcmod#make() and ghcmod#async_make().
Note that ghc-mod produces NUL-characters. Using the result of split(system('ghc-mod check /path/to/file.hs'), '\n') is not a good idea.
ghcmod#make() invokes ghc-mod and returns its output as a list of quckfix items.
type is either check or lint.
Example return value: [{'lnum': '3', 'col': '1', 'filename': 'M.hs', 'type': 'W', 'text': 'Top-level binding with no type signature: foo :: Int'}]
ghcmod#async_make() invokes ghc-mod asynchronously and set its output at quickfix.
action is passed to setqflist()’s second argument.
ghcmod#exist_session() returns whether running sessions created by ghcmod#async_make() exist.
This is useful when you want to check automatically. See the definition of :GhcModCheckAndLintAsync as an example.
ghcmod#expand() returns the result of ghc-mod expand as a list of quickfix items.
Example return value: [{'lnum': '5', 'col': '5', 'filename': 'N.hs', 'text': 'Splicing expression'}, {'text': ' " hello TH " ======> " hello TH "'}]
ghcmod#check_version() returns whether ghc-mod’s version is higher or equal to version.
ghcmod#build_command() returns a ghc-mod command.
This function adds g:ghcmod_ghc_options to args .