Difference between revisions of "Vim"
Jheidbrink (talk | contribs) |
Jheidbrink (talk | contribs) (remove custom snippets) |
||
Line 1: | Line 1: | ||
[[Category:Development tools]] |
[[Category:Development tools]] |
||
− | This page is intended for Haskell vim-users. |
||
− | = |
+ | = Plugins = |
− | Put code in file <code>~/.vim/plugin/Haskell.vim</code>, or in multiple files in that directory. |
||
− | |||
− | == Module Sections == |
||
− | The following code prompts for a name, and places a section with that name at current position, when key sequence "--s": |
||
− | <pre> |
||
− | let s:width = 80 |
||
− | |||
− | function! HaskellModuleSection(...) |
||
− | let name = 0 < a:0 ? a:1 : inputdialog("Section name: ") |
||
− | |||
− | return repeat('-', s:width) . "\n" |
||
− | \ . "-- " . name . "\n" |
||
− | \ . "\n" |
||
− | |||
− | endfunction |
||
− | |||
− | nmap <silent> --s "=HaskellModuleSection()<CR>gp |
||
− | </pre> |
||
− | Like so: |
||
− | <haskell> |
||
− | |||
− | -------------------------------------------------------------------------------- |
||
− | -- my section |
||
− | |||
− | </haskell> |
||
− | |||
− | |||
− | == Module Headers == |
||
− | The following code prompts for module name, a note, a description of module, and places a module comment at top, when key sequence "--h": |
||
− | <pre> |
||
− | let s:width = 80 |
||
− | |||
− | |||
− | function! HaskellModuleHeader(...) |
||
− | let name = 0 < a:0 ? a:1 : inputdialog("Module: ") |
||
− | let note = 1 < a:0 ? a:2 : inputdialog("Note: ") |
||
− | let description = 2 < a:0 ? a:3 : inputdialog("Describe this module: ") |
||
− | |||
− | return repeat('-', s:width) . "\n" |
||
− | \ . "-- | \n" |
||
− | \ . "-- Module : " . name . "\n" |
||
− | \ . "-- Note : " . note . "\n" |
||
− | \ . "-- \n" |
||
− | \ . "-- " . description . "\n" |
||
− | \ . "-- \n" |
||
− | \ . repeat('-', s:width) . "\n" |
||
− | \ . "\n" |
||
− | |||
− | endfunction |
||
− | |||
− | |||
− | nmap <silent> --h "=HaskellModuleHeader()<CR>:0put =<CR> |
||
− | </pre> |
||
− | like so: |
||
− | <haskell> |
||
− | -------------------------------------------------------------------------------- |
||
− | -- | |
||
− | -- Module : MyModule |
||
− | -- Note : This is a preview |
||
− | -- |
||
− | -- This is an empty module, to show the headercomment produced. |
||
− | -- |
||
− | -------------------------------------------------------------------------------- |
||
− | |||
− | |||
− | </haskell> |
||
== List of Plugins == |
== List of Plugins == |
Revision as of 20:03, 15 March 2019
Plugins
List of Plugins
Quote from [1]:
It’s the filetype plugin for Haskell that should ship with Vim.
- Hindent Haskell pretty printer
- stylish-haskell Haskell code prettifier
- Ale (Asynchronous Linting Engine)
ALE (Asynchronous Lint Engine) is a plugin for providing linting (checking syntax and semantics) in NeoVim 0.2.0+ and Vim 8 while you edit your text files, and acts as a Vim Language Server Protocol client.
Comes with linters cabal_ghc, ghc, ghc_mod, hdevtools, hie, hlint, stack_build, stack_ghc
- Hdevtools taken from the github page:
hdevtools is a command line program powered by the GHC API, that provides services for Haskell development. hdevtools works by running a persistent process in the background, so that your Haskell modules remain in memory, instead of having to reload everything each time you change only one file. This is just like :reload in GHCi - with hdevtools you get the speed of GHCi as well as tight integration with your editor.
This is the Vim plugin that integrates Vim with hdevtools.