Skip to content

Latest commit

 

History

History
93 lines (60 loc) · 2.92 KB

SPECIFICATION.md

File metadata and controls

93 lines (60 loc) · 2.92 KB

Specification [WIP]

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

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.

Types

TODO: think through how note types could be defined/extended. Do built-in types make sense (e.g. projects)?

Tasks

Tasks can be created in any note using the following format:

- [ ] Write the nl specification

Status

Status is indicated by the value enclosed between the square brackets.

- [ ] todo
- [b] blocked
- [/] doing
- [x] done
- [a] abandoned

Fields

Due Dates

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

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

Priority is indicated by the priority: key. The value is an integer between 0 and 10.

priority:1
p:1

Recurrences (every)

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

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

Wikilinks

TODO

Wikilinks are a form of internal links (links to notes in the opened workspace) in the form of [[note name]].