docs/wiki/3.04-Short-Syntax.md
Super Productivity supports four main short syntax forms for quickly adding metadata to tasks: tags (#), projects (+), time estimates (m/h/d), and due dates (@). Each form can be enabled or disabled individually in [[3.02-Settings-and-Preferences#global-settings.Short-Syntax]].
#)##<tag-name>. A space is required before #."Task #urgent", "Meeting #work #important". Multiple tags allowed."Task#urgent" (no space before #) — the whole short-syntax run returns no changes. If other tokens are valid (e.g. "Task#urgent #other"), only the valid tag is applied and the invalid token is left in the title.+)++<project-name>. A space is required before +."Task +Important Project", "Task +Project" (partial match). Project names containing +, #, @, or similar are supported; the parser uses lookahead so these characters inside the name do not end the token."Task+Project" (no space before +) — no project is applied.m (minutes), h (hours), d (days). Optional prefix t. Optional / to separate time spent from time estimate.[t]<number><unit>[ <number><unit>...][/ <number><unit>...]. Units: m, h, d. Decimal numbers allowed (e.g. 1.5h). Before /: time spent on the current day. After /: time estimate. Clusters like 1h 30m are supported./): e.g. 30m, 1.5h, 2d. Time estimate (after /): e.g. 1h, 90m, 0.5d. One side can be omitted: 30m/ sets only time spent; 1h sets only estimate."Task 10m", "Task 1h/2h", "Task 30m/", "Task t1.5h", "1h 30m / 1d 12h".h = 60 minutes, d = 8 hours (work day).@)@@<date-time-expression>. No space is allowed between @ and the expression.4pm, friday, tomorrow 19:00, 2030-10-12T13:37)."Task @4pm", "Task @friday", "Task @tomorrow 19:00", "Task @2030-10-12T13:37"."Task @ tomorrow" (space after @) — due date is not applied and the expression is stripped from the title. Two-digit years 50–99 are corrected to the current or next calendar year to avoid Chrono interpreting them as years (e.g. 90m in a date context).The parser uses regular expressions for each syntax form. Time: optional t prefix, digits and decimal with m/h/d, optional / for spent/estimate. Project: + with lookahead so delimiters (#, @, time-like tokens) inside the project name do not terminate the match. Tag: # followed by characters until a special character or whitespace. Due: @ followed by characters until a special character. Exact patterns are defined in short-syntax.ts (e.g. SHORT_SYNTAX_TIME_REG_EX, SHORT_SYNTAX_PROJECT_REG_EX, SHORT_SYNTAX_TAGS_REG_EX, SHORT_SYNTAX_DUE_REG_EX).
m = minutes, h = 60 minutes, d = 8 hours (work day).30m/ sets time spent on the current day and no estimate.1h sets estimate without time spent.combine (default) or replace; configurable in settings.Supported:
Unsupported or disabled:
newTagTitles array for creation.shortSyntax() function returns an object with task changes (and newTagTitles, remindAt, projectId) or undefined if nothing was parsed or syntax is disabled.Malformed syntax:
undefined or only apply valid parts.Edge cases:
+, #, @, or time-like patterns are handled so that the project token is parsed correctly.90m) in the same title as date expressions are parsed separately so Chrono date parsing does not consume the time estimate.shortSyntax() function; it returns task changes or undefined when no changes are needed.