78 lines
1.4 KiB
YAML
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
|