[BACK]Return to ctags.1 CVS log [TXT][DIR] Up to [local] / src / usr.bin / ctags

Annotation of src/usr.bin/ctags/ctags.1, Revision 1.28

1.28    ! jmc         1: .\"    $OpenBSD: ctags.1,v 1.27 2014/02/01 23:36:30 jmc Exp $
1.1       deraadt     2: .\"    $NetBSD: ctags.1,v 1.4 1995/03/26 20:14:04 glass Exp $
                      3: .\"
                      4: .\" Copyright (c) 1987, 1990, 1993
                      5: .\"    The Regents of the University of California.  All rights reserved.
                      6: .\"
                      7: .\" Redistribution and use in source and binary forms, with or without
                      8: .\" modification, are permitted provided that the following conditions
                      9: .\" are met:
                     10: .\" 1. Redistributions of source code must retain the above copyright
                     11: .\"    notice, this list of conditions and the following disclaimer.
                     12: .\" 2. Redistributions in binary form must reproduce the above copyright
                     13: .\"    notice, this list of conditions and the following disclaimer in the
                     14: .\"    documentation and/or other materials provided with the distribution.
1.12      millert    15: .\" 3. Neither the name of the University nor the names of its contributors
1.1       deraadt    16: .\"    may be used to endorse or promote products derived from this software
                     17: .\"    without specific prior written permission.
                     18: .\"
                     19: .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     20: .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     21: .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     22: .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     23: .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     24: .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     25: .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     26: .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     27: .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     28: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     29: .\" SUCH DAMAGE.
                     30: .\"
                     31: .\"     @(#)ctags.1    8.1 (Berkeley) 6/6/93
                     32: .\"
1.28    ! jmc        33: .Dd $Mdocdate: February 1 2014 $
1.1       deraadt    34: .Dt CTAGS 1
1.5       aaron      35: .Os
1.1       deraadt    36: .Sh NAME
                     37: .Nm ctags
                     38: .Nd create a tags file
                     39: .Sh SYNOPSIS
                     40: .Nm ctags
1.23      millert    41: .Op Fl aBdFuvwx
1.1       deraadt    42: .Op Fl f Ar tagsfile
1.14      jmc        43: .Ar
1.1       deraadt    44: .Sh DESCRIPTION
1.6       aaron      45: .Nm
1.24      jmc        46: makes a tags file from the specified C, Pascal, Fortran,
                     47: YACC, lex, and Lisp sources.
1.1       deraadt    48: A tags file gives the locations of specified objects in a group of files.
                     49: Each line of the tags file contains the object name, the file in which it
                     50: is defined, and a search pattern for the object definition, separated by
1.8       aaron      51: whitespace.
1.9       aaron      52: .Pp
1.1       deraadt    53: Using the
                     54: .Ar tags
                     55: file,
1.23      millert    56: a text editor such as
1.1       deraadt    57: .Xr ex 1
1.23      millert    58: or
                     59: .Xr vi 1
1.1       deraadt    60: can quickly locate these object definitions.
1.23      millert    61: Indexed objects include subroutines, typedefs, defines, structs,
1.3       aaron      62: enums, and unions.
1.9       aaron      63: .Pp
                     64: The options are as follows:
1.1       deraadt    65: .Bl -tag -width Ds
                     66: .It Fl a
1.3       aaron      67: Append to
1.1       deraadt    68: .Ar tags
                     69: file.
1.14      jmc        70: .It Fl B
                     71: Use backward searching patterns
                     72: .Pq Li ?...? .
1.1       deraadt    73: .It Fl d
1.3       aaron      74: Create tags for
1.1       deraadt    75: .Li #defines
                     76: that don't take arguments;
                     77: .Li #defines
                     78: that take arguments are tagged automatically.
1.14      jmc        79: .It Fl F
                     80: Use forward searching patterns
                     81: .Pq Li /.../
                     82: (the default).
1.7       deraadt    83: .It Fl f Ar tagsfile
1.1       deraadt    84: Places the tag descriptions in a file called
                     85: .Ar tagsfile .
                     86: The default behaviour is to place them in a file called
                     87: .Ar tags .
                     88: .It Fl u
1.3       aaron      89: Update the specified files in the
1.1       deraadt    90: .Ar tags
                     91: file, that is, all
                     92: references to them are deleted, and the new values are appended to the
1.9       aaron      93: file.
                     94: (Beware: this option is implemented in a way which is rather
1.1       deraadt    95: slow; it is usually faster to simply rebuild the
                     96: .Ar tags
                     97: file.)
                     98: .It Fl v
1.22      jmc        99: An index of the form expected by vgrind
1.9       aaron     100: is produced on the standard output.
                    101: This listing contains the object name, file name, and page number (assuming
                    102: 64 line pages).
                    103: Since the output will be sorted into lexicographic order,
1.1       deraadt   104: it may be desired to run the output through
                    105: .Xr sort 1 .
                    106: Sample use:
                    107: .Bd -literal -offset indent
1.25      jmc       108: $ ctags -v files | sort -f > index
                    109: $ vgrind -x index
1.1       deraadt   110: .Ed
                    111: .It Fl w
