--- name: Remind fileTypes: - defs.rem - REM*.txt - .reminders firstLineMatch: ^REM* scopeName: source.remind repository: message: endCaptures: "0": name: keyword.control.endline.commandline.remind begin: \b(?i:MSG|MSF|RUN|CAL|SPECIAL|PS|PSFILE)\b\s* beginCaptures: "0": name: keyword.control.message.commandline.remind end: (%?[ \t]*)(?=\n|\z) patterns: - include: "#message-body" trigger: patterns: - name: meta.attime.trigger.remind captures: "1": name: keyword.other.attime.trigger.remind "2": name: constant.other.time.trigger.remind "3": name: variable.other.component.trigger.remind "4": name: variable.other.comp.trigger.remind match: \b(?i:(AT))\s+(\d{1,2}[:.]\d{2})(?:\s+(\+{1,2}\d+))?(?:\s+(\*\d+))?(?=\s) - name: meta.duration.trigger.remind captures: "1": name: keyword.other.duration.trigger.remind "2": name: constant.other.time.trigger.remind match: \b(?i:(DURATION))\s+(\d{1,2}[:.]\d{2})(?=\s) - name: keyword.control.command.trigger.remind match: \b(?i:OMIT)\b - name: keyword.control.move-reminder.trigger.remind match: \b(?i:ONCE|SKIP|BEFORE|AFTER)\b - name: variable.other.component.delta.trigger.remind captures: "1": name: punctuation.definition.variable.remind match: (\+{1,2})\d+ - name: variable.other.component.back.trigger.remind captures: "1": name: punctuation.definition.variable.remind match: (\-{1,2})\d+ - name: variable.other.component.repeat.trigger.remind captures: "1": name: punctuation.definition.variable.remind match: (\*)\d+ - include: "#date-item" expression: patterns: - captures: "0": name: punctuation.section.scope.remind begin: \( end: \) patterns: - include: "#expression" - name: keyword.operator.remind match: -|\*|/|%|\+|-|[!<>=]=?|&&|\|\| - name: string.quoted.double.remind endCaptures: "0": name: punctuation.definition.string.end.remind begin: "\"" beginCaptures: "0": name: punctuation.definition.string.begin.remind end: "\"" patterns: - name: constant.character.escape.remind match: \\. - name: constant.other.date.remind match: "'\\d{4}([\\-/])\\d{1,2}\\1\\d{1,2}'" - name: constant.other.time.remind match: \d{1,2}[:.]\d{2} - name: constant.numeric.integer.remind match: \d+ - name: variable.language.system.remind match: \$(?:CalcUTC|CalMode|Daemon|DefaultPrio|DontFork|DontTrigAts|DontQueue|EndSent|EndSentIg|FirstIndent|FoldYear|FormWidth|HushMode|IgnoreOnce|InfDelta|LatDeg|LatMin|LatSec|Location|LongDeg|LongMin|LongSec|MaxSatIter|MinsFromUTC|NextMode|NumQueued|NumTrig|PrefixLineNo|PSCal|RunOff|SimpleCal|SortByDate|SortByPrio|SortByTime|SubsIndent)\b - name: meta.function.builtin.remind captures: "0": name: support.function.builtin.remind begin: \b(?:abs|access|args|asc|baseyr|char|choose|coerce|date|dawn|day|daysinmon|defined|dosubst|dusk|easterdate|filedate|filedir|filename|getenv|hour|iif|index|isdst|isleap|isomitted|hebdate|hebday|hebmon|hebyear|language|lower|max|min|minsfromutc|minute|min|monnum|moondate|moontime|moonphase|now|ord|ostype|plural|psmoon|psshade|realnow|realtoday|sgn|shell|strlen|substr|sunrise|sunset|time|today|trigdate|trigger|trigtime|trigvalid|typeof|upper|value|version|wkday|wkdaynum|year)\( end: \) patterns: - include: "#expression" - name: meta.function.user.remind endCaptures: "1": name: punctuation.definition.arguments.remind begin: \b(\w+)(\() beginCaptures: "1": name: entity.name.function.remind "2": name: punctuation.definition.arguments.remind end: (\)) patterns: - include: "#expression" - name: variable.parameter.user.remind match: \b\w+\b date-item: patterns: - name: support.constant.month.dateitem.remind match: \b(?i:January|Jan|February|Feb|March|Mar|April|Apr|May|June|Jun|July|Jul|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)\b - name: support.constant.weekday.dateitem.remind match: \b(?i:Monday|Mon|Tuesday|Tue|Wednesday|Wed|Thursday|Thu|Friday|Fri|Saturday|Sat|Sunday|Sun)\b - name: support.constant.day.dateitem.remind match: \b(?:\d{1,2})\b - name: support.constant.year.dateitem.remind match: \b(?:\d{4})\b message-body: patterns: - name: constant.other.placeholder.remind captures: "1": name: punctuation.definition.constant.remind match: (%)[a-zA-Z0-9_!@#] - name: string.quoted.double.remind endCaptures: "0": name: punctuation.definition.string.end.remind begin: "%\"" beginCaptures: "0": name: punctuation.definition.string.begin.remind end: "%\"" - include: "#bracketed-expression" bracketed-expression: captures: "0": name: punctuation.section.scope.remind begin: \[ end: \] patterns: - include: "#expression" uuid: 8D255A1E-9CBC-4B22-8AAD-F8536C276727 patterns: - name: comment.line.number-sign.remind captures: "1": name: punctuation.definition.comment.remind match: "[ ]*(#).*\\n?" - name: comment.line.semicolon.remind captures: "1": name: punctuation.definition.comment.remind match: "[ ]*(;).*\\n?" - name: meta.single.command.remind captures: "0": name: keyword.control.single.command.remind match: \b(?i:(?:RUN\s+(ON|OFF))|(PUSH|CLEAR|POP)-OMIT-CONTEXT)\b - name: meta.setline.remind begin: \b(?i:(SET))\s+(\$?\w+)\s+ beginCaptures: "1": name: keyword.control.set.setline.remind "2": name: variable.other.setline.remind end: (?=#|\n|\z) patterns: - include: "#expression" - name: meta.fsetline.remind begin: \b(?i:(FSET))\s+(\w+(\())(\w+)?(?:,(\w+))*(\)) beginCaptures: "6": name: punctuation.definition.arguments.remind "1": name: keyword.control.fset.fsetline.remind "2": name: entity.name.function.fsetline.remind "3": name: punctuation.definition.arguments.remind "4": name: variable.parameter.fsetline.remind "5": name: variable.parameter.fsetline.remind end: (?=#|\n|\z) patterns: - include: "#expression" - name: meta.unsetline.remind begin: \b(?i:(UNSET))\b beginCaptures: "1": name: keyword.control.set.unsetline.remind end: (?=#|\n|\z) patterns: - name: variable.other.unsetline.remind match: \b\w+\b - name: meta.if.remind captures: "1": name: keyword.control.if.remind begin: \b(?i:(IF))\b end: (?=#|\n|\z) patterns: - include: "#expression" - name: meta.iftrig.remind captures: "1": name: keyword.control.iftrig.remind begin: \b(?i:(IFTRIG))\b end: (?=#|\n|\z) patterns: - include: "#trigger" - name: keyword.control.else-or-endif.remind match: \b(?i:(ELSE|ENDIF))\s*(?=#|\n|\z) - name: meta.includeline.remind begin: \b(?i:INCLUDE)\b beginCaptures: "0": name: keyword.control.include.commandline.remind end: (?=#|\n|\z) - name: meta.commandline.remind endCaptures: "0": name: keyword.control.endline.commandline.remind begin: \b(?i:REM|OMIT|BANNER)\b beginCaptures: "0": name: keyword.control.command.commandline.remind end: (%?[ \t]*)(?=(#|\n|\z)) patterns: - name: keyword.control.expiry.commandline.remind match: \b(?i:SCHED|WARN|SCANFROM|SCAN|UNTIL)\b - name: meta.satisfy.remind begin: \b(?i:SATISFY)\b beginCaptures: "0": name: keyword.control.satisfy.commandline.remind end: (?=(#|\n|\z)) patterns: - include: "#expression" - include: "#trigger" - include: "#message-body" - include: "#bracketed-expression" - include: "#message" - include: "#bracketed-expression" - include: "#message"