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#Vim

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

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to