├── .gitignore ├── Autoconf.YAML-tmLanguage ├── Autoconf.tmLanguage ├── Automake.YAML-tmLanguage ├── Automake.sublime-settings ├── Automake.tmLanguage ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DEVELOPMENT.md ├── LICENSE ├── Makefile2.YAML-tmLanguage ├── Makefile2.sublime-settings ├── Makefile2.tmLanguage ├── README.md ├── build.js ├── icon.png ├── language-configuration.json ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /Autoconf.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | # Adapted from: 3 | # https://git.gnome.org/browse/gtksourceview/tree/data/language-specs/m4.lang 4 | --- 5 | uuid: cd50bfc0-2ccb-47b9-a157-98b00816d909 6 | name: Autoconf M4 7 | scopeName: source.m4 8 | fileTypes: 9 | - configure.ac 10 | - configure.in 11 | - m4 12 | 13 | repository: 14 | # M4 basic syntax 15 | # --------------- 16 | m4-quoted: 17 | # 'm4-quoted' matches text between quote brackets and highlights it as pure 18 | # M4 (no shell code allowed). 19 | begin: \[ 20 | end: \] 21 | patterns: 22 | - include: '#m4-pure' 23 | m4-quoted-shell: 24 | # 'm4-quoted-shell'' matches text between quote brackets and highlights it 25 | # as a mix of M4 and shell code. 26 | begin: \[ 27 | end: \] 28 | patterns: 29 | - include: $self 30 | m4-function-call: 31 | # This context matches text between parentheses that comes after a word, and 32 | # treats it as a variable-length list of 'm' arguments. This is necessary 33 | # for unknown or user-defined macros - without this context, their arguments 34 | # would all be highlighted as shell code. 35 | begin: (?<=[\w\d_])\((?!\)) 36 | end: \) 37 | patterns: 38 | - include: '#ARG-M' 39 | - begin: ',' 40 | end: (?=\)) 41 | patterns: 42 | - include: '#ARG-M' 43 | m4-comment: 44 | # M4 'dnl' comments are removed from the output, as opposed to shell '#' 45 | # comments, which appear in the output. 46 | name: comment.line.dnl.m4 47 | begin: dnl 48 | end: $ 49 | patterns: [] 50 | quadrigraph: 51 | # @<:@ and @:>@ to replace left and right brackets 52 | name: constant.character.escape.quadrigraph.m4 53 | match: '@(<:|:>)@' 54 | patterns: [] 55 | 56 | # M4 macros state machine 57 | # ----------------------- 58 | # In the following section, the contexts form a pretty straightforward state 59 | # machine that consumes each macro argument and moves on to the next state. 60 | 61 | NO-ARGS: 62 | # This state means all the expected arguments have been consumed, and so any 63 | # remaining arguments are errors. 64 | name: invalid.illegal.supernumerary-argument.m4 65 | begin: ',' 66 | end: (?=\)) 67 | patterns: [] 68 | 69 | ARG-M: 70 | # This is an argument containing only pure M4. 71 | patterns: 72 | - include: '#m4-pure' 73 | ARG-S: 74 | # This is an argument containing a mix of M4 and shell code. 75 | patterns: 76 | - include: '#m4-quoted-shell' 77 | - include: '#m4-pure' 78 | 79 | # The TO-ARGS- states match a comma, and then enter the corresponding ARGS- 80 | # state 81 | TO-ARGS-M: 82 | <<: &TO-ARGS 83 | begin: ',' 84 | end: (?=\)) 85 | patterns: 86 | - include: '#ARGS-M' 87 | TO-ARGS-S: 88 | <<: *TO-ARGS 89 | patterns: 90 | - include: '#ARGS-S' 91 | TO-ARGS-MM: 92 | <<: *TO-ARGS 93 | patterns: 94 | - include: '#ARGS-MM' 95 | TO-ARGS-MS: 96 | <<: *TO-ARGS 97 | patterns: 98 | - include: '#ARGS-MS' 99 | TO-ARGS-SM: 100 | <<: *TO-ARGS 101 | patterns: 102 | - include: '#ARGS-SM' 103 | TO-ARGS-SS: 104 | <<: *TO-ARGS 105 | patterns: 106 | - include: '#ARGS-SS' 107 | TO-ARGS-MMM: 108 | <<: *TO-ARGS 109 | patterns: 110 | - include: '#ARGS-MMM' 111 | TO-ARGS-MMS: 112 | <<: *TO-ARGS 113 | patterns: 114 | - include: '#ARGS-MMS' 115 | TO-ARGS-MSS: 116 | <<: *TO-ARGS 117 | patterns: 118 | - include: '#ARGS-MSS' 119 | TO-ARGS-SSM: 120 | <<: *TO-ARGS 121 | patterns: 122 | - include: '#ARGS-SSM' 123 | TO-ARGS-SSS: 124 | <<: *TO-ARGS 125 | patterns: 126 | - include: '#ARGS-SSS' 127 | TO-ARGS-MMMM: 128 | <<: *TO-ARGS 129 | patterns: 130 | - include: '#ARGS-MMMM' 131 | TO-ARGS-MMSS: 132 | <<: *TO-ARGS 133 | patterns: 134 | - include: '#ARGS-MMSS' 135 | TO-ARGS-MSSM: 136 | <<: *TO-ARGS 137 | patterns: 138 | - include: '#ARGS-MSSM' 139 | TO-ARGS-MSSS: 140 | <<: *TO-ARGS 141 | patterns: 142 | - include: '#ARGS-MSSS' 143 | TO-ARGS-MMMMM: 144 | <<: *TO-ARGS 145 | patterns: 146 | - include: '#ARGS-MMMMM' 147 | TO-ARGS-MMMSS: 148 | <<: *TO-ARGS 149 | patterns: 150 | - include: '#ARGS-MMMSS' 151 | TO-ARGS-MVARARGS: 152 | <<: *TO-ARGS 153 | patterns: 154 | - include: '#ARGS-MVARARGS' 155 | TO-ARGS-SVARARGS: 156 | <<: *TO-ARGS 157 | patterns: 158 | - include: '#ARGS-SVARARGS' 159 | 160 | # The ARGS- states match an argument of the type of the head of the argument 161 | # list, and then enter the TO-ARGS- state corresponding to the tail of the 162 | # argument list. (Or CAR and CDR, if you prefer.) 163 | 164 | ARGS-M: 165 | patterns: 166 | - include: '#ARG-M' 167 | - include: '#NO-ARGS' 168 | ARGS-S: 169 | patterns: 170 | - include: '#ARG-S' 171 | - include: '#NO-ARGS' 172 | ARGS-MM: 173 | patterns: 174 | - include: '#ARG-M' 175 | - include: '#TO-ARGS-M' 176 | ARGS-MS: 177 | patterns: 178 | - include: '#ARG-M' 179 | - include: '#TO-ARGS-S' 180 | ARGS-SM: 181 | patterns: 182 | - include: '#ARG-S' 183 | - include: '#TO-ARGS-M' 184 | ARGS-SS: 185 | patterns: 186 | - include: '#ARG-S' 187 | - include: '#TO-ARGS-S' 188 | ARGS-MMM: 189 | patterns: 190 | - include: '#ARG-M' 191 | - include: '#TO-ARGS-MM' 192 | ARGS-MMS: 193 | patterns: 194 | - include: '#ARG-M' 195 | - include: '#TO-ARGS-MS' 196 | ARGS-MSM: 197 | patterns: 198 | - include: '#ARG-M' 199 | - include: '#TO-ARGS-SM' 200 | ARGS-MSS: 201 | patterns: 202 | - include: '#ARG-M' 203 | - include: '#TO-ARGS-SS' 204 | ARGS-SSM: 205 | patterns: 206 | - include: '#ARG-S' 207 | - include: '#TO-ARGS-SM' 208 | ARGS-SSS: 209 | patterns: 210 | - include: '#ARG-S' 211 | - include: '#TO-ARGS-SS' 212 | ARGS-MMMM: 213 | patterns: 214 | - include: '#ARG-M' 215 | - include: '#TO-ARGS-MMM' 216 | ARGS-MMMS: 217 | patterns: 218 | - include: '#ARG-M' 219 | - include: '#TO-ARGS-MMS' 220 | ARGS-MMSS: 221 | patterns: 222 | - include: '#ARG-M' 223 | - include: '#TO-ARGS-MSS' 224 | ARGS-MSSM: 225 | patterns: 226 | - include: '#ARG-M' 227 | - include: '#TO-ARGS-SSM' 228 | ARGS-MSSS: 229 | patterns: 230 | - include: '#ARG-M' 231 | - include: '#TO-ARGS-SSS' 232 | ARGS-SSSS: 233 | patterns: 234 | - include: '#ARG-S' 235 | - include: '#TO-ARGS-SSS' 236 | ARGS-MMMMM: 237 | patterns: 238 | - include: '#ARG-M' 239 | - include: '#TO-ARGS-MMMM' 240 | ARGS-MMMSS: 241 | patterns: 242 | - include: '#ARG-M' 243 | - include: '#TO-ARGS-MMSS' 244 | ARGS-MMSSM: 245 | patterns: 246 | - include: '#ARG-M' 247 | - include: '#TO-ARGS-MSSM' 248 | ARGS-MMSSS: 249 | patterns: 250 | - include: '#ARG-M' 251 | - include: '#TO-ARGS-MSSS' 252 | ARGS-MMMMMM: 253 | patterns: 254 | - include: '#ARG-M' 255 | - include: '#TO-ARGS-MMMMM' 256 | ARGS-SMMMSS: 257 | patterns: 258 | - include: '#ARG-S' 259 | - include: '#TO-ARGS-MMMSS' 260 | ARGS-MVARARGS: 261 | # The ARGS-?VARARGS states go to their own TO-ARGS- states, of course 262 | patterns: 263 | - include: '#ARG-M' 264 | - include: '#TO-ARGS-MVARARGS' 265 | ARGS-SVARARGS: 266 | patterns: 267 | - include: '#ARG-S' 268 | - include: '#TO-ARGS-SVARARGS' 269 | ARGS-AS-CASE: 270 | # AS_CASE is the odd one out. Its signature should actually be M(MS)+S?, 271 | # i.e. an M followed by one or more pairs of MS, ending with an optional S, 272 | # but there's no way to highlight that properly without knowing whether a 273 | # given argument is the last one. Therefore, we highlight it as M plus 274 | # SVARARGS. 275 | patterns: 276 | - include: '#ARG-M' 277 | - include: '#TO-ARGS-SVARARGS' 278 | 279 | # Macro lists 280 | # ----------- 281 | # The func- contexts are the ones actually included in the 'm4-pure' context 282 | # below. They match the macro names, and the opening and closing parentheses. 283 | 284 | func-m: 285 | begin: "\\b(AC_(?:CHECK_(?:DECL|FUNC|HEADER)S_ONCE|CHECKING|\ 286 | CONFIG_(?:(?:(?:AUX|LIBOBJ)_|SRC)DIR|MACRO_DIRS?|SUBDIRS)|COPYRIGHT|\ 287 | ERLANG_NEED_ERLC?|F(?:77|C)_LIBRARY_LDFLAGS|FATAL|INCLUDES_DEFAULT|\ 288 | LANG(?:_(?:ASSERT|CONFTEST|FUNC_LINK_TRY|POP|PUSH|SOURCE))?|\ 289 | LIB(?:OBJS|SOURCES?)|MSG_(?:CHECKING|NOTICE|RESULT|WARN)|OPENMP|\ 290 | PREFIX_(?:DEFAULT|PROGRAM)|PREREQ|PROG_(?:CC|CXX|F77|OBJC(?:XX)?)|\ 291 | REPLACE_FUNCS|REQUIRE(?:_AUX_FILE)?|REVISION|SUBST_FILE|WARNING)|\ 292 | AH_(?:BOTTOM|TOP)|\ 293 | AS_(?:DIRNAME|(?:EXECUTABLE|MKDIR)_P|EXIT|SET_STATUS|TR_(?:CPP|SH)|\ 294 | VAR_(?:POPDEF|TEST_SET))|\ 295 | m4_(?:chomp(?:_all)?|cleardivert|debug(?:file|mode)|decr|defn|\ 296 | divert(?:_(?:pop|push))?|errprintn|(?:re_)?escape|exit|expand|flatten|\ 297 | s?include|incr|len|(?:make|mks)temp|n|newline|normalize|\ 298 | pattern_(?:allow|forbid)|popdef|set_(?:delete|list|listc|size)|sign|\ 299 | strip|to(?:lower|upper)|warning|wrap(?:_lifo)?)|\ 300 | AT_(?:BANNER|CAPTURE_FILE|COPYRIGHT|INIT|KEYWORDS|SETUP|TESTED)|\ 301 | AM_(?:GNU_GETTEXT_(?:VERSION|NEED)|EXTRA_RECURSIVE_TARGETS|ICONV|\ 302 | INIT_AUTOMAKE|MAINTAINER_MODE|PROG_UPC|SUBST_NOTMAKE|XGETTEXT_OPTION)|\ 303 | LT_(?:INIT|LANG|PREREQ)|\ 304 | IT_PO_SUBDIR|\ 305 | GOBJECT_INTROSPECTION_(?:CHECK|REQUIRE)|\ 306 | PKG_PREREQ|PKG_(?:NOARCH_)?INSTALLDIR)\\s*(\\()" 307 | <<: &func-common 308 | end: \) 309 | beginCaptures: 310 | '1': {name: keyword.other.macro.m4} 311 | '2': {name: keyword.operator.function-call.m4} 312 | endCaptures: 313 | '0': {name: keyword.operator.function-call.m4} 314 | patterns: 315 | - include: '#ARGS-M' 316 | func-s: 317 | begin: "\\b(AC_CONFIG_COMMANDS_(?:PRE|POST)|AS_(?:ECHO(?:_N)?|UNSET)|\ 318 | m4_(?:esyscmd(?:_s)?|syscmd)|\ 319 | AT_(?:X?FAIL|SKIP)_IF)\\s*(\\()" 320 | <<: *func-common 321 | patterns: 322 | - include: '#ARGS-S' 323 | func-mm: 324 | begin: "\\b(AC_(?:ARG_VAR|BEFORE|CHECK_ALIGNOF|CONFIG_TESTDIR|DIAGNOSE|\ 325 | ERLANG_(?:PATH_ERLC?|SUBST_INSTALL_LIB_SUBDIR)|F(?:77|C)_FUNC|\ 326 | LANG_(?:CALL|PROGRAM)|MSG_(?:ERROR|FAILURE)|PROG_FC)|\ 327 | AH_(?:TEMPLATE|VERBATIM)|\ 328 | AU_ALIAS|\ 329 | AS_(?:BOX|ESCAPE|TMPDIR|VAR_(?:APPEND|COPY|PUSHDEF))|\ 330 | m4_(?:append_uniq_w|apply|assert|change(?:com|quote)|(?:list)?cmp|\ 331 | (?:copy|rename)(?:_force)?|default(?:_nblank)?(?:_quoted)?|\ 332 | define(?:_default)?|defun|divert_(?:once|text)|fatal|index|map(?:all)?|\ 333 | pushdef|set_(?:contents|difference|dump|intersection|map|union)|split|\ 334 | stack_foreach(?:_lifo)?|text_box|version_compare|warn)|\ 335 | AT_DATA|\ 336 | AM_MISSING_PROG|\ 337 | GTK_DOC_CHECK|\ 338 | IT_PROG_INTLTOOL)\\s*(\\()" 339 | <<: *func-common 340 | patterns: 341 | - include: '#ARGS-MM' 342 | func-ms: 343 | begin: "\\b(AC_(?:CACHE_VAL|DEFUN(?:_ONCE)?|SUBST)|\ 344 | AS_(?:INIT_GENERATED|VAR_(?:ARITH|SET))|\ 345 | AM_CONDITIONAL)\\s*(\\()" 346 | <<: *func-common 347 | patterns: 348 | - include: '#ARGS-MS' 349 | func-ss: 350 | begin: "\\b(AC_(?:F(?:77|C)_(?:DUMMY_MAIN|IMPLICIT_NONE)|\ 351 | FC_(?:CHECK_BOUNDS|(?:FREE|FIXED)FORM|\ 352 | MODULE_(?:OUTPUT_)?FLAG|PP_DEFINE)))\\s*(\\()" 353 | <<: *func-common 354 | patterns: 355 | - include: '#ARGS-SS' 356 | func-mmm: 357 | begin: "\\b(AC_(?:CHECK_SIZEOF|DEFINE(?:_UNQUOTED)?)|\ 358 | AS_SET_CATFILE|\ 359 | m4_(?:append|bpatsubst|bregexp|eval|ifn?blank|ifn?def|ifset|ifvaln?|\ 360 | map(?:all)?_sep|set_(?:empty|foreach)|substr|translit|version-prereq)|\ 361 | AM_GNU_GETTEXT)\\s*(\\()" 362 | <<: *func-common 363 | patterns: 364 | - include: '#ARGS-MMM' 365 | func-mms: 366 | begin: \b(AC_CACHE_CHECK|m4_foreach(?:_w)?)\s*(\() 367 | <<: *func-common 368 | patterns: 369 | - include: '#ARGS-MMS' 370 | func-msm: 371 | begin: \b(AU_DEFUN)\s*(\() 372 | <<: *func-common 373 | patterns: 374 | - include: '#ARGS-MSM' 375 | func-mss: 376 | begin: "\\b(AC_(?:CHECK_(?:FILE|FUNC)(?:S)?|\ 377 | (?:COMPILE|LINK|PREPROC)_IFELSE|CONFIG_(?:COMMANDS|FILES|HEADERS|LINKS)|\ 378 | ERLANG_CHECK_LIB|FC_(?:LINE_LENGTH|(?:PP_)?SRCEXT))|\ 379 | AS_VAR_SET_IF|\ 380 | AM_(?:COND_IF|PATH_PYTHON|PROG_VALAC)|\ 381 | PKG_CHECK_EXISTS)\\s*(\\()" 382 | <<: *func-common 383 | patterns: 384 | - include: '#ARGS-MSS' 385 | func-mmmm: 386 | begin: "\\b(AC_(?:CHECK_(?:PROGS|(?:TARGET_)?TOOLS?)|\ 387 | PATH_(?:PROGS?|(?:TARGET_)?TOOL))|\ 388 | AS_HELP_STRING|\ 389 | m4_(?:map_args_w|set_(?:add|contains|map_sep|remove)|\ 390 | stack_foreach_sep(?:_lifo)?|text|wrap))\\s*(\\()" 391 | <<: *func-common 392 | patterns: 393 | - include: '#ARGS-MMMM' 394 | func-mmms: 395 | begin: \b(AC_COMPUTE_INT)\s*(\() 396 | <<: *func-common 397 | patterns: 398 | - include: '#ARGS-MMMS' 399 | func-mmss: 400 | begin: "\\b(AC_(?:ARG_(?:ENABLE|WITH)|EGREP_(?:CPP|HEADER))|\ 401 | AS_VAR_IF|\ 402 | AT_ARG_OPTION(?:_ARG)?|\ 403 | PKG_CHECK_MODULES(?:_STATIC)?)\\s*(\\()" 404 | <<: *func-common 405 | patterns: 406 | - include: '#ARGS-MMSS' 407 | func-mssm: 408 | begin: \b(AC_CHECK_(?:DECL|HEADER|MEMBER|TYPE)(?:S)?)\s*(\() 409 | <<: *func-common 410 | patterns: 411 | - include: '#ARGS-MSSM' 412 | func-msss: 413 | begin: \b(AC_RUN_IFELSE)\s*(\() 414 | <<: *func-common 415 | patterns: 416 | - include: '#ARGS-MSSS' 417 | func-ssss: 418 | begin: \b(AC_C_BIGENDIAN|AS_LITERAL_(?:WORD_)?IF)\s*(\() 419 | <<: *func-common 420 | patterns: 421 | - include: '#ARGS-SSSS' 422 | func-mmmmm: 423 | begin: \b(m4_(?:append_uniq|for)|AC_INIT)\s*(\() 424 | <<: *func-common 425 | patterns: 426 | - include: '#ARGS-MMMMM' 427 | func-mmmss: 428 | begin: \b(AT_CHECK_EUNIT|PKG_CHECK_VAR)\s*(\() 429 | <<: *func-common 430 | patterns: 431 | - include: '#ARGS-MMMSS' 432 | func-mmssm: 433 | begin: \b(AC_(?:CHECK_LIB|SEARCH_LIBS|PATH_PROGS_FEATURE_CHECK))\s*(\() 434 | <<: *func-common 435 | patterns: 436 | - include: '#ARGS-MMSSM' 437 | func-mmsss: 438 | begin: \b(AS_VERSION_COMPARE)\s*(\() 439 | <<: *func-common 440 | patterns: 441 | - include: '#ARGS-MMSSS' 442 | func-mmmmmm: 443 | begin: \b(AC_CHECK_PROG)\s*(\() 444 | <<: *func-common 445 | patterns: 446 | - include: '#ARGS-MMMMMM' 447 | func-smmmss: 448 | begin: \b(AT_CHECK(?:_UNQUOTED)?)\s*(\() 449 | <<: *func-common 450 | patterns: 451 | - include: '#ARGS-SMMMSS' 452 | func-mvarargs: 453 | begin: "\\b(m4_(?:argn|bmatch|bpatsubsts|car|case|cdr|builtin|combine|cond|\ 454 | count|curry|do|dquote(?:_elt)?|dumpdefs?|echo|errprint|format|if|ignore|\ 455 | indir|join(?:all)?|makelist|map_args(?:_(?:pair|sep))?|max|min|\ 456 | (?:un)?quote|reverse|set_add_all|shift(?:2|3|n)?|trace(?:off|on)|\ 457 | undefine|undivert))\\s*(\\()" 458 | <<: *func-common 459 | patterns: 460 | - include: '#ARGS-MVARARGS' 461 | func-svarargs: 462 | begin: \b(AS_IF)\s*(\() 463 | <<: *func-common 464 | patterns: 465 | - include: '#ARGS-SVARARGS' 466 | func-as-case: 467 | begin: \b(AS_CASE)\s*(\() 468 | end: \) 469 | beginCaptures: 470 | '1': 471 | name: keyword.other.macro.m4sh 472 | '2': 473 | name: keyword.operator.function-call.m4 474 | endCaptures: 475 | '0': 476 | name: keyword.operator.function-call.m4 477 | patterns: 478 | - include: '#ARGS-AS-CASE' 479 | 480 | # Now come the macros that don't take any arguments. They are not called 481 | # with empty parentheses, just with the macro name: e.g. AC_OUTPUT. 482 | # 483 | # We also have contexts for macros that do take arguments, but can also be 484 | # called without any; for example, AC_PROG_CC takes a list of compiler names 485 | # to search for, but is mostly just called without it. Since the 'func-m' 486 | # context would only match AC_PROG_CC(), we repeat this kind of macros in 487 | # '-optargs' contexts. 488 | 489 | m4-macros-noargs: 490 | name: keyword.other.macro.m4 491 | match: \bm4_(divnum|init|location|sysval) 492 | patterns: [] 493 | m4-macros-optargs: 494 | name: keyword.other.macro.m4 495 | match: "\\bm4_(change(com|quote)|debug(file|mode)|divert_pop|newline|\ 496 | trace(on|off))" 497 | patterns: [] 498 | 499 | ac-macros-noargs: 500 | name: keyword.other.macro.autoconf 501 | match: "\\bAC_(ARG_PROGRAM|AUTOCONF_VERSION|C_BACKSLASH_A|\ 502 | CACHE_(LOAD|SAVE)|CANONICAL_(BUILD|HOST|TARGET)|CHECK_HEADER_STDBOOL|\ 503 | C_(CHAR_UNSIGNED|CONST|FLEXIBLE_ARRAY_MEMBER|INLINE|PROTOTYPES|RESTRICT|\ 504 | STRINGIZE|TYPEOF|VARARRAYS|VOLATILE)|DISABLE_OPTION_CHECKING|\ 505 | ERLANG_SUBST_(((INSTALL_)?LIB|ROOT)_DIR|ERTS_VER)|F77_(MAIN|WRAPPERS)|\ 506 | FC_(MAIN|MODULE_EXTENSION|WRAPPERS)|FUNC_(ALLOCA|CHOWN|CLOSEDIR_VOID|\ 507 | FNMATCH(_GNU)?|FORK|FSEEKO|GETGROUPS|GETLOADAVG|GETMNTENT|GETPGRP|LSTAT|\ 508 | MALLOC|MBRTOWC|MEMCMP|MMAP|OBSTACK|REALLOC|SELECT_ARGTYPES|SETPGRP|STAT|\ 509 | STRCOLL|STRERROR_R|STRFTIME|STRNLEN|STRTOLD|UTIME_NULL|VPRINTF)|\ 510 | HEADER_(ASSERT|DIRENT|MAJOR|RESOLV|STAT|STDBOOL|STDC|SYS_WAIT|TIME|\ 511 | TIOCGWINSZ)|LANG_(DEFINES_PROVIDED|WERROR)|OUTPUT|\ 512 | PACKAGE_(BUGREPORT|NAME|STRING|TARNAME|URL|VERSION)|PATH_X(TRA)?|\ 513 | PRESERVE_HELP_ORDER|PROG_(AWK|CC(_C(89|99|_O))|CC_STDC|CPP(_WERROR)?|\ 514 | CXX(CPP|_C_O)?|EGREP|F77_C_O|FC_C_O|FGREP|GCC_TRADITIONAL|GREP|INSTALL|\ 515 | LEX|LN_S|MAKE_SET|MKDIR_P|OBJ(CXX)?CPP|RANLIB|SED|YACC)|REPLACE_FNMATCH|\ 516 | REQUIRE_CPP|STRUCT_(DIRENT_D_(INO|TYPE)|ST_BLOCKS|TIMEZONE|TM)|\ 517 | SYS_(INTERPRETER|LARGEFILE|LONG_FILE_NAMES|POSIX_TERMIOS)|\ 518 | TYPE_(GETGROUPS|INT(16_T|32_T|64_T|8_T)|INTMAX_T|INTPTR_T|\ 519 | LONG_DOUBLE(_WIDER)?|LONG_LONG_INT|MBSTATE_T|MODE_T|OFF_T|PID_T|SIGNAL|\ 520 | SIZE_T|SSIZE_T|UID_T|UINT(16_T|32_T|64_T|8_T)|UINTMAX_T|UINTPTR_T|\ 521 | UNSIGNED_LONG_LONG_INT)|USE_SYSTEM_EXTENSIONS)" 522 | patterns: [] 523 | ac-macros-noargs2: 524 | name: keyword.other.macro.autoconf 525 | match: "\\bA(H_HEADER|S_(BOURNE_COMPATIBLE|INIT|LINENO_PREPARE|ME_PREPARE|\ 526 | MESSAGE_FD|MESSAGE_LOG_FD|ORIGINAL_STDIN_FD|SHELL_SANITIZE)|\ 527 | T_(CLEANUP|COLOR_TESTS))" 528 | patterns: [] 529 | ac-macros-optargs: 530 | name: keyword.other.macro.autoconf 531 | match: "\\bAC_(C_BIGENDIAN|ERLANG_(PATH|NEED)_ERLC?|F(77|C)_DUMMY_MAIN|\ 532 | FC_((FIXED|FREE)FORM|LINE_LENGTH)|INCLUDES_DEFAULT|LANG_POP|\ 533 | PROG_(CC|CXX|OBJC(XX)?|F(77|C)))" 534 | patterns: [] 535 | ac-macros-optargs2: 536 | name: keyword.other.macro.autoconf 537 | match: \bA(S_EXIT|T_INIT) 538 | patterns: [] 539 | ac-macros-obsolete: 540 | # Deprecated macros are highlighted as errors. We don't bother highlighting 541 | # their arguments properly, because they're deprecated anyway! 542 | name: invalid.deprecated.macro.autoconf 543 | match: "\\bAC_(AIX|ALLOCA|ARG_ARRAY|CANONICAL_SYSTEM|C_(CROSS|LONG_DOUBLE)|\ 544 | CHAR_UNSIGNED|CHECKING|COMPILE_CHECK|CONFIG_HEADER|CONST|CROSS_CHECK|\ 545 | CYGWIN|DECL_(SYS_SIGLIST|YYTEXT)|DIR_HEADER|\ 546 | DISABLE_(FAST_INSTALL|SHARED|STATIC)|DYNIX_SEQ|ENABLE(_(SHARED|STATIC))?|\ 547 | EMXOS2|ERROR|EXEEXT|FIND_X(TRA)?|FOREACH|FUNC_(CHECK|ERROR_AT_LINE|\ 548 | LSTAT_FOLLOWS_SLASHED_SYMLINK|MKTIME|SETVBUF_REVERSED|STRTOD|WAIT3)|\ 549 | GCC_TRADITIONAL|GETGROUPS_T|GETLOADAVG|GNU_SOURCE|\ 550 | HAVE_(FUNCS|HEADERS|LIBRARY|POUNDBANG)|HEADER_(CHECK|EGREP)|HELP_STRING|\ 551 | INLINE|INT_16_BITS|IRIX_SUN|LANG_(CPLUSPLUS|C|FORTRAN77|RESTORE|SAVE)|\ 552 | LIBTOOL_(DLOPEN|WIN32_DLL)|LINK_FILES|LN_S|\ 553 | LONG_(64_BITS|DOUBLE|FILE_NAMES)|MAJOR_HEADER|MEMORY_H|MINGW32|MINIX|\ 554 | MINUS_C_MINUS_O|MMAP|MODE_T|OBJEXT|OBSOLETE|OFF_T|OUTPUT_COMMANDS|PID_T|\ 555 | PREFIX|PROG_(INTL|LIB)TOOL|PROGRAM_(CHECK|EGREP|PATH)|\ 556 | PROGRAMS_(CHECK|PATH)|REMOTE_TAPE|RESTARTABLE_SYSCALLS|RETSIGTYPE|RSH|\ 557 | SCO_INTL|SET_MAKE|SETVBUF_REVERSED|SIZEOF_TYPE|SIZE_T|STAT_MACROS_BROKEN|\ 558 | ST_(BLKSIZE|BLOCKS|RDEV)|STDC_HEADERS|STRCOLL|\ 559 | SYS_(RESTARTABLE_SYSCALLS|SIGLIST_DECLARED)|TEST_(CPP|PROGRAM)|\ 560 | TIME_WITH_SYS_TIME|TIMEZONE|TRY_(COMPILE|CPP|LINK_FUNC|LINK|RUN)|UID_T|\ 561 | UNISTD_H|USG|UTIME_NULL|VALIDATE_CACHED_SYSTEM_TUPLE|VERBOSE|VFORK|\ 562 | VPRINTF|WAIT3|WARN|WITH|WORDS_BIGENDIAN|XENIX_DIR|YYTEXT_POINTER)" 563 | patterns: [] 564 | 565 | am-macros-noargs: 566 | name: keyword.other.macro.automake 567 | match: "\\bAM_(ENABLE_MULTILIB|GCONF_SOURCE_2|GLIB_GNU_GETTEXT|\ 568 | GNU_GETTEXT_INTL_SUBDIR|PATH_LISPDIR|PO_SUBDIRS|PROG_(AR|AS|GCJ|LEX)|\ 569 | SILENT_RULES|WITH_DMALLOC)" 570 | patterns: [] 571 | am-macros-optargs: 572 | name: keyword.other.macro.automake 573 | match: \bAM_(INIT_AUTOMAKE|MAINTAINER_MODE|PATH_PYTHON|PROG_(UPC|VALAC)) 574 | patterns: [] 575 | am-macros-private: 576 | name: invalid.illegal.private.automake 577 | match: "\\bAM_(DEP_TRACK|MAKE_INCLUDE|OUTPUT_DEPENDENCY_COMMANDS|\ 578 | PROG_INSTALL_STRIP|SANITY_CHECK|SET_DEPDIR)" 579 | patterns: [] 580 | am-macros-obsolete: 581 | name: invalid.deprecated.macro.automake 582 | match: "\\bAM_(C_PROTOTYPES|CONFIG_HEADER|\ 583 | HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL|PATH_CHECK|\ 584 | PROG_(CC_(STDC|C_O)|LIBTOOL|MKDIR_P)|SYS_POSIX_TERMIOS|WITH_REGEX|\ 585 | (DIS|EN)ABLE_(STATIC|SHARED))" 586 | patterns: [] 587 | 588 | misc-macros-noargs: 589 | name: keyword.other.macro.autotools 590 | match: "\\b(__(file|o?line)__|LT_(CMD_MAX_LEN|FUNC_DLSYM_USCORE|\ 591 | LIB_(M|DLLOAD)|OUTPUT|PATH_(LD|NM)|SYS_(DLOPEN_(SELF|DEPLIBS)|\ 592 | MODULE_(EXT|PATH)|DLSEARCH_PATH|SYMBOL_USCORE)))" 593 | patterns: [] 594 | misc-macros-optargs: 595 | name: keyword.other.macro.autotools 596 | match: \b(LT_INIT|PKG_PROG_PKG_CONFIG) 597 | patterns: [] 598 | 599 | m4-pure: 600 | # This context highlights pure M4 code. 601 | patterns: 602 | - include: '#m4-comment' 603 | - include: '#quadrigraph' 604 | - include: '#func-m' 605 | - include: '#func-s' 606 | - include: '#func-mm' 607 | - include: '#func-ms' 608 | - include: '#func-ss' 609 | - include: '#func-mmm' 610 | - include: '#func-mms' 611 | - include: '#func-msm' 612 | - include: '#func-mss' 613 | - include: '#func-mmmm' 614 | - include: '#func-mmms' 615 | - include: '#func-mmss' 616 | - include: '#func-mssm' 617 | - include: '#func-msss' 618 | - include: '#func-ssss' 619 | - include: '#func-mmmmm' 620 | - include: '#func-mmmss' 621 | - include: '#func-mmssm' 622 | - include: '#func-mmsss' 623 | - include: '#func-mmmmmm' 624 | - include: '#func-smmmss' 625 | - include: '#func-mvarargs' 626 | - include: '#func-svarargs' 627 | - include: '#func-as-case' 628 | - include: '#m4-macros-noargs' 629 | - include: '#m4-macros-optargs' 630 | - include: '#ac-macros-noargs' 631 | - include: '#ac-macros-noargs2' 632 | - include: '#ac-macros-optargs' 633 | - include: '#ac-macros-optargs2' 634 | - include: '#ac-macros-obsolete' 635 | - include: '#am-macros-noargs' 636 | - include: '#am-macros-optargs' 637 | - include: '#am-macros-obsolete' 638 | - include: '#am-macros-private' 639 | - include: '#misc-macros-noargs' 640 | - include: '#misc-macros-optargs' 641 | - include: '#m4-function-call' 642 | - include: '#m4-quoted' 643 | - name: invalid.illegal.syntax-error 644 | match: \] 645 | 646 | # Adaptations of built-in shell syntax definitions 647 | # ------------------------------------------------ 648 | 649 | shell-interpolation: 650 | # This is a copy of some of the patterns from the #interpolation pattern 651 | # from source.shell so that anywhere shell includes $self, M4 code is also 652 | # legal. 653 | patterns: 654 | - name: string.interpolated.backtick.shell 655 | begin: '`' 656 | end: '`' 657 | beginCaptures: 658 | '0': {name: punctuation.definition.string.begin.shell} 659 | endCaptures: 660 | '0': {name: punctuation.definition.string.end.shell} 661 | patterns: 662 | - name: constant.character.escape.shell 663 | match: \\[`\\$] 664 | - include: $self 665 | - name: string.interpolated.dollar.shell 666 | begin: \$\( 667 | end: \) 668 | beginCaptures: 669 | '0': {name: punctuation.definition.string.begin.shell} 670 | endCaptures: 671 | '0': {name: punctuation.definition.string.end.shell} 672 | patterns: 673 | - include: $self 674 | shell-compound-command: 675 | # This is a copy of some of the patterns from #compound-command from 676 | # source.shell, so that anywhere shell includes $self, M4 code is also 677 | # legal. 678 | patterns: 679 | - name: meta.scope.logical-expression.shell 680 | begin: (\[{2}) 681 | end: (\]{2}) 682 | captures: 683 | '1': {name: punctuation.definition.logical-expression.shell} 684 | patterns: 685 | - include: source.shell.logical-expression 686 | - include: $self 687 | - name: meta.scope.subshell.shell 688 | begin: (\() 689 | end: (\)) 690 | captures: 691 | '1': {name: punctuation.definition.subshell.shell} 692 | patterns: 693 | - include: $self 694 | - name: meta.scope.group.shell 695 | begin: (?<=\s|^)(\{)(?=\s|$) 696 | end: (?<=^|;)\s*(\}) 697 | captures: 698 | '1': {name: punctuation.definition.group.shell} 699 | patterns: 700 | - include: $self 701 | shell-pathname: 702 | # This is a copy of one of the patterns from #pathname from source.shell, so 703 | # that anywhere shell includes $self, M4 code is also legal. 704 | patterns: 705 | - name: meta.structure.extglob.shell 706 | begin: ([?*+@!])(\() 707 | end: (\)) 708 | beginCaptures: 709 | '1': {name: keyword.operator.extglob.shell} 710 | '2': {name: punctuation.definition.extglob.shell} 711 | endCaptures: 712 | '1': {name: punctuation.definition.extglob.shell} 713 | patterns: 714 | - include: $self 715 | shell-string: 716 | # This is a copy of #string from source.shell so that we can include our 717 | # doctored #shell-interpolation before source.shell.interpolation. 718 | patterns: 719 | - name: string.quoted.double.shell 720 | begin: \$?" 721 | end: '"' 722 | beginCaptures: 723 | '0': {name: punctuation.definition.string.begin.shell} 724 | endCaptures: 725 | '0': {name: punctuation.definition.string.end.shell} 726 | patterns: 727 | - name: constant.character.escape.shell 728 | match: \\[\$`"\\\n] 729 | - include: source.shell.variable 730 | - include: '#shell-interpolation' 731 | - include: source.shell.interpolation 732 | shell-loop: 733 | # This is a copy of the #loop pattern from source.shell so that anywhere 734 | # shell includes $self, M4 code is also legal. 735 | patterns: 736 | - name: meta.scope.for-loop.shell 737 | begin: \b(for)\s+(?=\({2}) 738 | end: \b(done)\b 739 | captures: 740 | '1': {name: keyword.control.shell} 741 | patterns: 742 | - include: $self 743 | - name: meta.scope.for-in-loop.shell 744 | begin: \b(for)\s+((?:[^\s\\]|\\.)+)\b 745 | end: \b(done)\b 746 | beginCaptures: 747 | '1': {name: keyword.control.shell} 748 | '2': {name: variable.other.loop.shell} 749 | endCaptures: 750 | '1': {name: keyword.control.shell} 751 | patterns: 752 | - include: $self 753 | - name: meta.scope.while-loop.shell 754 | begin: \b(while|until)\b 755 | end: \b(done)\b 756 | captures: 757 | '1': {name: keyword.control.shell} 758 | patterns: 759 | - include: $self 760 | - name: meta.scope.select-block.shell 761 | begin: \b(select)\s+((?:[^\s\\]|\\.)+)\b 762 | end: \b(done)\b 763 | beginCaptures: 764 | '1': {name: keyword.control.shell} 765 | '2': {name: variable.other.loop.shell} 766 | endCaptures: 767 | '1': {name: keyword.control.shell} 768 | patterns: 769 | - include: $self 770 | - name: meta.scope.case-block.shell 771 | begin: \b(case)\b 772 | end: \b(esac)\b 773 | captures: 774 | '1': {name: keyword.control.shell} 775 | patterns: 776 | - name: meta.scope.case-body.shell 777 | begin: \b(?:in)\b 778 | end: (?=\b(?:esac)\b) 779 | beginCaptures: 780 | '1': {name: keyword.control.shell} 781 | patterns: 782 | - include: source.shell.comment 783 | - include: '#shell-case-clause' 784 | - include: source.shell.case-clause 785 | - include: $self 786 | - include: $self 787 | - name: meta.scope.if-block.shell 788 | begin: \b(if)\b 789 | end: \b(fi)\b 790 | captures: 791 | '1': {name: keyword.control.shell} 792 | patterns: 793 | - include: $self 794 | shell-function-definition: 795 | # This is a copy of the #function-definition pattern from source.shell so 796 | # that anywhere shell includes $self, M4 code is also legal. 797 | patterns: 798 | - name: meta.function.shell 799 | begin: \b(function)\s+([^\s\\]+)(?:\s*(\(\)))? 800 | end: ;|&|$ 801 | beginCaptures: 802 | '1': {name: storage.type.function.shell} 803 | '2': {name: entity.name.function.shell} 804 | '3': {name: punctuation.definition.arguments.shell} 805 | endCaptures: 806 | '0': {name: punctuation.definition.function.shell} 807 | patterns: 808 | - include: $self 809 | - name: meta.function.shell 810 | begin: \b([^\s\\=]+)\s*(\(\)) 811 | end: ;|&|$ 812 | beginCaptures: 813 | '1': {name: entity.name.function.shell} 814 | '2': {name: punctuation.definition.arguments.shell} 815 | endCaptures: 816 | '0': {name: punctuation.definition.function.shell} 817 | patterns: 818 | - include: $self 819 | shell-case-clause: 820 | # This is a copy of the #case-clause pattern from source.shell so that 821 | # anywhere shell includes $self, M4 code is also legal.' 822 | patterns: 823 | - name: meta.scope.case-clause.shell 824 | begin: (?=\S) 825 | end: ;; 826 | endCaptures: 827 | '0': {name: punctuation.terminator.case-clause.shell} 828 | patterns: 829 | - name: meta.scope.case-pattern.shell 830 | begin: (\(|(?=\S)) 831 | captures: 832 | '0': {name: punctuation.definition.case-pattern.shell} 833 | end: \) 834 | patterns: 835 | - name: punctuation.separator.pipe-sign.shell 836 | match: \| 837 | - include: '#shell-string' 838 | - include: source.shell.string 839 | - include: source.shell.variable 840 | - include: '#shell-interpolation' 841 | - include: source.shell.interpolation 842 | - include: '#shell-pathname' 843 | - include: source.shell.pathname 844 | - name: meta.scope.case-clause-body.shell 845 | begin: (?<=\)) 846 | end: (?=;;) 847 | patterns: 848 | - include: $self 849 | shell-redirection: 850 | # This is a copy of one of the patterns from the #redirection pattern from 851 | # source.shell so that anywhere shell includes $self, M4 code is also legal. 852 | patterns: 853 | - name: string.interpolated.process-substitution.shell 854 | begin: '[><]\(' 855 | end: \) 856 | beginCaptures: 857 | '0': {name: punctuation.definition.string.begin.shell} 858 | endCaptures: 859 | '0': {name: punctuation.definition.string.end.shell} 860 | patterns: 861 | - include: $self 862 | 863 | patterns: 864 | - include: '#m4-quoted-shell' 865 | - include: '#m4-pure' 866 | - include: '#shell-interpolation' 867 | - include: '#shell-compound-command' 868 | - include: '#shell-pathname' 869 | - include: '#shell-string' 870 | - include: '#shell-loop' 871 | - include: '#shell-function-definition' 872 | - include: '#shell-redirection' 873 | - include: source.shell 874 | - name: invalid.illegal.syntax-error 875 | match: \) 876 | -------------------------------------------------------------------------------- /Autoconf.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | uuid 6 | cd50bfc0-2ccb-47b9-a157-98b00816d909 7 | name 8 | Autoconf M4 9 | scopeName 10 | source.m4 11 | fileTypes 12 | 13 | configure.ac 14 | configure.in 15 | m4 16 | 17 | repository 18 | 19 | m4-quoted 20 | 21 | begin 22 | \[ 23 | end 24 | \] 25 | patterns 26 | 27 | 28 | include 29 | #m4-pure 30 | 31 | 32 | 33 | m4-quoted-shell 34 | 35 | begin 36 | \[ 37 | end 38 | \] 39 | patterns 40 | 41 | 42 | include 43 | $self 44 | 45 | 46 | 47 | m4-function-call 48 | 49 | begin 50 | (?<=[\w\d_])\((?!\)) 51 | end 52 | \) 53 | patterns 54 | 55 | 56 | include 57 | #ARG-M 58 | 59 | 60 | begin 61 | , 62 | end 63 | (?=\)) 64 | patterns 65 | 66 | 67 | include 68 | #ARG-M 69 | 70 | 71 | 72 | 73 | 74 | m4-comment 75 | 76 | name 77 | comment.line.dnl.m4 78 | begin 79 | dnl 80 | end 81 | $ 82 | patterns 83 | 84 | 85 | quadrigraph 86 | 87 | name 88 | constant.character.escape.quadrigraph.m4 89 | match 90 | @(<:|:>)@ 91 | patterns 92 | 93 | 94 | NO-ARGS 95 | 96 | name 97 | invalid.illegal.supernumerary-argument.m4 98 | begin 99 | , 100 | end 101 | (?=\)) 102 | patterns 103 | 104 | 105 | ARG-M 106 | 107 | patterns 108 | 109 | 110 | include 111 | #m4-pure 112 | 113 | 114 | 115 | ARG-S 116 | 117 | patterns 118 | 119 | 120 | include 121 | #m4-quoted-shell 122 | 123 | 124 | include 125 | #m4-pure 126 | 127 | 128 | 129 | TO-ARGS-M 130 | 131 | begin 132 | , 133 | end 134 | (?=\)) 135 | patterns 136 | 137 | 138 | include 139 | #ARGS-M 140 | 141 | 142 | 143 | TO-ARGS-S 144 | 145 | begin 146 | , 147 | end 148 | (?=\)) 149 | patterns 150 | 151 | 152 | include 153 | #ARGS-S 154 | 155 | 156 | 157 | TO-ARGS-MM 158 | 159 | begin 160 | , 161 | end 162 | (?=\)) 163 | patterns 164 | 165 | 166 | include 167 | #ARGS-MM 168 | 169 | 170 | 171 | TO-ARGS-MS 172 | 173 | begin 174 | , 175 | end 176 | (?=\)) 177 | patterns 178 | 179 | 180 | include 181 | #ARGS-MS 182 | 183 | 184 | 185 | TO-ARGS-SM 186 | 187 | begin 188 | , 189 | end 190 | (?=\)) 191 | patterns 192 | 193 | 194 | include 195 | #ARGS-SM 196 | 197 | 198 | 199 | TO-ARGS-SS 200 | 201 | begin 202 | , 203 | end 204 | (?=\)) 205 | patterns 206 | 207 | 208 | include 209 | #ARGS-SS 210 | 211 | 212 | 213 | TO-ARGS-MMM 214 | 215 | begin 216 | , 217 | end 218 | (?=\)) 219 | patterns 220 | 221 | 222 | include 223 | #ARGS-MMM 224 | 225 | 226 | 227 | TO-ARGS-MMS 228 | 229 | begin 230 | , 231 | end 232 | (?=\)) 233 | patterns 234 | 235 | 236 | include 237 | #ARGS-MMS 238 | 239 | 240 | 241 | TO-ARGS-MSS 242 | 243 | begin 244 | , 245 | end 246 | (?=\)) 247 | patterns 248 | 249 | 250 | include 251 | #ARGS-MSS 252 | 253 | 254 | 255 | TO-ARGS-SSM 256 | 257 | begin 258 | , 259 | end 260 | (?=\)) 261 | patterns 262 | 263 | 264 | include 265 | #ARGS-SSM 266 | 267 | 268 | 269 | TO-ARGS-SSS 270 | 271 | begin 272 | , 273 | end 274 | (?=\)) 275 | patterns 276 | 277 | 278 | include 279 | #ARGS-SSS 280 | 281 | 282 | 283 | TO-ARGS-MMMM 284 | 285 | begin 286 | , 287 | end 288 | (?=\)) 289 | patterns 290 | 291 | 292 | include 293 | #ARGS-MMMM 294 | 295 | 296 | 297 | TO-ARGS-MMSS 298 | 299 | begin 300 | , 301 | end 302 | (?=\)) 303 | patterns 304 | 305 | 306 | include 307 | #ARGS-MMSS 308 | 309 | 310 | 311 | TO-ARGS-MSSM 312 | 313 | begin 314 | , 315 | end 316 | (?=\)) 317 | patterns 318 | 319 | 320 | include 321 | #ARGS-MSSM 322 | 323 | 324 | 325 | TO-ARGS-MSSS 326 | 327 | begin 328 | , 329 | end 330 | (?=\)) 331 | patterns 332 | 333 | 334 | include 335 | #ARGS-MSSS 336 | 337 | 338 | 339 | TO-ARGS-MMMMM 340 | 341 | begin 342 | , 343 | end 344 | (?=\)) 345 | patterns 346 | 347 | 348 | include 349 | #ARGS-MMMMM 350 | 351 | 352 | 353 | TO-ARGS-MMMSS 354 | 355 | begin 356 | , 357 | end 358 | (?=\)) 359 | patterns 360 | 361 | 362 | include 363 | #ARGS-MMMSS 364 | 365 | 366 | 367 | TO-ARGS-MVARARGS 368 | 369 | begin 370 | , 371 | end 372 | (?=\)) 373 | patterns 374 | 375 | 376 | include 377 | #ARGS-MVARARGS 378 | 379 | 380 | 381 | TO-ARGS-SVARARGS 382 | 383 | begin 384 | , 385 | end 386 | (?=\)) 387 | patterns 388 | 389 | 390 | include 391 | #ARGS-SVARARGS 392 | 393 | 394 | 395 | ARGS-M 396 | 397 | patterns 398 | 399 | 400 | include 401 | #ARG-M 402 | 403 | 404 | include 405 | #NO-ARGS 406 | 407 | 408 | 409 | ARGS-S 410 | 411 | patterns 412 | 413 | 414 | include 415 | #ARG-S 416 | 417 | 418 | include 419 | #NO-ARGS 420 | 421 | 422 | 423 | ARGS-MM 424 | 425 | patterns 426 | 427 | 428 | include 429 | #ARG-M 430 | 431 | 432 | include 433 | #TO-ARGS-M 434 | 435 | 436 | 437 | ARGS-MS 438 | 439 | patterns 440 | 441 | 442 | include 443 | #ARG-M 444 | 445 | 446 | include 447 | #TO-ARGS-S 448 | 449 | 450 | 451 | ARGS-SM 452 | 453 | patterns 454 | 455 | 456 | include 457 | #ARG-S 458 | 459 | 460 | include 461 | #TO-ARGS-M 462 | 463 | 464 | 465 | ARGS-SS 466 | 467 | patterns 468 | 469 | 470 | include 471 | #ARG-S 472 | 473 | 474 | include 475 | #TO-ARGS-S 476 | 477 | 478 | 479 | ARGS-MMM 480 | 481 | patterns 482 | 483 | 484 | include 485 | #ARG-M 486 | 487 | 488 | include 489 | #TO-ARGS-MM 490 | 491 | 492 | 493 | ARGS-MMS 494 | 495 | patterns 496 | 497 | 498 | include 499 | #ARG-M 500 | 501 | 502 | include 503 | #TO-ARGS-MS 504 | 505 | 506 | 507 | ARGS-MSM 508 | 509 | patterns 510 | 511 | 512 | include 513 | #ARG-M 514 | 515 | 516 | include 517 | #TO-ARGS-SM 518 | 519 | 520 | 521 | ARGS-MSS 522 | 523 | patterns 524 | 525 | 526 | include 527 | #ARG-M 528 | 529 | 530 | include 531 | #TO-ARGS-SS 532 | 533 | 534 | 535 | ARGS-SSM 536 | 537 | patterns 538 | 539 | 540 | include 541 | #ARG-S 542 | 543 | 544 | include 545 | #TO-ARGS-SM 546 | 547 | 548 | 549 | ARGS-SSS 550 | 551 | patterns 552 | 553 | 554 | include 555 | #ARG-S 556 | 557 | 558 | include 559 | #TO-ARGS-SS 560 | 561 | 562 | 563 | ARGS-MMMM 564 | 565 | patterns 566 | 567 | 568 | include 569 | #ARG-M 570 | 571 | 572 | include 573 | #TO-ARGS-MMM 574 | 575 | 576 | 577 | ARGS-MMMS 578 | 579 | patterns 580 | 581 | 582 | include 583 | #ARG-M 584 | 585 | 586 | include 587 | #TO-ARGS-MMS 588 | 589 | 590 | 591 | ARGS-MMSS 592 | 593 | patterns 594 | 595 | 596 | include 597 | #ARG-M 598 | 599 | 600 | include 601 | #TO-ARGS-MSS 602 | 603 | 604 | 605 | ARGS-MSSM 606 | 607 | patterns 608 | 609 | 610 | include 611 | #ARG-M 612 | 613 | 614 | include 615 | #TO-ARGS-SSM 616 | 617 | 618 | 619 | ARGS-MSSS 620 | 621 | patterns 622 | 623 | 624 | include 625 | #ARG-M 626 | 627 | 628 | include 629 | #TO-ARGS-SSS 630 | 631 | 632 | 633 | ARGS-SSSS 634 | 635 | patterns 636 | 637 | 638 | include 639 | #ARG-S 640 | 641 | 642 | include 643 | #TO-ARGS-SSS 644 | 645 | 646 | 647 | ARGS-MMMMM 648 | 649 | patterns 650 | 651 | 652 | include 653 | #ARG-M 654 | 655 | 656 | include 657 | #TO-ARGS-MMMM 658 | 659 | 660 | 661 | ARGS-MMMSS 662 | 663 | patterns 664 | 665 | 666 | include 667 | #ARG-M 668 | 669 | 670 | include 671 | #TO-ARGS-MMSS 672 | 673 | 674 | 675 | ARGS-MMSSM 676 | 677 | patterns 678 | 679 | 680 | include 681 | #ARG-M 682 | 683 | 684 | include 685 | #TO-ARGS-MSSM 686 | 687 | 688 | 689 | ARGS-MMSSS 690 | 691 | patterns 692 | 693 | 694 | include 695 | #ARG-M 696 | 697 | 698 | include 699 | #TO-ARGS-MSSS 700 | 701 | 702 | 703 | ARGS-MMMMMM 704 | 705 | patterns 706 | 707 | 708 | include 709 | #ARG-M 710 | 711 | 712 | include 713 | #TO-ARGS-MMMMM 714 | 715 | 716 | 717 | ARGS-SMMMSS 718 | 719 | patterns 720 | 721 | 722 | include 723 | #ARG-S 724 | 725 | 726 | include 727 | #TO-ARGS-MMMSS 728 | 729 | 730 | 731 | ARGS-MVARARGS 732 | 733 | patterns 734 | 735 | 736 | include 737 | #ARG-M 738 | 739 | 740 | include 741 | #TO-ARGS-MVARARGS 742 | 743 | 744 | 745 | ARGS-SVARARGS 746 | 747 | patterns 748 | 749 | 750 | include 751 | #ARG-S 752 | 753 | 754 | include 755 | #TO-ARGS-SVARARGS 756 | 757 | 758 | 759 | ARGS-AS-CASE 760 | 761 | patterns 762 | 763 | 764 | include 765 | #ARG-M 766 | 767 | 768 | include 769 | #TO-ARGS-SVARARGS 770 | 771 | 772 | 773 | func-m 774 | 775 | begin 776 | \b(AC_(?:CHECK_(?:DECL|FUNC|HEADER)S_ONCE|CHECKING|CONFIG_(?:(?:(?:AUX|LIBOBJ)_|SRC)DIR|MACRO_DIRS?|SUBDIRS)|COPYRIGHT|ERLANG_NEED_ERLC?|F(?:77|C)_LIBRARY_LDFLAGS|FATAL|INCLUDES_DEFAULT|LANG(?:_(?:ASSERT|CONFTEST|FUNC_LINK_TRY|POP|PUSH|SOURCE))?|LIB(?:OBJS|SOURCES?)|MSG_(?:CHECKING|NOTICE|RESULT|WARN)|OPENMP|PREFIX_(?:DEFAULT|PROGRAM)|PREREQ|PROG_(?:CC|CXX|F77|OBJC(?:XX)?)|REPLACE_FUNCS|REQUIRE(?:_AUX_FILE)?|REVISION|SUBST_FILE|WARNING)|AH_(?:BOTTOM|TOP)|AS_(?:DIRNAME|(?:EXECUTABLE|MKDIR)_P|EXIT|SET_STATUS|TR_(?:CPP|SH)|VAR_(?:POPDEF|TEST_SET))|m4_(?:chomp(?:_all)?|cleardivert|debug(?:file|mode)|decr|defn|divert(?:_(?:pop|push))?|errprintn|(?:re_)?escape|exit|expand|flatten|s?include|incr|len|(?:make|mks)temp|n|newline|normalize|pattern_(?:allow|forbid)|popdef|set_(?:delete|list|listc|size)|sign|strip|to(?:lower|upper)|warning|wrap(?:_lifo)?)|AT_(?:BANNER|CAPTURE_FILE|COPYRIGHT|INIT|KEYWORDS|SETUP|TESTED)|AM_(?:GNU_GETTEXT_(?:VERSION|NEED)|EXTRA_RECURSIVE_TARGETS|ICONV|INIT_AUTOMAKE|MAINTAINER_MODE|PROG_UPC|SUBST_NOTMAKE|XGETTEXT_OPTION)|LT_(?:INIT|LANG|PREREQ)|IT_PO_SUBDIR|GOBJECT_INTROSPECTION_(?:CHECK|REQUIRE)|PKG_PREREQ|PKG_(?:NOARCH_)?INSTALLDIR)\s*(\() 777 | end 778 | \) 779 | beginCaptures 780 | 781 | 1 782 | 783 | name 784 | keyword.other.macro.m4 785 | 786 | 2 787 | 788 | name 789 | keyword.operator.function-call.m4 790 | 791 | 792 | endCaptures 793 | 794 | 0 795 | 796 | name 797 | keyword.operator.function-call.m4 798 | 799 | 800 | patterns 801 | 802 | 803 | include 804 | #ARGS-M 805 | 806 | 807 | 808 | func-s 809 | 810 | begin 811 | \b(AC_CONFIG_COMMANDS_(?:PRE|POST)|AS_(?:ECHO(?:_N)?|UNSET)|m4_(?:esyscmd(?:_s)?|syscmd)|AT_(?:X?FAIL|SKIP)_IF)\s*(\() 812 | end 813 | \) 814 | beginCaptures 815 | 816 | 1 817 | 818 | name 819 | keyword.other.macro.m4 820 | 821 | 2 822 | 823 | name 824 | keyword.operator.function-call.m4 825 | 826 | 827 | endCaptures 828 | 829 | 0 830 | 831 | name 832 | keyword.operator.function-call.m4 833 | 834 | 835 | patterns 836 | 837 | 838 | include 839 | #ARGS-S 840 | 841 | 842 | 843 | func-mm 844 | 845 | begin 846 | \b(AC_(?:ARG_VAR|BEFORE|CHECK_ALIGNOF|CONFIG_TESTDIR|DIAGNOSE|ERLANG_(?:PATH_ERLC?|SUBST_INSTALL_LIB_SUBDIR)|F(?:77|C)_FUNC|LANG_(?:CALL|PROGRAM)|MSG_(?:ERROR|FAILURE)|PROG_FC)|AH_(?:TEMPLATE|VERBATIM)|AU_ALIAS|AS_(?:BOX|ESCAPE|TMPDIR|VAR_(?:APPEND|COPY|PUSHDEF))|m4_(?:append_uniq_w|apply|assert|change(?:com|quote)|(?:list)?cmp|(?:copy|rename)(?:_force)?|default(?:_nblank)?(?:_quoted)?|define(?:_default)?|defun|divert_(?:once|text)|fatal|index|map(?:all)?|pushdef|set_(?:contents|difference|dump|intersection|map|union)|split|stack_foreach(?:_lifo)?|text_box|version_compare|warn)|AT_DATA|AM_MISSING_PROG|GTK_DOC_CHECK|IT_PROG_INTLTOOL)\s*(\() 847 | end 848 | \) 849 | beginCaptures 850 | 851 | 1 852 | 853 | name 854 | keyword.other.macro.m4 855 | 856 | 2 857 | 858 | name 859 | keyword.operator.function-call.m4 860 | 861 | 862 | endCaptures 863 | 864 | 0 865 | 866 | name 867 | keyword.operator.function-call.m4 868 | 869 | 870 | patterns 871 | 872 | 873 | include 874 | #ARGS-MM 875 | 876 | 877 | 878 | func-ms 879 | 880 | begin 881 | \b(AC_(?:CACHE_VAL|DEFUN(?:_ONCE)?|SUBST)|AS_(?:INIT_GENERATED|VAR_(?:ARITH|SET))|AM_CONDITIONAL)\s*(\() 882 | end 883 | \) 884 | beginCaptures 885 | 886 | 1 887 | 888 | name 889 | keyword.other.macro.m4 890 | 891 | 2 892 | 893 | name 894 | keyword.operator.function-call.m4 895 | 896 | 897 | endCaptures 898 | 899 | 0 900 | 901 | name 902 | keyword.operator.function-call.m4 903 | 904 | 905 | patterns 906 | 907 | 908 | include 909 | #ARGS-MS 910 | 911 | 912 | 913 | func-ss 914 | 915 | begin 916 | \b(AC_(?:F(?:77|C)_(?:DUMMY_MAIN|IMPLICIT_NONE)|FC_(?:CHECK_BOUNDS|(?:FREE|FIXED)FORM|MODULE_(?:OUTPUT_)?FLAG|PP_DEFINE)))\s*(\() 917 | end 918 | \) 919 | beginCaptures 920 | 921 | 1 922 | 923 | name 924 | keyword.other.macro.m4 925 | 926 | 2 927 | 928 | name 929 | keyword.operator.function-call.m4 930 | 931 | 932 | endCaptures 933 | 934 | 0 935 | 936 | name 937 | keyword.operator.function-call.m4 938 | 939 | 940 | patterns 941 | 942 | 943 | include 944 | #ARGS-SS 945 | 946 | 947 | 948 | func-mmm 949 | 950 | begin 951 | \b(AC_(?:CHECK_SIZEOF|DEFINE(?:_UNQUOTED)?)|AS_SET_CATFILE|m4_(?:append|bpatsubst|bregexp|eval|ifn?blank|ifn?def|ifset|ifvaln?|map(?:all)?_sep|set_(?:empty|foreach)|substr|translit|version-prereq)|AM_GNU_GETTEXT)\s*(\() 952 | end 953 | \) 954 | beginCaptures 955 | 956 | 1 957 | 958 | name 959 | keyword.other.macro.m4 960 | 961 | 2 962 | 963 | name 964 | keyword.operator.function-call.m4 965 | 966 | 967 | endCaptures 968 | 969 | 0 970 | 971 | name 972 | keyword.operator.function-call.m4 973 | 974 | 975 | patterns 976 | 977 | 978 | include 979 | #ARGS-MMM 980 | 981 | 982 | 983 | func-mms 984 | 985 | begin 986 | \b(AC_CACHE_CHECK|m4_foreach(?:_w)?)\s*(\() 987 | end 988 | \) 989 | beginCaptures 990 | 991 | 1 992 | 993 | name 994 | keyword.other.macro.m4 995 | 996 | 2 997 | 998 | name 999 | keyword.operator.function-call.m4 1000 | 1001 | 1002 | endCaptures 1003 | 1004 | 0 1005 | 1006 | name 1007 | keyword.operator.function-call.m4 1008 | 1009 | 1010 | patterns 1011 | 1012 | 1013 | include 1014 | #ARGS-MMS 1015 | 1016 | 1017 | 1018 | func-msm 1019 | 1020 | begin 1021 | \b(AU_DEFUN)\s*(\() 1022 | end 1023 | \) 1024 | beginCaptures 1025 | 1026 | 1 1027 | 1028 | name 1029 | keyword.other.macro.m4 1030 | 1031 | 2 1032 | 1033 | name 1034 | keyword.operator.function-call.m4 1035 | 1036 | 1037 | endCaptures 1038 | 1039 | 0 1040 | 1041 | name 1042 | keyword.operator.function-call.m4 1043 | 1044 | 1045 | patterns 1046 | 1047 | 1048 | include 1049 | #ARGS-MSM 1050 | 1051 | 1052 | 1053 | func-mss 1054 | 1055 | begin 1056 | \b(AC_(?:CHECK_(?:FILE|FUNC)(?:S)?|(?:COMPILE|LINK|PREPROC)_IFELSE|CONFIG_(?:COMMANDS|FILES|HEADERS|LINKS)|ERLANG_CHECK_LIB|FC_(?:LINE_LENGTH|(?:PP_)?SRCEXT))|AS_VAR_SET_IF|AM_(?:COND_IF|PATH_PYTHON|PROG_VALAC)|PKG_CHECK_EXISTS)\s*(\() 1057 | end 1058 | \) 1059 | beginCaptures 1060 | 1061 | 1 1062 | 1063 | name 1064 | keyword.other.macro.m4 1065 | 1066 | 2 1067 | 1068 | name 1069 | keyword.operator.function-call.m4 1070 | 1071 | 1072 | endCaptures 1073 | 1074 | 0 1075 | 1076 | name 1077 | keyword.operator.function-call.m4 1078 | 1079 | 1080 | patterns 1081 | 1082 | 1083 | include 1084 | #ARGS-MSS 1085 | 1086 | 1087 | 1088 | func-mmmm 1089 | 1090 | begin 1091 | \b(AC_(?:CHECK_(?:PROGS|(?:TARGET_)?TOOLS?)|PATH_(?:PROGS?|(?:TARGET_)?TOOL))|AS_HELP_STRING|m4_(?:map_args_w|set_(?:add|contains|map_sep|remove)|stack_foreach_sep(?:_lifo)?|text|wrap))\s*(\() 1092 | end 1093 | \) 1094 | beginCaptures 1095 | 1096 | 1 1097 | 1098 | name 1099 | keyword.other.macro.m4 1100 | 1101 | 2 1102 | 1103 | name 1104 | keyword.operator.function-call.m4 1105 | 1106 | 1107 | endCaptures 1108 | 1109 | 0 1110 | 1111 | name 1112 | keyword.operator.function-call.m4 1113 | 1114 | 1115 | patterns 1116 | 1117 | 1118 | include 1119 | #ARGS-MMMM 1120 | 1121 | 1122 | 1123 | func-mmms 1124 | 1125 | begin 1126 | \b(AC_COMPUTE_INT)\s*(\() 1127 | end 1128 | \) 1129 | beginCaptures 1130 | 1131 | 1 1132 | 1133 | name 1134 | keyword.other.macro.m4 1135 | 1136 | 2 1137 | 1138 | name 1139 | keyword.operator.function-call.m4 1140 | 1141 | 1142 | endCaptures 1143 | 1144 | 0 1145 | 1146 | name 1147 | keyword.operator.function-call.m4 1148 | 1149 | 1150 | patterns 1151 | 1152 | 1153 | include 1154 | #ARGS-MMMS 1155 | 1156 | 1157 | 1158 | func-mmss 1159 | 1160 | begin 1161 | \b(AC_(?:ARG_(?:ENABLE|WITH)|EGREP_(?:CPP|HEADER))|AS_VAR_IF|AT_ARG_OPTION(?:_ARG)?|PKG_CHECK_MODULES(?:_STATIC)?)\s*(\() 1162 | end 1163 | \) 1164 | beginCaptures 1165 | 1166 | 1 1167 | 1168 | name 1169 | keyword.other.macro.m4 1170 | 1171 | 2 1172 | 1173 | name 1174 | keyword.operator.function-call.m4 1175 | 1176 | 1177 | endCaptures 1178 | 1179 | 0 1180 | 1181 | name 1182 | keyword.operator.function-call.m4 1183 | 1184 | 1185 | patterns 1186 | 1187 | 1188 | include 1189 | #ARGS-MMSS 1190 | 1191 | 1192 | 1193 | func-mssm 1194 | 1195 | begin 1196 | \b(AC_CHECK_(?:DECL|HEADER|MEMBER|TYPE)(?:S)?)\s*(\() 1197 | end 1198 | \) 1199 | beginCaptures 1200 | 1201 | 1 1202 | 1203 | name 1204 | keyword.other.macro.m4 1205 | 1206 | 2 1207 | 1208 | name 1209 | keyword.operator.function-call.m4 1210 | 1211 | 1212 | endCaptures 1213 | 1214 | 0 1215 | 1216 | name 1217 | keyword.operator.function-call.m4 1218 | 1219 | 1220 | patterns 1221 | 1222 | 1223 | include 1224 | #ARGS-MSSM 1225 | 1226 | 1227 | 1228 | func-msss 1229 | 1230 | begin 1231 | \b(AC_RUN_IFELSE)\s*(\() 1232 | end 1233 | \) 1234 | beginCaptures 1235 | 1236 | 1 1237 | 1238 | name 1239 | keyword.other.macro.m4 1240 | 1241 | 2 1242 | 1243 | name 1244 | keyword.operator.function-call.m4 1245 | 1246 | 1247 | endCaptures 1248 | 1249 | 0 1250 | 1251 | name 1252 | keyword.operator.function-call.m4 1253 | 1254 | 1255 | patterns 1256 | 1257 | 1258 | include 1259 | #ARGS-MSSS 1260 | 1261 | 1262 | 1263 | func-ssss 1264 | 1265 | begin 1266 | \b(AC_C_BIGENDIAN|AS_LITERAL_(?:WORD_)?IF)\s*(\() 1267 | end 1268 | \) 1269 | beginCaptures 1270 | 1271 | 1 1272 | 1273 | name 1274 | keyword.other.macro.m4 1275 | 1276 | 2 1277 | 1278 | name 1279 | keyword.operator.function-call.m4 1280 | 1281 | 1282 | endCaptures 1283 | 1284 | 0 1285 | 1286 | name 1287 | keyword.operator.function-call.m4 1288 | 1289 | 1290 | patterns 1291 | 1292 | 1293 | include 1294 | #ARGS-SSSS 1295 | 1296 | 1297 | 1298 | func-mmmmm 1299 | 1300 | begin 1301 | \b(m4_(?:append_uniq|for)|AC_INIT)\s*(\() 1302 | end 1303 | \) 1304 | beginCaptures 1305 | 1306 | 1 1307 | 1308 | name 1309 | keyword.other.macro.m4 1310 | 1311 | 2 1312 | 1313 | name 1314 | keyword.operator.function-call.m4 1315 | 1316 | 1317 | endCaptures 1318 | 1319 | 0 1320 | 1321 | name 1322 | keyword.operator.function-call.m4 1323 | 1324 | 1325 | patterns 1326 | 1327 | 1328 | include 1329 | #ARGS-MMMMM 1330 | 1331 | 1332 | 1333 | func-mmmss 1334 | 1335 | begin 1336 | \b(AT_CHECK_EUNIT|PKG_CHECK_VAR)\s*(\() 1337 | end 1338 | \) 1339 | beginCaptures 1340 | 1341 | 1 1342 | 1343 | name 1344 | keyword.other.macro.m4 1345 | 1346 | 2 1347 | 1348 | name 1349 | keyword.operator.function-call.m4 1350 | 1351 | 1352 | endCaptures 1353 | 1354 | 0 1355 | 1356 | name 1357 | keyword.operator.function-call.m4 1358 | 1359 | 1360 | patterns 1361 | 1362 | 1363 | include 1364 | #ARGS-MMMSS 1365 | 1366 | 1367 | 1368 | func-mmssm 1369 | 1370 | begin 1371 | \b(AC_(?:CHECK_LIB|SEARCH_LIBS|PATH_PROGS_FEATURE_CHECK))\s*(\() 1372 | end 1373 | \) 1374 | beginCaptures 1375 | 1376 | 1 1377 | 1378 | name 1379 | keyword.other.macro.m4 1380 | 1381 | 2 1382 | 1383 | name 1384 | keyword.operator.function-call.m4 1385 | 1386 | 1387 | endCaptures 1388 | 1389 | 0 1390 | 1391 | name 1392 | keyword.operator.function-call.m4 1393 | 1394 | 1395 | patterns 1396 | 1397 | 1398 | include 1399 | #ARGS-MMSSM 1400 | 1401 | 1402 | 1403 | func-mmsss 1404 | 1405 | begin 1406 | \b(AS_VERSION_COMPARE)\s*(\() 1407 | end 1408 | \) 1409 | beginCaptures 1410 | 1411 | 1 1412 | 1413 | name 1414 | keyword.other.macro.m4 1415 | 1416 | 2 1417 | 1418 | name 1419 | keyword.operator.function-call.m4 1420 | 1421 | 1422 | endCaptures 1423 | 1424 | 0 1425 | 1426 | name 1427 | keyword.operator.function-call.m4 1428 | 1429 | 1430 | patterns 1431 | 1432 | 1433 | include 1434 | #ARGS-MMSSS 1435 | 1436 | 1437 | 1438 | func-mmmmmm 1439 | 1440 | begin 1441 | \b(AC_CHECK_PROG)\s*(\() 1442 | end 1443 | \) 1444 | beginCaptures 1445 | 1446 | 1 1447 | 1448 | name 1449 | keyword.other.macro.m4 1450 | 1451 | 2 1452 | 1453 | name 1454 | keyword.operator.function-call.m4 1455 | 1456 | 1457 | endCaptures 1458 | 1459 | 0 1460 | 1461 | name 1462 | keyword.operator.function-call.m4 1463 | 1464 | 1465 | patterns 1466 | 1467 | 1468 | include 1469 | #ARGS-MMMMMM 1470 | 1471 | 1472 | 1473 | func-smmmss 1474 | 1475 | begin 1476 | \b(AT_CHECK(?:_UNQUOTED)?)\s*(\() 1477 | end 1478 | \) 1479 | beginCaptures 1480 | 1481 | 1 1482 | 1483 | name 1484 | keyword.other.macro.m4 1485 | 1486 | 2 1487 | 1488 | name 1489 | keyword.operator.function-call.m4 1490 | 1491 | 1492 | endCaptures 1493 | 1494 | 0 1495 | 1496 | name 1497 | keyword.operator.function-call.m4 1498 | 1499 | 1500 | patterns 1501 | 1502 | 1503 | include 1504 | #ARGS-SMMMSS 1505 | 1506 | 1507 | 1508 | func-mvarargs 1509 | 1510 | begin 1511 | \b(m4_(?:argn|bmatch|bpatsubsts|car|case|cdr|builtin|combine|cond|count|curry|do|dquote(?:_elt)?|dumpdefs?|echo|errprint|format|if|ignore|indir|join(?:all)?|makelist|map_args(?:_(?:pair|sep))?|max|min|(?:un)?quote|reverse|set_add_all|shift(?:2|3|n)?|trace(?:off|on)|undefine|undivert))\s*(\() 1512 | end 1513 | \) 1514 | beginCaptures 1515 | 1516 | 1 1517 | 1518 | name 1519 | keyword.other.macro.m4 1520 | 1521 | 2 1522 | 1523 | name 1524 | keyword.operator.function-call.m4 1525 | 1526 | 1527 | endCaptures 1528 | 1529 | 0 1530 | 1531 | name 1532 | keyword.operator.function-call.m4 1533 | 1534 | 1535 | patterns 1536 | 1537 | 1538 | include 1539 | #ARGS-MVARARGS 1540 | 1541 | 1542 | 1543 | func-svarargs 1544 | 1545 | begin 1546 | \b(AS_IF)\s*(\() 1547 | end 1548 | \) 1549 | beginCaptures 1550 | 1551 | 1 1552 | 1553 | name 1554 | keyword.other.macro.m4 1555 | 1556 | 2 1557 | 1558 | name 1559 | keyword.operator.function-call.m4 1560 | 1561 | 1562 | endCaptures 1563 | 1564 | 0 1565 | 1566 | name 1567 | keyword.operator.function-call.m4 1568 | 1569 | 1570 | patterns 1571 | 1572 | 1573 | include 1574 | #ARGS-SVARARGS 1575 | 1576 | 1577 | 1578 | func-as-case 1579 | 1580 | begin 1581 | \b(AS_CASE)\s*(\() 1582 | end 1583 | \) 1584 | beginCaptures 1585 | 1586 | 1 1587 | 1588 | name 1589 | keyword.other.macro.m4sh 1590 | 1591 | 2 1592 | 1593 | name 1594 | keyword.operator.function-call.m4 1595 | 1596 | 1597 | endCaptures 1598 | 1599 | 0 1600 | 1601 | name 1602 | keyword.operator.function-call.m4 1603 | 1604 | 1605 | patterns 1606 | 1607 | 1608 | include 1609 | #ARGS-AS-CASE 1610 | 1611 | 1612 | 1613 | m4-macros-noargs 1614 | 1615 | name 1616 | keyword.other.macro.m4 1617 | match 1618 | \bm4_(divnum|init|location|sysval) 1619 | patterns 1620 | 1621 | 1622 | m4-macros-optargs 1623 | 1624 | name 1625 | keyword.other.macro.m4 1626 | match 1627 | \bm4_(change(com|quote)|debug(file|mode)|divert_pop|newline|trace(on|off)) 1628 | patterns 1629 | 1630 | 1631 | ac-macros-noargs 1632 | 1633 | name 1634 | keyword.other.macro.autoconf 1635 | match 1636 | \bAC_(ARG_PROGRAM|AUTOCONF_VERSION|C_BACKSLASH_A|CACHE_(LOAD|SAVE)|CANONICAL_(BUILD|HOST|TARGET)|CHECK_HEADER_STDBOOL|C_(CHAR_UNSIGNED|CONST|FLEXIBLE_ARRAY_MEMBER|INLINE|PROTOTYPES|RESTRICT|STRINGIZE|TYPEOF|VARARRAYS|VOLATILE)|DISABLE_OPTION_CHECKING|ERLANG_SUBST_(((INSTALL_)?LIB|ROOT)_DIR|ERTS_VER)|F77_(MAIN|WRAPPERS)|FC_(MAIN|MODULE_EXTENSION|WRAPPERS)|FUNC_(ALLOCA|CHOWN|CLOSEDIR_VOID|FNMATCH(_GNU)?|FORK|FSEEKO|GETGROUPS|GETLOADAVG|GETMNTENT|GETPGRP|LSTAT|MALLOC|MBRTOWC|MEMCMP|MMAP|OBSTACK|REALLOC|SELECT_ARGTYPES|SETPGRP|STAT|STRCOLL|STRERROR_R|STRFTIME|STRNLEN|STRTOLD|UTIME_NULL|VPRINTF)|HEADER_(ASSERT|DIRENT|MAJOR|RESOLV|STAT|STDBOOL|STDC|SYS_WAIT|TIME|TIOCGWINSZ)|LANG_(DEFINES_PROVIDED|WERROR)|OUTPUT|PACKAGE_(BUGREPORT|NAME|STRING|TARNAME|URL|VERSION)|PATH_X(TRA)?|PRESERVE_HELP_ORDER|PROG_(AWK|CC(_C(89|99|_O))|CC_STDC|CPP(_WERROR)?|CXX(CPP|_C_O)?|EGREP|F77_C_O|FC_C_O|FGREP|GCC_TRADITIONAL|GREP|INSTALL|LEX|LN_S|MAKE_SET|MKDIR_P|OBJ(CXX)?CPP|RANLIB|SED|YACC)|REPLACE_FNMATCH|REQUIRE_CPP|STRUCT_(DIRENT_D_(INO|TYPE)|ST_BLOCKS|TIMEZONE|TM)|SYS_(INTERPRETER|LARGEFILE|LONG_FILE_NAMES|POSIX_TERMIOS)|TYPE_(GETGROUPS|INT(16_T|32_T|64_T|8_T)|INTMAX_T|INTPTR_T|LONG_DOUBLE(_WIDER)?|LONG_LONG_INT|MBSTATE_T|MODE_T|OFF_T|PID_T|SIGNAL|SIZE_T|SSIZE_T|UID_T|UINT(16_T|32_T|64_T|8_T)|UINTMAX_T|UINTPTR_T|UNSIGNED_LONG_LONG_INT)|USE_SYSTEM_EXTENSIONS) 1637 | patterns 1638 | 1639 | 1640 | ac-macros-noargs2 1641 | 1642 | name 1643 | keyword.other.macro.autoconf 1644 | match 1645 | \bA(H_HEADER|S_(BOURNE_COMPATIBLE|INIT|LINENO_PREPARE|ME_PREPARE|MESSAGE_FD|MESSAGE_LOG_FD|ORIGINAL_STDIN_FD|SHELL_SANITIZE)|T_(CLEANUP|COLOR_TESTS)) 1646 | patterns 1647 | 1648 | 1649 | ac-macros-optargs 1650 | 1651 | name 1652 | keyword.other.macro.autoconf 1653 | match 1654 | \bAC_(C_BIGENDIAN|ERLANG_(PATH|NEED)_ERLC?|F(77|C)_DUMMY_MAIN|FC_((FIXED|FREE)FORM|LINE_LENGTH)|INCLUDES_DEFAULT|LANG_POP|PROG_(CC|CXX|OBJC(XX)?|F(77|C))) 1655 | patterns 1656 | 1657 | 1658 | ac-macros-optargs2 1659 | 1660 | name 1661 | keyword.other.macro.autoconf 1662 | match 1663 | \bA(S_EXIT|T_INIT) 1664 | patterns 1665 | 1666 | 1667 | ac-macros-obsolete 1668 | 1669 | name 1670 | invalid.deprecated.macro.autoconf 1671 | match 1672 | \bAC_(AIX|ALLOCA|ARG_ARRAY|CANONICAL_SYSTEM|C_(CROSS|LONG_DOUBLE)|CHAR_UNSIGNED|CHECKING|COMPILE_CHECK|CONFIG_HEADER|CONST|CROSS_CHECK|CYGWIN|DECL_(SYS_SIGLIST|YYTEXT)|DIR_HEADER|DISABLE_(FAST_INSTALL|SHARED|STATIC)|DYNIX_SEQ|ENABLE(_(SHARED|STATIC))?|EMXOS2|ERROR|EXEEXT|FIND_X(TRA)?|FOREACH|FUNC_(CHECK|ERROR_AT_LINE|LSTAT_FOLLOWS_SLASHED_SYMLINK|MKTIME|SETVBUF_REVERSED|STRTOD|WAIT3)|GCC_TRADITIONAL|GETGROUPS_T|GETLOADAVG|GNU_SOURCE|HAVE_(FUNCS|HEADERS|LIBRARY|POUNDBANG)|HEADER_(CHECK|EGREP)|HELP_STRING|INLINE|INT_16_BITS|IRIX_SUN|LANG_(CPLUSPLUS|C|FORTRAN77|RESTORE|SAVE)|LIBTOOL_(DLOPEN|WIN32_DLL)|LINK_FILES|LN_S|LONG_(64_BITS|DOUBLE|FILE_NAMES)|MAJOR_HEADER|MEMORY_H|MINGW32|MINIX|MINUS_C_MINUS_O|MMAP|MODE_T|OBJEXT|OBSOLETE|OFF_T|OUTPUT_COMMANDS|PID_T|PREFIX|PROG_(INTL|LIB)TOOL|PROGRAM_(CHECK|EGREP|PATH)|PROGRAMS_(CHECK|PATH)|REMOTE_TAPE|RESTARTABLE_SYSCALLS|RETSIGTYPE|RSH|SCO_INTL|SET_MAKE|SETVBUF_REVERSED|SIZEOF_TYPE|SIZE_T|STAT_MACROS_BROKEN|ST_(BLKSIZE|BLOCKS|RDEV)|STDC_HEADERS|STRCOLL|SYS_(RESTARTABLE_SYSCALLS|SIGLIST_DECLARED)|TEST_(CPP|PROGRAM)|TIME_WITH_SYS_TIME|TIMEZONE|TRY_(COMPILE|CPP|LINK_FUNC|LINK|RUN)|UID_T|UNISTD_H|USG|UTIME_NULL|VALIDATE_CACHED_SYSTEM_TUPLE|VERBOSE|VFORK|VPRINTF|WAIT3|WARN|WITH|WORDS_BIGENDIAN|XENIX_DIR|YYTEXT_POINTER) 1673 | patterns 1674 | 1675 | 1676 | am-macros-noargs 1677 | 1678 | name 1679 | keyword.other.macro.automake 1680 | match 1681 | \bAM_(ENABLE_MULTILIB|GCONF_SOURCE_2|GLIB_GNU_GETTEXT|GNU_GETTEXT_INTL_SUBDIR|PATH_LISPDIR|PO_SUBDIRS|PROG_(AR|AS|GCJ|LEX)|SILENT_RULES|WITH_DMALLOC) 1682 | patterns 1683 | 1684 | 1685 | am-macros-optargs 1686 | 1687 | name 1688 | keyword.other.macro.automake 1689 | match 1690 | \bAM_(INIT_AUTOMAKE|MAINTAINER_MODE|PATH_PYTHON|PROG_(UPC|VALAC)) 1691 | patterns 1692 | 1693 | 1694 | am-macros-private 1695 | 1696 | name 1697 | invalid.illegal.private.automake 1698 | match 1699 | \bAM_(DEP_TRACK|MAKE_INCLUDE|OUTPUT_DEPENDENCY_COMMANDS|PROG_INSTALL_STRIP|SANITY_CHECK|SET_DEPDIR) 1700 | patterns 1701 | 1702 | 1703 | am-macros-obsolete 1704 | 1705 | name 1706 | invalid.deprecated.macro.automake 1707 | match 1708 | \bAM_(C_PROTOTYPES|CONFIG_HEADER|HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL|PATH_CHECK|PROG_(CC_(STDC|C_O)|LIBTOOL|MKDIR_P)|SYS_POSIX_TERMIOS|WITH_REGEX|(DIS|EN)ABLE_(STATIC|SHARED)) 1709 | patterns 1710 | 1711 | 1712 | misc-macros-noargs 1713 | 1714 | name 1715 | keyword.other.macro.autotools 1716 | match 1717 | \b(__(file|o?line)__|LT_(CMD_MAX_LEN|FUNC_DLSYM_USCORE|LIB_(M|DLLOAD)|OUTPUT|PATH_(LD|NM)|SYS_(DLOPEN_(SELF|DEPLIBS)|MODULE_(EXT|PATH)|DLSEARCH_PATH|SYMBOL_USCORE))) 1718 | patterns 1719 | 1720 | 1721 | misc-macros-optargs 1722 | 1723 | name 1724 | keyword.other.macro.autotools 1725 | match 1726 | \b(LT_INIT|PKG_PROG_PKG_CONFIG) 1727 | patterns 1728 | 1729 | 1730 | m4-pure 1731 | 1732 | patterns 1733 | 1734 | 1735 | include 1736 | #m4-comment 1737 | 1738 | 1739 | include 1740 | #quadrigraph 1741 | 1742 | 1743 | include 1744 | #func-m 1745 | 1746 | 1747 | include 1748 | #func-s 1749 | 1750 | 1751 | include 1752 | #func-mm 1753 | 1754 | 1755 | include 1756 | #func-ms 1757 | 1758 | 1759 | include 1760 | #func-ss 1761 | 1762 | 1763 | include 1764 | #func-mmm 1765 | 1766 | 1767 | include 1768 | #func-mms 1769 | 1770 | 1771 | include 1772 | #func-msm 1773 | 1774 | 1775 | include 1776 | #func-mss 1777 | 1778 | 1779 | include 1780 | #func-mmmm 1781 | 1782 | 1783 | include 1784 | #func-mmms 1785 | 1786 | 1787 | include 1788 | #func-mmss 1789 | 1790 | 1791 | include 1792 | #func-mssm 1793 | 1794 | 1795 | include 1796 | #func-msss 1797 | 1798 | 1799 | include 1800 | #func-ssss 1801 | 1802 | 1803 | include 1804 | #func-mmmmm 1805 | 1806 | 1807 | include 1808 | #func-mmmss 1809 | 1810 | 1811 | include 1812 | #func-mmssm 1813 | 1814 | 1815 | include 1816 | #func-mmsss 1817 | 1818 | 1819 | include 1820 | #func-mmmmmm 1821 | 1822 | 1823 | include 1824 | #func-smmmss 1825 | 1826 | 1827 | include 1828 | #func-mvarargs 1829 | 1830 | 1831 | include 1832 | #func-svarargs 1833 | 1834 | 1835 | include 1836 | #func-as-case 1837 | 1838 | 1839 | include 1840 | #m4-macros-noargs 1841 | 1842 | 1843 | include 1844 | #m4-macros-optargs 1845 | 1846 | 1847 | include 1848 | #ac-macros-noargs 1849 | 1850 | 1851 | include 1852 | #ac-macros-noargs2 1853 | 1854 | 1855 | include 1856 | #ac-macros-optargs 1857 | 1858 | 1859 | include 1860 | #ac-macros-optargs2 1861 | 1862 | 1863 | include 1864 | #ac-macros-obsolete 1865 | 1866 | 1867 | include 1868 | #am-macros-noargs 1869 | 1870 | 1871 | include 1872 | #am-macros-optargs 1873 | 1874 | 1875 | include 1876 | #am-macros-obsolete 1877 | 1878 | 1879 | include 1880 | #am-macros-private 1881 | 1882 | 1883 | include 1884 | #misc-macros-noargs 1885 | 1886 | 1887 | include 1888 | #misc-macros-optargs 1889 | 1890 | 1891 | include 1892 | #m4-function-call 1893 | 1894 | 1895 | include 1896 | #m4-quoted 1897 | 1898 | 1899 | name 1900 | invalid.illegal.syntax-error 1901 | match 1902 | \] 1903 | 1904 | 1905 | 1906 | shell-interpolation 1907 | 1908 | patterns 1909 | 1910 | 1911 | name 1912 | string.interpolated.backtick.shell 1913 | begin 1914 | ` 1915 | end 1916 | ` 1917 | beginCaptures 1918 | 1919 | 0 1920 | 1921 | name 1922 | punctuation.definition.string.begin.shell 1923 | 1924 | 1925 | endCaptures 1926 | 1927 | 0 1928 | 1929 | name 1930 | punctuation.definition.string.end.shell 1931 | 1932 | 1933 | patterns 1934 | 1935 | 1936 | name 1937 | constant.character.escape.shell 1938 | match 1939 | \\[`\\$] 1940 | 1941 | 1942 | include 1943 | $self 1944 | 1945 | 1946 | 1947 | 1948 | name 1949 | string.interpolated.dollar.shell 1950 | begin 1951 | \$\( 1952 | end 1953 | \) 1954 | beginCaptures 1955 | 1956 | 0 1957 | 1958 | name 1959 | punctuation.definition.string.begin.shell 1960 | 1961 | 1962 | endCaptures 1963 | 1964 | 0 1965 | 1966 | name 1967 | punctuation.definition.string.end.shell 1968 | 1969 | 1970 | patterns 1971 | 1972 | 1973 | include 1974 | $self 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | shell-compound-command 1981 | 1982 | patterns 1983 | 1984 | 1985 | name 1986 | meta.scope.logical-expression.shell 1987 | begin 1988 | (\[{2}) 1989 | end 1990 | (\]{2}) 1991 | captures 1992 | 1993 | 1 1994 | 1995 | name 1996 | punctuation.definition.logical-expression.shell 1997 | 1998 | 1999 | patterns 2000 | 2001 | 2002 | include 2003 | source.shell.logical-expression 2004 | 2005 | 2006 | include 2007 | $self 2008 | 2009 | 2010 | 2011 | 2012 | name 2013 | meta.scope.subshell.shell 2014 | begin 2015 | (\() 2016 | end 2017 | (\)) 2018 | captures 2019 | 2020 | 1 2021 | 2022 | name 2023 | punctuation.definition.subshell.shell 2024 | 2025 | 2026 | patterns 2027 | 2028 | 2029 | include 2030 | $self 2031 | 2032 | 2033 | 2034 | 2035 | name 2036 | meta.scope.group.shell 2037 | begin 2038 | (?<=\s|^)(\{)(?=\s|$) 2039 | end 2040 | (?<=^|;)\s*(\}) 2041 | captures 2042 | 2043 | 1 2044 | 2045 | name 2046 | punctuation.definition.group.shell 2047 | 2048 | 2049 | patterns 2050 | 2051 | 2052 | include 2053 | $self 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | shell-pathname 2060 | 2061 | patterns 2062 | 2063 | 2064 | name 2065 | meta.structure.extglob.shell 2066 | begin 2067 | ([?*+@!])(\() 2068 | end 2069 | (\)) 2070 | beginCaptures 2071 | 2072 | 1 2073 | 2074 | name 2075 | keyword.operator.extglob.shell 2076 | 2077 | 2 2078 | 2079 | name 2080 | punctuation.definition.extglob.shell 2081 | 2082 | 2083 | endCaptures 2084 | 2085 | 1 2086 | 2087 | name 2088 | punctuation.definition.extglob.shell 2089 | 2090 | 2091 | patterns 2092 | 2093 | 2094 | include 2095 | $self 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | shell-string 2102 | 2103 | patterns 2104 | 2105 | 2106 | name 2107 | string.quoted.double.shell 2108 | begin 2109 | \$?" 2110 | end 2111 | " 2112 | beginCaptures 2113 | 2114 | 0 2115 | 2116 | name 2117 | punctuation.definition.string.begin.shell 2118 | 2119 | 2120 | endCaptures 2121 | 2122 | 0 2123 | 2124 | name 2125 | punctuation.definition.string.end.shell 2126 | 2127 | 2128 | patterns 2129 | 2130 | 2131 | name 2132 | constant.character.escape.shell 2133 | match 2134 | \\[\$`"\\\n] 2135 | 2136 | 2137 | include 2138 | source.shell.variable 2139 | 2140 | 2141 | include 2142 | #shell-interpolation 2143 | 2144 | 2145 | include 2146 | source.shell.interpolation 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | shell-loop 2153 | 2154 | patterns 2155 | 2156 | 2157 | name 2158 | meta.scope.for-loop.shell 2159 | begin 2160 | \b(for)\s+(?=\({2}) 2161 | end 2162 | \b(done)\b 2163 | captures 2164 | 2165 | 1 2166 | 2167 | name 2168 | keyword.control.shell 2169 | 2170 | 2171 | patterns 2172 | 2173 | 2174 | include 2175 | $self 2176 | 2177 | 2178 | 2179 | 2180 | name 2181 | meta.scope.for-in-loop.shell 2182 | begin 2183 | \b(for)\s+((?:[^\s\\]|\\.)+)\b 2184 | end 2185 | \b(done)\b 2186 | beginCaptures 2187 | 2188 | 1 2189 | 2190 | name 2191 | keyword.control.shell 2192 | 2193 | 2 2194 | 2195 | name 2196 | variable.other.loop.shell 2197 | 2198 | 2199 | endCaptures 2200 | 2201 | 1 2202 | 2203 | name 2204 | keyword.control.shell 2205 | 2206 | 2207 | patterns 2208 | 2209 | 2210 | include 2211 | $self 2212 | 2213 | 2214 | 2215 | 2216 | name 2217 | meta.scope.while-loop.shell 2218 | begin 2219 | \b(while|until)\b 2220 | end 2221 | \b(done)\b 2222 | captures 2223 | 2224 | 1 2225 | 2226 | name 2227 | keyword.control.shell 2228 | 2229 | 2230 | patterns 2231 | 2232 | 2233 | include 2234 | $self 2235 | 2236 | 2237 | 2238 | 2239 | name 2240 | meta.scope.select-block.shell 2241 | begin 2242 | \b(select)\s+((?:[^\s\\]|\\.)+)\b 2243 | end 2244 | \b(done)\b 2245 | beginCaptures 2246 | 2247 | 1 2248 | 2249 | name 2250 | keyword.control.shell 2251 | 2252 | 2 2253 | 2254 | name 2255 | variable.other.loop.shell 2256 | 2257 | 2258 | endCaptures 2259 | 2260 | 1 2261 | 2262 | name 2263 | keyword.control.shell 2264 | 2265 | 2266 | patterns 2267 | 2268 | 2269 | include 2270 | $self 2271 | 2272 | 2273 | 2274 | 2275 | name 2276 | meta.scope.case-block.shell 2277 | begin 2278 | \b(case)\b 2279 | end 2280 | \b(esac)\b 2281 | captures 2282 | 2283 | 1 2284 | 2285 | name 2286 | keyword.control.shell 2287 | 2288 | 2289 | patterns 2290 | 2291 | 2292 | name 2293 | meta.scope.case-body.shell 2294 | begin 2295 | \b(?:in)\b 2296 | end 2297 | (?=\b(?:esac)\b) 2298 | beginCaptures 2299 | 2300 | 1 2301 | 2302 | name 2303 | keyword.control.shell 2304 | 2305 | 2306 | patterns 2307 | 2308 | 2309 | include 2310 | source.shell.comment 2311 | 2312 | 2313 | include 2314 | #shell-case-clause 2315 | 2316 | 2317 | include 2318 | source.shell.case-clause 2319 | 2320 | 2321 | include 2322 | $self 2323 | 2324 | 2325 | 2326 | 2327 | include 2328 | $self 2329 | 2330 | 2331 | 2332 | 2333 | name 2334 | meta.scope.if-block.shell 2335 | begin 2336 | \b(if)\b 2337 | end 2338 | \b(fi)\b 2339 | captures 2340 | 2341 | 1 2342 | 2343 | name 2344 | keyword.control.shell 2345 | 2346 | 2347 | patterns 2348 | 2349 | 2350 | include 2351 | $self 2352 | 2353 | 2354 | 2355 | 2356 | 2357 | shell-function-definition 2358 | 2359 | patterns 2360 | 2361 | 2362 | name 2363 | meta.function.shell 2364 | begin 2365 | \b(function)\s+([^\s\\]+)(?:\s*(\(\)))? 2366 | end 2367 | ;|&|$ 2368 | beginCaptures 2369 | 2370 | 1 2371 | 2372 | name 2373 | storage.type.function.shell 2374 | 2375 | 2 2376 | 2377 | name 2378 | entity.name.function.shell 2379 | 2380 | 3 2381 | 2382 | name 2383 | punctuation.definition.arguments.shell 2384 | 2385 | 2386 | endCaptures 2387 | 2388 | 0 2389 | 2390 | name 2391 | punctuation.definition.function.shell 2392 | 2393 | 2394 | patterns 2395 | 2396 | 2397 | include 2398 | $self 2399 | 2400 | 2401 | 2402 | 2403 | name 2404 | meta.function.shell 2405 | begin 2406 | \b([^\s\\=]+)\s*(\(\)) 2407 | end 2408 | ;|&|$ 2409 | beginCaptures 2410 | 2411 | 1 2412 | 2413 | name 2414 | entity.name.function.shell 2415 | 2416 | 2 2417 | 2418 | name 2419 | punctuation.definition.arguments.shell 2420 | 2421 | 2422 | endCaptures 2423 | 2424 | 0 2425 | 2426 | name 2427 | punctuation.definition.function.shell 2428 | 2429 | 2430 | patterns 2431 | 2432 | 2433 | include 2434 | $self 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | shell-case-clause 2441 | 2442 | patterns 2443 | 2444 | 2445 | name 2446 | meta.scope.case-clause.shell 2447 | begin 2448 | (?=\S) 2449 | end 2450 | ;; 2451 | endCaptures 2452 | 2453 | 0 2454 | 2455 | name 2456 | punctuation.terminator.case-clause.shell 2457 | 2458 | 2459 | patterns 2460 | 2461 | 2462 | name 2463 | meta.scope.case-pattern.shell 2464 | begin 2465 | (\(|(?=\S)) 2466 | captures 2467 | 2468 | 0 2469 | 2470 | name 2471 | punctuation.definition.case-pattern.shell 2472 | 2473 | 2474 | end 2475 | \) 2476 | patterns 2477 | 2478 | 2479 | name 2480 | punctuation.separator.pipe-sign.shell 2481 | match 2482 | \| 2483 | 2484 | 2485 | include 2486 | #shell-string 2487 | 2488 | 2489 | include 2490 | source.shell.string 2491 | 2492 | 2493 | include 2494 | source.shell.variable 2495 | 2496 | 2497 | include 2498 | #shell-interpolation 2499 | 2500 | 2501 | include 2502 | source.shell.interpolation 2503 | 2504 | 2505 | include 2506 | #shell-pathname 2507 | 2508 | 2509 | include 2510 | source.shell.pathname 2511 | 2512 | 2513 | 2514 | 2515 | name 2516 | meta.scope.case-clause-body.shell 2517 | begin 2518 | (?<=\)) 2519 | end 2520 | (?=;;) 2521 | patterns 2522 | 2523 | 2524 | include 2525 | $self 2526 | 2527 | 2528 | 2529 | 2530 | 2531 | 2532 | 2533 | shell-redirection 2534 | 2535 | patterns 2536 | 2537 | 2538 | name 2539 | string.interpolated.process-substitution.shell 2540 | begin 2541 | [><]\( 2542 | end 2543 | \) 2544 | beginCaptures 2545 | 2546 | 0 2547 | 2548 | name 2549 | punctuation.definition.string.begin.shell 2550 | 2551 | 2552 | endCaptures 2553 | 2554 | 0 2555 | 2556 | name 2557 | punctuation.definition.string.end.shell 2558 | 2559 | 2560 | patterns 2561 | 2562 | 2563 | include 2564 | $self 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | patterns 2572 | 2573 | 2574 | include 2575 | #m4-quoted-shell 2576 | 2577 | 2578 | include 2579 | #m4-pure 2580 | 2581 | 2582 | include 2583 | #shell-interpolation 2584 | 2585 | 2586 | include 2587 | #shell-compound-command 2588 | 2589 | 2590 | include 2591 | #shell-pathname 2592 | 2593 | 2594 | include 2595 | #shell-string 2596 | 2597 | 2598 | include 2599 | #shell-loop 2600 | 2601 | 2602 | include 2603 | #shell-function-definition 2604 | 2605 | 2606 | include 2607 | #shell-redirection 2608 | 2609 | 2610 | include 2611 | source.shell 2612 | 2613 | 2614 | name 2615 | invalid.illegal.syntax-error 2616 | match 2617 | \) 2618 | 2619 | 2620 | 2621 | -------------------------------------------------------------------------------- /Automake.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | --- 3 | uuid: db931ddb-e919-4736-bd7d-fcf6e1ceca7f 4 | name: Automake 5 | scopeName: source.automake 6 | fileTypes: 7 | - am 8 | - am.inc 9 | - Makefile.in 10 | 11 | repository: 12 | # Contexts copied from Makefile syntax definition 13 | # ----------------------------------------------- 14 | escaped-char: 15 | name: constant.character.escape.makefile 16 | match: \\. 17 | patterns: [] 18 | variable-reference: 19 | contentName: variable.other.makefile 20 | begin: \$\( 21 | end: \) 22 | name: string.interpolated.makefile 23 | patterns: 24 | - include: $self 25 | - name: string.other.substitution.makefile 26 | match: (:)[a-zA-Z0-9_%.]+(=)[a-zA-Z0-9_%.]+ 27 | captures: 28 | '1': {name: keyword.operator.substitution.makefile} 29 | '2': {name: keyword.operator.substitution.makefile} 30 | - name: meta.scope.function.makefile 31 | begin: "(?<=\\$\\()(addprefix|addsuffix|and|basename|call|dir|error|\ 32 | eval|file|filter(-out)?|findstring|firstword|flavor|foreach|guile|\ 33 | if|info|join|notdir|or|origin|patsubst|shell|sort|strip|subst|suffix|\ 34 | value|warning|wildcard|words?)\\b" 35 | end: (?=\)) 36 | beginCaptures: 37 | '1': {name: support.function.makefile} 38 | contentName: string.interpolated.makefile 39 | patterns: 40 | - include: $self 41 | 42 | automatic-variable: 43 | name: variable.language.makefile 44 | match: \$([@% 2 | 3 | 4 | 5 | uuid 6 | db931ddb-e919-4736-bd7d-fcf6e1ceca7f 7 | name 8 | Automake 9 | scopeName 10 | source.automake 11 | fileTypes 12 | 13 | am 14 | am.inc 15 | Makefile.in 16 | 17 | repository 18 | 19 | escaped-char 20 | 21 | name 22 | constant.character.escape.makefile 23 | match 24 | \\. 25 | patterns 26 | 27 | 28 | variable-reference 29 | 30 | contentName 31 | variable.other.makefile 32 | begin 33 | \$\( 34 | end 35 | \) 36 | name 37 | string.interpolated.makefile 38 | patterns 39 | 40 | 41 | include 42 | $self 43 | 44 | 45 | name 46 | string.other.substitution.makefile 47 | match 48 | (:)[a-zA-Z0-9_%.]+(=)[a-zA-Z0-9_%.]+ 49 | captures 50 | 51 | 1 52 | 53 | name 54 | keyword.operator.substitution.makefile 55 | 56 | 2 57 | 58 | name 59 | keyword.operator.substitution.makefile 60 | 61 | 62 | 63 | 64 | name 65 | meta.scope.function.makefile 66 | begin 67 | (?<=\$\()(addprefix|addsuffix|and|basename|call|dir|error|eval|file|filter(-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|notdir|or|origin|patsubst|shell|sort|strip|subst|suffix|value|warning|wildcard|words?)\b 68 | end 69 | (?=\)) 70 | beginCaptures 71 | 72 | 1 73 | 74 | name 75 | support.function.makefile 76 | 77 | 78 | contentName 79 | string.interpolated.makefile 80 | patterns 81 | 82 | 83 | include 84 | $self 85 | 86 | 87 | 88 | 89 | 90 | automatic-variable 91 | 92 | name 93 | variable.language.makefile 94 | match 95 | \$([@%<?^+*]|\([@*%<^?][DF]\)) 96 | patterns 97 | 98 | 99 | shell-variable-reference 100 | 101 | contentName 102 | variable.other.shell.makefile 103 | begin 104 | \$\{ 105 | end 106 | \} 107 | patterns 108 | 109 | 110 | simple-variable 111 | 112 | name 113 | variable.other.shell.makefile 114 | match 115 | \$\$?\w+ 116 | patterns 117 | 118 | 119 | variables 120 | 121 | patterns 122 | 123 | 124 | include 125 | #shell-variable-reference 126 | 127 | 128 | include 129 | #variable-reference 130 | 131 | 132 | include 133 | #simple-variable 134 | 135 | 136 | 137 | double-quoted-string 138 | 139 | name 140 | string.quoted.double.makefile 141 | begin 142 | " 143 | end 144 | " 145 | patterns 146 | 147 | 148 | include 149 | #escaped-char 150 | 151 | 152 | 153 | single-quoted-string 154 | 155 | name 156 | string.quoted.single.makefile 157 | begin 158 | ' 159 | end 160 | ' 161 | patterns 162 | 163 | 164 | include 165 | #escaped-char 166 | 167 | 168 | 169 | backtick-subshell 170 | 171 | name 172 | string.interpolated.backtick.makefile 173 | begin 174 | ` 175 | end 176 | ` 177 | patterns 178 | 179 | 180 | include 181 | source.shell 182 | 183 | 184 | include 185 | #variables 186 | 187 | 188 | 189 | substitution 190 | 191 | name 192 | string.interpolated.substitution.automake 193 | match 194 | @\w+@ 195 | patterns 196 | 197 | 198 | no-subst-comment 199 | 200 | name 201 | comment.line.double-number-sign.automake 202 | begin 203 | ^## 204 | end 205 | $ 206 | patterns 207 | 208 | 209 | comment 210 | 211 | name 212 | comment.line.number-sign.automake 213 | begin 214 | # 215 | end 216 | $ 217 | patterns 218 | 219 | 220 | include 221 | #substitution 222 | 223 | 224 | 225 | escaped-newline 226 | 227 | name 228 | constant.character.escape.automake 229 | match 230 | \\$ 231 | patterns 232 | 233 | 234 | flags-assignment 235 | 236 | name 237 | meta.assignment.flags.automake 238 | begin 239 | ^ *((?:AM_)?(?:C|CCAS|CPP|CXX|F|GCJ|JAVAC|L|LD|LIBTOOL|(?:[A-Z]+_)?LOG|MAKEINFO(?:HTML)?|OBJC|R|UPC|VALA|Y)FLAGS)\s*([\+\?:]?=) 240 | end 241 | (?<!\\)\n$ 242 | beginCaptures 243 | 244 | 1 245 | 246 | name 247 | keyword.other.flags.automake 248 | 249 | 2 250 | 251 | name 252 | keyword.operator.assignment.automake 253 | 254 | 255 | patterns 256 | 257 | 258 | include 259 | #assignment-rhs 260 | 261 | 262 | 263 | keyword-assignment 264 | 265 | name 266 | meta.assignment.keyword.automake 267 | begin 268 | ^ *(AM_(?:DEFAULT_SOURCE_EXT|DISTCHECK_CONFIGURE_FLAGS|TESTS_(?:ENVIRONMENT|FD_REDIRECT))|AUTOMAKE_OPTIONS|BUILT_SOURCES|CC|CLASSPATH_ENV|(?:DIST|MAINTAINER|MOSTLY)?CLEANFILES|COMPILE|(?:CXX|FC|OBJC|UPC)(?:COMPILE|LINK)?|DEFAULT_INCLUDES|DEFS|DVIPS|ETAGS_ARGS|EXTRA_DIST|F77(?:COMPILE)?|FLINK|INCLUDE|JAVAC|JAVAROOT|LIBS|LINK|(?:[A-Z]+_)?LOG_COMPILER|MAKEINFO(?:HTML)?|(?:OMIT|TAGS)_DEPENDENCIES|(?:DIST_)?SUBDIRS|SUFFIXES|TESTS(?:_ENVIRONMENT)?|TEXI2(?:DVI|PDF)|TEXINFO_TEX|VALAC)\s*([\+\?:]?=) 269 | end 270 | (?<!\\)\n$ 271 | beginCaptures 272 | 273 | 1 274 | 275 | name 276 | keyword.other.automake 277 | 278 | 2 279 | 280 | name 281 | keyword.operator.assignment.automake 282 | 283 | 284 | patterns 285 | 286 | 287 | include 288 | #assignment-rhs 289 | 290 | 291 | 292 | primary-assignment 293 | 294 | name 295 | meta.assignment.primary.automake 296 | begin 297 | ^ *(?:((?:(?:(?:no)?dist|no(?:base|trans))_)*)(?:(noinst|check|EXTRA)|(s?bin|(?:pkg)?lib(?:exec)?|(?:pkg)?data|(?:pkg|old)?include|dataroot|sysconf|(?:shared|local)state|doc|info|html|dvi|pdf|ps|lisp|locale|man[1-8]?(?:ext)?|src|(?:pkg)?python|(?:pkg)?pyexec)|([\w@]+))(_(?:PROGRAMS|(?:LT)?LIBRARIES|LISP|PYTHON|JAVA|SCRIPTS|DATA|HEADERS|MANS|TEXINFOS)))\s*([\+\?:]?=) 298 | end 299 | (?<!\\)\n$ 300 | beginCaptures 301 | 302 | 1 303 | 304 | name 305 | keyword.other.prefix.automake 306 | 307 | 2 308 | 309 | name 310 | keyword.other.nondir-target.automake 311 | 312 | 3 313 | 314 | name 315 | keyword.other.dir-target.automake 316 | 317 | 4 318 | 319 | name 320 | variable.other.dir-target.automake 321 | 322 | 5 323 | 324 | name 325 | storage.type.primary.automake 326 | 327 | 6 328 | 329 | name 330 | keyword.operator.assignment.automake 331 | 332 | 333 | patterns 334 | 335 | 336 | include 337 | #assignment-rhs 338 | 339 | 340 | 341 | secondary-assignment 342 | 343 | name 344 | meta.assignment.secondary.automake 345 | begin 346 | ^ *((?:(?:(?:no)?dist|no(?:base|trans)|EXTRA)_)*)([\w@]+)(_(?:AR|DEPENDENCIES|LDADD|LIBADD|LINK|SHORTNAME|SOURCES|(?:C|CCAS|CPP|CXX|F|GCJ|JAVAC|L|LD|LIBTOOL|(?:[A-Z]+_)?LOG|MAKEINFO(?:HTML)?|OBJC|R|UPC|VALA|Y)FLAGS))\s*([\+\?:]?=) 347 | end 348 | (?<!\\)\n$ 349 | beginCaptures 350 | 351 | 1 352 | 353 | name 354 | keyword.other.prefix.automake 355 | 356 | 2 357 | 358 | name 359 | variable.other.canonicalized-program-name.automake 360 | 361 | 3 362 | 363 | name 364 | keyword.other.secondary.automake 365 | 366 | 4 367 | 368 | name 369 | keyword.operator.assignment.automake 370 | 371 | 372 | patterns 373 | 374 | 375 | include 376 | #assignment-rhs 377 | 378 | 379 | 380 | dir-assignment 381 | 382 | name 383 | meta.assignment.directory.automake 384 | begin 385 | ^ *([\w@]+)(dir)\s*([\+\?:]?=) 386 | end 387 | (?<!\\)\n$ 388 | beginCaptures 389 | 390 | 1 391 | 392 | name 393 | variable.other.directory.automake 394 | 395 | 2 396 | 397 | name 398 | keyword.other.automake 399 | 400 | 3 401 | 402 | name 403 | keyword.operator.assignment.automake 404 | 405 | 406 | patterns 407 | 408 | 409 | include 410 | #assignment-rhs 411 | 412 | 413 | 414 | special-assignment 415 | 416 | patterns 417 | 418 | 419 | include 420 | #flags-assignment 421 | 422 | 423 | include 424 | #keyword-assignment 425 | 426 | 427 | include 428 | #primary-assignment 429 | 430 | 431 | include 432 | #secondary-assignment 433 | 434 | 435 | include 436 | #dir-assignment 437 | 438 | 439 | 440 | assignment-rhs 441 | 442 | patterns 443 | 444 | 445 | include 446 | #automatic-variable 447 | 448 | 449 | include 450 | #variables 451 | 452 | 453 | include 454 | #escaped-char 455 | 456 | 457 | include 458 | #double-quoted-string 459 | 460 | 461 | include 462 | #single-quoted-string 463 | 464 | 465 | include 466 | #backtick-subshell 467 | 468 | 469 | include 470 | #substitution 471 | 472 | 473 | include 474 | #escaped-newline 475 | 476 | 477 | include 478 | #comment 479 | 480 | 481 | 482 | 483 | patterns 484 | 485 | 486 | include 487 | #no-subst-comment 488 | 489 | 490 | include 491 | #comment 492 | 493 | 494 | include 495 | #special-assignment 496 | 497 | 498 | name 499 | meta.assignment.automake 500 | begin 501 | ^([a-zA-Z_@][\w@]*)\s*([\+\?:]?=) 502 | end 503 | (?<!\\)\n$ 504 | beginCaptures 505 | 506 | 1 507 | 508 | name 509 | variable.other.automake 510 | 511 | 2 512 | 513 | name 514 | keyword.operator.assignment.automake 515 | 516 | 517 | patterns 518 | 519 | 520 | include 521 | #assignment-rhs 522 | 523 | 524 | include 525 | #comment 526 | 527 | 528 | 529 | 530 | include 531 | source.makefile2 532 | 533 | 534 | include 535 | #substitution 536 | 537 | 538 | 539 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | These are the changelogs for vscode_autotools. 4 | 5 | ## v0.2.0 (5 March 2023) 6 | 7 | Since ptomato/sublime_autotools has moved to a YAML-based grammar and that most 8 | of the bugs that were fixed in my fork have been ported back to 9 | ptomato/sublime_autotools, I decided to revert to ptomato/sublime_autotools's 10 | YAML grammar. This means that the grammar may change a bit. Please let me know 11 | if it does. 12 | 13 | ## v0.1.0 14 | 15 | - complete PKG macro family. Change proposed by jannick0 (initially 16 | proposed at ) 17 | 18 | ## v0.0.9 19 | 20 | - Add [AC_CONFIG_MACRO_DIRS] provided by `automake` which surprisingly 21 | exists together with `autoconf`'s [AC_CONFIG_MACRO_DIR]. Change proposed 22 | by jannick0. 23 | - (internal) add the `npm start -- --json` feature that allows people more 24 | familiar with json to generate tmLanguage from the json file instead of 25 | the yaml one. 26 | 27 | [ac_config_macro_dirs]: https://www.gnu.org/software/automake/manual/html_node/Local-Macros.html 28 | [ac_config_macro_dir]: https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Input.html#Input. 29 | 30 | ## v0.0.7 31 | 32 | - Autoconf M4 (configure.ac): fix \" not being properly escaped in a string. 33 | Note for now, that variables won't (for some reason) be highlighted in 34 | strings. I couldn't find why. 35 | 36 | ## v0.0.6 37 | 38 | - Automake: fix comments not being highlighted when it starts at the beginning 39 | of a line and is interleaved with a recipe. 40 | 41 | ## v0.0.5 42 | 43 | - Automake grammar: fixed bug with `foo: $(VAR:%.h=%.h)` 44 | - Makefile2: re-include it into the extension. The Automake grammar is actually 45 | working better using makefile2. 46 | - Many small improvements to Makefile2 and Automake, e.g., `$(if a,b)` 47 | properly colored. 48 | - Moved from JSON grammar files to YAML. 49 | 50 | ## v0.0.4 51 | 52 | - Use vscode's default Makefile syntax grammar file instead of the sublime's 53 | one (Makefile2). This is because Makefile2 was buggy and vscode's one works 54 | just fine. 55 | 56 | ## v0.0.3 57 | 58 | - Automake: fix a bug with assigments followed by a comment 59 | - added 'npm start'for rebuilding the tmLanguage files from the JSON-tmLanguage 60 | files. You may observe some changes in grammar because of this, please tell 61 | me if it is the case! 62 | 63 | ## v0.0.2 64 | 65 | - Fixed the VSCode-version of Makefile that was shadowed by Makefile2, thus 66 | making it impossible to select the VSCode-provided Makefile highlighting. 67 | - Fixed line comments (`#` instead of `//`) 68 | - Removed block comments (block comments are not available in makefiles) 69 | - added an icon, because we all kind of like nice icons (Twitter, CC 3.0 BY) 70 | 71 | ## v0.0.1 72 | 73 | - Initial release. I disabled the Makefile2 part that was developped in 74 | the upstream project ([sublime_autotools]) because the Makefile support of 75 | vscode seems better (but I didn't really dig much to understand why). 76 | 77 | [sublime_autotools]: https://github.com/ptomato/sublime_autotools 78 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Sublime Autotools # 2 | 3 | This package is considered stable, with occasional bug fixes. 4 | If you find a bug, a pull request is both greatly appreciated and the 5 | fastest way to get the bug fixed. 6 | 7 | ## Testing your changes ## 8 | 9 | The best way to make changes to this package and test them, is to make a 10 | link to your Git checkout in the Packages directory in your Sublime Text 11 | configuration dir. 12 | That way, the files in your checkout directory will override the ones in 13 | the installed package. 14 | Read more about how this works in "Overriding Files From a Zipped 15 | Package" on https://www.sublimetext.com/docs/3/packages.html. 16 | 17 | For example, on macOS, make the link like this: 18 | ```sh 19 | ln -s ~/path/to/sublime_autotools ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/Autotools 20 | ``` 21 | 22 | ## Creating a pull request ## 23 | 24 | To create a pull request, make sure you have updated all the necessary 25 | files. 26 | If you change one of the `.YAML-tmLanguage` files, you should regenerate 27 | and commit the `.tmLanguage` PList file as well. 28 | The best way to do this is to install the "PackageDev" package in 29 | Sublime Text. 30 | When you have changed the `.YAML-tmLanguage` file, use PackageDev to 31 | regenerate the other one. 32 | (Shift+Ctrl+P, "PackageDev: Convert (YAML, JSON, PList) to...") 33 | -------------------------------------------------------------------------------- /DEVELOPMENT.md: -------------------------------------------------------------------------------- 1 | # Contributing to vscode_autotools 2 | 3 | ## Debugging why the grammar is off 4 | 5 | To find out why the syntax highlighting is off, turn on the 6 | command "Developer: Inspect Editor Grammar Tokens and Scopes": 7 | 8 | ![vscode-grammar-tokens-and-scopes-hover](https://user-images.githubusercontent.com/2195781/105803142-23334980-5f9d-11eb-8fcb-4feee8d27c04.png) 9 | 10 | Then you will see exactly in which scope the syntax highlighting fails: 11 | 12 | ![vscode-inspect-editor-tokens-and-scopes](https://user-images.githubusercontent.com/2195781/105803144-23cbe000-5f9d-11eb-894a-6548d0889064.png) 13 | 14 | To try to fix the grammar issue, you can clone and run the cloned folder 15 | as the only extension: 16 | 17 | ```sh 18 | git clone https://github.com/maelvalais/vscode_autotools.git 19 | cd vscode_autotools 20 | npm install && npm start 21 | code --disable-extensions --extensionDevelopmentPath=$PWD 22 | ``` 23 | 24 | ## Development 25 | 26 | In order to hack this vscode extension, first remove the extension from 27 | inside vscode. Then: 28 | 29 | ```sh 30 | git clone https://github.com/maelvalais/vscode_autotools.git 31 | cd vscode_autotools 32 | npm install 33 | npm start 34 | ``` 35 | 36 | To run a new instance of VSCode with the modified extension: 37 | 38 | ```sh 39 | # From inside the vscode_autotools folder you just cloned: 40 | code --disable-extensions --extensionDevelopmentPath=$PWD 41 | ``` 42 | 43 | Using `npm start`, the `.YAML-tmLanguage` files are automatically built 44 | into `.tmLanguage` and `.JSON-tmLanguage`. Whenever you change the YAML 45 | files, it will rebuild the JSON and YAML files. Then do ⇧⌘P and `Reload Window` to observe the changes on a m4/Makefile/Makefile.am file. 46 | 47 | You can use `npm start -- --json` in order to use the JSON-tmLanguage files 48 | as the source, in which case `.YAML-tmLanguage` and `.tmLanguage` will be 49 | generated from the json file. 50 | 51 | I chose to convert from JSON to YAML for three reasons: YAML is way less 52 | verbose, does not need two backslashes for each backslash and has proper 53 | comments. In order to have a proper Yaml autocompletion (I know everybody 54 | loves the vscode's JSON autocompletion and schema helpers), I recommend to 55 | install the Red Hat YAML extension and add the following to your settings: 56 | 57 | ```json 58 | "yaml.schemas": { 59 | "https://cdn.rawgit.com/martinring/tmlanguage/master/tmlanguage.json": "*.YAML-tmLanguage" 60 | } 61 | ``` 62 | 63 | ## Publishing to vsce & secrets 64 | 65 | Before publishing, I go into package.json and bump the version and commit 66 | that. I also `git tag` with that same version. 67 | 68 | ### For publishing to the official extension marketplace 69 | 70 | **Secret required**: `VSCE_TOKEN` (stored in @maelvls's 1Password) 71 | 72 | ```sh 73 | export VSCE_TOKEN= 74 | npm install -g vsce 75 | cat < ~/.vsce 76 | {"publishers":[{"name":"maelvalais","pat":"$VSCE_TOKEN"}]} 77 | EOF 78 | vsce publish 79 | ``` 80 | 81 | > Note: I created the [publisher id](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) "maelvalais" with 82 | > 83 | > ```sh 84 | > vsce create-publisher maelvalais 85 | > ``` 86 | 87 | ### For publishing to open-vsce 88 | 89 | **Secret required**: `OVSX_PAT` (stored in @maelvls's 1Password) 90 | 91 | ```sh 92 | export OVSX_PAT= 93 | npm install -g ovsx 94 | ovsx publish 95 | ``` 96 | 97 | > Note: I created the [namespace](https://open-vsx.org/user-settings/namespaces) "maelvalais" with 98 | > 99 | > ```sh 100 | > ovsx create-namespace maelvalais 101 | > ``` 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /Makefile2.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | --- 3 | uuid: FF1825E8-6B1C-11D9-B883-000D93589AF6 4 | name: Makefile 5 | scopeName: source.makefile2 6 | fileTypes: 7 | - make 8 | - GNUmakefile 9 | - makefile 10 | - Makefile 11 | - OCamlMakefile 12 | - mak 13 | - mk 14 | 15 | repository: 16 | escaped-char: 17 | name: constant.character.escape.makefile 18 | match: \\. 19 | patterns: [] 20 | 21 | variable-reference: 22 | begin: \$\( 23 | end: \) 24 | name: string.interpolated.makefile 25 | contentName: variable.other.makefile 26 | patterns: 27 | - include: $self 28 | - name: string.other.substitution.makefile 29 | match: (:)[a-zA-Z0-9_%.]+(=)[a-zA-Z0-9_%.]+ 30 | captures: 31 | '1': {name: keyword.operator.substitution.makefile} 32 | '2': {name: keyword.operator.substitution.makefile} 33 | - name: meta.scope.function.makefile 34 | begin: "(?<=\\$\\()(addprefix|addsuffix|and|basename|call|dir|error|\ 35 | eval|file|filter(-out)?|findstring|firstword|flavor|foreach|guile|\ 36 | if|info|join|notdir|or|origin|patsubst|shell|sort|strip|subst|suffix|\ 37 | value|warning|wildcard|words?)\\b" 38 | end: (?=\)) 39 | beginCaptures: 40 | '1': {name: support.function.makefile} 41 | contentName: string.interpolated.makefile 42 | patterns: 43 | - include: $self 44 | 45 | automatic-variable: 46 | name: variable.language.makefile 47 | match: \$([@% 2 | 3 | 4 | 5 | uuid 6 | FF1825E8-6B1C-11D9-B883-000D93589AF6 7 | name 8 | Makefile 9 | scopeName 10 | source.makefile2 11 | fileTypes 12 | 13 | make 14 | GNUmakefile 15 | makefile 16 | Makefile 17 | OCamlMakefile 18 | mak 19 | mk 20 | 21 | repository 22 | 23 | escaped-char 24 | 25 | name 26 | constant.character.escape.makefile 27 | match 28 | \\. 29 | patterns 30 | 31 | 32 | variable-reference 33 | 34 | begin 35 | \$\( 36 | end 37 | \) 38 | name 39 | string.interpolated.makefile 40 | contentName 41 | variable.other.makefile 42 | patterns 43 | 44 | 45 | include 46 | $self 47 | 48 | 49 | name 50 | string.other.substitution.makefile 51 | match 52 | (:)[a-zA-Z0-9_%.]+(=)[a-zA-Z0-9_%.]+ 53 | captures 54 | 55 | 1 56 | 57 | name 58 | keyword.operator.substitution.makefile 59 | 60 | 2 61 | 62 | name 63 | keyword.operator.substitution.makefile 64 | 65 | 66 | 67 | 68 | name 69 | meta.scope.function.makefile 70 | begin 71 | (?<=\$\()(addprefix|addsuffix|and|basename|call|dir|error|eval|file|filter(-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|notdir|or|origin|patsubst|shell|sort|strip|subst|suffix|value|warning|wildcard|words?)\b 72 | end 73 | (?=\)) 74 | beginCaptures 75 | 76 | 1 77 | 78 | name 79 | support.function.makefile 80 | 81 | 82 | contentName 83 | string.interpolated.makefile 84 | patterns 85 | 86 | 87 | include 88 | $self 89 | 90 | 91 | 92 | 93 | 94 | automatic-variable 95 | 96 | name 97 | variable.language.makefile 98 | match 99 | \$([@%<?^+*]|\([@*%<^?][DF]\)) 100 | patterns 101 | 102 | 103 | shell-variable-reference 104 | 105 | begin 106 | \$\{ 107 | end 108 | \} 109 | contentName 110 | variable.other.shell.makefile 111 | patterns 112 | 113 | 114 | simple-variable 115 | 116 | name 117 | variable.other.shell.makefile 118 | match 119 | \$\$?\w+ 120 | patterns 121 | 122 | 123 | variables 124 | 125 | patterns 126 | 127 | 128 | include 129 | #shell-variable-variable 130 | 131 | 132 | include 133 | #variable-reference 134 | 135 | 136 | include 137 | #simple-variable 138 | 139 | 140 | 141 | double-quoted-string 142 | 143 | name 144 | string.quoted.double.makefile 145 | begin 146 | " 147 | end 148 | " 149 | patterns 150 | 151 | 152 | include 153 | #escaped-char 154 | 155 | 156 | 157 | single-quoted-string 158 | 159 | name 160 | string.quoted.single.makefile 161 | begin 162 | ' 163 | end 164 | ' 165 | patterns 166 | 167 | 168 | include 169 | #escaped-char 170 | 171 | 172 | 173 | backtick-subshell 174 | 175 | name 176 | string.interpolated.backtick.makefile 177 | begin 178 | ` 179 | end 180 | ` 181 | patterns 182 | 183 | 184 | include 185 | source.shell 186 | 187 | 188 | include 189 | #variables 190 | 191 | 192 | 193 | comment 194 | 195 | name 196 | comment.line.number-sign.makefile 197 | begin 198 | # 199 | end 200 | $\n? 201 | beginCaptures 202 | 203 | 0 204 | 205 | name 206 | punctuation.definition.comment.makefile 207 | 208 | 209 | patterns 210 | 211 | 212 | name 213 | punctuation.separator.continuation.makefile 214 | match 215 | (?<!\\)\\$\n 216 | 217 | 218 | 219 | assignment 220 | 221 | name 222 | meta.assignment.makefile 223 | begin 224 | ^([a-zA-Z_][a-zA-Z0-9_]*)\s*([\+\?:]?=) 225 | beginCaptures 226 | 227 | 1 228 | 229 | name 230 | variable.other.makefile 231 | 232 | 2 233 | 234 | name 235 | keyword.operator.assignment.makefile 236 | 237 | 238 | end 239 | (?<!\\)\n$ 240 | patterns 241 | 242 | 243 | include 244 | #automatic-variable 245 | 246 | 247 | include 248 | #variables 249 | 250 | 251 | include 252 | #escaped-char 253 | 254 | 255 | include 256 | #double-quoted-string 257 | 258 | 259 | include 260 | #single-quoted-string 261 | 262 | 263 | include 264 | #backtick-subshell 265 | 266 | 267 | 268 | rule 269 | 270 | name 271 | meta.rule.makefile 272 | begin 273 | ^([^\t\:][^\:]*)\: 274 | end 275 | ^(?! ) 276 | beginCaptures 277 | 278 | 1 279 | 280 | name 281 | entity.name.function.rule.makefile 282 | 283 | 284 | patterns 285 | 286 | 287 | name 288 | meta.prerequisites.makefile 289 | begin 290 | (?<=:)(?=.) 291 | end 292 | ;|\n 293 | patterns 294 | 295 | 296 | include 297 | #variable-reference 298 | 299 | 300 | 301 | 302 | include 303 | #automatic-variable 304 | 305 | 306 | include 307 | #variable-reference 308 | 309 | 310 | include 311 | source.shell 312 | 313 | 314 | 315 | 316 | patterns 317 | 318 | 319 | include 320 | #comment 321 | 322 | 323 | include 324 | #assignment 325 | 326 | 327 | include 328 | #rule 329 | 330 | 331 | name 332 | keyword.control.makefile 333 | match 334 | ^(\-??include|if|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)\b 335 | 336 | 337 | include 338 | #variables 339 | 340 | 341 | 342 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Autotools syntax highlighting for VSCode 2 | 3 | The extension is available on both [vsce](https://marketplace.visualstudio.com/items?itemName=maelvalais.autoconf), 4 | and on [ovsx](https://open-vsx.org/extension/maelvalais/autoconf). 5 | 6 | This VSCode extension is a fork of the GitHub project [sublime_autotools][]. It 7 | includes syntax highlighting for Autoconf M4 (`.m4`, `configure.ac`...) and 8 | Automake files (e.g., `Makefile.am`). This extension uses the vscode's own 9 | Makefile syntax support for hghlighting makefile things in automake files. I 10 | chose to fork the [sublime project][sublime_autotools] in order to have an easy 11 | way of updating `vscode_autotools` (which is only a matter of `git merge`). 12 | 13 | Note that the sublime fork also has a Makefile2 (an alternate grammar file for 14 | Makefiles) but the standard vscode's Makefile support works much better 15 | (actually, the sublime's one is kind of buggy). 16 | 17 | The changes to vscode_autotools are documented in [CHANGELOG.md](CHANGELOG.md). 18 | 19 | See [DEVELOPMENT.md](DEVELOPMENT.md) for more information on how to debug and improve 20 | `vscode_autotools`. 21 | 22 | [sublime_autotools]: https://github.com/ptomato/sublime_autotools 23 | 24 | Note: For Autoconf M4 macros, the arguments may need to be highlighted in 25 | several different ways; some are shell code, some are plain text, and a few 26 | are C code. There are definitions for the builtin ones, but custom macros 27 | may not be highlighted correctly. 28 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const fs = require("fs"); 4 | const plist = require("plist"); 5 | const watch = require("glob-watcher"); 6 | const yaml = require("js-yaml"); 7 | const prettier = require("prettier"); 8 | 9 | /** 10 | * update takes care of updating outputs given an input. For example, it 11 | * updates the outputs a.JSON-tmLanguage and a.tmLanguage from an input 12 | * a.YAML-tmLanguage. 13 | * - input is for example the string `"filename.yaml"`. Extensions 14 | * must be one of .JSON-tmLanguage, .YAML-tmLanguage, .json or .yaml. 15 | * - outputs is for example `["filename.json","filename.tmLanguage"]` 16 | */ 17 | const update = function({ input, outputs }) { 18 | console.log(input + " -> " + outputs.join(", ")); 19 | try { 20 | let input_str = fs.readFileSync(input, "utf8"); 21 | let parsed = ""; 22 | if (input.match("\\.(YAML-tmLanguage|ya?ml)$")) { 23 | parsed = yaml.safeLoad(input_str); 24 | } else { 25 | throw ` error: input file ${input} is not in (YAML-tmLanguage | yaml | yml)`; 26 | } 27 | outputs.forEach(output => { 28 | let output_str = ""; 29 | if (output.match("\\.(YAML-tmLanguage|ya?ml)$")) { 30 | output_str = prettier.format(yaml.safeDump(parsed), { parser: "yaml" }); 31 | } else if (output.match("\\.tmLanguage$")) { 32 | output_str = plist.build(parsed); 33 | } else { 34 | throw ` error: output file ${output} is not in (YAML-tmLanguage | yaml | yml | tmLanguage)`; 35 | } 36 | fs.writeFileSync(output, output_str); 37 | }); 38 | } catch (e) { 39 | console.error(" error: " + e); 40 | } 41 | }; 42 | 43 | const input_prefixes = ["Autoconf", "Automake", "Makefile2"]; 44 | 45 | let mappings = []; 46 | 47 | mappings = input_prefixes.map(v => ({ 48 | input: v + ".YAML-tmLanguage", 49 | outputs: [v + ".tmLanguage"] 50 | })); 51 | 52 | let watchMode = false; 53 | const inputs = mappings.map(({ input }) => input); 54 | 55 | if (process.argv.includes("-w")) { 56 | console.log("Watching " + inputs.join(", ")); 57 | watchMode = true; 58 | } 59 | 60 | if (watchMode) { 61 | mappings.forEach(mapping => update(mapping)); 62 | // Raw chokidar instance 63 | const watcher = watch(inputs); 64 | // Listen for the 'change' event to get `path`/`stat` 65 | // No async completion available because this is the raw chokidar instance 66 | watcher.on("change", function(path, stat) { 67 | // `path` is the path of the changed file 68 | // `stat` is an `fs.Stat` object (not always available) 69 | update(mappings.filter(m => m.input == path)[0]); 70 | }); 71 | } else { 72 | mappings.forEach(mapping => update(mapping)); 73 | } 74 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maelvls/vscode_autotools/89aa79b4ac6e267a6ceef2dd2641029437ba7b72/icon.png -------------------------------------------------------------------------------- /language-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": { 3 | // symbol used for single line comment. Remove this entry if your language does not support line comments 4 | "lineComment": "#" 5 | }, 6 | // symbols used as brackets 7 | "brackets": [ 8 | ["{", "}"], 9 | ["[", "]"], 10 | ["(", ")"] 11 | ], 12 | // symbols that are auto closed when typing 13 | "autoClosingPairs": [ 14 | ["{", "}"], 15 | ["[", "]"], 16 | ["(", ")"], 17 | ["\"", "\""], 18 | ["'", "'"] 19 | ], 20 | // symbols that that can be used to surround a selection 21 | "surroundingPairs": [ 22 | ["{", "}"], 23 | ["[", "]"], 24 | ["(", ")"], 25 | ["\"", "\""], 26 | ["'", "'"] 27 | ] 28 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autoconf", 3 | "displayName": "autoconf", 4 | "description": "Syntax support for the Autoconf M4 and Automake files (Autotools)", 5 | "version": "0.2.1", 6 | "icon": "icon.png", 7 | "publisher": "maelvalais", 8 | "repository": "https://github.com/maelvalais/vscode_autotools", 9 | "license": "GPL-3.0-or-later", 10 | "engines": { 11 | "vscode": "^1.10.0" 12 | }, 13 | "categories": [ 14 | "Programming Languages" 15 | ], 16 | "contributes": { 17 | "languages": [ 18 | { 19 | "id": "m4", 20 | "aliases": [ 21 | "Autoconf M4", 22 | "m4" 23 | ], 24 | "extensions": [ 25 | "configure.ac", 26 | "configure.in", 27 | ".m4" 28 | ], 29 | "configuration": "./language-configuration.json" 30 | }, 31 | { 32 | "id": "automake", 33 | "aliases": [ 34 | "Automake", 35 | "automake" 36 | ], 37 | "extensions": [ 38 | ".am", 39 | ".am.inc", 40 | "Makefile.in" 41 | ], 42 | "configuration": "./language-configuration.json" 43 | }, 44 | { 45 | "id": "makefile2", 46 | "aliases": [ 47 | "Makefile2", 48 | "makefile2" 49 | ], 50 | "extensions": [], 51 | "configuration": "./language-configuration.json" 52 | } 53 | ], 54 | "grammars": [ 55 | { 56 | "language": "m4", 57 | "scopeName": "source.m4", 58 | "path": "./Autoconf.tmLanguage", 59 | "embeddedLanguages": { 60 | "source.shell": "shellscript" 61 | } 62 | }, 63 | { 64 | "language": "automake", 65 | "scopeName": "source.automake", 66 | "path": "./Automake.tmLanguage" 67 | }, 68 | { 69 | "language": "makefile2", 70 | "scopeName": "source.makefile2", 71 | "path": "./Makefile2.tmLanguage" 72 | } 73 | ] 74 | }, 75 | "devDependencies": { 76 | "glob-watcher": "^5.0.3", 77 | "husky": "^2.1.0", 78 | "js-yaml": "^3.13.1", 79 | "lint-staged": "^8.1.5", 80 | "plist": "latest", 81 | "prettier": "^1.17.0" 82 | }, 83 | "scripts": { 84 | "start": "node build.js -w", 85 | "build": "node build.js" 86 | }, 87 | "__metadata": { 88 | "id": "3ca928a4-41a2-409c-81be-e58c381fce5a", 89 | "publisherDisplayName": "maelvalais", 90 | "publisherId": "3f5c0d22-1c86-4a4a-89cf-469106f50752" 91 | }, 92 | "husky": { 93 | "hooks": { 94 | "pre-commit": "lint-staged" 95 | } 96 | }, 97 | "lint-staged": { 98 | "*.{js}": [ 99 | "prettier --write", 100 | "git add" 101 | ] 102 | } 103 | } 104 | --------------------------------------------------------------------------------