# Encoding: UTF-8 {fileTypes: ["defs.rem", "REM*.txt", ".reminders"], firstLineMatch: "^REM*", name: "Remind", patterns: [{captures: {1 => {name: "punctuation.definition.comment.remind"}}, match: /[ ]*(#).*\n?/, name: "comment.line.number-sign.remind"}, {captures: {1 => {name: "punctuation.definition.comment.remind"}}, match: /[ ]*(;).*\n?/, name: "comment.line.semicolon.remind"}, {captures: {0 => {name: "keyword.control.single.command.remind"}}, match: /\b(?i:(?:RUN\s+(ON|OFF))|(PUSH|CLEAR|POP)-OMIT-CONTEXT)\b/, name: "meta.single.command.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)", name: "meta.setline.remind", patterns: [{include: "#expression"}]}, {begin: /\b(?i:(FSET))\s+(\w+(\())(\w+)?(?:,(\w+))*(\))/, beginCaptures: {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"}, 6 => {name: "punctuation.definition.arguments.remind"}}, end: "(?=#|\\n|\\z)", name: "meta.fsetline.remind", patterns: [{include: "#expression"}]}, {begin: /\b(?i:(UNSET))\b/, beginCaptures: {1 => {name: "keyword.control.set.unsetline.remind"}}, end: "(?=#|\\n|\\z)", name: "meta.unsetline.remind", patterns: [{match: /\b\w+\b/, name: "variable.other.unsetline.remind"}]}, {begin: /\b(?i:(IF))\b/, captures: {1 => {name: "keyword.control.if.remind"}}, end: "(?=#|\\n|\\z)", name: "meta.if.remind", patterns: [{include: "#expression"}]}, {begin: /\b(?i:(IFTRIG))\b/, captures: {1 => {name: "keyword.control.iftrig.remind"}}, end: "(?=#|\\n|\\z)", name: "meta.iftrig.remind", patterns: [{include: "#trigger"}]}, {match: /\b(?i:(ELSE|ENDIF))\s*(?=#|\n|\z)/, name: "keyword.control.else-or-endif.remind"}, {begin: /\b(?i:INCLUDE)\b/, beginCaptures: {0 => {name: "keyword.control.include.commandline.remind"}}, end: "(?=#|\\n|\\z)", name: "meta.includeline.remind"}, {begin: /\b(?i:REM|OMIT|BANNER)\b/, beginCaptures: {0 => {name: "keyword.control.command.commandline.remind"}}, end: "(%?[ \\t]*)(?=(#|\\n|\\z))", endCaptures: {0 => {name: "keyword.control.endline.commandline.remind"}}, name: "meta.commandline.remind", patterns: [{match: /\b(?i:SCHED|WARN|SCANFROM|SCAN|UNTIL)\b/, name: "keyword.control.expiry.commandline.remind"}, {begin: /\b(?i:SATISFY)\b/, beginCaptures: {0 => {name: "keyword.control.satisfy.commandline.remind"}}, end: "(?=(#|\\n|\\z))", name: "meta.satisfy.remind", patterns: [{include: "#expression"}]}, {include: "#trigger"}, {include: "#message-body"}, {include: "#bracketed-expression"}, {include: "#message"}]}, {include: "#bracketed-expression"}, {include: "#message"}], repository: {:"bracketed-expression" => {begin: /\[/, captures: {0 => {name: "punctuation.section.scope.remind"}}, end: "\\]", patterns: [{include: "#expression"}]}, :"date-item" => {patterns: [{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.month.dateitem.remind"}, {match: /\b(?i:Monday|Mon|Tuesday|Tue|Wednesday|Wed|Thursday|Thu|Friday|Fri|Saturday|Sat|Sunday|Sun)\b/, name: "support.constant.weekday.dateitem.remind"}, {match: /\b(?:\d{1,2})\b/, name: "support.constant.day.dateitem.remind"}, {match: /\b(?:\d{4})\b/, name: "support.constant.year.dateitem.remind"}]}, expression: {patterns: [{begin: /\(/, captures: {0 => {name: "punctuation.section.scope.remind"}}, end: "\\)", patterns: [{include: "#expression"}]}, {match: /-|\*|\/|%|\+|-|[!<>=]=?|&&|\|\|/, name: "keyword.operator.remind"}, {begin: /"/, beginCaptures: {0 => {name: "punctuation.definition.string.begin.remind"}}, end: "\"", endCaptures: {0 => {name: "punctuation.definition.string.end.remind"}}, name: "string.quoted.double.remind", patterns: [{match: /\\./, name: "constant.character.escape.remind"}]}, {match: /'\d{4}([\-\/])\d{1,2}\1\d{1,2}'/, name: "constant.other.date.remind"}, {match: /\d{1,2}[:.]\d{2}/, name: "constant.other.time.remind"}, {match: /\d+/, name: "constant.numeric.integer.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: "variable.language.system.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)\(/, captures: {0 => {name: "support.function.builtin.remind"}}, end: "\\)", name: "meta.function.builtin.remind", patterns: [{include: "#expression"}]}, {begin: /\b(\w+)(\()/, beginCaptures: {1 => {name: "entity.name.function.remind"}, 2 => {name: "punctuation.definition.arguments.remind"}}, end: "(\\))", endCaptures: {1 => {name: "punctuation.definition.arguments.remind"}}, name: "meta.function.user.remind", patterns: [{include: "#expression"}]}, {match: /\b\w+\b/, name: "variable.parameter.user.remind"}]}, message: {begin: /\b(?i:MSG|MSF|RUN|CAL|SPECIAL|PS|PSFILE)\b\s*/, beginCaptures: {0 => {name: "keyword.control.message.commandline.remind"}}, end: "(%?[ \\t]*)(?=\\n|\\z)", endCaptures: {0 => {name: "keyword.control.endline.commandline.remind"}}, patterns: [{include: "#message-body"}]}, :"message-body" => {patterns: [{captures: {1 => {name: "punctuation.definition.constant.remind"}}, match: /(%)[a-zA-Z0-9_!@#]/, name: "constant.other.placeholder.remind"}, {begin: /%"/, beginCaptures: {0 => {name: "punctuation.definition.string.begin.remind"}}, end: "%\"", endCaptures: {0 => {name: "punctuation.definition.string.end.remind"}}, name: "string.quoted.double.remind"}, {include: "#bracketed-expression"}]}, trigger: {patterns: [{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.attime.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: "meta.duration.trigger.remind"}, {match: /\b(?i:OMIT)\b/, name: "keyword.control.command.trigger.remind"}, {match: /\b(?i:ONCE|SKIP|BEFORE|AFTER)\b/, name: "keyword.control.move-reminder.trigger.remind"}, {captures: {1 => {name: "punctuation.definition.variable.remind"}}, match: /(\+{1,2})\d+/, 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: /(\*)\d+/, name: "variable.other.component.repeat.trigger.remind"}, {include: "#date-item"}]}}, scopeName: "source.remind", uuid: "8D255A1E-9CBC-4B22-8AAD-F8536C276727"}