nl
(NoteLang) is a markdown derivative specifically adapted for use with Personal Knowledge Management. The goal of the language is to optimize for IDE/text editor and terminal based interaction with your notes.
This specification is a work in progress as features are added to the language. For now, assume that all Markdown is valid and any extensions that are not part of the CommonMark specification will be detailed below. Until 1.0, there are no guarantees that all CommonMark will be valid but unless you are doing something uncommon (pun not intented) it will likely work.
A markdown superset was specifically chosen to allow for easy integration with existing markdown tools and to allow us to focus on the features that are unique to nl
.
Frontmatter is a 1-1 mapping with Obsidian properties. Certain fields in frontmatter con be configured to allow nl
to infer structure, for example type: project
, these are optional.
TODO: think through how note types could be defined/extended. Do built-in types make sense (e.g. projects)?
Tasks can be created in any note using the following format:
- [ ] Write the nl specification
Status is indicated by the value enclosed between the square brackets.
- [ ] todo
- [b] blocked
- [/] doing
- [x] done
- [a] abandoned
Due dates are indicated by the due:
key. The value is a date in the format YYYY-MM-DD
.
- [ ] task due:2024-01-01
- [ ] some taskd:2024-01-01
Scheduled dates are indicated by the scheduled:
key. The value is a date in the format YYYY-MM-DD
. Scheduled dates differ from due dates in that they are not a hard deadline but rather a date that the task is scheduled to be worked on.
scheduled:2024-01-01
s:2024-01-01
Priority is indicated by the priority:
key. The value is an integer between 0 and 10.
priority:1
p:1
Recurrences are indicated by the every:
field. Recurrences are triggered on task completion and will create a new task directly above it in the note with the same configuration but with the due date incremented by the specified interval relative to the time of completion.
every:day
e:day
every:2 weeks
every:15th, 30th
every:1st jan
every:jan june
A more complete list of recurrence formats can be found in the tasks test cases.
Completed tasks are indicated by the completed:
key. The value is a date in the format YYYY-MM-DD
. These values are automatically generated by the TUI or LSP upon task completion, but can be manually set.
completed:2024-01-01
TODO
Wikilinks are a form of internal links (links to notes in the opened workspace) in the form of [[note name]]
.