The problem I'm running into is that apps might want to perform their
own editing. So I can't take up prime estate like the ctrl-e hotkey or a
menu name of 'edit'.
I'm still prioritizing rendering Teliva's edit and permissions menu. If
the window is too narrow the app's settings will be overwritten and
Teliva's hotkeys will be preferentially displayed. Seems safer.
Just like with `require`, we don't we don't know how to sandbox it.
(Though we still have `require` because standard libraries outside apps
need it. I need to make sure apps can't invoke `require`..)
I've never tested with it, and it is likely broken after all my changes
to base Lua 5.1. Might as well be transparent about that.
If you care about this platform, please let me know:
http://akkartik.name/contact
https://merveilles.town/@akkartik/107742821323590471
What we have so far:
a representation (see 'zettels')
parent/child
next/prev sibling
(todo: misc cross-links)
ability to render zettels in multiple columns based on 'view_settings'
all zettels render with same size
alternate backgrounds between zettels for legibility
skip rendering duplicates (if we ever hit cycles)
a highlighted 'current zettel'
ability to move current zettel
by screen location (arrow keys)
by network structure (h/j/k/l)
Still can't edit zettels or load/save from/to disk.
I'd already dropped the variant without a filename. But even the variant
with a filename is very easy to use in a way that is confusing to use in
the presence of sandboxing:
* call io.lines()
* Sandboxing saves an error, io.lines() returns nil
* Caller (usually a loop) raises an error.
* We show the error and not the sandboxing failure.
* Worse, there's no way to adjust permissions from within Teliva,
because we can't ever get to that menu while there's an error.
Best solution I can come up with: encourage a separate step for
translating filename to file handle. That way it's more obvious that we
need to check for errors.
I fucking hate feature macros. Egregious discharge of our
division-of-labor-obsessed society. People should be able to introduce
names. People should be able to give up names to lower levels of
abstraction when they encounter conflicts.
Feature macros seem to exist[1] to support more than two levels of
abstraction. You try to build, one of your libraries fails to build
because of a conflict between it and one level down. You don't want to
modify this library. Just fucking https://catern.com/change_code.html
already. But no, I have to litter my code with feature macros even
though I just want the abstraction the original library provides.
[1] https://man7.org/linux/man-pages/man7/feature_test_macros.7.htmlhttps://lwn.net/Articles/590381
I made the changes reverted here out of a mistaken sense that
big-picture edits would interfere with Teliva's memory of what is
currently being edited (teliva_editor_state).
Going to big picture from doc:bp still goes to the default
auto-generated big picture view.
While doc:bp provides some programmability, it's also far klunkier than
the default view. Rendering is worse, and it's always in edit mode
because I'm trying to avoid complicating the UX with a notion of
rendered markup. That means cursor movement is less convenient. It's
also easy to accidentally edit the big-picture view.