{ "name": "sed", "scopeName": "source.sed", "patterns": [ { "name": "comment.line.number-sign.hashbang.source.sed", "begin": "\\A#!", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment.source.sed" } } }, { "include": "#main" } ], "repository": { "addresses": { "patterns": [ { "name": "meta.address.numbered.range.source.sed", "match": "([0-9]+)\\s*(,)\\s*([0-9]+)(?:\\s*(!))?", "captures": { "1": { "name": "constant.numeric.integer.start-index.source.sed" }, "2": { "name": "keyword.operator.address.range.comma.source.sed" }, "3": { "name": "constant.numeric.integer.end-index.source.sed" }, "4": { "name": "keyword.operator.logical.not.negation.source.sed" } } }, { "name": "meta.address.numbered.range.step.gnu.source.sed", "match": "([0-9]+)\\s*(~)\\s*([0-9]+)(?:\\s*(!))?", "captures": { "1": { "name": "constant.numeric.integer.start-index.source.sed" }, "2": { "name": "keyword.operator.address.range.tilde.gnu.source.sed" }, "3": { "name": "constant.numeric.integer.step-size.source.sed" }, "4": { "name": "keyword.operator.logical.not.negation.source.sed" } } }, { "name": "meta.address.numbered.source.sed", "match": "([0-9]+)(?:\\s*(!))?", "captures": { "1": { "name": "constant.numeric.integer.line-index.source.sed" }, "2": { "name": "keyword.operator.logical.not.negation.source.sed" } } }, { "name": "meta.address.last-line.source.sed", "match": "\\$", "captures": { "0": { "name": "constant.language.anchor.last-line.source.sed" } } }, { "name": "meta.address.pattern.source.sed", "contentName": "string.regexp.address.source.sed", "begin": "/", "end": "(/)([IM]*)(?:\\s*(!))?|$", "patterns": [ { "include": "#regexp" } ], "beginCaptures": { "0": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "meta.flags.source.sed", "patterns": [ { "include": "#flags" } ] }, "3": { "name": "keyword.operator.logical.not.negation.source.sed" } } }, { "name": "meta.address.pattern.custom-delimiter.source.sed", "contentName": "string.regexp.address.source.sed", "begin": "\\\\(.)", "end": "(\\1)([IM]*)(?:\\s*(!))?|$", "patterns": [ { "include": "#regexp" } ], "beginCaptures": { "0": { "name": "punctuation.delimiter.address.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.address.end.source.sed" }, "2": { "name": "meta.modifier.flags.source.sed", "patterns": [ { "include": "#flags" } ] }, "3": { "name": "keyword.operator.logical.not.negation.source.sed" } } }, { "match": "(,)(\\s*(?:(\\+)|(~)))?\\s*([0-9]*)(?:\\s*(!))?", "captures": { "1": { "name": "keyword.operator.address.range.comma.source.sed" }, "2": { "name": "meta.address.range.nth-line.gnu.source.sed" }, "3": { "name": "keyword.operator.arithmetic.plus.gnu.source.sed" }, "4": { "name": "keyword.operator.arithmetic.tilde.gnu.source.sed" }, "5": { "name": "constant.numeric.integer.line-index.source.sed" }, "6": { "name": "keyword.operator.logical.not.negation.source.sed" } } } ] }, "braces": { "name": "meta.group.source.sed", "begin": "{", "end": "}", "patterns": [ { "include": "#main" } ], "beginCaptures": { "0": { "name": "punctuation.section.scope.begin.source.sed" } }, "endCaptures": { "0": { "name": "punctuation.section.scope.end.source.sed" } } }, "commands": { "patterns": [ { "name": "keyword.control.delete.command.source.sed", "match": "[Dd]" }, { "name": "keyword.control.print.command.source.sed", "match": "[Pp]" }, { "name": "keyword.control.replace-hold.command.source.sed", "match": "[Hh]" }, { "name": "keyword.control.replace-pattern.command.source.sed", "match": "[Gg]" }, { "name": "keyword.control.exchange.command.source.sed", "match": "x" }, { "name": "keyword.control.print.filename.gnu.source.sed", "match": "F" }, { "name": "keyword.control.skip.command.source.sed", "match": "n" }, { "name": "keyword.control.print.newline.source.sed", "match": "N" }, { "name": "keyword.control.print.line-number.source.sed", "match": "=" }, { "name": "keyword.control.zap.gnu.source.sed", "match": "z" }, { "match": "(l)(?:\\s*([0-9]+))?", "captures": { "1": { "name": "keyword.control.print.unambiguously.source.sed" }, "2": { "name": "variable.parameter.line-length.gnu.source.sed" } } }, { "match": "(?:(q)|(Q))(?:\\s*([0-9]+))?", "captures": { "1": { "name": "keyword.control.quit.command.source.sed" }, "2": { "name": "keyword.control.quit.silently.command.gnu.source.sed" }, "3": { "name": "variable.parameter.exit-code.gnu.source.sed" } } }, { "match": "(?:(r)|(R))\\s*(\\S.*)$", "captures": { "1": { "name": "keyword.control.read.file.command.source.sed" }, "2": { "name": "keyword.control.read.file.line.command.gnu.source.sed" }, "3": { "name": "string.unquoted.filename.source.sed" } } }, { "match": "(?:(w)|(W))\\s*(\\S.*)$", "captures": { "1": { "name": "keyword.control.write.file.command.source.sed" }, "2": { "name": "keyword.control.write.file.command.gnu.source.sed" }, "3": { "name": "string.unquoted.filename.source.sed" } } }, { "name": "meta.label.source.sed", "match": "(:)\\s*([^\\s;#}]+)", "captures": { "1": { "name": "storage.type.function.label.source.sed" }, "2": { "name": "entity.name.function.label.source.sed" } } }, { "name": "meta.branch.source.sed", "match": "(?:([bt])|(T))(?:\\s*([^\\s;#}]+))?", "captures": { "1": { "name": "keyword.control.branch.source.sed" }, "2": { "name": "keyword.control.branch.inverse.gnu.source.sed" }, "3": { "name": "entity.name.function.label.source.sed" } } }, { "name": "meta.execution.source.sed", "contentName": "string.unquoted.herestring.source.sed", "begin": "(e)\\s*", "end": "$", "patterns": [ { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.execute.source.sed" } } }, { "match": "(v)(?:\\s*([^\\s;#}]+))?", "captures": { "1": { "name": "keyword.control.version.gnu.source.sed" }, "2": { "name": "constant.other.version-string.source.sed" } } } ] }, "comment": { "patterns": [ { "contentName": "comment.line.number-sign.source.sed", "begin": "\\A(#)n", "end": "$", "beginCaptures": { "0": { "name": "keyword.control.directive.no-autoprint.source.sed" }, "1": { "name": "punctuation.definition.directive.source.sed" } } }, { "name": "comment.line.number-sign.source.sed", "begin": "#", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment.source.sed" } } } ] }, "escape": { "patterns": [ { "name": "constant.character.escape.newline.source.sed", "begin": "\\\\$\\s*", "end": "^" }, { "name": "constant.character.tab.source.sed", "match": "\\\\t" }, { "name": "constant.character.newline.source.sed", "match": "\\\\n" }, { "name": "constant.character.escape.source.sed", "match": "\\\\." } ] }, "flags": { "patterns": [ { "name": "keyword.operator.modifier.global.source.sed", "match": "g" }, { "name": "keyword.operator.modifier.print.source.sed", "match": "p" }, { "name": "keyword.operator.modifier.limit-match.source.sed", "match": "[0-9]+" }, { "match": "(w)\\s*([^;#}]*)", "captures": { "1": { "name": "keyword.operator.modifier.write.file.source.sed" }, "2": { "name": "string.unquoted.filename.source.sed" } } }, { "name": "keyword.operator.modifier.exec-shell.gnu.source.sed", "match": "e" }, { "name": "keyword.operator.modifier.ignore-case.gnu.source.sed", "match": "I|i" }, { "name": "keyword.operator.modifier.multi-line.gnu.source.sed", "match": "M|m" }, { "name": "invalid.illegal.unknown.flag.source.sed", "match": "[^;\\s#}gp0-9eIiMm]+" } ] }, "insertion": { "patterns": [ { "name": "meta.insertion.source.sed", "contentName": "string.unquoted.herestring.source.sed", "begin": "[aic](\\\\)$\\s*", "end": "$", "patterns": [ { "include": "#escape" } ], "beginCaptures": { "0": { "name": "keyword.control.insertion.command.source.sed" }, "1": { "name": "constant.character.escape.newline.source.sed" } } }, { "name": "meta.insertion.gnu.source.sed", "contentName": "string.unquoted.herestring.source.sed", "begin": "[aic]", "end": "$", "patterns": [ { "include": "#escape" } ], "beginCaptures": { "0": { "name": "keyword.control.insertion.command.source.sed" } } } ] }, "main": { "patterns": [ { "include": "#comment" }, { "include": "#substitution" }, { "include": "#transliteration" }, { "include": "#insertion" }, { "include": "#addresses" }, { "include": "#semicolon" }, { "include": "#braces" }, { "include": "#commands" } ] }, "reference": { "name": "variable.language.reference.source.sed", "match": "\\\\[0-9]" }, "regexp": { "patterns": [ { "name": "constant.language.wildcard.dot.match.any.source.sed", "match": "\\." }, { "name": "constant.language.anchor.line-start.source.sed", "match": "\\^" }, { "name": "constant.language.anchor.line-end.source.sed", "match": "\\$" }, { "name": "constant.language.quantifier.min-0.source.sed", "match": "\\*" }, { "name": "constant.language.quantifier.min-1.source.sed", "match": "\\\\?\\+" }, { "name": "constant.language.quantifier.max-1.source.sed", "match": "\\\\?\\?" }, { "name": "constant.language.alternation.disjunction.source.sed", "match": "\\\\?\\|" }, { "name": "constant.language.group.begin.source.sed", "match": "\\\\?\\(" }, { "name": "constant.language.group.end.source.sed", "match": "\\\\?\\)" }, { "include": "#reference" }, { "include": "#regexp.miscEscapes" }, { "include": "#regexp.quantiferRanges" }, { "include": "#regexp.bracketExpression" }, { "include": "#regexp.gnuCharacterEscapes" }, { "include": "#regexp.gnuEscapes" }, { "include": "#escape" } ] }, "regexp.bracketExpression": { "name": "string.regexp.character-class.source.sed", "begin": "\\[", "end": "\\]|(?=$)", "patterns": [ { "name": "keyword.operator.logical.not.source.sed", "match": "\\G\\^" }, { "match": "\\G\\]" }, { "name": "punctuation.separator.range.dash.source.sed", "match": "(?\u003c!\\G)-(?!$|\\])" }, { "name": "constant.language.named.character-class.source.sed", "match": "(\\[:)(?:(alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit)|(.*?))(\\:])", "captures": { "1": { "name": "punctuation.definition.character-class.begin.source.sed" }, "2": { "name": "support.constant.posix-class.source.sed" }, "3": { "name": "invalid.illegal.unknown.character-class.source.sed" }, "4": { "name": "punctuation.definition.character-class.end.source.sed" } } }, { "name": "constant.language.collating-symbol.source.sed", "begin": "\\[\\.", "end": "\\.\\]|(?=$)", "patterns": [ { "include": "#escape" } ], "beginCaptures": { "0": { "name": "punctuation.definition.collating-symbol.begin.source.sed" } }, "endCaptures": { "0": { "name": "punctuation.definition.collating-symbol.end.source.sed" } } }, { "name": "constant.language.equivalence-class.source.sed", "begin": "\\[=", "end": "=\\]", "patterns": [ { "include": "#escape" } ], "beginCaptures": { "0": { "name": "punctuation.definition.equivalence-class.begin.source.sed" } }, "endCaptures": { "0": { "name": "punctuation.definition.equivalence-class.end.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "0": { "name": "punctuation.definition.character-class.begin.source.sed" } }, "endCaptures": { "0": { "name": "punctuation.definition.character-class.end.source.sed" } } }, "regexp.gnuCharacterEscapes": { "patterns": [ { "name": "constant.character.escape.alert.gnu.source.sed", "match": "\\\\a" }, { "name": "constant.character.escape.form-feed.gnu.source.sed", "match": "\\\\f" }, { "name": "constant.character.escape.carriage-return.gnu.source.sed", "match": "\\\\r" }, { "name": "constant.character.escape.tab.gnu.source.sed", "match": "\\\\t" }, { "name": "constant.character.escape.vertical-tab.gnu.source.sed", "match": "\\\\v" }, { "name": "constant.character.escape.control-x.gnu.source.sed", "match": "\\\\c." }, { "name": "constant.character.escape.decimal.codepoint.gnu.source.sed", "match": "\\\\d[0-9]{3}" }, { "name": "constant.character.escape.octal.codepoint.gnu.source.sed", "match": "\\\\o[0-7]{3}" }, { "name": "constant.character.escape.hex.codepoint.gnu.source.sed", "match": "\\\\x[0-9A-Fa-f]{2}" } ] }, "regexp.gnuEscapes": { "patterns": [ { "name": "keyword.operator.lowercase.conversion.gnu.source.sed", "match": "\\\\[Ll]" }, { "name": "keyword.operator.uppercase.conversion.gnu.source.sed", "match": "\\\\[Uu]" }, { "name": "keyword.operator.end.conversion.gnu.source.sed", "match": "\\\\E" }, { "name": "constant.language.word-character.gnu.source.sed", "match": "\\\\w" }, { "name": "constant.language.word-character.negated.gnu.source.sed", "match": "\\\\W" }, { "name": "constant.language.word-boundary.gnu.source.sed", "match": "\\\\b" }, { "name": "constant.language.word-boundary.negated.gnu.source.sed", "match": "\\\\B" }, { "name": "constant.language.whitespace-character.gnu.source.sed", "match": "\\\\s" }, { "name": "constant.language.whitespace-character.negated.gnu.source.sed", "match": "\\\\S" }, { "name": "constant.language.anchor.beginning-of-word.gnu.source.sed", "match": "\\\\\u003c" }, { "name": "constant.language.anchor.end-of-word.gnu.source.sed", "match": "\\\\\u003e" }, { "name": "constant.language.anchor.start-of-pattern.gnu.source.sed", "match": "\\\\`" }, { "name": "constant.language.anchor.end-of-pattern.gnu.source.sed", "match": "\\\\'" } ] }, "regexp.miscEscapes": { "patterns": [ { "name": "constant.character.escape.dollar-sign.source.sed", "match": "\\\\\\$" }, { "name": "constant.character.escape.asterisk.source.sed", "match": "\\\\\\*" }, { "name": "constant.character.escape.dot.period.source.sed", "match": "\\\\\\." }, { "name": "constant.character.escape.square.bracket.source.sed", "match": "\\\\\\[" }, { "name": "constant.character.escape.backslash.source.sed", "match": "\\\\{2}" }, { "name": "constant.character.escape.caret.source.sed", "match": "\\\\\\^" } ] }, "regexp.quantiferRanges": { "patterns": [ { "name": "meta.escaped.quantifier.specific.range.source.sed", "match": "(\\\\{)([0-9]+)(?:(,)([0-9]+)?)?(\\\\})", "captures": { "1": { "name": "punctuation.definition.quantifier.bracket.curly.begin.source.sed" }, "2": { "name": "constant.numeric.integer.source.sed" }, "3": { "name": "punctuation.separator.range.comma.source.sed" }, "4": { "name": "constant.numeric.integer.source.sed" }, "5": { "name": "punctuation.definition.quantifier.bracket.curly.end.source.sed" } } }, { "name": "meta.unescaped.quantifier.specific.range.source.sed", "match": "({)([0-9]+)(?:(,)([0-9]+)?)?(})", "captures": { "1": { "name": "punctuation.definition.quantifier.bracket.curly.begin.source.sed" }, "2": { "name": "constant.numeric.integer.source.sed" }, "3": { "name": "punctuation.separator.range.comma.source.sed" }, "4": { "name": "constant.numeric.integer.source.sed" }, "5": { "name": "punctuation.definition.quantifier.bracket.curly.end.source.sed" } } } ] }, "replacement.innards": { "patterns": [ { "name": "variable.language.input.source.sed", "match": "\u0026" }, { "include": "#reference" }, { "include": "#escape" } ] }, "semicolon": { "name": "punctuation.terminator.statement.semicolon.source.sed", "match": ";" }, "substitution": { "patterns": [ { "name": "meta.substitution.pound-delimiter.source.sed", "begin": "(s)(#)", "end": "(#)([^;#}]*+)|(?=$|[;#}])", "patterns": [ { "name": "meta.match-pattern.source.sed", "contentName": "string.regexp.substitution.search.source.sed", "begin": "\\G", "end": "#|(?=$)", "patterns": [ { "include": "#regexp" } ], "endCaptures": { "0": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=#)", "end": "(?!\\G)(?=#)|(?=$)", "patterns": [ { "include": "#replacement.innards" } ] }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "meta.options.source.sed", "patterns": [ { "include": "#flags" } ] } } }, { "name": "meta.substitution.semicolon-delimiter.source.sed", "begin": "(s)(;)", "end": "(;)([^;#}]*+)|(?=$|[;#}])", "patterns": [ { "name": "meta.match-pattern.source.sed", "contentName": "string.regexp.substitution.search.source.sed", "begin": "\\G", "end": ";|(?=$)", "patterns": [ { "include": "#regexp" } ], "endCaptures": { "0": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=;)", "end": "(?!\\G)(?=;)|(?=$)", "patterns": [ { "include": "#replacement.innards" } ] }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "meta.options.source.sed", "patterns": [ { "include": "#flags" } ] } } }, { "name": "meta.substitution.brace-delimiter.source.sed", "begin": "(s)(})", "end": "(})([^;#}]*+)|(?=$|[;#}])", "patterns": [ { "name": "meta.match-pattern.source.sed", "contentName": "string.regexp.substitution.search.source.sed", "begin": "\\G", "end": "}|(?=$)", "patterns": [ { "include": "#regexp" } ], "endCaptures": { "0": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=})", "end": "(?!\\G)(?=})|(?=$)", "patterns": [ { "include": "#replacement.innards" } ] }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "meta.options.source.sed", "patterns": [ { "include": "#flags" } ] } } }, { "name": "meta.substitution.source.sed", "begin": "s", "end": "$|(?\u003c=^)|(?=[;#}])", "patterns": [ { "name": "meta.match-pattern.source.sed", "contentName": "string.regexp.substitution.search.source.sed", "begin": "\\G(.)", "end": "-?(?=\\1|$)", "patterns": [ { "include": "#regexp" } ], "beginCaptures": { "1": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "name": "meta.replacement.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "([^;#}])", "end": "(\\1)([^;#}]*+)|(?=$)", "patterns": [ { "include": "#replacement.innards" } ], "beginCaptures": { "1": { "name": "punctuation.delimiter.pattern.middle.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "meta.options.source.sed", "patterns": [ { "include": "#flags" } ] } } } ], "beginCaptures": { "0": { "name": "keyword.control.command.source.sed" } } } ] }, "transliteration": { "patterns": [ { "name": "invalid.illegal.syntax.transliteration.source.sed", "match": "y {2}[^ ]*(?: |$)|y\\t{2}[^\\t]*(?:\\t|$)" }, { "name": "meta.transliteration.space-delimiter.source.sed", "begin": "(y)( )", "end": "( )([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "(-)?( )|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.whitespace.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c= )", "end": "(?!\\G)-?(?= )|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.whitespace.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.whitespace.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.tab-delimiter.source.sed", "begin": "(y)(\\t)", "end": "(\\t)([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "(-)?(\\t)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.whitespace.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=\\t)", "end": "(?!\\G)-?(?=\\t)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.whitespace.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.whitespace.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.semicolon-delimiter.source.sed", "begin": "(y)(;)", "end": "(;)([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "(-)?(;)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=;)", "end": "(?!\\G)-?(?=;)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.brace-delimiter.source.sed", "begin": "(y)(})", "end": "(})([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "(-)?(})|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=})", "end": "(?!\\G)-?(?=})|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.pound-delimiter.source.sed", "begin": "(y)(#)", "end": "(#)([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "(-)?(#)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=#)", "end": "(?!\\G)-?(?=#)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.dash-delimiter.source.sed", "begin": "(y)(-)", "end": "(-)([^#;}]*)|$", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G", "end": "-|(?=$)", "patterns": [ { "include": "#escape" } ], "endCaptures": { "0": { "name": "punctuation.delimiter.pattern.middle.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(?\u003c=-)", "end": "(?=$|-)", "patterns": [ { "include": "#escape" } ] }, { "include": "#escape" } ], "beginCaptures": { "1": { "name": "keyword.control.command.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "1": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "2": { "name": "invalid.illegal.extra-characters.source.sed" } } }, { "name": "meta.transliteration.source.sed", "begin": "y", "end": "$|(?=[\\s#;}])|(?\u003c=^)", "patterns": [ { "name": "meta.source-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "\\G(.)", "end": "-?(?=\\1|$)", "patterns": [ { "include": "#transliteration.ranges" } ], "beginCaptures": { "1": { "name": "punctuation.delimiter.pattern.begin.source.sed" } }, "endCaptures": { "0": { "name": "string.quoted.double.source.sed" } } }, { "name": "meta.replacement-characters.source.sed", "contentName": "string.quoted.double.source.sed", "begin": "(.)", "end": "(-)?(\\1)([^#;}]*+)|(?=$)", "patterns": [ { "include": "#transliteration.ranges" } ], "beginCaptures": { "1": { "name": "punctuation.delimiter.pattern.middle.source.sed" } }, "endCaptures": { "1": { "name": "string.quoted.double.source.sed" }, "2": { "name": "punctuation.delimiter.pattern.end.source.sed" }, "3": { "name": "invalid.illegal.extra-characters.source.sed" } } } ], "beginCaptures": { "0": { "name": "keyword.control.command.source.sed" } } } ] }, "transliteration.ranges": { "patterns": [ { "match": "\\G-" }, { "name": "keyword.operator.range.dash.source.sed", "match": "-" }, { "include": "#escape" } ] } } }