um-mode/README.md
2024-01-13 12:18:55 -08:00

40 lines
1.7 KiB
Markdown

# um
An (U)ltralight database for (M)arkdown composition.
`um` is an ultralight database design and emacs toolkit for organizing writing into larger compositions. It uses only unique filenames, POSIX filesystem conventions, the builtin emacs `project` package, and standard POSIX commandline tools to build out the CLI.
It consists of two parts:
1. Elisp for functionality within emacs. Most of it is integrated directly with the `project` interface, and consists the ability to find a file from a filename.
2. Bash scripts for the commandline interface. I prefer a CLI for file creation and management rather than more emacs functions, because chaining shell commands is easy and I think of the commandline as the point of reference for all filesystem management.
Conceptually, `um` is somewhat like org-roam, except without any database dependency. (And it assumes Markdown rather than org, which I don't care for.)
The "database" depends on a few simple ideas:
1. A numbered filename specification which serves as unique id. The files are their own representation.
2. Placing that same id into the file header, so that concatenated files have reference back to their source. See the `um cat` command.
3. Using a source "journal/" directory, where source files should first be composed and where we can assume a file exists if not elsewhere.
4. Using the built-in emacs `project` package to organize compositions built from these source files.
## config
My config looks like this:
```elisp
(use-package um
:after (project embark)
:config
(defalias 'journal 'uldb-journal-header)
(advice-add 'embark-target-file-at-point :around 'uldb-file-at-point-advice)
:load-path "~/dev/um/elisp"
)
```