Skip to content

Commit d066aee

Browse files
committed
Meson: extract imported modules as reference tags
Signed-off-by: Masatake YAMATO <[email protected]>
1 parent bcdf32a commit d066aee

File tree

6 files changed

+47
-0
lines changed

6 files changed

+47
-0
lines changed

Tmain/list-roles.d/stdout-expected.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ M4 I/macrofile sincluded on silently included ma
7272
M4 d/macro undef on undefined
7373
Make I/makefile included on included
7474
Make I/makefile optional on optionally included
75+
Meson m/module imported on imported
7576
NSIS i/script included on included with !include
7677
Perl M/module unused on specified in `no' built-in function
7778
Perl M/module used on specified in `use' built-in function
@@ -189,6 +190,7 @@ M4 I/macrofile sincluded on silently included ma
189190
M4 d/macro undef on undefined
190191
Make I/makefile included on included
191192
Make I/makefile optional on optionally included
193+
Meson m/module imported on imported
192194
NSIS i/script included on included with !include
193195
Perl M/module unused on specified in `no' built-in function
194196
Perl M/module used on specified in `use' built-in function
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
--sort=no
2+
--map-Meson=+.meson
3+
--fields=+Kr
4+
--extras=+r
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
keyval input.meson /^ keyval = import('keyval')$/;" variable roles:def
2+
keyval input.meson /^ keyval = import('keyval')$/;" module roles:imported
3+
keyval input.meson /^ keyval = import('unstable-keyval')$/;" variable roles:def
4+
unstable-keyval input.meson /^ keyval = import('unstable-keyval')$/;" module roles:imported
5+
ss input.meson /^ss = import('sourceset')$/;" variable roles:def
6+
sourceset input.meson /^ss = import('sourceset')$/;" module roles:imported
7+
fs input.meson /^fs = import('fs')$/;" variable roles:def
8+
fs input.meson /^fs = import('fs')$/;" module roles:imported
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
if meson.version().version_compare('>=0.56.0')
2+
keyval = import('keyval')
3+
else
4+
keyval = import('unstable-keyval')
5+
endif
6+
ss = import('sourceset')
7+
fs = import('fs')

optlib/meson.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ static void initializeMesonParser (const langType language)
4646
addLanguageTagMultiTableRegex (language, "main",
4747
"^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
4848
"\\1", "b", "{tenter=skipToArgEnd}", NULL);
49+
addLanguageTagMultiTableRegex (language, "main",
50+
"^import[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
51+
"\\1", "m", "{tenter=skipToArgEnd}{_role=imported}", NULL);
4952
addLanguageTagMultiTableRegex (language, "main",
5053
"^project[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
5154
"\\1", "P", "{tenter=skipToArgEnd}", NULL);
@@ -112,6 +115,9 @@ static void initializeMesonParser (const langType language)
112115
addLanguageTagMultiTableRegex (language, "skipPair",
113116
"^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
114117
"\\1", "b", "{tenter=skipToArgEnd}", NULL);
118+
addLanguageTagMultiTableRegex (language, "skipPair",
119+
"^import[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
120+
"\\1", "m", "{tenter=skipToArgEnd}{_role=imported}", NULL);
115121
addLanguageTagMultiTableRegex (language, "skipPair",
116122
"^[])}]",
117123
"", "", "{tleave}", NULL);
@@ -145,6 +151,9 @@ static void initializeMesonParser (const langType language)
145151
addLanguageTagMultiTableRegex (language, "common",
146152
"^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
147153
"\\1", "b", "{tenter=skipToArgEnd}", NULL);
154+
addLanguageTagMultiTableRegex (language, "common",
155+
"^import[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
156+
"\\1", "m", "{tenter=skipToArgEnd}{_role=imported}", NULL);
148157
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
149158
"^[ \t\n]+",
150159
"", "", "", NULL);
@@ -172,6 +181,9 @@ static void initializeMesonParser (const langType language)
172181
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
173182
"^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
174183
"\\1", "b", "{tenter=skipToArgEnd}", NULL);
184+
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
185+
"^import[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
186+
"\\1", "m", "{tenter=skipToArgEnd}{_role=imported}", NULL);
175187
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
176188
"^[])}]",
177189
"", "", "{tleave}", NULL);
@@ -195,6 +207,9 @@ extern parserDefinition* MesonParser (void)
195207
NULL
196208
};
197209

210+
static roleDefinition MesonModuleRoleTable [] = {
211+
{ true, "imported", "imported" },
212+
};
198213
static kindDefinition MesonKindTable [] = {
199214
{
200215
true, 'P', "project", "projects",
@@ -220,6 +235,10 @@ extern parserDefinition* MesonParser (void)
220235
{
221236
true, 'r', "run", "run targets",
222237
},
238+
{
239+
true, 'm', "module", "modules",
240+
ATTACH_ROLES(MesonModuleRoleTable),
241+
},
223242
};
224243

225244
parserDefinition* const def = parserNew ("Meson");

optlib/meson.ctags

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@
2626
--kinddef-Meson=t,test,tests
2727
--kinddef-Meson=b,benchmark,benchmark targets
2828
--kinddef-Meson=r,run,run targets
29+
--kinddef-Meson=m,module,modules
30+
31+
#
32+
# Role definitions
33+
#
34+
--_roledef-Meson.{module}=imported,imported
2935

3036
#
3137
# Tables declaration
@@ -61,6 +67,7 @@
6167
--_mtable-regex-Meson=common/custom_target[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/c/{tenter=skipToArgEnd}
6268
--_mtable-regex-Meson=common/(alias|run)_target[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\2/r/{tenter=skipToArgEnd}
6369
--_mtable-regex-Meson=common/bench_mark[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/b/{tenter=skipToArgEnd}
70+
--_mtable-regex-Meson=common/import[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/m/{tenter=skipToArgEnd}{_role=imported}
6471

6572
--_mtable-extend-Meson=skipPair+common
6673
--_mtable-regex-Meson=skipPair/[])}]//{tleave}

0 commit comments

Comments
 (0)