Files
planit/resources/todo.sublime-syntax

78 lines
1.4 KiB
YAML

%YAML 1.2
---
name: todo.txt
scope: text.todo
variables:
date: '(\d{4}-\d{2}-\d{2}(?:\s+|$))'
prio: '(\([A-Z]\)(?:\s+|$))'
contexts:
main:
- match: '^\s*x\s'
push: done
- match: ""
push: todo
done:
- meta_scope: comment.line
- include: check_prio
todo:
- meta_scope: text.todo
- include: check_prio
desc_fallback:
- match: '\s'
- match: ""
push: desc_start
check_prio:
- match: "{{date}}"
scope: constant.numeric
push: check_date2
- match: "{{prio}}"
scope: keyword
push: check_date
- include: desc_fallback
check_date:
- match: "{{date}}"
scope: constant.numeric
set: check_date2
- include: desc_fallback
check_date2:
- match: "{{date}}"
scope: constant.numeric
set: desc_start
- include: desc_fallback
# Any preceeding whitespace has been read
# safe to assume start of match is succeeds whitespace
desc_start:
- match: '@\S+'
scope: string
push: desc
- match: '\+\S+'
scope: variable.function
push: desc
- match: '\b([^\s:]+):([^\s:]+)\b'
captures:
1: entity.name
2: entity.name.tag
push: desc
- match: ""
set: desc
desc:
- match: '(?:\s|^)@\S+'
scope: string
- match: '(?:\s|^)\+\S+'
scope: variable.function
- match: '\b([^\s:]+):([^\s:]+)\b'
captures:
1: entity.name
2: entity.name.tag