On 28/04/07, Georg Sauthoff <[EMAIL PROTECTED]> wrote:
Well, I mention this, because I would like to integrate some
lookup feature (for type signatures) into vim (if it doesn't
exist yet).

It's worth pointing out that Emacs's haskell-mode already has this.

as do many Vim Haskell modes. for instance, in my own, there are

_t : show type for id under cursor
_T : add type declaration for id under cursor before current line
_si : show info for id under cursor
CTRL-] : jump to definition of id under cursor

'_t' and '_T' use (cached) output from GHCi :browse for the current
and imported modules, '_si' calls GHCi :info, CTRL-] uses the tags
file generated by 'ghc -e :ctags <current>' (which is mapped to '_ct').

see http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/Vim/ for more info, a tour, and the scripts.

I did forget to mention that this won't help with your 'offside'
functions, though.

that, indeed, is the point. if it is reasonably easy to get that information,
without internal identifiers or non-source constructs, and with correct associations to source code positions, it would be a useful addition to editor bindings.

it would perhaps be nice to have a wiki page collecting Haskell IDE
features that have been implemented in at least one of the many tools,
so that everybody can try to implement a similar feature set for their
own editor/ide? there are features that depend on individual preferences, such as indentation, and there are obvious features that everybody wants, such as those above, but often, someone somewhere hacks up a little trick that makes Haskell hacking life a lot easier.

here is a near trivial example from my vimrc file (not even Haskell-
specific):

   map ,{ c{}<esc>P%
   map ,( c()<esc>P%
   map ,[ c[]<esc>P%

this allows me to insert parens by highlighting the part to be enclosed (*).

similarly, the emacs modes have a command to align patterns in
the middle of adjacent lines, such as '=', '::', which is different from indent, and sounds potentially quite useful, to align multiple equations and their type declaration, so i've started to reproduce that for vim.

claus

(*) ',(' is mapped to: replace (c) highlighted, insert '()', escape to
   command mode (<esc>), paste cut buffer before current pos
   (P), jump to matching paren (%). so i just highlight an expr and
   hit ',(' to put it in parens, or ',[' to wrap it into a list, etc.

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

Reply via email to