Otags can be used to build TAGS tables for emacs and vi, like etags
does, but for Ocaml code source files. It is based on camlp4 parsers
of caml, which makes it more accurate than versions based on regexps :
otags finds references to constructors of sum types, fields of
records, etc.

Usage :

To build TAGS for a set of files:

   otags file1.ml file2.ml ...

To build TAGS for all .ml files in a directory:

   otags dir

To build TAGS recusively:

   otags -r dir

Theses syntaxes can be mixed, see

  otags -help

for list of options available.

When searching directories, processed files are those matching the
"suffix list", which is set by default to: [".mli";".ml"]. This list
can be edited using the options -sc, -sa and -sr which, respectively
clears, add entries and removes entries in this list.

Addtional parser can be trown to Camlp4 using the -pa option

Otags X.Y version number match Ocaml version number. See HISTORY for
old versions / Ocaml matching.

===========================================================================

Supposed syntax for TAGS (.tags) files, as analysed from output of etags, 
read in etags.c and discussed with Francesco Potorti.

<file> ::= <page>+

<page> ::= <header><body>

<header> ::= <NP><CR><file-name>,<body-length><CR>

<body> ::= <tag-line>*

<tag-line> ::= <prefix><DEL><tag><SOH><line-number>,<begin-char-index><CR>

<NP> ::= ascii NP, (emacs ^L) 
<DEL> ::= ascii DEL, (emacs ^?)
<SOH> ::= ascii SOH, (emacs ^A)
<CR> :: ascii CR

===========================================================================
Wish list:

  - tagging qualified names (e.g. Yetanothertbl.create)
  - handling .ml4 files of Coq sources
