xref: /Universal-ctags/optlib/rpmMacros.ctags (revision 29197a38632d1338f634b72a1c8f368d57352778) !
1936b20ceSMasatake YAMATO#
2936b20ceSMasatake YAMATO#  rpmMacros.ctags --- multitable regex parser for /usr/lib/rpm/macros files
3936b20ceSMasatake YAMATO#
4936b20ceSMasatake YAMATO#  Copyright (c) 2021 Masatake YAMATO
5936b20ceSMasatake YAMATO#  Copyright (c) 2021 Red Hat, Inc.
6936b20ceSMasatake YAMATO#
7936b20ceSMasatake YAMATO#  This source code is released for free distribution under the terms of the
8936b20ceSMasatake YAMATO#  GNU General Public License version 2 or (at your option) any later version.
9936b20ceSMasatake YAMATO#
10936b20ceSMasatake YAMATO# References:
11936b20ceSMasatake YAMATO#
12936b20ceSMasatake YAMATO# - https://rpm.org/user_doc/macros.html
13936b20ceSMasatake YAMATO#
14936b20ceSMasatake YAMATO# TODO:
15936b20ceSMasatake YAMATO#
16936b20ceSMasatake YAMATO# - Run Lua parser as a subparser
17936b20ceSMasatake YAMATO#
18936b20ceSMasatake YAMATO--langdef=RpmMacros
19*29197a38SMasatake YAMATO
20*29197a38SMasatake YAMATO# This map is too generic.
21*29197a38SMasatake YAMATO# e.g. "macros.h" of C language input matches this pattern.
22*29197a38SMasatake YAMATO# --map-RpmMacros=+(macros.*)
23936b20ceSMasatake YAMATO
24936b20ceSMasatake YAMATO# This one is too general.
25936b20ceSMasatake YAMATO# --map-RpmMacros=+(macros)
26936b20ceSMasatake YAMATO
27936b20ceSMasatake YAMATO--kinddef-RpmMacros=m,macro,macros
28936b20ceSMasatake YAMATO
29936b20ceSMasatake YAMATO--_tabledef-RpmMacros=main
30936b20ceSMasatake YAMATO--_tabledef-RpmMacros=contline
31936b20ceSMasatake YAMATO
32936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/^#[^\n]*\n?//
33936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/^%([_a-zA-Z0-9]+)(\([^)]*\))*[^\n]*([^\n])\n?/\1/m/{{
34936b20ceSMasatake YAMATO    \2 false ne {
35936b20ceSMasatake YAMATO       . \2 signature:
36936b20ceSMasatake YAMATO    } if
37936b20ceSMasatake YAMATO    \3 (\\) eq {
38936b20ceSMasatake YAMATO       % push the current tag for attaching end: later
39936b20ceSMasatake YAMATO       .
40936b20ceSMasatake YAMATO       % Skip next line if \ is at the enf of the current line.
41936b20ceSMasatake YAMATO       /contline _tenter
42936b20ceSMasatake YAMATO    } if
43936b20ceSMasatake YAMATO}}
44936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/.//
45936b20ceSMasatake YAMATO
46936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=contline/(\n)//{{
47936b20ceSMasatake YAMATO   1 /start _matchloc end:
48936b20ceSMasatake YAMATO   _tleave
49936b20ceSMasatake YAMATO}}
50936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=contline/^[^\n]*([^\n])\n?///{{
51936b20ceSMasatake YAMATO    \1 (\\) eq not {
52936b20ceSMasatake YAMATO       1 /end _matchloc end:
53936b20ceSMasatake YAMATO       _tleave
54936b20ceSMasatake YAMATO    } if
55936b20ceSMasatake YAMATO}}
56