Your first hour

Six exercises, in order. By the end you'll have linked notes, a working agenda, a table in the database, and a keyboard shortcut you wrote yourself.

1. Point EEditor at a folder

Press open… at the top of the file tree and choose a folder — an empty one is perfect for now. This is your workspace. Everything you make lives here as an ordinary file, and you can move or back up the folder at any time without telling EEditor.

Now press ⌘⇧N and call the new note index.md. Type a couple of lines. Stop typing, and it saves itself.

2. Link two notes

In index.md, type:

Reading list: [[

As soon as you type [[ a list of notes appears. There's only one so far, so finish the link by hand — [[reading]] — and close the brackets.

Press ⌘⇧N again and create reading.md. Write a line or two, then press ⌘P and jump back to index.md by typing idx — quick open matches fragments, not prefixes.

Press ⌘E to preview, and click your [[reading]] link. You land in the other note, and under the editor a bar now reads ↩ 1 backlink: index.md. Nothing built that index; it's derived from the files every time.

Add #tutorial somewhere in each note. The tags panel picks it up; clicking it searches for everything carrying that tag.

3. Throw something at the agenda

In the agenda box in the sidebar, type this and press :

call Bob tomorrow !!

You get an item due tomorrow at high priority — the date and the !! were parsed out of the sentence. Click the item to open its editor and give it a note, or a recurrence of every 2 weeks.

Add two or three more, then press calendar. Drag one to a different day. That's the reschedule; there is no save button.

4. Make the agenda file things for you

Open setup in the agenda panel. Define a category — call it work/calls — and a rule that catches anything mentioning a phone call:

(defrule calls
  :when   (str-matches text "call|phone|ring")
  :assign "work/calls")

Press apply. Your call Bob item is now filed under work/calls without you having categorised anything by hand. Add ten more items and they file themselves too.

This is the Lotus Agenda idea EEditor is built around: you write in whatever words you think in, and the structure is applied afterwards by rules you can change at any time. Categories are hierarchical, so work/calls automatically belongs to work.

5. Open the language

Press ⌘J for the REPL. Start with arithmetic, then move on:

λ (+ 1 2)
3

λ (map (fn (x) (* x x)) (range 1 6))
(1 4 9 16 25)

λ (str-join ", " (list "one" "two" "three"))
"one, two, three"

Now make a table. This is a real SQLite table underneath:

λ (deftable books (title:string author:string year:number))

λ (insert books {:title "The Mythical Man-Month" :author "Brooks" :year 1975})
λ (insert books {:title "Thinking Forth" :author "Brodie" :year 1984})

λ (browse books)

browse gives you a table widget, not a wall of text — click through it. Try (edit books 1) for a form with working fields.

Ask a question of it:

λ (query books :where "year < ?" :params (list 1980) :order "year")

Press snippets to load the standard bundle, and a hundred and fifty more functions become available — (zzromanos 2026), (timeat "tokyo" "now"), (zzconverte 100 :c :f). The whole language is documented at eelisp.app.

One more thing: put a fenced eelisp block in a note, put the caret inside it, and press ⌘⇧↵. The note just became a notebook.

6. Write yourself a shortcut

Press ⌘⇧K. EEditor writes the default keybindings into .eeditor/keybindings.eelisp and opens it. Read the top of the file — that's the whole language.

Add a binding of your own at the bottom:

(bind "Mod-Shift-t" (ed-insert "- [ ] "))

Save with ⌘S. Go to any note and press ⌘⇧T — a task line. No restart, no preferences pane.

Now one that computes:

(bind "Mod-Shift-b" (ed-insert (str "[[" *date* "]]")))

That inserts a wiki link to today's daily note, whatever today happens to be. The date, the caret position, the selection and the whole buffer are all available to your code — see the binding reference for the full list.

Finally, decide where you land when EEditor opens. Add one line:

(on-start (ed-cmd "daily-note"))

Now every launch drops you straight into today's note, created if it doesn't exist. Prefer a fixed dashboard? (on-start (ed-open "index.md")). Prefer nothing at all? (on-start).

Where to go next

And the thing worth doing on your own: open your keybindings file and delete a binding you don't like. That key goes straight back to the editor's normal behaviour. The configuration is the whole story — there's nothing underneath it you can't see.