1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3
4 This file is part of GtkSourceView
5
6 Author: Yevgen Muntyan <muntyan@tamu.edu>
7 Copyright (C) 2006-2007 Yevgen Muntyan <muntyan@tamu.edu>
8
9 GtkSourceView is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
13
14 GtkSourceView is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with this library; if not, see <http://www.gnu.org/licenses/>.
21
22-->
23<language id="m4" name="m4" _section="Script" version="2.0">
24  <metadata>
25    <property name="mimetypes">application/x-m4</property>
26    <property name="globs">*.m4;configure.ac;configure.in</property>
27    <property name="line-comment-start">#</property>
28  </metadata>
29
30  <styles>
31    <style id="m4-comment" name="m4 Comment" map-to="sh:comment"/>
32    <style id="m4-macro" name="m4 Macro" map-to="def:keyword"/>
33    <style id="ac-macro" name="Autoconf Macro" map-to="def:keyword"/>
34    <style id="ac-macro-obsolete" name="Obsolete Autoconf Macro" map-to="def:error"/>
35  </styles>
36
37  <!--
38  Refurbished and commented 2010 by P. F. Chimento <philip.chimento@gmail.com>
39
40  How this language definition works.
41
42  This 'm4' language definition actually highlights Autoconf M4 files. Autoconf
43  consists of several parts: Autoconf, M4sugar, M4sh, Autoheader, Autoupdate,
44  and Autotest, all of which define their own M4 macros. In addition, this file
45  also highlights other M4 macros commonly used with Autoconf (those defined by
46  Automake, Libtool, Gettext, and Pkgconfig) and ones used for building GTK
47  packages (Intltool, Glib, and GConf).
48
49  This language definition ironically does _not_ support pure M4 files: M4sugar
50  redefines all the built-in M4 macros so that they start with m4_, and
51  redefines the quote characters from `' to [].
52
53  Autoconf's configure.ac files are processed by M4 into configure shell
54  scripts. Therefore, text that is to appear in the output is actually shell
55  script, and should be highlighted as such. However, some macros have arguments
56  that are not meant to appear in the output, and it depends on the macro.
57  For example, the macro
58      AC_CHECK_FILE(file, [action-if-found], [action-if-not-found])
59  has three arguments, the first one of which should not contain shell script.
60  The remaining two can contain shell code, as well as other macros. Therefore,
61  we divide the macros into categories depending on the number and type of their
62  arguments: a string of 'm' (for M4 only) and 's' (for shell script mixed with
63  M4) characters.
64
65  TODO: In a future version, we might add 'c' to the mix, since some macros'
66  arguments actually contain C code. Right now this is just highlighted as M4.
67
68  Note that keeping track of the number of arguments to a macro also allows us
69  to highlight any extra arguments as errors. Also, note that calling a macro
70  with _fewer_ arguments is allowed, and in fact happens all the time. For
71  example, in AC_CHECK_FILE above, the second and third arguments are optional
72  and in fact have sensible defaults.
73
74  Below, we define regexes, with names like 'macros-mss' that match every macro
75  with that signature.
76
77  IMPORTANT: if you add any macros, make sure that you make all your parentheses
78  non-capturing by adding ?: to them! Otherwise, the highlighting will break
79  (and in fact was broken in earlier versions of this file.)
80  -->
81  <definitions>
82    <define-regex id="macros-m" extended="true">
83      AC_(?:
84        CHECK_(?:DECL|FUNC|HEADER)S_ONCE|
85        CHECKING|
86        CONFIG_(?:(?:(?:AUX|LIBOBJ|MACRO)_|SRC)DIR|SUBDIRS)|
87        COPYRIGHT|
88        ERLANG_NEED_ERLC?|
89        F(?:77|C)_LIBRARY_LDFLAGS|
90        FATAL
91        INCLUDES_DEFAULT
92        LANG(?:_(?:ASSERT|CONFTEST|FUNC_LINK_TRY|POP|PUSH|SOURCE))?|
93        LIB(?:OBJS|SOURCES?)|
94        MSG_(?:CHECKING|NOTICE|RESULT|WARN)|
95        OPENMP|
96        PREFIX_(?:DEFAULT|PROGRAM)|
97        PREREQ|
98        PROG_(?:CC|CXX|F77|OBJC(?:XX)?)|
99        REPLACE_FUNCS|
100        REQUIRE(?:_AUX_FILE)?|
101        REVISION|
102        SUBST_FILE|
103        WARNING)|
104      AH_(?:BOTTOM|TOP)|
105      AS_(?:
106        DIRNAME|
107        EXIT|
108        MKDIR_P|
109        SET_STATUS|
110        TR_(?:CPP|SH)|
111        VAR_(?:POPDEF|TEST_SET))|
112      m4_(?:
113        chomp(?:_all)?|
114        cleardivert|
115        debug(?:file|mode)|
116        decr|
117        defn|
118        divert(?:_(?:pop|push))?|
119        errprintn|
120        (?:re_)?escape|
121        exit|
122        expand|
123        flatten|
124        s?include|
125        incr|
126        len|
127        (?:make|mks)temp|
128        n|
129        newline|
130        normalize|
131        pattern_(?:allow|forbid)|
132        popdef|
133        set_(?:delete|list|listc|size)|
134        sign|
135        strip|
136        to(?:lower|upper)|
137        warning|
138        wrap(?:_lifo)?)|
139      AT_(?:BANNER|CAPTURE_FILE|COPYRIGHT|INIT|KEYWORDS|SETUP|TESTED)|
140      AM_(?:
141        GNU_GETTEXT_(?:VERSION|NEED)|
142        ICONV|
143        INIT_AUTOMAKE|
144        MAINTAINER_MODE|
145        PROG_UPC|
146        SUBST_NOTMAKE|
147        XGETTEXT_OPTION)|
148      LT_(?:INIT|LANG|PREREQ)|
149      PKG_PROG_PKG_CONFIG|
150      IT_PO_SUBDIR|
151      GOBJECT_INTROSPECTION_(?:CHECK|REQUIRE)
152    </define-regex>
153    <define-regex id="macros-s" extended="true">
154      AC_CONFIG_COMMANDS_(?:PRE|POST)|
155      AS_(?:ECHO(?:_N)?|UNSET)|
156      m4_(?:esyscmd(?:_s)?|syscmd)|
157      AT_(?:X?FAIL|SKIP)_IF
158    </define-regex>
159    <define-regex id="macros-mm" extended="true">
160      AC_(?:
161        ARG_VAR|
162        BEFORE|
163        CHECK_ALIGNOF|
164        CONFIG_TESTDIR|
165        DIAGNOSE|
166        ERLANG_(?:PATH_ERLC?|SUBST_INSTALL_LIB_SUBDIR)|
167        F(?:77|C)_FUNC|
168        LANG_(?:CALL|PROGRAM)|
169        MSG_(?:ERROR|FAILURE)|
170        PROG_FC)|
171      AH_(?:TEMPLATE|VERBATIM)|
172      AU_ALIAS|
173      AS_(?:BOX|ESCAPE|TMPDIR|VAR_(?:APPEND|COPY|PUSHDEF))|
174      m4_(?:
175        append_uniq_w|
176        apply|
177        assert|
178        change(?:com|quote)|
179        (?:list)?cmp|
180        (?:copy|rename)(?:_force)?|
181        default(?:_nblank)?(?:_quoted)?|
182        define(?:_default)?|
183        defun|
184        divert_(?:once|text)|
185        fatal|
186        index|
187        map(?:all)?|
188        pushdef|
189        set_(?:contents|difference|dump|intersection|map|union)|
190        split|
191        stack_foreach(?:_lifo)?|
192        text_box|
193        version_compare|
194        warn)|
195      AT_DATA|
196      GTK_DOC_CHECK|
197      IT_PROG_INTLTOOL
198    </define-regex>
199    <define-regex id="macros-ms" extended="true">
200      AC_(?:CACHE_VAL|DEFUN(?:_ONCE)?|SUBST)|
201      AS_(?:INIT_GENERATED|VAR_(?:ARITH|SET))|
202      AM_CONDITIONAL
203    </define-regex>
204    <define-regex id="macros-ss" extended="true">
205      AC_(?:F(?:77|C)_DUMMY_MAIN|FC_(?:FREE|FIXED)FORM)
206    </define-regex>
207    <define-regex id="macros-mmm" extended="true">
208      AC_(?:CHECK_SIZEOF|DEFINE(?:_UNQUOTED)?)|
209      AS_SET_CATFILE|
210      m4_(?:
211        append|
212        bpatsubst|
213        bregexp|
214        eval|
215        ifn?blank|
216        ifn?def|
217        ifset|
218        ifvaln?|
219        map(?:all)?_sep|
220        set_(?:empty|foreach)|
221        substr|
222        translit|
223        version-prereq)|
224      AM_GNU_GETTEXT
225    </define-regex>
226    <define-regex id="macros-mms" extended="true">
227      AC_CACHE_CHECK|
228      m4_foreach(?:_w)?
229    </define-regex>
230    <define-regex id="macros-msm">AU_DEFUN</define-regex>
231    <define-regex id="macros-mss" extended="true">
232      AC_(?:
233        CHECK_(?:FILE|FUNC)(?:S)?|
234        (?:COMPILE|LINK|PREPROC)_IFELSE|
235        CONFIG_(?:COMMANDS|FILES|HEADERS|LINKS)|
236        ERLANG_CHECK_LIB|
237        FC_(?:LINE_LENGTH|SRCEXT))|
238      AS_VAR_SET_IF|
239      AM_(?:COND_IF|PATH_PYTHON|PROG_VALAC)|
240      PKG_CHECK_EXISTS
241    </define-regex>
242    <define-regex id="macros-mmmm" extended="true">
243      AC_(?:
244        CHECK_(?:PROGS|(?:TARGET_)?TOOLS?)|
245        PATH_(?:PROGS?|(?:TARGET_)?TOOL))|
246      AS_HELP_STRING|
247      m4_(?:
248        map_args_w|
249        set_(?:add|contains|map_sep|remove)|
250        stack_foreach_sep(?:_lifo)?|
251        text|wrap)
252    </define-regex>
253    <define-regex id="macros-mmms">AC_COMPUTE_INT</define-regex>
254    <define-regex id="macros-mmss" extended="true">
255      AC_(?:
256        ARG_(?:ENABLE|WITH)|
257        EGREP_(?:CPP|HEADER))|
258      AS_VAR_IF|
259      AT_ARG_OPTION(?:_ARG)?|
260      PKG_CHECK_MODULES
261    </define-regex>
262    <define-regex id="macros-mssm" extended="true">
263      AC_CHECK_(?:DECL|HEADER|MEMBER|TYPE)(?:S)?
264    </define-regex>
265    <define-regex id="macros-msss">AC_RUN_IFELSE</define-regex>
266    <define-regex id="macros-ssss" extended="true">
267      AC_C_BIGENDIAN|
268      AS_LITERAL_(?:WORD_)?IF
269    </define-regex>
270    <define-regex id="macros-mmmmm" extended="true">
271      m4_(?:append_uniq|for)|
272      AC_INIT
273    </define-regex>
274    <define-regex id="macros-mmmss">AT_CHECK_EUNIT</define-regex>
275    <define-regex id="macros-mmssm" extended="true">
276      AC_(?:CHECK_LIB|SEARCH_LIBS|PATH_PROGS_FEATURE_CHECK)
277    </define-regex>
278    <define-regex id="macros-mmsss">AS_VERSION_COMPARE</define-regex>
279    <define-regex id="macros-mmmmmm">AC_CHECK_PROG</define-regex>
280    <define-regex id="macros-smmmss">AT_CHECK(?:_UNQUOTED)?</define-regex>
281
282    <!-- 'mvarargs' and 'svarargs' mean that any number of 'm' or 's' arguments
283    are accepted, respectively. These macros will not highlight extraneous
284    arguments as errors. -->
285    <define-regex id="macros-mvarargs" extended="true">
286      m4_(?:
287        argn|
288        bmatch|
289        bpatsubsts|
290        car|
291        case|
292        cdr|
293        builtin|
294        combine|
295        cond|
296        count|
297        curry|
298        do|
299        dquote(?:_elt)?|
300        dumpdefs?|
301        echo|
302        errprint|
303        format|
304        if|
305        ignore|
306        indir|
307        join(?:all)?|
308        makelist|
309        map_args(?:_(?:pair|sep))?|
310        max|
311        min|
312        (?:un)?quote|
313        reverse|
314        set_add_all|
315        shift(?:2|3|n)?|
316        trace(?:off|on)|
317        undefine|
318        undivert)
319    </define-regex>
320    <define-regex id="macros-svarargs">AS_IF</define-regex>
321
322    <!-- At this point, there is one macro left with even more complicated
323    argument types: AS_CASE. We treat it specially later on. -->
324
325    <!-- 'm4-quoted' matches text between quote brackets and highlights it as
326    pure M4 (no shell code allowed). -->
327    <context id="m4-quoted"><!-- style-ref="test:_yellow"-->
328      <start>\[</start>
329      <end>\]</end>
330      <include>
331        <context ref="m4-pure"/>
332      </include>
333    </context>
334
335    <!-- 'm4-quoted-shell' matches text between quote brackets and highlights it
336    as a mix of M4 and shell code. -->
337    <context id="m4-quoted-shell">
338      <start>\[</start>
339      <end>\]</end>
340      <include>
341        <context ref="m4"/>
342      </include>
343    </context>
344
345    <!-- This context matches text between parentheses that comes after a word,
346    and treats it as a variable-length list of 'm' arguments. This is necessary
347    for unknown or user-defined macros - without this context, their arguments
348    would all be highlighted as shell code. -->
349    <context id="m4-function-call"><!-- style-ref="test:_violet"-->
350      <start>(?&lt;=[\w\d_])\((?!\))</start>
351      <end>\)</end>
352      <include>
353        <context ref="ARG-M"/>
354        <context>
355          <start>,</start>
356          <end>(?=[,\)])</end>
357          <include>
358            <context ref="ARG-M"/>
359          </include>
360        </context>
361      </include>
362    </context>
363
364    <!-- M4 'dnl' comments are removed from the output, as opposed to shell '#'
365    comments, which appear in the output. -->
366    <context id="m4-comment" style-ref="m4-comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
367      <start>dnl</start>
368      <include>
369        <context ref="def:in-line-comment"/>
370      </include>
371    </context>
372
373    <!-- In the following section, the contexts form a pretty straightforward
374    state machine that consumes each macro argument and moves on to the next
375    state. -->
376
377    <!-- This state means all the expected arguments have been consumed, and so
378    any remaining arguments are errors. -->
379    <context id="NO-ARGS" style-ref="def:error">
380      <start>,</start>
381      <end>(?=\))</end>
382    </context>
383
384    <!-- This is an argument containing only pure M4. -->
385    <context id="ARG-M">
386      <include>
387        <context ref="m4-pure"/>
388      </include>
389    </context>
390
391    <!-- This is an argument containing a mix of M4 and shell code. -->
392    <context id="ARG-S">
393      <include>
394        <context>
395          <start>\[</start>
396          <end>\]</end>
397          <include>
398            <context ref="m4"/>
399          </include>
400        </context>
401        <context ref="m4"/>
402      </include>
403    </context>
404
405    <!-- The TO-ARGS- states match a comma, and then enter the corresponding
406    ARGS- state -->
407    <context id="TO-ARGS-M">
408      <start>,</start>
409      <end>(?=[,\)])</end>
410      <include><context ref="ARGS-M"/></include>
411    </context>
412
413    <context id="TO-ARGS-S">
414      <start>,</start>
415      <end>(?=[,\)])</end>
416      <include><context ref="ARGS-S"/></include>
417    </context>
418
419    <context id="TO-ARGS-MM">
420      <start>,</start>
421      <end>(?=[,\)])</end>
422      <include><context ref="ARGS-MM"/></include>
423    </context>
424
425    <context id="TO-ARGS-MS">
426      <start>,</start>
427      <end>(?=[,\)])</end>
428      <include><context ref="ARGS-MS"/></include>
429    </context>
430
431    <context id="TO-ARGS-SM">
432      <start>,</start>
433      <end>(?=[,\)])</end>
434      <include><context ref="ARGS-SM"/></include>
435    </context>
436
437    <context id="TO-ARGS-SS">
438      <start>,</start>
439      <end>(?=[,\)])</end>
440      <include><context ref="ARGS-SS"/></include>
441    </context>
442
443    <context id="TO-ARGS-MMM">
444      <start>,</start>
445      <end>(?=[,\)])</end>
446      <include><context ref="ARGS-MMM"/></include>
447    </context>
448
449    <context id="TO-ARGS-MMS">
450      <start>,</start>
451      <end>(?=[,\)])</end>
452      <include><context ref="ARGS-MMS"/></include>
453    </context>
454
455    <context id="TO-ARGS-MSS">
456      <start>,</start>
457      <end>(?=[,\)])</end>
458      <include><context ref="ARGS-MSS"/></include>
459    </context>
460
461    <context id="TO-ARGS-SSM">
462      <start>,</start>
463      <end>(?=[,\)])</end>
464      <include><context ref="ARGS-SSM"/></include>
465    </context>
466
467    <context id="TO-ARGS-SSS">
468      <start>,</start>
469      <end>(?=[,\)])</end>
470      <include><context ref="ARGS-SSS"/></include>
471    </context>
472
473    <context id="TO-ARGS-MMMM">
474      <start>,</start>
475      <end>(?=[,\)])</end>
476      <include><context ref="ARGS-MMMM"/></include>
477    </context>
478
479    <context id="TO-ARGS-MMSS">
480      <start>,</start>
481      <end>(?=[,\)])</end>
482      <include><context ref="ARGS-MMSS"/></include>
483    </context>
484
485    <context id="TO-ARGS-MSSM">
486      <start>,</start>
487      <end>(?=[,\)])</end>
488      <include><context ref="ARGS-MSSM"/></include>
489    </context>
490
491    <context id="TO-ARGS-MSSS">
492      <start>,</start>
493      <end>(?=[,\)])</end>
494      <include><context ref="ARGS-MSSS"/></include>
495    </context>
496
497    <context id="TO-ARGS-MMMMM">
498      <start>,</start>
499      <end>(?=[,\)])</end>
500      <include><context ref="ARGS-MMMMM"/></include>
501    </context>
502
503    <context id="TO-ARGS-MMMSS">
504      <start>,</start>
505      <end>(?=[,\)])</end>
506      <include><context ref="ARGS-MMMSS"/></include>
507    </context>
508
509    <context id="TO-ARGS-MVARARGS">
510      <start>,</start>
511      <end>(?=[,\)])</end>
512      <include><context ref="ARGS-MVARARGS"/></include>
513    </context>
514
515    <context id="TO-ARGS-SVARARGS">
516      <start>,</start>
517      <end>(?=[,\)])</end>
518      <include><context ref="ARGS-SVARARGS"/></include>
519    </context>
520
521    <!-- The ARGS- states match an argument of the type of the head of the
522    argument list, and then enter the TO-ARGS- state corresponding to the
523    tail of the argument list. (Or CAR and CDR, if you prefer.) -->
524
525    <context id="ARGS-S"><include>
526      <context ref="ARG-S"/>
527      <context ref="NO-ARGS"/>
528    </include></context>
529
530    <context id="ARGS-M"><include>
531      <context ref="ARG-M"/>
532      <context ref="NO-ARGS"/>
533    </include></context>
534
535    <context id="ARGS-MM"><include>
536      <context ref="ARG-M"/>
537      <context ref="TO-ARGS-M"/>
538    </include></context>
539
540    <context id="ARGS-MS"><include>
541      <context ref="ARG-M"/>
542      <context ref="TO-ARGS-S"/>
543    </include></context>
544
545    <context id="ARGS-SM"><include>
546      <context ref="ARG-S"/>
547      <context ref="TO-ARGS-M"/>
548    </include></context>
549
550    <context id="ARGS-SS"><include>
551      <context ref="ARG-S"/>
552      <context ref="TO-ARGS-S"/>
553    </include></context>
554
555    <context id="ARGS-MMM"><include>
556      <context ref="ARG-M"/>
557      <context ref="TO-ARGS-MM"/>
558    </include></context>
559
560    <context id="ARGS-MMS"><include>
561      <context ref="ARG-M"/>
562      <context ref="TO-ARGS-MS"/>
563    </include></context>
564
565    <context id="ARGS-MSM"><include>
566      <context ref="ARG-M"/>
567      <context ref="TO-ARGS-SM"/>
568    </include></context>
569
570    <context id="ARGS-MSS"><include>
571      <context ref="ARG-M"/>
572      <context ref="TO-ARGS-SS"/>
573    </include></context>
574
575    <context id="ARGS-SSM"><include>
576      <context ref="ARG-S"/>
577      <context ref="TO-ARGS-SM"/>
578    </include></context>
579
580    <context id="ARGS-SSS"><include>
581      <context ref="ARG-S"/>
582      <context ref="TO-ARGS-SS"/>
583    </include></context>
584
585    <context id="ARGS-MMMM"><include>
586      <context ref="ARG-M"/>
587      <context ref="TO-ARGS-MMM"/>
588    </include></context>
589
590    <context id="ARGS-MMMS"><include>
591      <context ref="ARG-M"/>
592      <context ref="TO-ARGS-MMS"/>
593    </include></context>
594
595    <context id="ARGS-MMSS"><include>
596      <context ref="ARG-M"/>
597      <context ref="TO-ARGS-MSS"/>
598    </include></context>
599
600    <context id="ARGS-MSSM"><include>
601      <context ref="ARG-M"/>
602      <context ref="TO-ARGS-SSM"/>
603    </include></context>
604
605    <context id="ARGS-MSSS"><include>
606      <context ref="ARG-M"/>
607      <context ref="TO-ARGS-SSS"/>
608    </include></context>
609
610    <context id="ARGS-SSSS"><include>
611      <context ref="ARG-S"/>
612      <context ref="TO-ARGS-SSS"/>
613    </include></context>
614
615    <context id="ARGS-MMMMM"><include>
616      <context ref="ARG-M"/>
617      <context ref="TO-ARGS-MMMM"/>
618    </include></context>
619
620    <context id="ARGS-MMMSS"><include>
621      <context ref="ARG-M"/>
622      <context ref="TO-ARGS-MMSS"/>
623    </include></context>
624
625    <context id="ARGS-MMSSM"><include>
626      <context ref="ARG-M"/>
627      <context ref="TO-ARGS-MSSM"/>
628    </include></context>
629
630    <context id="ARGS-MMSSS"><include>
631      <context ref="ARG-M"/>
632      <context ref="TO-ARGS-MSSS"/>
633    </include></context>
634
635    <context id="ARGS-MMMMMM"><include>
636      <context ref="ARG-M"/>
637      <context ref="TO-ARGS-MMMMM"/>
638    </include></context>
639
640    <context id="ARGS-SMMMSS"><include>
641      <context ref="ARG-S"/>
642      <context ref="TO-ARGS-MMMSS"/>
643    </include></context>
644
645    <!-- The ARGS-?VARARGS states go to their own TO-ARGS- states, of course -->
646    <context id="ARGS-MVARARGS"><include>
647      <context ref="ARG-M"/>
648      <context ref="TO-ARGS-MVARARGS"/>
649    </include></context>
650
651    <context id="ARGS-SVARARGS"><include>
652      <context ref="ARG-S"/>
653      <context ref="TO-ARGS-SVARARGS"/>
654    </include></context>
655
656    <!-- AS_CASE is the odd man out. Its signature should actually be M(MS)+S?,
657    i.e. an M followed by one or more pairs of MS, ending with an optional S,
658    but there's no way to highlight that properly without knowing whether a
659    given argument is the last one. Therefore, we highlight it as M plus
660    SVARARGS. -->
661    <context id="ARGS-AS-CASE"><include>
662      <context ref="ARG-M"/>
663      <context ref="TO-ARGS-SVARARGS"/>
664    </include></context>
665
666    <!-- The func- contexts are the ones actually included in the 'm4-pure'
667    context below. They match the macro names (which we defined in the regexes
668    above), and the opening and closing parentheses, which are all highlighted.
669    -->
670
671    <context id="func-m">
672      <start>\b(\%{macros-m})\s*(\()</start>
673      <end>\)</end>
674      <include>
675        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
676        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
677        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
678        <context ref="ARGS-M"/>
679      </include>
680    </context>
681
682    <context id="func-s">
683      <start>\b(\%{macros-s})\s*(\()</start>
684      <end>\)</end>
685      <include>
686        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
687        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
688        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
689        <context ref="ARGS-S"/>
690      </include>
691    </context>
692
693    <context id="func-mm">
694      <start>\b(\%{macros-mm})\s*(\()</start>
695      <end>\)</end>
696      <include>
697        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
698        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
699        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
700        <context ref="ARGS-MM"/>
701      </include>
702    </context>
703
704    <context id="func-ms">
705      <start>\b(\%{macros-ms})\s*(\()</start>
706      <end>\)</end>
707      <include>
708        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
709        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
710        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
711        <context ref="ARGS-MS"/>
712      </include>
713    </context>
714
715    <context id="func-ss">
716      <start>\b(\%{macros-ss})\s*(\()</start>
717      <end>\)</end>
718      <include>
719        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
720        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
721        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
722        <context ref="ARGS-SS"/>
723      </include>
724    </context>
725
726    <context id="func-mmm">
727      <start>\b(\%{macros-mmm})\s*(\()</start>
728      <end>\)</end>
729      <include>
730        <context sub-pattern="1" where="start" style-ref="m4-macro"/>
731        <context sub-pattern="2" where="start" style-ref="m4-macro"/>
732        <context sub-pattern="0" where="end" style-ref="m4-macro"/>
733        <context ref="ARGS-MMM"/>
734      </include>
735    </context>
736
737    <context id="func-mms">
738      <start>\b(\%{macros-mms})\s*(\()</start>
739      <end>\)</end>
740      <include>
741        <context sub-pattern="1" where="start" style-ref="m4-macro"/>
742        <context sub-pattern="2" where="start" style-ref="m4-macro"/>
743        <context sub-pattern="0" where="end" style-ref="m4-macro"/>
744        <context ref="ARGS-MMS"/>
745      </include>
746    </context>
747
748    <context id="func-msm">
749      <start>\b(\%{macros-msm})\s*(\()</start>
750      <end>\)</end>
751      <include>
752        <context sub-pattern="1" where="start" style-ref="m4-macro"/>
753        <context sub-pattern="2" where="start" style-ref="m4-macro"/>
754        <context sub-pattern="0" where="end" style-ref="m4-macro"/>
755        <context ref="ARGS-MSM"/>
756      </include>
757    </context>
758
759    <context id="func-mss">
760      <start>\b(\%{macros-mss})\s*(\()</start>
761      <end>\)</end>
762      <include>
763        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
764        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
765        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
766        <context ref="ARGS-MSS"/>
767      </include>
768    </context>
769
770    <context id="func-mmmm">
771      <start>\b(\%{macros-mmmm})\s*(\()</start>
772      <end>\)</end>
773      <include>
774        <context sub-pattern="1" where="start" style-ref="m4-macro"/>
775        <context sub-pattern="2" where="start" style-ref="m4-macro"/>
776        <context sub-pattern="0" where="end" style-ref="m4-macro"/>
777        <context ref="ARGS-MMMM"/>
778      </include>
779    </context>
780
781    <context id="func-mmms">
782      <start>\b(\%{macros-mmms})\s*(\()</start>
783      <end>\)</end>
784      <include>
785        <context sub-pattern="1" where="start" style-ref="m4-macro"/>
786        <context sub-pattern="2" where="start" style-ref="m4-macro"/>
787        <context sub-pattern="0" where="end" style-ref="m4-macro"/>
788        <context ref="ARGS-MMMS"/>
789      </include>
790    </context>
791
792    <context id="func-mmss">
793      <start>\b(\%{macros-mmss})\s*(\()</start>
794      <end>\)</end>
795      <include>
796        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
797        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
798        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
799        <context ref="ARGS-MMSS"/>
800      </include>
801    </context>
802
803    <context id="func-mssm">
804      <start>\b(\%{macros-mssm})\s*(\()</start>
805      <end>\)</end>
806      <include>
807        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
808        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
809        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
810        <context ref="ARGS-MSSM"/>
811      </include>
812    </context>
813
814    <context id="func-msss">
815      <start>\b(\%{macros-msss})\s*(\()</start>
816      <end>\)</end>
817      <include>
818        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
819        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
820        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
821        <context ref="ARGS-MSSS"/>
822      </include>
823    </context>
824
825    <context id="func-ssss">
826      <start>\b(\%{macros-ssss})\s*(\()</start>
827      <end>\)</end>
828      <include>
829        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
830        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
831        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
832        <context ref="ARGS-SSSS"/>
833      </include>
834    </context>
835
836    <context id="func-mmmmm">
837      <start>\b(\%{macros-mmmmm})\s*(\()</start>
838      <end>\)</end>
839      <include>
840        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
841        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
842        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
843        <context ref="ARGS-MMMMM"/>
844      </include>
845    </context>
846
847    <context id="func-mmmss">
848      <start>\b(\%{macros-mmmss})\s*(\()</start>
849      <end>\)</end>
850      <include>
851        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
852        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
853        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
854        <context ref="ARGS-MMMSS"/>
855      </include>
856    </context>
857
858    <context id="func-mmssm">
859      <start>\b(\%{macros-mmssm})\s*(\()</start>
860      <end>\)</end>
861      <include>
862        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
863        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
864        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
865        <context ref="ARGS-MMSSM"/>
866      </include>
867    </context>
868
869    <context id="func-mmsss">
870      <start>\b(\%{macros-mmsss})\s*(\()</start>
871      <end>\)</end>
872      <include>
873        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
874        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
875        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
876        <context ref="ARGS-MMSSS"/>
877      </include>
878    </context>
879
880    <context id="func-mmmmmm">
881      <start>\b(\%{macros-mmmmmm})\s*(\()</start>
882      <end>\)</end>
883      <include>
884        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
885        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
886        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
887        <context ref="ARGS-MMMMMM"/>
888      </include>
889    </context>
890
891    <context id="func-smmmss">
892      <start>\b(\%{macros-smmmss})\s*(\()</start>
893      <end>\)</end>
894      <include>
895        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
896        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
897        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
898        <context ref="ARGS-SMMMSS"/>
899      </include>
900    </context>
901
902    <context id="func-mvarargs">
903      <start>\b(\%{macros-mvarargs})\s*(\()</start>
904      <end>\)</end>
905      <include>
906        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
907        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
908        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
909        <context ref="ARGS-MVARARGS"/>
910      </include>
911    </context>
912
913    <context id="func-svarargs">
914      <start>\b(\%{macros-svarargs})\s*(\()</start>
915      <end>\)</end>
916      <include>
917        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
918        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
919        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
920        <context ref="ARGS-SVARARGS"/>
921      </include>
922    </context>
923
924    <context id="func-as-case">
925      <start>\b(AS_CASE)\s*(\()</start>
926      <end>\)</end>
927      <include>
928        <context sub-pattern="1" where="start" style-ref="ac-macro"/>
929        <context sub-pattern="2" where="start" style-ref="ac-macro"/>
930        <context sub-pattern="0" where="end" style-ref="ac-macro"/>
931        <context ref="ARGS-AS-CASE"/>
932      </include>
933    </context>
934
935    <!-- This context highlights pure M4 code. -->
936    <context id="m4-pure">
937      <include>
938        <context ref="m4-comment"/>
939        <context ref="func-m"/>
940        <context ref="func-s"/>
941        <context ref="func-mm"/>
942        <context ref="func-ms"/>
943        <context ref="func-ss"/>
944        <context ref="func-mmm"/>
945        <context ref="func-mms"/>
946        <context ref="func-msm"/>
947        <context ref="func-mss"/>
948        <context ref="func-mmmm"/>
949        <context ref="func-mmms"/>
950        <context ref="func-mmss"/>
951        <context ref="func-mssm"/>
952        <context ref="func-msss"/>
953        <context ref="func-ssss"/>
954        <context ref="func-mmmmm"/>
955        <context ref="func-mmmss"/>
956        <context ref="func-mmssm"/>
957        <context ref="func-mmsss"/>
958        <context ref="func-mmmmmm"/>
959        <context ref="func-smmmss"/>
960        <context ref="func-mvarargs"/>
961        <context ref="func-svarargs"/>
962        <context ref="func-as-case"/>
963        <context ref="m4-macros-noargs"/>
964        <context ref="ac-macros-noargs"/>
965        <context ref="ac-macros-noargs-2"/>
966        <context ref="ac-macros-optargs"/>
967        <context ref="ac-macros-obsolete"/>
968        <context ref="am-macros-noargs"/>
969        <context ref="am-macros-optargs"/>
970        <context ref="am-macros-obsolete"/>
971        <context ref="am-macros-private"/>
972        <context ref="misc-macros-noargs"/>
973        <context ref="misc-macros-optargs"/>
974        <context ref="m4-function-call"/>
975        <context ref="m4-quoted"/>
976        <context extend-parent="false" style-ref="def:error">
977          <match>\]</match>
978        </context>
979      </include>
980    </context>
981
982    <context id="shell-line-comment" style-ref="sh:comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
983      <start>(?&lt;!\S)#|(?&lt;=\[)#</start>
984      <include>
985        <context ref="sh:line-comment" original="true"/>
986      </include>
987    </context>
988
989    <replace id="sh:sh" ref="m4"/>
990    <replace id="sh:line-comment" ref="shell-line-comment"/>
991
992    <!-- This is the main 'm4' context. It highlights a mixture of M4 and shell
993    code. -->
994    <context id="m4" class="no-spell-check">
995      <include>
996        <context ref="m4-quoted-shell"/>
997        <context ref="m4-pure"/>
998        <context ref="sh:sh" original="true"/>
999        <context id="bad-paren" extend-parent="false" style-ref="def:error">
1000          <match>\)</match>
1001        </context>
1002      </include>
1003    </context>
1004
1005    <!-- Now come the macros that don't take any arguments. They are not called
1006    with empty parentheses, just with the macro name: e.g. AC_OUTPUT. We can
1007    simply use keyword contexts for them. -->
1008
1009    <context id="m4-macros-noargs" style-ref="m4-macro">
1010      <prefix>\bm4_</prefix>
1011      <keyword>divnum</keyword>
1012      <keyword>init</keyword>
1013      <keyword>location</keyword>
1014      <keyword>sysval</keyword>
1015    </context>
1016
1017    <!-- We also have keyword contexts for macros that do take arguments, but
1018    can also be called without any; for example, AC_PROG_CC takes a list of
1019    compiler names to search for, but is mostly just called without it. Since
1020    the 'func-m' context would only match AC_PROG_CC(), we repeat this kind of
1021    macros in '-optargs' contexts. -->
1022
1023    <context id="m4-macros-optargs" style-ref="m4-macro">
1024      <prefix>\bm4_</prefix>
1025      <keyword>change(com|quote)</keyword>
1026      <keyword>debug(file|mode)</keyword>
1027      <keyword>divert_pop</keyword>
1028      <keyword>newline</keyword>
1029      <keyword>trace(on|off)</keyword>
1030    </context>
1031
1032    <context id="ac-macros-noargs" style-ref="ac-macro">
1033      <prefix>\bAC_</prefix>
1034      <keyword>ARG_PROGRAM</keyword>
1035      <keyword>AUTOCONF_VERSION</keyword>
1036      <keyword>C_BACKSLASH_A</keyword>
1037      <keyword>CACHE_(LOAD|SAVE)</keyword>
1038      <keyword>CANONICAL_(BUILD|HOST|TARGET)</keyword>
1039      <keyword>C_CHAR_UNSIGNED</keyword>
1040      <keyword>C_CONST</keyword>
1041      <keyword>C_FLEXIBLE_ARRAY_MEMBER</keyword>
1042      <keyword>C_INLINE</keyword>
1043      <keyword>C_PROTOTYPES</keyword>
1044      <keyword>C_RESTRICT</keyword>
1045      <keyword>C_STRINGIZE</keyword>
1046      <keyword>C_TYPEOF</keyword>
1047      <keyword>C_VARARRAYS</keyword>
1048      <keyword>C_VOLATILE</keyword>
1049      <keyword>DISABLE_OPTION_CHECKING</keyword>
1050      <keyword>ERLANG_SUBST_(((INSTALL_)?LIB|ROOT)_DIR|ERTS_VER)</keyword>
1051      <keyword>F77_MAIN</keyword>
1052      <keyword>F77_WRAPPERS</keyword>
1053      <keyword>FC_MAIN</keyword>
1054      <keyword>FC_WRAPPERS</keyword>
1055      <keyword>FUNC_ALLOCA</keyword>
1056      <keyword>FUNC_CHOWN</keyword>
1057      <keyword>FUNC_CLOSEDIR_VOID</keyword>
1058      <keyword>FUNC_ERROR_AT_LINE</keyword>
1059      <keyword>FUNC_FNMATCH(_GNU)?</keyword>
1060      <keyword>FUNC_FORK</keyword>
1061      <keyword>FUNC_FSEEKO</keyword>
1062      <keyword>FUNC_GETGROUPS</keyword>
1063      <keyword>FUNC_GETLOADAVG</keyword>
1064      <keyword>FUNC_GETMNTENT</keyword>
1065      <keyword>FUNC_GETPGRP</keyword>
1066      <keyword>FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK</keyword>
1067      <keyword>FUNC_LSTAT</keyword>
1068      <keyword>FUNC_MALLOC</keyword>
1069      <keyword>FUNC_MBRTOWC</keyword>
1070      <keyword>FUNC_MEMCMP</keyword>
1071      <keyword>FUNC_MKTIME</keyword>
1072      <keyword>FUNC_MMAP</keyword>
1073      <keyword>FUNC_OBSTACK</keyword>
1074      <keyword>FUNC_REALLOC</keyword>
1075      <keyword>FUNC_SELECT_ARGTYPES</keyword>
1076      <keyword>FUNC_SETPGRP</keyword>
1077      <keyword>FUNC_STAT</keyword>
1078      <keyword>FUNC_STRCOLL</keyword>
1079      <keyword>FUNC_STRERROR_R</keyword>
1080      <keyword>FUNC_STRFTIME</keyword>
1081      <keyword>FUNC_STRNLEN</keyword>
1082      <keyword>FUNC_STRTOD</keyword>
1083      <keyword>FUNC_STRTOLD</keyword>
1084      <keyword>FUNC_UTIME_NULL</keyword>
1085      <keyword>FUNC_VPRINTF</keyword>
1086      <keyword>HEADER_ASSERT</keyword>
1087      <keyword>HEADER_DIRENT</keyword>
1088      <keyword>HEADER_MAJOR</keyword>
1089      <keyword>HEADER_RESOLV</keyword>
1090      <keyword>HEADER_STAT</keyword>
1091      <keyword>HEADER_STDBOOL</keyword>
1092      <keyword>HEADER_STDC</keyword>
1093      <keyword>HEADER_SYS_WAIT</keyword>
1094      <keyword>HEADER_TIME</keyword>
1095      <keyword>HEADER_TIOCGWINSZ</keyword>
1096      <keyword>LANG_DEFINES_PROVIDED</keyword>
1097      <keyword>LANG_WERROR</keyword>
1098      <keyword>OUTPUT</keyword>
1099      <keyword>PACKAGE_BUGREPORT</keyword>
1100      <keyword>PACKAGE_NAME</keyword>
1101      <keyword>PACKAGE_STRING</keyword>
1102      <keyword>PACKAGE_TARNAME</keyword>
1103      <keyword>PACKAGE_URL</keyword>
1104      <keyword>PACKAGE_VERSION</keyword>
1105      <keyword>PATH_X</keyword>
1106      <keyword>PATH_XTRA</keyword>
1107      <keyword>PRESERVE_HELP_ORDER</keyword>
1108      <keyword>PROG_AWK</keyword>
1109      <keyword>PROG_CC(_C(89|99|_O))</keyword>
1110      <keyword>PROG_CC_STDC</keyword>
1111      <keyword>PROG_CPP(_WERROR)?</keyword>
1112      <keyword>PROG_CXX(CPP|_C_O)?</keyword>
1113      <keyword>PROG_EGREP</keyword>
1114      <keyword>PROG_F77_C_O</keyword>
1115      <keyword>PROG_FC_C_O</keyword>
1116      <keyword>PROG_FGREP</keyword>
1117      <keyword>PROG_GCC_TRADITIONAL</keyword>
1118      <keyword>PROG_GREP</keyword>
1119      <keyword>PROG_INSTALL</keyword>
1120      <keyword>PROG_LEX</keyword>
1121      <keyword>PROG_LN_S</keyword>
1122      <keyword>PROG_MAKE_SET</keyword>
1123      <keyword>PROG_MKDIR_P</keyword>
1124      <keyword>PROG_OBJ(CXX)?CPP</keyword>
1125      <keyword>PROG_RANLIB</keyword>
1126      <keyword>PROG_SED</keyword>
1127      <keyword>PROG_YACC</keyword>
1128      <keyword>REPLACE_FNMATCH</keyword>
1129      <keyword>REQUIRE_CPP</keyword>
1130      <keyword>STRUCT_DIRENT_D_(INO|TYPE)</keyword>
1131      <keyword>STRUCT_ST_BLOCKS</keyword>
1132      <keyword>STRUCT_TIMEZONE</keyword>
1133      <keyword>STRUCT_TM</keyword>
1134      <keyword>SYS_INTERPRETER</keyword>
1135      <keyword>SYS_LARGEFILE</keyword>
1136      <keyword>SYS_LONG_FILE_NAMES</keyword>
1137      <keyword>SYS_POSIX_TERMIOS</keyword>
1138      <keyword>TYPE_GETGROUPS</keyword>
1139      <keyword>TYPE_INT(16_T|32_T|64_T|8_T)</keyword>
1140      <keyword>TYPE_INTMAX_T</keyword>
1141      <keyword>TYPE_INTPTR_T</keyword>
1142      <keyword>TYPE_LONG_DOUBLE(_WIDER)?</keyword>
1143      <keyword>TYPE_LONG_LONG_INT</keyword>
1144      <keyword>TYPE_MBSTATE_T</keyword>
1145      <keyword>TYPE_MODE_T</keyword>
1146      <keyword>TYPE_OFF_T</keyword>
1147      <keyword>TYPE_PID_T</keyword>
1148      <keyword>TYPE_SIGNAL</keyword>
1149      <keyword>TYPE_SIZE_T</keyword>
1150      <keyword>TYPE_SSIZE_T</keyword>
1151      <keyword>TYPE_UID_T</keyword>
1152      <keyword>TYPE_UINT(16_T|32_T|64_T|8_T)</keyword>
1153      <keyword>TYPE_UINTMAX_T</keyword>
1154      <keyword>TYPE_UINTPTR_T</keyword>
1155      <keyword>TYPE_UNSIGNED_LONG_LONG_INT</keyword>
1156      <keyword>USE_SYSTEM_EXTENSIONS</keyword>
1157    </context>
1158
1159    <context id="ac-macros-noargs-2" style-ref="ac-macro">
1160      <prefix>\b</prefix>
1161      <keyword>AH_HEADER</keyword>
1162      <keyword>AS_BOURNE_COMPATIBLE</keyword>
1163      <keyword>AS_INIT</keyword>
1164      <keyword>AS_LINENO_PREPARE</keyword>
1165      <keyword>AS_ME_PREPARE</keyword>
1166      <keyword>AS_MESSAGE_FD</keyword>
1167      <keyword>AS_MESSAGE_LOG_FD</keyword>
1168      <keyword>AS_ORIGINAL_STDIN_FD</keyword>
1169      <keyword>AS_SHELL_SANITIZE</keyword>
1170      <keyword>AT_CLEANUP</keyword>
1171      <keyword>AT_COLOR_TESTS</keyword>
1172    </context>
1173
1174    <context id="ac-macros-optargs" style-ref="ac-macro">
1175      <prefix>\b</prefix>
1176      <keyword>AC_C_BIGENDIAN</keyword>
1177      <keyword>AC_ERLANG_(PATH|NEED)_ERLC?</keyword>
1178      <keyword>AC_F(77|C)_DUMMY_MAIN</keyword>
1179      <keyword>AC_FC_((FIXED|FREE)FORM|LINE_LENGTH)</keyword>
1180      <keyword>AC_INCLUDES_DEFAULT</keyword>
1181      <keyword>AC_LANG_POP</keyword>
1182      <keyword>AC_PROG_(CC|CXX|OBJC(XX)?|F(77|C))</keyword>
1183      <keyword>AS_EXIT</keyword>
1184      <keyword>AT_INIT</keyword>
1185    </context>
1186
1187    <!-- Deprecated macros are highlighted as errors. We don't bother
1188    highlighting their arguments properly, because they're deprecated anyway!-->
1189
1190    <context id="ac-macros-obsolete" style-ref="ac-macro-obsolete">
1191      <prefix>\bAC_</prefix>
1192      <keyword>AIX</keyword>
1193      <keyword>ALLOCA</keyword>
1194      <keyword>ARG_ARRAY</keyword>
1195      <keyword>CANONICAL_SYSTEM</keyword>
1196      <keyword>C_CROSS</keyword>
1197      <keyword>CHAR_UNSIGNED</keyword>
1198      <keyword>CHECKING</keyword>
1199      <keyword>C_LONG_DOUBLE</keyword>
1200      <keyword>COMPILE_CHECK</keyword>
1201      <keyword>CONFIG_HEADER</keyword>
1202      <keyword>CONST</keyword>
1203      <keyword>CROSS_CHECK</keyword>
1204      <keyword>CYGWIN</keyword>
1205      <keyword>DECL_SYS_SIGLIST</keyword>
1206      <keyword>DECL_YYTEXT</keyword>
1207      <keyword>DIR_HEADER</keyword>
1208      <keyword>DISABLE_FAST_INSTALL</keyword>
1209      <keyword>DISABLE_SHARED</keyword>
1210      <keyword>DISABLE_STATIC</keyword>
1211      <keyword>DYNIX_SEQ</keyword>
1212      <keyword>ENABLE(_(SHARED|STATIC))?</keyword>
1213      <keyword>EMXOS2</keyword>
1214      <keyword>ERROR</keyword>
1215      <keyword>EXEEXT</keyword>
1216      <keyword>FIND_X</keyword>
1217      <keyword>FIND_XTRA</keyword>
1218      <keyword>FOREACH</keyword>
1219      <keyword>FUNC_CHECK</keyword>
1220      <keyword>FUNC_SETVBUF_REVERSED</keyword>
1221      <keyword>FUNC_WAIT3</keyword>
1222      <keyword>GCC_TRADITIONAL</keyword>
1223      <keyword>GETGROUPS_T</keyword>
1224      <keyword>GETLOADAVG</keyword>
1225      <keyword>GNU_SOURCE</keyword>
1226      <keyword>HAVE_FUNCS</keyword>
1227      <keyword>HAVE_HEADERS</keyword>
1228      <keyword>HAVE_LIBRARY</keyword>
1229      <keyword>HAVE_POUNDBANG</keyword>
1230      <keyword>HEADER_CHECK</keyword>
1231      <keyword>HEADER_EGREP</keyword>
1232      <keyword>HELP_STRING</keyword>
1233      <keyword>INLINE</keyword>
1234      <keyword>INT_16_BITS</keyword>
1235      <keyword>IRIX_SUN</keyword>
1236      <keyword>LANG_C</keyword>
1237      <keyword>LANG_CPLUSPLUS</keyword>
1238      <keyword>LANG_FORTRAN77</keyword>
1239      <keyword>LANG_RESTORE</keyword>
1240      <keyword>LANG_SAVE</keyword>
1241      <keyword>LIBTOOL_DLOPEN</keyword>
1242      <keyword>LIBTOOL_WIN32_DLL</keyword>
1243      <keyword>LINK_FILES</keyword>
1244      <keyword>LN_S</keyword>
1245      <keyword>LONG_64_BITS</keyword>
1246      <keyword>LONG_DOUBLE</keyword>
1247      <keyword>LONG_FILE_NAMES</keyword>
1248      <keyword>MAJOR_HEADER</keyword>
1249      <keyword>MEMORY_H</keyword>
1250      <keyword>MINGW32</keyword>
1251      <keyword>MINIX</keyword>
1252      <keyword>MINUS_C_MINUS_O</keyword>
1253      <keyword>MMAP</keyword>
1254      <keyword>MODE_T</keyword>
1255      <keyword>OBJEXT</keyword>
1256      <keyword>OBSOLETE</keyword>
1257      <keyword>OFF_T</keyword>
1258      <keyword>OUTPUT_COMMANDS</keyword>
1259      <keyword>PID_T</keyword>
1260      <keyword>PREFIX</keyword>
1261      <keyword>PROG_(INTL|LIB)TOOL</keyword>
1262      <keyword>PROGRAM_CHECK</keyword>
1263      <keyword>PROGRAM_EGREP</keyword>
1264      <keyword>PROGRAM_PATH</keyword>
1265      <keyword>PROGRAMS_CHECK</keyword>
1266      <keyword>PROGRAMS_PATH</keyword>
1267      <keyword>REMOTE_TAPE</keyword>
1268      <keyword>RESTARTABLE_SYSCALLS</keyword>
1269      <keyword>RETSIGTYPE</keyword>
1270      <keyword>RSH</keyword>
1271      <keyword>SCO_INTL</keyword>
1272      <keyword>SET_MAKE</keyword>
1273      <keyword>SETVBUF_REVERSED</keyword>
1274      <keyword>SIZEOF_TYPE</keyword>
1275      <keyword>SIZE_T</keyword>
1276      <keyword>STAT_MACROS_BROKEN</keyword>
1277      <keyword>ST_BLKSIZE</keyword>
1278      <keyword>ST_BLOCKS</keyword>
1279      <keyword>STDC_HEADERS</keyword>
1280      <keyword>STRCOLL</keyword>
1281      <keyword>ST_RDEV</keyword>
1282      <keyword>SYS_RESTARTABLE_SYSCALLS</keyword>
1283      <keyword>SYS_SIGLIST_DECLARED</keyword>
1284      <keyword>TEST_CPP</keyword>
1285      <keyword>TEST_PROGRAM</keyword>
1286      <keyword>TIME_WITH_SYS_TIME</keyword>
1287      <keyword>TIMEZONE</keyword>
1288      <keyword>TRY_COMPILE</keyword>
1289      <keyword>TRY_CPP</keyword>
1290      <keyword>TRY_LINK_FUNC</keyword>
1291      <keyword>TRY_LINK</keyword>
1292      <keyword>TRY_RUN</keyword>
1293      <keyword>UID_T</keyword>
1294      <keyword>UNISTD_H</keyword>
1295      <keyword>USG</keyword>
1296      <keyword>UTIME_NULL</keyword>
1297      <keyword>VALIDATE_CACHED_SYSTEM_TUPLE</keyword>
1298      <keyword>VERBOSE</keyword>
1299      <keyword>VFORK</keyword>
1300      <keyword>VPRINTF</keyword>
1301      <keyword>WAIT3</keyword>
1302      <keyword>WARN</keyword>
1303      <keyword>WITH</keyword>
1304      <keyword>WORDS_BIGENDIAN</keyword>
1305      <keyword>XENIX_DIR</keyword>
1306      <keyword>YYTEXT_POINTER</keyword>
1307    </context>
1308
1309    <context id="am-macros-noargs" style-ref="ac-macro">
1310      <prefix>\bAM_</prefix>
1311      <keyword>ENABLE_MULTILIB</keyword>
1312      <keyword>GCONF_SOURCE_2</keyword>
1313      <keyword>GLIB_GNU_GETTEXT</keyword>
1314      <keyword>GNU_GETTEXT_INTL_SUBDIR</keyword>
1315      <keyword>PATH_LISPDIR</keyword>
1316      <keyword>PO_SUBDIRS</keyword>
1317      <keyword>PROG_AS</keyword>
1318      <keyword>PROG_CC_C_O</keyword>
1319      <keyword>PROG_GCJ</keyword>
1320      <keyword>PROG_LEX</keyword>
1321      <keyword>SILENT_RULES</keyword>
1322      <keyword>WITH_DMALLOC</keyword>
1323      <keyword>WITH_REGEX</keyword>
1324    </context>
1325
1326    <context id="am-macros-optargs" style-ref="ac-macro">
1327      <prefix>\bAM_</prefix>
1328      <keyword>INIT_AUTOMAKE</keyword>
1329      <keyword>MAINTAINER_MODE</keyword>
1330      <keyword>PATH_PYTHON</keyword>
1331      <keyword>PROG_(UPC|VALAC)</keyword>
1332    </context>
1333
1334    <context id="am-macros-private" style-ref="ac-macro-obsolete">
1335      <prefix>\bAM_</prefix>
1336      <keyword>DEP_TRACK</keyword>
1337      <keyword>MAKE_INCLUDE</keyword>
1338      <keyword>OUTPUT_DEPENDENCY_COMMANDS</keyword>
1339      <keyword>PROG_INSTALL_STRIP</keyword>
1340      <keyword>SANITY_CHECK</keyword>
1341      <keyword>SET_DEPDIR</keyword>
1342    </context>
1343
1344    <context id="am-macros-obsolete" style-ref="ac-macro-obsolete">
1345      <prefix>\bAM_</prefix>
1346      <keyword>C_PROTOTYPES</keyword>
1347      <keyword>CONFIG_HEADER</keyword>
1348      <keyword>HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL</keyword>
1349      <keyword>PATH_CHECK</keyword>
1350      <keyword>PROG_(LIBTOOL|MKDIR_P)</keyword>
1351      <keyword>SYS_POSIX_TERMIOS</keyword>
1352      <keyword>(DIS|EN)ABLE_(STATIC|SHARED)</keyword>
1353    </context>
1354
1355    <context id="misc-macros-noargs" style-ref="ac-macro">
1356      <prefix>\b</prefix>
1357      <keyword>__(file|o?line)__</keyword>
1358      <keyword>LT_CMD_MAX_LEN</keyword>
1359      <keyword>LT_FUNC_DLSYM_USCORE</keyword>
1360      <keyword>LT_LIB_(M|DLLOAD)</keyword>
1361      <keyword>LT_OUTPUT</keyword>
1362      <keyword>LT_PATH_(LD|NM)</keyword>
1363      <keyword>LT_SYS_DLOPEN_(SELF|DEPLIBS)</keyword>
1364      <keyword>LT_SYS_MODULE_(EXT|PATH)</keyword>
1365      <keyword>LT_SYS_(DLSEARCH_PATH|SYMBOL_USCORE)</keyword>
1366    </context>
1367
1368    <context id="misc-macros-optargs" style-ref="ac-macro">
1369      <prefix>\b</prefix>
1370      <keyword>LT_INIT</keyword>
1371      <keyword>PKG_PROG_PKG_CONFIG</keyword>
1372    </context>
1373  </definitions>
1374</language>
1375