On the left side of this screen, you see a contraption called lisp-editor. It is a visual language and an editor inspired from Lisp.
Lisp languages are famous for their parenthesised prefix notation. The notation is generic and homoiconic, meaning that it fits and can be used for notating any kind of data, and that data is available for the program.
Although many programming languages have lisp influences. Most of them prefer special purpose notation over generic and homoiconic notations as it gives the reader a context. Lisp's weakness and strength is the lack of that notation. Occassionally it is hard to verify that a lisp program is correct because the parentheses may span multiple lines and error in parenthesis can camouflage into stream of parentheses. In other hand lisp is extremely easy language to learn and explain. Many lisp programming environments are easy to modify for your own purpose. People call lisp "a programmable programming language" for good reason.
This visual notation imitates lisp syntax. It replaces parentheses with boxes. The internal structure of this language is a tree, and it's directly represented to you inside an editor.
The thing left of you is in fact a functioning editor for the language. Once you click on the editor screen to give it a focus, it understands vim-style syntax. The editor is very bare, proof of concept. It's open source. You can fork, dissect and fondle it in the github.
Following tables might be a bit outdated.
i | Switch to insert -mode. |
v | Switch to visual -mode. |
h | travel one tread left. |
(space) | jump into the gap. |
l | travel one tread right. |
w | travel one symbol right. |
e | travel to end of the symbol |
b | travel one symbol left. |
p | paste killed/yanked buffer after. |
P | paste killed/yanked buffer before. |
: | move into command mode (augmented insert mode) |
In this mode, you can insert symbols, but some keyboard keys have special commands.
(escape) | return back to select mode |
(enter) | insert carriage node |
(space) | insert or move to gap |
(backspace) | remove character or empty node from left |
(delete) | remove character or empty node from right |
(left parenthesis) | create new box |
(right parenthesis) | move out of the box |
; | labels the box with the symbol under cursor. If not in a symbol, clears the label. |
Visual mode is for removing and moving things around.
(escape) | return back to select mode |
v | expand selection to cover the containing box or whole symbol |
h | expand selection left |
l | expand selection right |
d | remove selection (kill it) |
y | copy selection (yank it) |
There's very early control for the filesystem in place. It stores the files in the persistent filesystem associated with the URL. Unfortunately no exporting methods are implemented yet. Here are the commands: