Go to the first, previous, next, last section, table of contents.
`Tags' is a facility for indexing the definitions of
programming-language things in a multi-file program, and then using
that index to jump around among these definitions.
Rather than scratch your head, saying "Now where did we define
`foo'?", you just do (in Emacs) `M-. foo RET', and You're There!
Some people go wild over this stuff...
GHC comes with a program `hstags', which build Emacs-able TAGS
files. The invocation syntax is:
hstags [GHC-options] file [files...]
The best thing is just to feed it your GHC command-line flags.
A good Makefile entry might be:
tags:
$(RM) TAGS
hstags $(GHC_FLAGS) *.lhs
The only flags of its own are: `-v' to be verbose; `-a' to
**APPEND** to the TAGS file, rather than write to it.
Shortcomings: (1) Instance declarations don't get into the TAGS file
(but the definitions inside them do); as instances aren't named, this
is probably just as well. (2) Data-constructor definitions don't get
in. Go for the corresponding type constructor instead.
(Actually, GHC also comes with `etags' [for C], and `perltags'
[for You Know What]. And -- I cannot tell a lie -- there is Denis
Howe's `fptags' [for Haskell, etc.] in the `ghc/CONTRIB'
section...)
Go to the first, previous, next, last section, table of contents.