Something went wrong. Try again.
nix // yocaml
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803{ "fileTypes": [ "sh", "bash", "zsh", "bashrc", "bash_profile", "bash_login", "profile", "bash_logout", ".textmate_init" ], "firstLineMatch": "^#!.*\\b(bash|zsh|sh|tcsh)|^#.*-\\*-.*\\bshell-script\\b.*-\\*-", "repository": { "keyword": { "patterns": [ { "match": "(?<=^|;|&|\\s)(?:if|then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return|coproc)(?=\\s|;|&|$)", "name": "keyword.control.shell" }, { "match": "(?<=^|;|&|\\s)(?:export|declare|typeset|local|readonly)(?=\\s|;|&|$)", "name": "storage.modifier.shell" } ] }, "function-definition": { "patterns": [ { "begin": "(?<=^|;|&)\\s*(function)\\s+([^\\s<>;'\"\\\\|$&()]+)(?:\\s*(\\(\\)))?", "endCaptures": { "0": { "name": "punctuation.definition.function.shell" } }, "end": ";|&|\\n", "patterns": [{ "include": "$self" }], "name": "meta.function.shell", "beginCaptures": { "1": { "name": "storage.type.function.shell" }, "2": { "name": "entity.name.function.shell" }, "3": { "name": "punctuation.definition.arguments.shell" } } }, { "begin": "(?<=^|;|&)\\s*([^\\s<>;'\"\\\\|$&()]+)\\s*(\\(\\))", "endCaptures": { "0": { "name": "punctuation.definition.function.shell" } }, "end": ";|&|\\n", "patterns": [{ "include": "$self" }], "name": "meta.function.shell", "beginCaptures": { "1": { "name": "entity.name.function.shell" }, "2": { "name": "punctuation.definition.arguments.shell" } } } ] }, "herestring": { "patterns": [ { "match": "(<<<)\\s*((')[^']*('))", "name": "meta.herestring.shell", "captures": { "3": { "name": "punctuation.definition.string.begin.shell" }, "1": { "name": "keyword.operator.herestring.shell" }, "4": { "name": "punctuation.definition.string.end.shell" }, "2": { "name": "string.quoted.single.herestring.shell" } } }, { "match": "(<<<)\\s*((\")(\\\\(\"|\\\\)|[^\"])*(\"))", "name": "meta.herestring.shell", "captures": { "3": { "name": "punctuation.definition.string.begin.shell" }, "1": { "name": "keyword.operator.herestring.shell" }, "6": { "name": "punctuation.definition.string.end.shell" }, "2": { "name": "string.quoted.double.herestring.shell" } } }, { "match": "(<<<)\\s*(([^\\s\\\\]|\\\\.)+)", "name": "meta.herestring.shell", "captures": { "1": { "name": "keyword.operator.herestring.shell" }, "2": { "name": "string.unquoted.herestring.shell" } } } ] }, "pathname": { "patterns": [ { "match": "(?<=\\s|:|=|^)~", "name": "keyword.operator.tilde.shell" }, { "match": "\\*|\\?", "name": "keyword.operator.glob.shell" }, { "begin": "([?*+@!])(\\()", "endCaptures": { "1": { "name": "punctuation.definition.extglob.shell" } }, "end": "(\\))", "patterns": [{ "include": "$self" }], "name": "meta.structure.extglob.shell", "beginCaptures": { "1": { "name": "keyword.operator.extglob.shell" }, "2": { "name": "punctuation.definition.extglob.shell" } } } ] }, "pipeline": { "patterns": [ { "match": "(?<=^|;|&|\\s)(time)(?=\\s|;|&|$)", "name": "keyword.other.shell" }, { "match": "[|!]", "name": "keyword.operator.pipe.shell" } ] }, "compound-command": { "patterns": [ { "begin": "(\\[{2})", "end": "(\\]{2})", "patterns": [ { "include": "#logical-expression" }, { "include": "$self" } ], "name": "meta.scope.logical-expression.shell", "captures": { "1": { "name": "punctuation.definition.logical-expression.shell" } } }, { "begin": "(\\({2})", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "(\\){2})", "patterns": [{ "include": "#math" }], "name": "string.other.math.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "begin": "(\\()", "end": "(\\))", "patterns": [{ "include": "$self" }], "name": "meta.scope.subshell.shell", "captures": { "1": { "name": "punctuation.definition.subshell.shell" } } }, { "begin": "(?<=\\s|^)(\\{)(?=\\s|$)", "end": "(?<=^|;)\\s*(\\})", "patterns": [{ "include": "$self" }], "name": "meta.scope.group.shell", "captures": { "1": { "name": "punctuation.definition.group.shell" } } } ] }, "lines": { "patterns": [ { "match": "\\\\\\n", "name": "constant.character.escape.newline.shell" } ] }, "heredoc": { "patterns": [ { "end": "^\\t*(RUBY)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(RUBY)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.ruby.embedded.shell", "patterns": [{ "include": "source.ruby" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.ruby.shell" }, { "end": "^(RUBY)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(RUBY)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.ruby.embedded.shell", "patterns": [{ "include": "source.ruby" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.ruby.shell" }, { "end": "^\\t*(PYTHON)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(PYTHON)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.python.embedded.shell", "patterns": [{ "include": "source.python" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.python.shell" }, { "end": "^(PYTHON)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(PYTHON)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.python.embedded.shell", "patterns": [{ "include": "source.python" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.python.shell" }, { "end": "^\\t*(APPLESCRIPT)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(APPLESCRIPT)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.applescript.embedded.shell", "patterns": [{ "include": "source.applescript" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.applescript.shell" }, { "end": "^(APPLESCRIPT)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(APPLESCRIPT)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "source.applescript.embedded.shell", "patterns": [{ "include": "source.applescript" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.applescript.shell" }, { "end": "^\\t*(HTML)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(HTML)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.embedded.shell", "patterns": [{ "include": "text.html.basic" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.html.shell" }, { "end": "^(HTML)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(HTML)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.embedded.shell", "patterns": [{ "include": "text.html.basic" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.html.shell" }, { "end": "^\\t*(MARKDOWN)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(MARKDOWN)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.markdown.embedded.shell", "patterns": [{ "include": "text.html.markdown" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.markdown.shell" }, { "end": "^(MARKDOWN)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(MARKDOWN)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.markdown.embedded.shell", "patterns": [{ "include": "text.html.markdown" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.markdown.shell" }, { "end": "^\\t*(TEXTILE)(?=\\s|;|&|$)", "begin": "(<<)-\\s*(\"|'|)(TEXTILE)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.textile.embedded.shell", "patterns": [{ "include": "text.html.textile" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.no-indent.textile.shell" }, { "end": "^(TEXTILE)(?=\\s|;|&|$)", "begin": "(<<)\\s*(\"|'|)(TEXTILE)\\2", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "contentName": "text.html.textile.embedded.shell", "patterns": [{ "include": "text.html.textile" }], "captures": { "0": { "name": "punctuation.definition.string.shell" } }, "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "name": "string.unquoted.heredoc.textile.shell" }, { "begin": "(<<)-\\s*(\"|'|)\\\\?(\\w+)\\2", "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "end": "^\\t*(\\3)(?=\\s|;|&|$)", "name": "string.unquoted.heredoc.no-indent.shell", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "captures": { "0": { "name": "punctuation.definition.string.shell" } } }, { "begin": "(<<)\\s*(\"|'|)\\\\?(\\w+)\\2", "endCaptures": { "1": { "name": "keyword.control.heredoc-token.shell" } }, "end": "^(\\3)(?=\\s|;|&|$)", "name": "string.unquoted.heredoc.shell", "beginCaptures": { "1": { "name": "keyword.operator.heredoc.shell" }, "3": { "name": "keyword.control.heredoc-token.shell" } }, "captures": { "0": { "name": "punctuation.definition.string.shell" } } } ] }, "string": { "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.shell" }, { "begin": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "'", "name": "string.quoted.single.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "begin": "\\$?\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "\"", "patterns": [ { "match": "\\\\[\\$`\"\\\\\\n]", "name": "constant.character.escape.shell" }, { "include": "#variable" }, { "include": "#interpolation" } ], "name": "string.quoted.double.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "begin": "\\$'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "'", "patterns": [ { "match": "\\\\(a|b|e|f|n|r|t|v|\\\\|')", "name": "constant.character.escape.ansi-c.shell" }, { "match": "\\\\[0-9]{3}", "name": "constant.character.escape.octal.shell" }, { "match": "\\\\x[0-9a-fA-F]{2}", "name": "constant.character.escape.hex.shell" }, { "match": "\\\\c.", "name": "constant.character.escape.control-char.shell" } ], "name": "string.quoted.single.dollar.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } } ] }, "logical-expression": { "patterns": [ { "comment": "do we want a special rule for ( expr )?", "match": "=[=~]?|!=?|<|>|&&|\\|\\|", "name": "keyword.operator.logical.shell" }, { "match": "(?<!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])", "name": "keyword.operator.logical.shell" } ] }, "comment": { "begin": "(^[ \\t]+)?(?<!\\S)(?=#)(?!#\\{)", "end": "(?!\\G)", "patterns": [ { "begin": "^(#!)", "end": "\\n", "name": "comment.line.shebang.shell", "beginCaptures": { "1": { "name": "punctuation.definition.comment.line.shebang.shell" } } }, { "begin": "#", "end": "\\n", "name": "comment.line.number-sign.shell", "beginCaptures": { "0": { "name": "punctuation.definition.comment.shell" } } } ], "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.shell" } } }, "support": { "patterns": [ { "match": "(?<=^|;|&|\\s)(?::|\\.)(?=\\s|;|&|$)", "name": "support.function.builtin.shell" }, { "match": "(?<=^|;|&|\\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|mapfile|popd|printf|pushd|pwd|read(array)?|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\\s|;|&|$)", "name": "support.function.builtin.shell" } ] }, "math": { "patterns": [ { "include": "#variable" }, { "match": "\\+{1,2}|-{1,2}|!|~|\\*{1,2}|\/|%|<[<=]?|>[>=]?|==|!=|\\^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*\/%+\\-&^|]=|<<=|>>=", "name": "keyword.operator.arithmetic.shell" }, { "match": "0[xX]\\h+", "name": "constant.numeric.hex.shell" }, { "match": "0\\d+", "name": "constant.numeric.octal.shell" }, { "match": "\\d{1,2}#[0-9a-zA-Z@_]+", "name": "constant.numeric.other.shell" }, { "match": "\\d+", "name": "constant.numeric.integer.shell" } ] }, "variable": { "patterns": [ { "match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*", "name": "variable.other.normal.shell", "captures": { "1": { "name": "punctuation.definition.variable.shell" } } }, { "match": "(\\$)[-*@#?$!0_]", "name": "variable.other.special.shell", "captures": { "1": { "name": "punctuation.definition.variable.shell" } } }, { "match": "(\\$)[1-9]", "name": "variable.other.positional.shell", "captures": { "1": { "name": "punctuation.definition.variable.shell" } } }, { "begin": "\\$\\{", "end": "\\}", "patterns": [ { "match": "!|:[-=?+]?|\\*|@|#{1,2}|%{1,2}|\/", "name": "keyword.operator.expansion.shell" }, { "match": "(\\[)([^\\]]+)(\\])", "captures": { "1": { "name": "punctuation.section.array.shell" }, "3": { "name": "punctuation.section.array.shell" } } }, { "include": "#string" }, { "include": "#variable" }, { "include": "#interpolation" } ], "name": "variable.other.bracket.shell", "captures": { "0": { "name": "punctuation.definition.variable.shell" } } } ] }, "list": { "patterns": [ { "match": ";|&&|&|\\|\\|", "name": "keyword.operator.list.shell" } ] }, "redirection": { "patterns": [ { "begin": "[><]\\(", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "\\)", "patterns": [{ "include": "$self" }], "name": "string.interpolated.process-substitution.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "comment": "valid: &>word >&word >word [n]>&[n] [n]<word [n]>word [n]>>word [n]<&word (last one is duplicate)", "match": "&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>", "name": "keyword.operator.redirect.shell" } ] }, "interpolation": { "patterns": [ { "begin": "\\$\\({2}", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "\\){2}", "patterns": [{ "include": "#math" }], "name": "string.other.math.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "begin": "`", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "`", "patterns": [ { "match": "\\\\[`\\\\$]", "name": "constant.character.escape.shell" }, { "begin": "(?<=^|;|&|\\s|`)(#)(?!\\{)", "end": "(?=`)|\\n", "name": "comment.line.number-sign.shell", "beginCaptures": { "1": { "name": "punctuation.definition.comment.shell" } } }, { "include": "$self" } ], "name": "string.interpolated.backtick.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } }, { "begin": "\\$\\(", "endCaptures": { "0": { "name": "punctuation.definition.string.end.shell" } }, "end": "\\)", "patterns": [ { "begin": "(?<=^|;|&|\\s|\\()(#)(?!\\{)", "end": "(?=\\))|\\n", "name": "comment.line.number-sign.shell", "beginCaptures": { "1": { "name": "punctuation.definition.comment.shell" } } }, { "include": "$self" } ], "name": "string.interpolated.dollar.shell", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.shell" } } } ] }, "loop": { "patterns": [ { "begin": "(?<=^|;|&|\\s)(for)\\s+(?=\\({2})", "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))", "patterns": [{ "include": "$self" }], "name": "meta.scope.for-loop.shell", "captures": { "1": { "name": "keyword.control.shell" } } }, { "begin": "(?<=^|;|&|\\s)(for)\\s+([^\\s\\\\]+)(?=\\s|;|&|$)", "endCaptures": { "1": { "name": "keyword.control.shell" } }, "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))", "patterns": [{ "include": "$self" }], "name": "meta.scope.for-in-loop.shell", "beginCaptures": { "1": { "name": "keyword.control.shell" }, "2": { "name": "variable.other.loop.shell" } } }, { "begin": "(?<=^|;|&|\\s)(while|until)(?=\\s|;|&|$)", "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))", "patterns": [{ "include": "$self" }], "name": "meta.scope.while-loop.shell", "captures": { "1": { "name": "keyword.control.shell" } } }, { "begin": "(?<=^|;|&|\\s)(select)\\s+([^\\s\\\\]+)(?=\\s|;|&|$)", "endCaptures": { "1": { "name": "keyword.control.shell" } }, "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))", "patterns": [{ "include": "$self" }], "name": "meta.scope.select-block.shell", "beginCaptures": { "1": { "name": "keyword.control.shell" }, "2": { "name": "variable.other.loop.shell" } } }, { "begin": "(?<=^|;|&|\\s)(case)(?=\\s|;|&|$)", "end": "(?<=^|;|&|\\s)(esac)(?=\\s|;|&|$|\\))", "patterns": [ { "begin": "(?<=^|;|&|\\s)(?:in)(?=\\s|;|&|$)", "end": "(?<=^|;|&|\\s)(?=(?:esac)(?:\\s|;|&|$|\\)))", "patterns": [ { "include": "#comment" }, { "include": "#case-clause" }, { "include": "$self" } ], "name": "meta.scope.case-body.shell", "beginCaptures": { "1": { "name": "keyword.control.shell" } } }, { "include": "$self" } ], "name": "meta.scope.case-block.shell", "captures": { "1": { "name": "keyword.control.shell" } } }, { "end": "(?<=^|;|&|\\s)(fi)(?=\\s|;|&|$|\\))", "begin": "(^|(?<=[&;|]))\\s*(if)(?=\\s|;|&|$)", "beginCaptures": { "2": { "name": "keyword.control.shell" } }, "patterns": [{ "include": "$self" }], "comment": "Restrict match to avoid matching in lines like `dd if=\/dev\/sda1 …`", "endCaptures": { "1": { "name": "keyword.control.shell" } }, "name": "meta.scope.if-block.shell" } ] }, "case-clause": { "patterns": [ { "begin": "(?=\\S)", "endCaptures": { "0": { "name": "punctuation.terminator.case-clause.shell" } }, "end": ";;", "patterns": [ { "begin": "(\\(|(?=\\S))", "end": "\\)", "patterns": [ { "match": "\\|", "name": "punctuation.separator.pipe-sign.shell" }, { "include": "#string" }, { "include": "#variable" }, { "include": "#interpolation" }, { "include": "#pathname" } ], "name": "meta.scope.case-pattern.shell", "captures": { "0": { "name": "punctuation.definition.case-pattern.shell" } } }, { "begin": "(?<=\\))", "end": "(?=;;)", "patterns": [{ "include": "$self" }], "name": "meta.scope.case-clause-body.shell" } ], "name": "meta.scope.case-clause.shell" } ] } }, "keyEquivalent": "^~S", "uuid": "DDEEA3ED-6B1C-11D9-8B10-000D93589AF6", "patterns": [ { "include": "#comment" }, { "include": "#pipeline" }, { "include": "#list" }, { "include": "#compound-command" }, { "include": "#loop" }, { "include": "#string" }, { "include": "#function-definition" }, { "include": "#variable" }, { "include": "#interpolation" }, { "include": "#heredoc" }, { "include": "#herestring" }, { "include": "#redirection" }, { "include": "#pathname" }, { "include": "#keyword" }, { "include": "#support" }, { "include": "#lines" } ], "scopeName": "source.shell"}