[Haskell-cafe] Wishful thinking: a text editor that expands
function applications into function definitions
Claus Reinke
claus.reinke at talk21.com
Fri Apr 3 06:30:42 EDT 2009
One word says more than a thousand pictures: Vim <http://www.vim.org/>.
(well, okay, I'm sure Emacs will do just as well, and some of the more
recent IDEs seem to be catching up;-) plus plugins, of course!-)
- unfolding definitions: if you really want that, it is in the domain of
program transformation systems and refactorers (HaRe, the Haskell
refactorer, has been mentioned - it worked on Haskell'98 sources,
plugging into Vim or Emacs; it would really be great to have funding
for porting that to a modern GHC/Cabal-based environment, but if
you're happy with Haskell'98, and have all the sources, the old HaRe
should still do the job once you get it to build with recent GHCs/libraries)
- looking up definitions: that is supported in various ways in Vim/Emacs
and the like - I'll talk about some Vim examples, as that is what I use.
- tag files (generated by running tools like 'ghc -e :ctags', hasktags,..
over the sources) are a simple database linking identifiers to
definition sites. Based on these, one can jump from identifiers
to definitions (keeping a stack of locations, so one can go back
easily), or open split windows on the definition sites.
See the "Moving through programs" section in Vim's help, also
online at: http://vimdoc.sourceforge.net/htmldoc/usr_29.html .
- the haskellmode plugins for Vim support documentation lookup
(opening the haddocs for the identifier under cursor in a browser),
and the documentation provides source links, if the docs themselves
aren't sufficient. Useful for all those sourceless package installations.
- the haskellmode plugins also support type tooltips (or, if you
don't like tooltips, or are working in a terminal without gui, type
signatures can be displayed in the status line, or added to the
source code). This is currently based on GHCi's :browse!, though,
so you can only get the types of toplevel definitions that way. One
of the insertmode completions also displays types.
- if you explain Haskell's import syntax to Vim, you can also search
in (local) imported files, using Vim's standard keyword search, for
instance ([I).
The haskellmode plugins for Vim are currently in the process of moving
to http://projects.haskell.org/haskellmode-vim/ . Which made me notice
that I hadn't updated the publicly available version in quite some time
(announcement to follow when that process has settled down somewhat).
Claus
More information about the Haskell-Cafe
mailing list