This is alpha software; only a few features from anki-editor
are supported right now.
A minor mode building on anki-editor, with a more lightweight syntax.
This is useful when notes are to be integrated into a Zettelkasten-like system, such as org-roam or denote.
See for example [Andy Matuschak's notes] for why such an integration might be useful;
in particular, anki-whitespace
's syntax is heavily inspired by the mnemonic-medium.
See anki-editor's README for information on external dependencies, like AnkiConnect, and how to interact with them.
If you are on Emacs 29 and newer, you can use package-vc-install
:
(package-vc-install
'(anki-editor . (:url "https://github.com/anki-editor/anki-whitespace")))
Additionally, vc-use-package provides use-package integration:
(use-package anki-editor
:vc (:fetcher github :repo anki-editor/anki-whitespace))
Alternatively, if you're on Emacs 30, a :vc
keyword is built into use-package:
(use-package anki-editor
:vc (:url "https://github.com/anki-editor/anki-whitespace" :rev :newest))
By default1, a note is a separate paragraph of text,
prefixed by anki-whitespace-prefix
(which defaults to >>>
).
Followed by the prefix are any of the following options:
deck
: the deck that the note should be filed under.type
: the note type (Basic, Cloze, …).id
: Anki note ID (filled in automatically by Anki).title
: optional title for the note.
You can add new options to anki-whitespace-options
,
and adjust anki-whitespace-note-at-point
as needed.
Any further syntax is determined by the note type.
The only steadfast rule is that everything has to be one paragraph;
optionally, a note can end sooner than that by ending with anki-whitespace-suffir
(default: <<<
).
The two builtin types, Basic
and Cloze
, specify the following rules:
-
The
Basic
type looks for two things: a question beginning with"Q: "
, and an answer beginning with"A: "
. For example:>>> deck: Default, type: Basic Q: A question A: An answer >>> deck: Default::Maths, type: Basic Q: A question A: An answer \[ \LaTeX \]
-
The
Cloze
type simply looks foranki-editor
-style cloze-deletions:>>> deck: Default, type: Cloze Please {{c1::complete}} my sentence >>> deck: Default::Misc, type: Cloze Please {{c1::complete}} my sentence {{c2::completely}}
anki-whitespace
doesn't bind to any keys,
and indeed doesn't provide all that many new commands;
rather, it augments—by means of nadvice.el
—the commands of anki-editor
.
So far, the following things are implemented (and thus usable in anki-whitespace-mode
):
-
Pushing notes:
anki-editor-push-note-at-point
,anki-whitespace-push-notes-in-buffer
,anki-whitespace-push-notes-dwim
. -
Creating new notes:
anki-whitespace-new-note
. -
Deleting notes:
anki-editor-delete-note-at-point
.
In particular, these functionalities also work when invoked via anki-editor-ui
.
Footnotes
-
The code functionality is relatively little code, so the exact syntax of the notes is quite configurable. ↩