name: Remind fileTypes:

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: