bionic (1) otags.1.gz

Provided by: otags_4.05.1-1_amd64 bug

NAME

       otags - generate tags files for emacs and vi/vim from OCaml sources

SYNOPSIS

       otags [STATIC-OPTION] ... [FILE] ... [DYNAMIC-OPTION] ... [FILE] ...

DESCRIPTION

       otags  generates  TAGS  files  for  emacs  and tags files for vi/vim to give these editors the ability to
       directly jump to function and value definitions (use M-.  in Emacs and ^] in vi[m] with the cursor on the
       symbol).

       otags  uses  the  standard OCaml parser from the compiler-libs library. This is more precise than regular
       expression based tagging. On the downside, otags can only tag syntactically correct  files.  Furthermore,
       otags  is  OCaml version specific: Sources to be compiled with OCaml version X.Y can, in general, only be
       tagged with otags version X.Y.  This version of otags does not support -pp or -ppx preprocessors and  can
       therefore not tag files using syntax extensions or containing top level directives. For tagging all files
       in a directory tree, see option -r below.

       otags tags all toplevel items in structures and signatures, including infix operators and nested  modules
       and  signatures.  It  also tags instance variables and methods in classes.  Filenames FILE on the command
       line are parsed as interfaces if they have a .mli suffix and  as  implementations  if  they  have  a  .ml
       suffix. (See also the dynamic options -intf and -impl.)

       Tag  files  can  contain absolute and/or relative file names.  Otags uses the file names from the command
       line for the tags file.  Specifying relative file names on the command line will therefore give you a tag
       file  with  relative  file  names. Obviously, a tag file with relative file names will only work if it is
       located in the directory where otags was started.  Otags supports writing a tags file with relative  file
       names in a parent directory via option -add-path.

STATIC OPTIONS

       Static options take effect on the whole program run, regardless of their position in the command line.

       -r     Descend into directories. With this option, if one of the FILE arguments is a directory otags will
              recursively tag all files in this whole directory tree.

       -o file
              Write tags to file.  The default is TAGS (for emacs) and tags for vi (if the -vi option is  given)
              in the current directory. If file is a dash ( - ) the tags are written to standard output.

       -a     Append to an existing TAGS file (does only work for emacs TAGS files).

       -vi    Generate tags for vi and change the default output file into tags.

       -add-path path
              Add  path  at the front of every relative file name in the tags file.  Useful when you want to put
              the tags file in a parent directory.

       -version
              Print version and exit.

       -v     Verbose. Print file names as they are parsed and the command lines for externally  started  camlp4
              parsing  processes  (if  any). If -v is the first command line argument, backtraces for exceptions
              are enabled and printed if an exception escapes and terminates otags (which is considered  a  bug,
              about which I would appreciate a bug report).

       -q     Be quiet.

       -help  Print the option list.

       --help Alias for -help

DYNAMIC OPTIONS

       Dynamic options do only affect arguments that follow them on the command line.

       -intf FILE
              Parse and tag FILE as an interface.

       -impl FILE
              Parse and tag FILE as implementation.

EXAMPLES

       Tag all .ml and .mli files in the current directory tree:

              otags -r .

       Files with syntax errors will be ignored. The error messages can be disabled with option -q.

DIAGNOSTICS

       Parse  errors are reported with normal OCaml error messages. No tags are generated for files that produce
       errors. Tagging continues with the next file, in this case.  Warnings are always completely disabled.

       The errors "Original source not available" and "The  parser  delivered  an  invalid  location"  might  be
       reported  if  the  file  contains a line directive that refers to a position and/or a file that cannot be
       resolved.

       For files containing a toplevel directive, Otags simply reports a syntax error (as ocamlc does).

       Escaping exceptions and assertions that terminate otags are considered to be bugs. If they occur,  please
       use  option  -v  as  first  command line switch to obtain an exception backtrace and submit this with all
       relevant information as bug report.

EXIT STATUS

       0      everything went OK

       1      a parse error or some other error occurred and otags skipped the affected file

       2      a fatal error caused otags to abort

       3      some bug caused a crash, from which otags could only marginally recover

MISSING FEATURES

       Appending to vi tags files requires to reread the existing tags file, because vi tags files are sorted.

       -pp and -ppx preprocessors are currently not supported.

HISTORY

       The first camlp4 based OCaml tagger has been written by  Cuihtlauac  Alvarado  and  Jean-Francois  Monin.
       Around  2005  I  took  over and released a few versions for OCaml 3.09. All otags versions released up to
       3.09.3.3 were written for the original camlp4, which is now available as camlp5.

       For 3.11 I rewrote otags from scratch for the new camlp4 and released several  versions  under  the  name
       otags reloaded.  The modular structure of camlp4 made it possible to switch the parsing engine at runtime
       between files and to parse all syntax supported by camlp4 at full native speed  without  external  camlp4
       processes.  However,  the  increasing incompatibility between camlp4 and OCaml and camlp4's sloppiness on
       parsing locations created more and more difficulties. For instance, 4.02 failed  on  the  OCaml  standard
       library because camlp4 was unable to digest the attribute annotations in there.

       Starting  from  4.03,  otags is based on the standard OCaml parser from the compiler-libs library and has
       been renamed to otags III.

AUTHOR

       Hendrik Tews <otags at askra.de>

SEE ALSO

       etags(1), ctags(1)