
I have become aware that many Haskellers are not aware of the Haskell mode plugins for Vim, in spite of the >100 downloads per month I saw when I last checked. Since the plugins have just completed their move to their new home at http://projects.haskell.org/haskellmode-vim/ this seems to be a good opportunity to mention them again (now with 100% more screencasts!-). They do much (though certainly not all) of the stuff people often wish for here, such as showing or adding types, looking up source where available locally or looking up documentation where source isn't available. Mostly, they collect my attempts to automate tasks when I have to do them often enough. Here is a section of the quick reference (:help haskellmode-quickref): |:make| load into GHCi, show errors (|quickfix| |:copen|) |_ct| create |tags| file |_si| show info for id under cursor |_t| show type for id under cursor |_T| insert type declaration for id under cursor |balloon| show type for id under mouse pointer |_?| browse Haddock entry for id under cursor |:IDoc| {identifier} browse Haddock entry for unqualified {identifier} |:MDoc| {module} browse Haddock entry for {module} |:FlagReference| {s} browse Users Guide Flag Reference for section {s} |_.| qualify unqualified id under cursor |_i| add 'import <module>(<identifier>)' for id under cursor |_im| add 'import <module>' for id under cursor |_iq| add 'import qualified <module>(<identifier>)' for id under cursor |_iqm| add 'import qualified <module>' for id under cursor |_ie| make imports explit for import statement under cursor |_opt| add OPTIONS_GHC pragma |_lang| add LANGUAGE pragma |i_CTRL-X_CTRL-O| insert-mode completion based on imported ids (|haskellmode-XO|) |i_CTRL-X_CTRL-U| insert-mode completion based on documented ids (|haskellmode-XU|) |i_CTRL-N| insert-mode completion based on imported sources |:GHCi|{command/expr} run GHCi command/expr in current module For those who have never used these plugins, or haven't used Vim at all, it has often been difficult to imagine what editing in Vim can be like. The old quick tour of features available has now been updated from screenshots to screencasts (my first venture into this area - please let me know whether that is useful or a waste of time!-), so you can watch them on Youtube before deciding to invest time into learning Vim. For those who are using Vim, the only reason not to use my haskellmode plugins would be if you had your own (not uncommon among Vim users;-), in which case I hope you make yours available as well (feel free to adopt features from my plugins, and let me know if you have some useful features to contribute), here: http://www.haskell.org/haskellwiki/Libraries_and_tools/Program_development#V... For those who have happily been using these plugins: in the process of moving the site, I noticed that I hadn't updated the published version for a quite some time - apparently, noone had missed the fixes, but in case you want to check, the relevant section of my update log is appended below. Happy Vimming!-) Claus ------------- updates since last published version on old site 04/04/2009 haskell_doc.vim: when narrowing choices by qualifier for _?, take lookup index from un-narrowed list (else we could end up in the docs for the wrong module) 02/04/2009 ghc.vim: actually, we can try to make a reasonable guess at the parent type for constructors in _ie, from their type signature 01/04/2009 ghc.vim: try a bit harder to escape " and ' in :GHCi eliminate duplicates in _ie and mark data constructor imports as ???(Cons) - we can't reliably figure out the parent type for the constructor:-( handle Prelude as special case in _ie (can't just comment out import, need to import [qualified] Prelude [as X]() ) haskell_doc.vim: fix keys (no namespace tags) and urls (modules) for :MDoc 31/03/2009 all files: new home page at projects.haskell.org 28/03/2009 haskell_doc.vim: in ProcessHaddockIndexes2, fix a case where making new entries could lose old ones (eg, zipWith's base package locations got lost when adding its vector package locations) 07/12/2008 haskell_doc.vim: since we're now reading from multiple haddock indices in DocIndex, we need to extend, not overwrite entries.. 03/12/2008 ghc.vim: do not reset b:ghc_static_options on every reload