xref: /Universal-ctags/optlib/man.ctags (revision a2073a83ebac9c08123fa77aaa3de27c5ea1b00f)
10a9e78a8SMasatake YAMATO#
20a9e78a8SMasatake YAMATO#
30a9e78a8SMasatake YAMATO#  Copyright (c) 2016, Red Hat, Inc.
40a9e78a8SMasatake YAMATO#  Copyright (c) 2016, Masatake YAMATO
50a9e78a8SMasatake YAMATO#
60a9e78a8SMasatake YAMATO#  Author: Masatake YAMATO <yamato@redhat.com>
70a9e78a8SMasatake YAMATO#
80a9e78a8SMasatake YAMATO# This program is free software; you can redistribute it and/or
90a9e78a8SMasatake YAMATO# modify it under the terms of the GNU General Public License
100a9e78a8SMasatake YAMATO# as published by the Free Software Foundation; either version 2
110a9e78a8SMasatake YAMATO# of the License, or (at your option) any later version.
120a9e78a8SMasatake YAMATO#
130a9e78a8SMasatake YAMATO# This program is distributed in the hope that it will be useful,
140a9e78a8SMasatake YAMATO# but WITHOUT ANY WARRANTY; without even the implied warranty of
150a9e78a8SMasatake YAMATO# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
160a9e78a8SMasatake YAMATO# GNU General Public License for more details.
170a9e78a8SMasatake YAMATO#
180a9e78a8SMasatake YAMATO# You should have received a copy of the GNU General Public License
190a9e78a8SMasatake YAMATO# along with this program; if not, write to the Free Software
200a9e78a8SMasatake YAMATO# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
210a9e78a8SMasatake YAMATO# USA.
220a9e78a8SMasatake YAMATO#
230a9e78a8SMasatake YAMATO#
246b1ec470SMasatake YAMATO--langdef=Man
256b1ec470SMasatake YAMATO--map-Man=+.1
266b1ec470SMasatake YAMATO--map-Man=+.2
276b1ec470SMasatake YAMATO--map-Man=+.3
286b1ec470SMasatake YAMATO--map-Man=+.4
296b1ec470SMasatake YAMATO--map-Man=+.5
306b1ec470SMasatake YAMATO--map-Man=+.6
316b1ec470SMasatake YAMATO--map-Man=+.7
326b1ec470SMasatake YAMATO--map-Man=+.8
336b1ec470SMasatake YAMATO--map-Man=+.9
34f8d15bd7SMasatake YAMATO
355d3bedcdSMasatake YAMATO# For perl modules
365d3bedcdSMasatake YAMATO--map-Man=+.3pm
375d3bedcdSMasatake YAMATO
385d3bedcdSMasatake YAMATO# For systemtap
395d3bedcdSMasatake YAMATO--map-Man=+.3stap
405d3bedcdSMasatake YAMATO--map-Man=+.7stap
415d3bedcdSMasatake YAMATO
426b1ec470SMasatake YAMATO--kinddef-Man=t,title,titles
436b1ec470SMasatake YAMATO--kinddef-Man=s,section,sections
44*a2073a83SMasatake YAMATO--kinddef-Man=S,subsection,sub sections
45*a2073a83SMasatake YAMATO
46*a2073a83SMasatake YAMATO--_scopesep-Man=*/*:""
47f8d15bd7SMasatake YAMATO
4880fd3f70SMasatake YAMATO--_tabledef-Man=main
49373135a8SMasatake YAMATO--_tabledef-Man=section
502b2165a2SMasatake YAMATO--_tabledef-Man=sectionheading
51*a2073a83SMasatake YAMATO--_tabledef-Man=subsection
52*a2073a83SMasatake YAMATO--_tabledef-Man=subsectionheading
532b2165a2SMasatake YAMATO
542b2165a2SMasatake YAMATO--_prelude-Man={{
55*a2073a83SMasatake YAMATO    % adjustment:int FILL-END-OF-SCOPE -
56*a2073a83SMasatake YAMATO    %
57*a2073a83SMasatake YAMATO    % Note: The group 1 of a regex matching is assumed.
58*a2073a83SMasatake YAMATO    %       An entry on the scope stack is assumed.
59*a2073a83SMasatake YAMATO    /fill-end-of-scope {
60*a2073a83SMasatake YAMATO         _scopetop pop exch
61*a2073a83SMasatake YAMATO         % scope-top:int adjustment:int
62*a2073a83SMasatake YAMATO         1 /start _matchloc _matchloc2line exch
63*a2073a83SMasatake YAMATO         % scope-top:int line adjustment:int
64*a2073a83SMasatake YAMATO         2 copy gt {
65*a2073a83SMasatake YAMATO             sub end:
662b2165a2SMasatake YAMATO         } {
67*a2073a83SMasatake YAMATO             pop pop pop
682b2165a2SMasatake YAMATO         } ifelse
69*a2073a83SMasatake YAMATO    } def
70*a2073a83SMasatake YAMATO    % adjustment:int /replace HEADING-ACTION -
71*a2073a83SMasatake YAMATO    % /push HEADING-ACTION -
72*a2073a83SMasatake YAMATO    /heading-action {
73*a2073a83SMasatake YAMATO        /replace eq {
74*a2073a83SMasatake YAMATO             %
75*a2073a83SMasatake YAMATO             % Before removing the tag at the top of the scope stack,
76*a2073a83SMasatake YAMATO             % fill the end field of the tag.
77*a2073a83SMasatake YAMATO             %
78*a2073a83SMasatake YAMATO             % input0.man
79*a2073a83SMasatake YAMATO             % ----------------------------------------------------
80*a2073a83SMasatake YAMATO             %   .SH SEC1
81*a2073a83SMasatake YAMATO             %   ...
82*a2073a83SMasatake YAMATO             %E: This is the end of the SEC1.
83*a2073a83SMasatake YAMATO             %   .SH
84*a2073a83SMasatake YAMATO             %C: SEC2
85*a2073a83SMasatake YAMATO             %
86*a2073a83SMasatake YAMATO             % ----------------------------------------------------
87*a2073a83SMasatake YAMATO             %
88*a2073a83SMasatake YAMATO             % C represents the current input line. The parser must
89*a2073a83SMasatake YAMATO             % fill the end field of "SEC1", the tag at the top,
90*a2073a83SMasatake YAMATO             % with the line number of E.
91*a2073a83SMasatake YAMATO             %
92*a2073a83SMasatake YAMATO             %    E = C - 2
93*a2073a83SMasatake YAMATO             %
94*a2073a83SMasatake YAMATO             % input1.man
95*a2073a83SMasatake YAMATO             % ----------------------------------------------------
96*a2073a83SMasatake YAMATO             %   .SH SEC3
97*a2073a83SMasatake YAMATO             %   ...
98*a2073a83SMasatake YAMATO             %E: This is the end of the SEC1.
99*a2073a83SMasatake YAMATO             %C:  .SH SEC4
100*a2073a83SMasatake YAMATO             %
101*a2073a83SMasatake YAMATO             % ----------------------------------------------------
102*a2073a83SMasatake YAMATO             %
103*a2073a83SMasatake YAMATO             % In this case
104*a2073a83SMasatake YAMATO             %
105*a2073a83SMasatake YAMATO             %    E = C - 1
106*a2073a83SMasatake YAMATO             %
107*a2073a83SMasatake YAMATO             % The offset for the adjustment depends on the conctxt.
108*a2073a83SMasatake YAMATO             %
109*a2073a83SMasatake YAMATO             fill-end-of-scope
1102b2165a2SMasatake YAMATO             _scopepop
1112b2165a2SMasatake YAMATO        } if
1122b2165a2SMasatake YAMATO
1132b2165a2SMasatake YAMATO        _scopetop {
1142b2165a2SMasatake YAMATO            . exch scope:
1152b2165a2SMasatake YAMATO        } if
1162b2165a2SMasatake YAMATO        . _scopepush
1172b2165a2SMasatake YAMATO    } def
1182b2165a2SMasatake YAMATO}}
11980fd3f70SMasatake YAMATO
120373135a8SMasatake YAMATO--_tabledef-Man=EOF
121373135a8SMasatake YAMATO--_tabledef-Man=SKIP
122373135a8SMasatake YAMATO--_tabledef-Man=REST
123373135a8SMasatake YAMATO--_tabledef-Man=GUARD
124373135a8SMasatake YAMATO
125*a2073a83SMasatake YAMATO#
126*a2073a83SMasatake YAMATO# helper tables
127*a2073a83SMasatake YAMATO#
128373135a8SMasatake YAMATO--_mtable-regex-Man=GUARD/([^\n.]|\.[^\nst])[^\n]*\n//{icase}
129373135a8SMasatake YAMATO--_mtable-regex-Man=SKIP/[^\n]*\n|[^\n]+//
130373135a8SMasatake YAMATO--_mtable-regex-Man=EOF///{scope=clear}{tquit}
131373135a8SMasatake YAMATO--_mtable-extend-Man=REST+SKIP
132373135a8SMasatake YAMATO--_mtable-extend-Man=REST+EOF
133373135a8SMasatake YAMATO
134*a2073a83SMasatake YAMATO#
135*a2073a83SMasatake YAMATO# main table
136*a2073a83SMasatake YAMATO#
137373135a8SMasatake YAMATO--_mtable-extend-Man=main+GUARD
138373135a8SMasatake YAMATO--_mtable-regex-Man=main/\.TH[\t ]+"([^"]+)"[^\n]*\n/\1/t/{icase}{scope=set}
139373135a8SMasatake YAMATO--_mtable-regex-Man=main/\.TH[\t ]+([^\t \n]+)[^\n]*\n/\1/t/{icase}{scope=set}
140373135a8SMasatake YAMATO--_mtable-regex-Man=main/\.SH[\t ]+"([^"\n]+)"[^\n]*\n/\1/s/{icase}{scope=push}{tenter=section}
141373135a8SMasatake YAMATO--_mtable-regex-Man=main/\.SH[\t ]+([^\n]+)\n/\1/s/{icase}{scope=push}{tenter=section}
1422b2165a2SMasatake YAMATO--_mtable-regex-Man=main/\.SH[\t ]*\n//{icase}{tenter=sectionheading}{{
1432b2165a2SMasatake YAMATO    /push
1442b2165a2SMasatake YAMATO}}
145373135a8SMasatake YAMATO--_mtable-extend-Man=main+REST
146373135a8SMasatake YAMATO
147*a2073a83SMasatake YAMATO#
148*a2073a83SMasatake YAMATO# section table
149*a2073a83SMasatake YAMATO#
150373135a8SMasatake YAMATO--_mtable-extend-Man=section+GUARD
151373135a8SMasatake YAMATO--_mtable-regex-Man=section/\.SH[\t ]+"([^"\n]+)"[^\n]*\n/\1/s/{icase}{scope=replace}
152373135a8SMasatake YAMATO--_mtable-regex-Man=section/\.SH[\t ]+([^\n]+)\n/\1/s/{icase}{scope=replace}
153*a2073a83SMasatake YAMATO--_mtable-regex-Man=section/(\.SH)[\t ]*\n//{icase}{tjump=sectionheading}{{
154*a2073a83SMasatake YAMATO    2 /replace
155*a2073a83SMasatake YAMATO}}
156*a2073a83SMasatake YAMATO--_mtable-regex-Man=section/\.SS[\t ]+"([^"\n]+)"[^\n]*\n/\1/S/{icase}{scope=push}{tenter=subsection}
157*a2073a83SMasatake YAMATO--_mtable-regex-Man=section/\.SS[\t ]+([^\n]+)\n/\1/S/{icase}{scope=push}{tenter=subsection}
158*a2073a83SMasatake YAMATO--_mtable-regex-Man=section/\.SS[\t ]*\n//{icase}{tenter=subsectionheading}{{
159*a2073a83SMasatake YAMATO    /push
1602b2165a2SMasatake YAMATO}}
161373135a8SMasatake YAMATO--_mtable-extend-Man=section+REST
1622b2165a2SMasatake YAMATO
163*a2073a83SMasatake YAMATO#
164*a2073a83SMasatake YAMATO# sectionheading
165*a2073a83SMasatake YAMATO#
166*a2073a83SMasatake YAMATO--_mtable-regex-Man=sectionheading/[ \t]*([^\n]+)\n/\1/s/{tjump=section}{{
167*a2073a83SMasatake YAMATO    heading-action
1682b2165a2SMasatake YAMATO}}
1692b2165a2SMasatake YAMATO--_mtable-extend-Man=sectionheading+REST
170*a2073a83SMasatake YAMATO
171*a2073a83SMasatake YAMATO#
172*a2073a83SMasatake YAMATO# subsection
173*a2073a83SMasatake YAMATO#
174*a2073a83SMasatake YAMATO--_mtable-extend-Man=subsection+GUARD
175*a2073a83SMasatake YAMATO--_mtable-regex-Man=subsection/\.SS[\t ]+"([^"\n]+)"[^\n]*\n/\1/S/{icase}{scope=replace}
176*a2073a83SMasatake YAMATO--_mtable-regex-Man=subsection/\.SS[\t ]+([^\n]+)\n/\1/S/{icase}{scope=replace}
177*a2073a83SMasatake YAMATO--_mtable-regex-Man=subsection/\.SS[\t ]*\n//{icase}{tjump=subsectionheading}{{
178*a2073a83SMasatake YAMATO    2 /replace
179*a2073a83SMasatake YAMATO}}
180*a2073a83SMasatake YAMATO--_mtable-regex-Man=subsection/(\.SH)///{icase}{_advanceTo=0start}{tleave}{{
181*a2073a83SMasatake YAMATO    1 fill-end-of-scope
182*a2073a83SMasatake YAMATO    _scopepop
183*a2073a83SMasatake YAMATO}}
184*a2073a83SMasatake YAMATO--_mtable-extend-Man=subsection+REST
185*a2073a83SMasatake YAMATO
186*a2073a83SMasatake YAMATO#
187*a2073a83SMasatake YAMATO# subsectionheading
188*a2073a83SMasatake YAMATO#
189*a2073a83SMasatake YAMATO--_mtable-regex-Man=subsectionheading/[ \t]*([^\n]+)\n/\1/S/{tjump=subsection}{{
190*a2073a83SMasatake YAMATO    heading-action
191*a2073a83SMasatake YAMATO}}
192*a2073a83SMasatake YAMATO--_mtable-extend-Man=subsectionheading+REST
193