diff options
-rw-r--r-- | zet.tlv | 2607 |
1 files changed, 17 insertions, 2590 deletions
diff --git a/zet.tlv b/zet.tlv index 762e9a6..32282db 100644 --- a/zet.tlv +++ b/zet.tlv @@ -171,9 +171,11 @@ init_colors: >function init_colors() > -- light background + > curses.init_pair(view_settings.current_zettel_bg, 236, 230) > curses.init_pair(1, 236, 250) > curses.init_pair(2, 236, 252) > -- dark background + >--? curses.init_pair(view_settings.current_zettel_bg, 252, 130) >--? curses.init_pair(1, 252, 240) >--? curses.init_pair(2, 252, 242) >end @@ -181,6 +183,7 @@ main: >function main() > init_colors() + > current_zettel_id = zettels.root > > while true do > render(window) @@ -188,888 +191,6 @@ > end >end - __teliva_timestamp: original - zettels: - >zettels = { - > a={ - > data="abc\ndef", - > next="b", - > }, - > b={ - > data="ghi\njklm", - > prev="a", - > }, - >} -- __teliva_timestamp: original - view_settings: - >view_settings = { - > width=50, - > height=3, - >} -- __teliva_timestamp: original - render_zettel: - >function render_zettel(window, i, indent, line) - > window:attrset(curses.color_pair(i%2+1)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end -- render: - >function render(window) - > window:clear() - > local i = 0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, i, 0, zettel) - > i = i+1 - > end - > local lines, cols = window:getmaxyx() - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Thu Feb 3 23:01:24 2022 -- render_zettel: - >function render_zettel(window, i, indent, line) - > local y=1, x=1 - > window:attrset(curses.color_pair(i%2+1)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:43:16 2022 -- render: - >function render(window) - > window:clear() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, zettel) - > bg = not bg - > end - > local lines, cols = window:getmaxyx() - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:45:16 2022 -- render_zettel: - >function render_zettel(window, bg, indent, line) - > local y=1, x=1 - > window:attrset(curses.color_pair(bg)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:45:37 2022 -- render_zettel: - >function render_zettel(window, bg, indent, line) - > local y=1 - > local x=1 - > window:attrset(curses.color_pair(bg)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:45:49 2022 -- render_zettel: - >function render_zettel(window, bg, indent, line) - > local y=1 - > local x=1 - > window:attrset(curses.color_pair(tonumber(bg))) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:46:00 2022 -- render_zettel: - >function render_zettel(window, bg, indent, line) - > local y=1 - > local x=1 - > window:attrset(curses.color_pair(bg and 1 or 0)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#line.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:46:47 2022 -- render: - >function render(window) - > window:clear() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > local y=0, x=0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, zettel) - > bg = not bg - > end - > local lines, cols = window:getmaxyx() - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:47:39 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > local y=0, x=0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, y, x zettel) - > bg = not bg - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:49:37 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > local y=0 x=0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, y, x zettel) - > bg = not bg - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:49:46 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > local y, x = 0, 0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, y, x zettel) - > bg = not bg - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:50:09 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=false -- we render zettels with two slightly different background colors - > -- call them true and false; doesn't matter what they are - > local y, x = 0, 0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, y, x, zettel) - > bg = not bg - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:50:18 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > local y=1 - > local x=1 - > window:attrset(curses.color_pair(bg and 1 or 0)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(line.data) - > spaces(view_settings.width-#zettel.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:50:53 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > local y=1 - > local x=1 - > window:attrset(curses.color_pair(bg and 1 or 0)) - > -- exactly 3 lines of text, haiku size - > spaces(1) -- todo: glyph - > spaces(indent) - > window:addstr(zettel.data) - > spaces(view_settings.width-#zettel.data-indent-1) - > print() - > spaces(view_settings.width) - > print() - > spaces(view_settings.width) - > print() - > -- one line of whitespace below - > spaces(view_settings.width) - > print() - >end - __teliva_timestamp: - >Fri Feb 4 21:51:03 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg and 1 or 0)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, 0 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 0 - > else - > mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 21:56:47 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg and 1 or 0)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, 0 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 0 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 21:56:55 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, 0 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 0 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 21:57:22 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > for _, zettel in pairs(zettels) do - > render_zettel(window, bg, 0, y, x, zettel) - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 21:57:54 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, 1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 0 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 21:58:15 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, 1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 21:58:25 2022 -- zettels: - >zettels = { - > root="a", - > a={ - > data="abc\ndef", - > next="b", - > }, - > b={ - > data="ghi\njklm", - > prev="a", - > }, - >} - __teliva_timestamp: - >Fri Feb 4 21:59:29 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > while true do - > render_zettel(window, bg, 0, y, x, zettel) - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:15:09 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local zettel = zettels[table.remove(inprogress)] - > render_zettel(window, bg, 0, y, x, zettel) - > if zettel.next then table.insert(zettle.next) end - > if zettel. - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:19:37 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local zettel = zettels[table.remove(inprogress)] - > render_zettel(window, bg, 0, y, x, zettel) - > if zettel.next then table.insert(zettle.next) end - > if zettel.child then table.insert(zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:20:59 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local zettel = zettels[table.remove(inprogress)] - > render_zettel(window, bg, 0, y, x, zettel) - > if zettel.next then table.insert(zettel.next) end - > if zettel.child then table.insert(zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:21:09 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local zettel = zettels[table.remove(inprogress)] - > render_zettel(window, bg, 0, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:21:30 2022 -- zettels: - >zettels = { - > root="a", - > a={ - > data="abc\ndef", - > next="b", - > }, - > b={ - > data="ghi\njklm", - > prev="a", - > next="a", - > }, - >} - __teliva_timestamp: - >Fri Feb 4 22:22:04 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > render_zettel(window, bg, 0, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:23:54 2022 -- zettels: - >zettels = { - > root="a", - > a={ - > data="abc\ndef", - > child="c", - > next="b", - > }, - > b={ - > data="ghi\njklm", - > prev="a", - > next="a", - > }, - > c={ - > data="c", - > parent="a", - > next="d", - > }, - > d={ - > data="d", - > parent="a", - > prev="c", - > } - >} - __teliva_timestamp: - >Fri Feb 4 22:25:10 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > render_zettel(window, bg, depth(zettel), y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y+view_settings.height+1 - > if y > lines then - > y = 0 - > x = x+view_settings.width+1 - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:26:01 2022 -- __teliva_timestamp: - >Fri Feb 4 22:26:41 2022 - depth: - >function depth(zettel) - > local result = 0 - > while zettel.parent do - > result = result+1 - > zettel = zettel.parent - > end - >end -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:27:10 2022 -- __teliva_timestamp: - >Fri Feb 4 22:27:28 2022 depth: >function depth(zettel) > local result = 0 @@ -1079,357 +200,8 @@ > end > return result >end -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > window:mvaddch(y+starty, x, ' ') - > for x=1,indent do - > window:mvaddch(y+starty, x+startx, '.') - > for x=indent+1,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:30:25 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > window:mvaddch(y+starty, x, ' ') - > for x=1,indent do - > window:mvaddch(y+starty, x+startx, '.') - > end - > for x=indent+1,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:30:29 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > window:mvaddch(y+starty, startx, ' ') - > for x=1,indent do - > window:mvaddch(y+starty, x+startx, '.') - > end - > for x=indent+1,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:30:53 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > window:mvaddch(y+starty, startx, ' ') - > for x=1,indent do - > window:mvaddch(y+starty, x+startx, '.') - > end - > for x=0,view_settings.width-1 do - > if y == 0 and x == indent then - > window:mvaddch(y+starty, x+startx, '↳') - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:33:56 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > if y == 0 and x == indent then - > window:mvaddch(y+starty, x+startx, '↳') - > else - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:34:14 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > if y == 0 then - > window:mvaddch(y+starty, x+startx, '.') - > else - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:34:42 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > if y == 0 and x <= indent then - > window:mvaddch(y+starty, x+startx, '.') - > else - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:35:00 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = indent+1 - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:36:11 2022 -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - >} - __teliva_timestamp: - >Fri Feb 4 22:37:14 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > render_zettel(window, bg, depth(zettel), y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '?') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:37:57 2022 -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=2, - >} - __teliva_timestamp: - >Fri Feb 4 22:38:11 2022 -- render_zettel: - >function render_zettel(window, bg, indent, starty, startx, zettel) - > window:attrset(curses.color_pair(bg)) - > for y=0,view_settings.height-1 do - > for x=0,view_settings.width-1 do - > window:mvaddch(y+starty, x+startx, ' ') - > end - > end - > local y, x = 0, indent+1 - > for i=1,#zettel.data do - > local c = zettel.data[i] - > if c == '\n' then - > y = y+1 - > x = 1 + indent * view_settings.indent - > else - > window:mvaddch(y+starty, x+startx, c) - > x = x+1 - > if x >= startx + view_settings.width then - > y = y+1 - > x = 1 + indent * view_settings.indent - > end - > end - > if y >= starty + view_settings.height then - > break - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:39:18 2022 -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=8, - >} - __teliva_timestamp: - >Fri Feb 4 22:39:35 2022 -- render_zettel: +- __teliva_timestamp: original + render_zettel: >function render_zettel(window, bg, indent, starty, startx, zettel) > window:attrset(curses.color_pair(bg)) > for y=0,view_settings.height-1 do @@ -1456,255 +228,11 @@ > end > end >end - __teliva_timestamp: - >Fri Feb 4 22:40:44 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > render_zettel(window, bg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:41:06 2022 - __teliva_note: - >configurable indent for child zettels -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=2, - >} - __teliva_timestamp: - >Fri Feb 4 22:41:17 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > local currbg = (currid == cursor) and view_settings.current_zettel_color or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:52:51 2022 -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=2, - > cursor - >} - __teliva_timestamp: - >Fri Feb 4 22:53:04 2022 -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=2, - > current_zettel_color=3 - >} - __teliva_timestamp: - >Fri Feb 4 22:53:46 2022 -- __teliva_timestamp: - >Fri Feb 4 22:55:08 2022 - init_colors: - >function init_colors() - > -- light background - > curses.init_pair(view_settings.current_zettel_bg, 236, 226) - > curses.init_pair(1, 236, 250) - > curses.init_pair(2, 236, 252) - > -- dark background - >--? curses.init_pair(view_settings.current_zettel_bg, 252, 172) - >--? curses.init_pair(1, 252, 240) - >--? curses.init_pair(2, 252, 242) - >end -- view_settings: - >view_settings = { - > width=50, - > height=3, - > hmargin=1, - > vmargin=1, - > indent=2, - > current_zettel_bg=3, -- color pair index - >} - __teliva_timestamp: - >Fri Feb 4 22:55:34 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > local currbg = (currid == cursor) and view_settings.current_zettel_bg or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:55:42 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > local currbg = (currid == current_zettel_id) and view_settings.current_zettel_bg or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 22:56:14 2022 -- current_zettel_id: +- __teliva_timestamp: original + current_zettel_id: >current_zettel_id = '' - __teliva_timestamp: - >Fri Feb 4 22:56:28 2022 -- main: - >function main() - > init_colors() - > current_zettel_id = zettels.root - > - > while true do - > render(window) - > update(window) - > end - >end - __teliva_timestamp: - >Fri Feb 4 22:56:54 2022 -- __teliva_timestamp: - >Fri Feb 4 22:58:52 2022 - init_colors: - >function init_colors() - > -- light background - > curses.init_pair(view_settings.current_zettel_bg, 236, 230) - > curses.init_pair(1, 236, 250) - > curses.init_pair(2, 236, 252) - > -- dark background - >--? curses.init_pair(view_settings.current_zettel_bg, 252, 130) - >--? curses.init_pair(1, 252, 240) - >--? curses.init_pair(2, 252, 242) - >end -- view_settings: +- __teliva_timestamp: original + view_settings: >view_settings = { > -- dimensions for rendering a single zettel; extra text gets truncated > width=50, @@ -1716,495 +244,8 @@ > indent=2, -- how children of a zettel are indicated > current_zettel_bg=3, -- color pair index initialized in init_colors >} - __teliva_timestamp: - >Fri Feb 4 23:02:58 2022 - __teliva_note: - >notion of current zettel -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == 'j' then - > if curr.child then current_zettel_id = curr.child end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:10:29 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == 'j' then - > a = b+1 - > if curr.child then current_zettel_id = curr.child end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:11:43 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.child then current_zettel_id = curr.child end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:11:57 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.child then current_zettel_id = curr.child end - > elseif curr.next then current_zettel_id = curr.next end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:12:36 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:13:02 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > 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 curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:13:30 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > 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 curr.parent.next then - > a = b+1 - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:14:14 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > a = b+1 - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:14:23 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.parent then - > mvaddstr(30, 30, 'parent') - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:15:25 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.parent then - > window:mvaddstr(30, 30, 'parent') - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:15:35 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.parent and curr.parent.next then - > window:mvaddstr(30, 30, 'parent.next') - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:16:05 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.parent and curr.parent.next then - > window:mvaddstr(30, 30, curr.parent) - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:16:28 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.parent then - > window:mvaddstr(30, 30, curr.parent) - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:16:38 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > if key == string.byte('j') then - > if curr.next then - > window:mvaddstr(30, 30, curr.next) - > curses.getch() - > end - > if curr.child then - > current_zettel_id = curr.child - > elseif curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > elseif key == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == 'l' then - > if curr.next then - > current_zettel_id = curr.next - > elseif curr.parent and curr.parent.next then - > current_zettel_id = curr.parent.next - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:16:55 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > 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 == 'k' then - > if curr.parent then current_zettel_id = curr.parent end - > elseif key == 'h' then - > if curr.prev then - > current_zettel_id = curr.prev - > elseif curr.parent then - > current_zettel_id = curr.parent - > end - > elseif key == '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 - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:17:49 2022 -- update: - >function update(window) - > local key = curses.getch() - > local curr = zettels[current_zettel_id] - > 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 - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:18:20 2022 - __teliva_note: - >navigating between zettels -- zettels: +- __teliva_timestamp: original + zettels: >zettels = { > root="a", > a={ @@ -2227,50 +268,7 @@ > prev="c", > } >} - __teliva_timestamp: - >Fri Feb 4 23:21:16 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 - > -- render zettels depth-first, while tracking relative positions - > local done = {} - > local inprogress = {zettels.root} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > local zettel = zettels[currid] - > local currbg = (currid == current_zettel_id) and view_settings.current_zettel_bg or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > if y > lines then - > y = 0 - > x = x + view_settings.width + view_settings.hmargin - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 23:28:22 2022 -- __teliva_timestamp: - >Fri Feb 4 23:32:33 2022 +- __teliva_timestamp: original render_state: >-- some information about what's been drawn on screen >render_state = { @@ -2280,448 +278,8 @@ > -- what zettel is at each position on screen, in units of zettels > hw2id = {}, >} -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 -- units of characters (0-based) - > local w, h = 1, 1 -- units of zettels (1-based) - > -- render zettels depth-first, while tracking relative positions - > local done = {} - > local inprogress = {zettels.root} - > render_state.wh2id = {{}} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > table.insert(render_state.wh2id[w], currid) - > local zettel = zettels[currid] - > if currid == current_zettel_id then - > render_state.curr_w = w - > render_state.curr_h = h - > end - > local currbg = (currid == current_zettel_id) and view_settings.current_zettel_bg or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > h = h + 1 - > if y > lines then - > y = 0 - > h = 1 - > x = x + view_settings.width + view_settings.hmargin - > w = w + 1 - > table.insert(render_state.wh2id, {}) - > if x > cols then break end - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 23:37:44 2022 -- 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 curr_h > 0 then - > - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:40:31 2022 -- 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 > 0 then - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:41:11 2022 -- 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 > 0 then - > current_zettel_id = render_state.rw2id[render_state.curr_w][render_state.curr_h - 1] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:42:28 2022 -- 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 > 0 then - > current_zettel_id = render_state.hw2id[render_state.curr_w][render_state.curr_h - 1] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:42:52 2022 -- 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 > 0 then - > print(#render_state.hw2id) - > window:getch() - > current_zettel_id = render_state.hw2id[render_state.curr_w][render_state.curr_h - 1] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:43:51 2022 -- 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 > 0 then - > print(#render_state.wh2id) - > window:getch() - > current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h - 1] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:44:25 2022 -- 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 > 0 then - > current_zettel_id = render_state.wh2id[render_state.curr_w][render_state.curr_h - 1] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:44:44 2022 -- 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 > 0 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 - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:45:54 2022 -- 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 > 0 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 > 0 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][render_state.curr_h] then - > current_zettel_id = render_state.wh2id[render_state.curr_w + 1][render_state.curr_h] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:47:48 2022 -- 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][render_state.curr_h] then - > current_zettel_id = render_state.wh2id[render_state.curr_w + 1][render_state.curr_h] - > end - > end - >end - __teliva_timestamp: - >Fri Feb 4 23:48:34 2022 -- update: +- __teliva_timestamp: original + update: >function update(window) > local key = curses.getch() > local curr = zettels[current_zettel_id] @@ -2767,120 +325,8 @@ > end > end >end - __teliva_timestamp: - >Fri Feb 4 23:49:04 2022 - __teliva_note: - >screen-based zettel navigation - > - >left/right arrows not tested yet -- view_settings: - >view_settings = { - > -- dimensions for rendering a single zettel; extra text gets truncated - > width=50, - > height=40, - > -- spacing between zettels - > hmargin=1, - > vmargin=1, - > -- - > indent=2, -- how children of a zettel are indicated - > current_zettel_bg=3, -- color pair index initialized in init_colors - >} - __teliva_timestamp: - >Fri Feb 4 23:52:43 2022 -- view_settings: - >view_settings = { - > -- dimensions for rendering a single zettel; extra text gets truncated - > width=50, - > height=3, - > -- spacing between zettels - > hmargin=1, - > vmargin=1, - > -- - > indent=2, -- how children of a zettel are indicated - > current_zettel_bg=3, -- color pair index initialized in init_colors - >} - __teliva_timestamp: - >Fri Feb 4 23:53:07 2022 -- render: - >function render(window) - > window:clear() - > local lines, cols = window:getmaxyx() - > local bg=1 - > local y, x = 0, 0 -- units of characters (0-based) - > local w, h = 1, 1 -- units of zettels (1-based) - > -- render zettels depth-first, while tracking relative positions - > local done = {} - > local inprogress = {zettels.root} - > render_state.wh2id = {{}} - > while #inprogress > 0 do - > local currid = table.remove(inprogress) - > if not done[currid] then - > done[currid] = true - > table.insert(render_state.wh2id[w], currid) - > local zettel = zettels[currid] - > if currid == current_zettel_id then - > render_state.curr_w = w - > render_state.curr_h = h - > end - > local currbg = (currid == current_zettel_id) and view_settings.current_zettel_bg or bg - > render_zettel(window, currbg, depth(zettel) * view_settings.indent, y, x, zettel) - > if zettel.next then table.insert(inprogress, zettel.next) end - > if zettel.child then table.insert(inprogress, zettel.child) end - > bg = 3 - bg -- toggle between color pairs 1 and 2 - > y = y + view_settings.height + view_settings.vmargin - > h = h + 1 - > if y > lines then - > y = 0 - > h = 1 - > x = x + view_settings.width + view_settings.hmargin - > w = w + 1 - > if x + view_settings.width > cols then break end - > table.insert(render_state.wh2id, {}) - > end - > end - > end - > window:mvaddstr(lines-2, 0, '') - > for i=1,3 do - > window:attrset(curses.color_pair(i%2+1)) - > window:addstr('') - > spaces(view_settings.width-string.len('')) - > window:attrset(curses.color_pair(0)) - > window:addstr(' ') -- margin - > end - > window:mvaddstr(lines-1, 0, '? ') - > curses.refresh() - >end - __teliva_timestamp: - >Fri Feb 4 23:53:57 2022 -- view_settings: - >view_settings = { - > -- dimensions for rendering a single zettel; extra text gets truncated - > width=50, - > height=35, - > -- spacing between zettels - > hmargin=1, - > vmargin=1, - > -- - > indent=2, -- how children of a zettel are indicated - > current_zettel_bg=3, -- color pair index initialized in init_colors - >} - __teliva_timestamp: - >Fri Feb 4 23:54:07 2022 -- view_settings: - >view_settings = { - > -- dimensions for rendering a single zettel; extra text gets truncated - > width=50, - > height=40, - > -- spacing between zettels - > hmargin=1, - > vmargin=1, - > -- - > indent=2, -- how children of a zettel are indicated - > current_zettel_bg=3, -- color pair index initialized in init_colors - >} - __teliva_timestamp: - >Fri Feb 4 23:54:18 2022 -- render: +- __teliva_timestamp: original + render: >function render(window) > window:clear() > local lines, cols = window:getmaxyx() @@ -2929,26 +375,7 @@ > window:mvaddstr(lines-1, 0, '? ') > curses.refresh() >end - __teliva_timestamp: - >Fri Feb 4 23:54:51 2022 -- view_settings: - >view_settings = { - > -- dimensions for rendering a single zettel; extra text gets truncated - > width=50, - > height=35, - > -- spacing between zettels - > hmargin=1, - > vmargin=1, - > -- - > indent=2, -- how children of a zettel are indicated - > current_zettel_bg=3, -- color pair index initialized in init_colors - >} - __teliva_timestamp: - >Fri Feb 4 23:54:58 2022 -- __teliva_note: - >tested multi-column render and nav - __teliva_timestamp: - >Fri Feb 4 23:55:10 2022 +- __teliva_timestamp: original view_settings: >view_settings = { > -- dimensions for rendering a single zettel; extra text gets truncated |