1.3       aaron     112: Suppress warning diagnostics.
1.1       deraadt   113: .It Fl x
1.6       aaron     114: .Nm
1.1       deraadt   115: produces a list of object
                    116: names, the line number and file name on which each is defined, as well
1.9       aaron     117: as the text of that line and prints this on the standard output.
                    118: This is a simple index which can be printed out as an off-line readable
1.1       deraadt   119: function index.
                    120: .El
                    121: .Pp
                    122: Files whose names end in
1.9       aaron     123: .Dq \&.c
1.1       deraadt   124: or
1.9       aaron     125: .Dq \&.h
1.1       deraadt   126: are assumed to be C
                    127: source files and are searched for C style routine and macro definitions.
                    128: Files whose names end in
1.9       aaron     129: .Dq \&.y
1.1       deraadt   130: are assumed to be
                    131: .Tn YACC
                    132: source files.
                    133: Files whose names end in
1.9       aaron     134: .Dq \&.l
1.23      millert   135: are assumed to be Lisp files if their
1.9       aaron     136: first non-blank character is
                    137: .Ql \&; ,
1.19      schwarze  138: .Ql \&( ,
1.9       aaron     139: or
1.19      schwarze  140: .Ql \&[ ,
1.1       deraadt   141: otherwise, they are
1.9       aaron     142: treated as lex files.
                    143: Other files are first examined to see if they
1.28    ! jmc       144: contain any Pascal or Fortran routine definitions and, if not, are
1.1       deraadt   145: searched for C style definitions.
                    146: .Pp
                    147: The tag
                    148: .Li main
1.9       aaron     149: is treated specially in C programs.
                    150: The tag formed is created by prepending
                    151: .Sq M
1.1       deraadt   152: to the name of the file, with the
                    153: trailing
1.9       aaron     154: .Dq \&.c
                    155: and any leading pathname components removed.
                    156: This makes use of
1.6       aaron     157: .Nm
1.9       aaron     158: practical in directories with more than one program.
1.1       deraadt   159: .Pp
                    160: Yacc and lex files each have a special tag.
                    161: .Ar Yyparse
                    162: is the start
                    163: of the second section of the yacc file, and
                    164: .Ar yylex
                    165: is the start of
                    166: the second section of the lex file.
                    167: .Sh FILES
                    168: .Bl -tag -width tags -compact
                    169: .It Pa tags
                    170: default output tags file
                    171: .El
1.20      jmc       172: .Sh EXIT STATUS
                    173: .Ex -std ctags
1.21      jmc       174: .Pp
                    175: Duplicate objects are not considered errors.
1.1       deraadt   176: .Sh SEE ALSO
                    177: .Xr vi 1
1.15      jmc       178: .Sh STANDARDS
                    179: The
                    180: .Nm
                    181: utility is compliant with the
1.17      jmc       182: .St -p1003.1-2008
1.18      jmc       183: specification,
                    184: though its presence is optional.
1.15      jmc       185: .Pp
                    186: The flags
1.23      millert   187: .Op Fl BdFuvw
1.15      jmc       188: are extensions to that specification.
1.27      jmc       189: .Pp
                    190: Support for Pascal, YACC, lex, and Lisp source files
                    191: is an
                    192: .St -p1003.1-2008
                    193: extension.
                    194: The standard notes that
                    195: .Nm
                    196: is
                    197: .Qo
                    198: not required to accommodate these languages,
                    199: although implementors are encouraged to do so
                    200: .Qc .
1.10      aaron     201: .Sh HISTORY
                    202: The
                    203: .Nm
                    204: command appeared in
1.26      schwarze  205: .Bx 2 .
1.1       deraadt   206: .Sh BUGS
                    207: Recognition of
1.6       aaron     208: .Nm functions ,
1.10      aaron     209: .Nm subroutines ,
1.1       deraadt   210: and
                    211: .Nm procedures
                    212: for
                    213: .Tn FORTRAN
1.9       aaron     214: and Pascal is done in a very simple-minded way.
                    215: No attempt
1.1       deraadt   216: is made to deal with block structure; if you have two Pascal procedures
                    217: in different blocks with the same name you lose.
1.6       aaron     218: .Nm
1.1       deraadt   219: doesn't
                    220: understand about Pascal types.
                    221: .Pp
                    222: The method of deciding whether to look for C, Pascal or
                    223: .Tn FORTRAN
                    224: functions is a hack.
                    225: .Pp
1.6       aaron     226: .Nm
1.1       deraadt   227: relies on the input being well formed, and any syntactical
1.9       aaron     228: errors will completely confuse it.
                    229: It also finds some legal syntax confusing; for example,
                    230: since it doesn't understand
1.1       deraadt   231: .Li #ifdef Ns 's
                    232: (incidentally, that's a feature, not a bug), any code with unbalanced
                    233: braces inside
                    234: .Li #ifdef Ns 's
                    235: will cause it to become somewhat disoriented.
                    236: In a similar fashion, multiple line changes within a definition will
                    237: cause it to enter the last line of the object, rather than the first, as
1.9       aaron     238: the searching pattern.
                    239: The last line of multiple line
1.1       deraadt   240: .Li typedef Ns 's
                    241: will similarly be noted.