Search syntax

  • works in 4 main blocks
  • Each main block with the exception of the state, may have sub-blocks
  • Main blocks join without any additional syntax
  • each sub-block can be joined with an element of the join syntax
  • block order is irrelevant, the program should be able to detect them
  • tag/task block
    • Contains elements denoted with @ for tags and # for tasks
    • can have multiple elements, all denoted
    • optional
  • temporal block
    • optional
    • only valid to tasks with dates set
  • query block
    • required
    • can be a complex set of sub-block, joined by the join words
  • State block
    • considers the state of the task
    • it’s either !active, !dismissed or !done
    • can be anywhere in the search
    • cannot be linked with join words
    • there must be only one state block in a search
    • optional
  • join and temporal words are special words with meaning to the search engine
    • may be preceded by the character ‘!’
      • the ! character is not enforced by default
      • without the !, the command words are considered search words also
    • “and” takes precedence of “or” and “not” ex:(c and x) or y not z
    • “or” takes precedence of “not” ex:(x or y) not z
    • a white-space before and after the word is necessary do denote a special words

Details of implementation

  • should have a button to disregard uppercase and lowercase differences
  • special words shouldn’t be hard-coded to ease translation
  • enforcement of the ! character should be controlled  on the options



  • ! for commands
  • @ for tags
  • # for tasks
  • “ “ for literal searches


join words

  • and, +
  • or, |
  • not, -


Temporal Words

  • before
  • after
  • past
  • future
  • today
  • tomorrow
  • nextmonth
  • xhours
  • xdays
  • xweeks


  • php: show all tasks that have the words php
  • php java: show all tasks that have the words php and all tasks that have the word java
  • “python for experts”: show all tasks that have python for experts in its contents
  • php + python: show only the tasks that have the words php and python at the same time in its contents
  • php | python – java: show all tasks that have or the words php and not pyhton and java or the words python and not php and java. (php | python) – java
  • maths java | physics java – !past: show all task with the words math and java but not physics and java and not due today or with the words physics and java but not math and java an not due today. ((maths java) | (physics java)) – !past:
  • !today: shows all tasks that are due today
  • today:
  • @critical #work 48hours: show all tasks with the tag critical, in the task-tree work and with a due date of 48 hours



Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>