{"name":"RUNOFF","scopeName":"text.runoff","patterns":[{"include":"#main"}],"repository":{"arguments":{"patterns":[{"name":"constant.numeric.runoff","match":"[-+]?\\d+(?:\\.\\d+)?"},{"name":"punctuation.separator.comma.runoff","match":","},{"name":"string.quoted.runoff","begin":"\"","end":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.runoff"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.runoff"}}},{"name":"variable.parameter.runoff","match":"(?!\\.)([^\\s;,]+)","captures":{"0":{"name":"string.unquoted.runoff"},"1":{"patterns":[{"include":"#name-innards"}]}}}]},"commands":{"name":"meta.control-line.runoff","begin":"^\u000c*(?=\\.)","end":"$|;(?!\\.)","patterns":[{"name":"comment.line.runoff","begin":"!","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.runoff"}}},{"name":"meta.condition.runoff","begin":"(?i)(?:^|(?\u003c=;))((\\.)(?:IF|ELSE|ENDIF))(?=$|\\s|;)","end":"$|(;)|(?=!)","patterns":[{"include":"#arguments"}],"beginCaptures":{"1":{"name":"keyword.control.runoff"},"2":{"name":"punctuation.definition.function.runoff"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.runoff"}}},{"contentName":"markup.raw.runoff","begin":"(?i)((\\.)LITERAL\\s*)(?:$|\\R)","end":"(?i)((\\.)END\\s+LITERAL)\\b","beginCaptures":{"0":{"name":"keyword.function.name.runoff"},"1":{"name":"entity.name.function.runoff"},"2":{"name":"punctuation.definition.function.runoff"}},"endCaptures":{"0":{"name":"keyword.function.name.runoff"},"1":{"name":"entity.name.function.runoff"},"2":{"name":"punctuation.definition.function.runoff"}}},{"contentName":"markup.raw.runoff","begin":"(?i)((\\.)LIT)\\s*(?:$|\\R)","end":"(?i)^(?=\\.(?:EL|END\\s+LIT)(?:$|[\\s;!]))","beginCaptures":{"0":{"name":"keyword.function.name.runoff"},"1":{"name":"entity.name.function.runoff"},"2":{"name":"punctuation.definition.function.runoff"}}},{"name":"meta.function.debugging-comment.runoff","contentName":"string.unquoted.runoff","begin":"(?i)((\\.)COMMENT)\\b","end":"$|(;)|(?=!)","beginCaptures":{"0":{"name":"keyword.function.name.runoff"},"1":{"name":"entity.name.function.runoff"},"2":{"name":"punctuation.definition.function.runoff"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.runoff"}}},{"name":"meta.function.runoff","begin":"(?i)((\\.)(?:END\\s+)?([^;\\s\\-+]+))","end":"(?x)\n$               | # EOL\n(;)?\\s*(?=\\.) | # Followed by another command\n(?=;\\s*[^.])     # No more commands, don’t highlight trailing text as arguments","patterns":[{"include":"#arguments"}],"beginCaptures":{"0":{"name":"keyword.function.name.runoff"},"1":{"name":"entity.name.function.runoff"},"2":{"name":"punctuation.definition.function.runoff"},"3":{"patterns":[{"include":"#name-innards"}]}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.runoff"}}}],"endCaptures":{"0":{"name":"punctuation.terminator.statement.runoff"}}},"comment":{"name":"comment.line.runoff","begin":"^\\.[!*~]","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.runoff"}}},"main":{"patterns":[{"include":"#comment"},{"include":"#underline"},{"include":"#commands"},{"include":"#special-characters"}]},"name-innards":{"patterns":[{"include":"#special-characters"},{"name":"punctuation.delimiter.period.full-stop.runoff","match":"\\."},{"name":"punctuation.separator.comma.runoff","match":"\\,"},{"name":"constant.numeric.runoff","match":"\\d+(?=$|\\R|,|\\.(?!\\d))"}]},"special-characters":{"patterns":[{"name":"constant.character.escape.special-character.runoff","match":"(_)[!^\\\\#\u0026_.]","captures":{"1":{"name":"punctuation.definition.escape.runoff"}}},{"name":"keyword.operator.end-footnote.runoff","match":"^!"},{"name":"constant.character.escape.uppercase.runoff","match":"\\^{1,2}","captures":{"0":{"name":"punctuation.definition.escape.runoff"}}},{"name":"constant.character.escape.lowercase.runoff","match":"\\\\{1,2}","captures":{"0":{"name":"punctuation.definition.escape.runoff"}}},{"match":"(\u0026)([!^\\\\#\u0026_.]*)(\\S+)","captures":{"1":{"name":"punctuation.definition.entity.runoff"},"2":{"patterns":[{"include":"#special-characters"}]},"3":{"name":"markup.underline.link.runoff"}}},{"name":"constant.character.escape.space.runoff","match":"#","captures":{"0":{"name":"punctuation.definition.escape.runoff"}}}]},"underline":{"name":"markup.underline.link.runoff","match":"[^_]\u0008(?=_)|(?\u003c=_)\u0008[^_]"}}}
