zet.tlv: creating new zettels
This commit is contained in:
parent
cf521f9904
commit
e827379950
211
zet.tlv
211
zet.tlv
|
@ -876,3 +876,214 @@
|
||||||
> end
|
> end
|
||||||
> return false, prose, cursor
|
> return false, prose, cursor
|
||||||
>end
|
>end
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 17:55:52 2022
|
||||||
|
menu:
|
||||||
|
>-- To show app-specific hotkeys in the menu bar, add hotkey/command
|
||||||
|
>-- arrays of strings to the menu array.
|
||||||
|
>menu = {
|
||||||
|
> {'j', 'child'},
|
||||||
|
> {'k', 'parent'},
|
||||||
|
> {'l/h', 'next/prev sib'},
|
||||||
|
> {'e', 'edit'},
|
||||||
|
>}
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 17:56:18 2022
|
||||||
|
__teliva_note:
|
||||||
|
>no need for chords once we drop the commandline
|
||||||
|
update:
|
||||||
|
>function update(window)
|
||||||
|
> local key = curses.getch()
|
||||||
|
> local curr = zettels[current_zettel_id]
|
||||||
|
> -- graph-based navigation
|
||||||
|
> if key == string.byte('j') then
|
||||||
|
> if curr.child then
|
||||||
|
> current_zettel_id = curr.child
|
||||||
|
> elseif curr.next then
|
||||||
|
> current_zettel_id = curr.next
|
||||||
|
> elseif curr.parent and zettels[curr.parent].next then
|
||||||
|
> current_zettel_id = zettels[curr.parent].next
|
||||||
|
> end
|
||||||
|
> elseif key == string.byte('k') then
|
||||||
|
> if curr.parent then current_zettel_id = curr.parent end
|
||||||
|
> elseif key == string.byte('h') then
|
||||||
|
> if curr.prev then
|
||||||
|
> current_zettel_id = curr.prev
|
||||||
|
> elseif curr.parent then
|
||||||
|
> current_zettel_id = curr.parent
|
||||||
|
> end
|
||||||
|
> elseif key == string.byte('l') then
|
||||||
|
> if curr.next then
|
||||||
|
> current_zettel_id = curr.next
|
||||||
|
> elseif curr.parent and zettels[curr.parent].next then
|
||||||
|
> current_zettel_id = zettels[curr.parent].next
|
||||||
|
> end
|
||||||
|
> -- screen-based navigation
|
||||||
|
> elseif key == curses.KEY_UP then
|
||||||
|
> if render_state.curr_h > 1 then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h - 1]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_DOWN then
|
||||||
|
> if render_state.wh2id[render_state.curr_w][render_state.curr_h + 1] then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h + 1]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_LEFT then
|
||||||
|
> if render_state.curr_w > 1 then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w - 1][render_state.curr_h]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_RIGHT then
|
||||||
|
> if render_state.wh2id[render_state.curr_w + 1] and render_state.wh2id[render_state.curr_w + 1][render_state.curr_h] then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w + 1][render_state.curr_h]
|
||||||
|
> end
|
||||||
|
> --
|
||||||
|
> elseif key == string.byte('e') then
|
||||||
|
> local old_menu = menu
|
||||||
|
> editz(window)
|
||||||
|
> menu = old_menu
|
||||||
|
> end
|
||||||
|
>end
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 18:00:42 2022
|
||||||
|
menu:
|
||||||
|
>-- To show app-specific hotkeys in the menu bar, add hotkey/command
|
||||||
|
>-- arrays of strings to the menu array.
|
||||||
|
>menu = {
|
||||||
|
> {'j', 'child'},
|
||||||
|
> {'k', 'parent'},
|
||||||
|
> {'l/h', 'next/prev sib'},
|
||||||
|
> {'e', 'edit'},
|
||||||
|
> {'a/b', 'insert sib'},
|
||||||
|
> {'c', 'insert child'},
|
||||||
|
>}
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 18:16:23 2022
|
||||||
|
zettels:
|
||||||
|
>zettels = {
|
||||||
|
> root="id1",
|
||||||
|
> final=4,
|
||||||
|
> id1={
|
||||||
|
> data="abs\ndef",
|
||||||
|
> child="id3",
|
||||||
|
> next="id2",
|
||||||
|
> },
|
||||||
|
> id2={
|
||||||
|
> data="ghi\njklm",
|
||||||
|
> prev="id1",
|
||||||
|
> },
|
||||||
|
> id3={
|
||||||
|
> data="cz",
|
||||||
|
> parent="id1",
|
||||||
|
> next="id4",
|
||||||
|
> },
|
||||||
|
> id4={
|
||||||
|
> data="d",
|
||||||
|
> parent="id1",
|
||||||
|
> prev="id3",
|
||||||
|
> }
|
||||||
|
>}
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 23:04:49 2022
|
||||||
|
new_id:
|
||||||
|
>function new_id()
|
||||||
|
> zettels.final = zettels.final+1
|
||||||
|
> local result = 'id'..tostring(zettels.final)
|
||||||
|
> zettels[result] = {}
|
||||||
|
> return result
|
||||||
|
>end
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Wed Feb 9 23:10:57 2022
|
||||||
|
__teliva_note:
|
||||||
|
>creating new zettels
|
||||||
|
>
|
||||||
|
>feels natural to immediately start editing them
|
||||||
|
update:
|
||||||
|
>function update(window)
|
||||||
|
> local key = curses.getch()
|
||||||
|
> local curr = zettels[current_zettel_id]
|
||||||
|
> assert(curr, string.format('cursor fell off the edge of the world: %s', type(current_zettel_id)))
|
||||||
|
> -- graph-based navigation
|
||||||
|
> if key == string.byte('j') then
|
||||||
|
> if curr.child then
|
||||||
|
> current_zettel_id = curr.child
|
||||||
|
> elseif curr.next then
|
||||||
|
> current_zettel_id = curr.next
|
||||||
|
> elseif curr.parent and zettels[curr.parent].next then
|
||||||
|
> current_zettel_id = zettels[curr.parent].next
|
||||||
|
> end
|
||||||
|
> elseif key == string.byte('k') then
|
||||||
|
> if curr.parent then current_zettel_id = curr.parent end
|
||||||
|
> elseif key == string.byte('h') then
|
||||||
|
> if curr.prev then
|
||||||
|
> current_zettel_id = curr.prev
|
||||||
|
> elseif curr.parent then
|
||||||
|
> current_zettel_id = curr.parent
|
||||||
|
> end
|
||||||
|
> elseif key == string.byte('l') then
|
||||||
|
> if curr.next then
|
||||||
|
> current_zettel_id = curr.next
|
||||||
|
> elseif curr.parent and zettels[curr.parent].next then
|
||||||
|
> current_zettel_id = zettels[curr.parent].next
|
||||||
|
> end
|
||||||
|
> -- screen-based navigation
|
||||||
|
> elseif key == curses.KEY_UP then
|
||||||
|
> if render_state.curr_h > 1 then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h - 1]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_DOWN then
|
||||||
|
> if render_state.wh2id[render_state.curr_w][render_state.curr_h + 1] then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h + 1]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_LEFT then
|
||||||
|
> if render_state.curr_w > 1 then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w - 1][render_state.curr_h]
|
||||||
|
> end
|
||||||
|
> elseif key == curses.KEY_RIGHT then
|
||||||
|
> if render_state.wh2id[render_state.curr_w + 1] and render_state.wh2id[render_state.curr_w + 1][render_state.curr_h] then
|
||||||
|
> current_zettel_id = render_state.wh2id[render_state.curr_w + 1][render_state.curr_h]
|
||||||
|
> end
|
||||||
|
> --
|
||||||
|
> elseif key == string.byte('e') then
|
||||||
|
> editz(window)
|
||||||
|
> elseif key == string.byte('a') then
|
||||||
|
> -- insert sibling after
|
||||||
|
> local old = curr.next
|
||||||
|
> curr.next = new_id()
|
||||||
|
> local new = zettels[curr.next]
|
||||||
|
> new.data = ''
|
||||||
|
> new.next = old
|
||||||
|
> zettels[old].prev = curr.next
|
||||||
|
> new.prev = current_zettel_id
|
||||||
|
> assert(curr.parent == zettels[old].parent, 'siblings should have same parent')
|
||||||
|
> new.parent = curr.parent
|
||||||
|
> current_zettel_id = curr.next
|
||||||
|
> render(window) -- recompute render_state
|
||||||
|
> editz(window)
|
||||||
|
> elseif key == string.byte('b') then
|
||||||
|
> -- insert sibling before
|
||||||
|
> local old = curr.prev
|
||||||
|
> curr.prev = new_id()
|
||||||
|
> local new = zettels[curr.prev]
|
||||||
|
> new.data = ''
|
||||||
|
> new.prev = old
|
||||||
|
> zettels[old].next = curr.prev
|
||||||
|
> new.next = current_zettel_id
|
||||||
|
> assert(curr.parent == zettels[old].parent, 'siblings should have same parent')
|
||||||
|
> new.parent = curr.parent
|
||||||
|
> current_zettel_id = curr.prev
|
||||||
|
> render(window) -- recompute render_state
|
||||||
|
> editz(window)
|
||||||
|
> elseif key == string.byte('c') then
|
||||||
|
> -- insert child
|
||||||
|
> local old = curr.child
|
||||||
|
> curr.child = new_id()
|
||||||
|
> local new = zettels[curr.child]
|
||||||
|
> new.data = ''
|
||||||
|
> new.next = old
|
||||||
|
> assert(zettels[old].prev == nil, "first child shouldn't have a previous sibling")
|
||||||
|
> zettels[old].prev = curr.child
|
||||||
|
> new.parent = curr
|
||||||
|
> current_zettel_id = curr.child
|
||||||
|
> render(window) -- recompute render_state
|
||||||
|
> editz(window)
|
||||||
|
> end
|
||||||
|
>end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user