about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-02-10 23:40:51 -0800
committerKartik K. Agaram <vc@akkartik.com>2022-02-10 23:40:51 -0800
commitd7436f047dea50cff8357b308719a5a389f08ba2 (patch)
treee6cb47a872d7a65ea7ce7a45e0515958a3ed1ba0
parentc55956bf9678c3ac1104abd9c8e322658d003d15 (diff)
downloadteliva-d7436f047dea50cff8357b308719a5a389f08ba2.tar.gz
zet.tlv: fix a couple more bugs
This snapshot was demoed at https://archive.org/details/akkartik-teliva-2022-02-10
-rw-r--r--zet.tlv81
1 files changed, 81 insertions, 0 deletions
diff --git a/zet.tlv b/zet.tlv
index 18582f5..c7da813 100644
--- a/zet.tlv
+++ b/zet.tlv
@@ -2287,3 +2287,84 @@
     >    view_settings.first_zettel = current_zettel_id
     >  end
     >end
+- __teliva_timestamp:
+    >Thu Feb 10 21:51:09 2022
+  __teliva_note:
+    >fix regression in editor
+  editz_render:
+    >function editz_render(window, s, cursor, top, minbottom, left, right)
+    >  local h, w = window:getmaxyx()
+    >  local cursor_y, cursor_x = 0, 0
+    >  window:attrset(curses.color_pair(1)) -- 1 is the color combination for the current zettel
+    >  for y=top,minbottom-1 do
+    >    for x=left,right-1 do
+    >      window:mvaddch(y, x, ' ')
+    >    end
+    >  end
+    >  local y, x = top, left + 1  -- left padding; TODO: indent
+    >  window:mvaddstr(y, x, '')
+    >  for i=1,string.len(s) do
+    >    if i == cursor then
+    >      cursor_y = y
+    >      cursor_x = x
+    >    end
+    >    if s[i] ~= '\n' then
+    >      window:addstr(s[i])
+    >      x = x + 1
+    >      if x >= right then
+    >        y = y + 1
+    >        if y >= h-2 then return end
+    >        x = left + 1  -- left padding; TODO: indent
+    >        window:mvaddstr(y, x, '')
+    >      end
+    >    else
+    >      for col=x+1,right-1 do window:addch(' '); end
+    >      x = left
+    >      y = y + 1
+    >      if y >= h-2 then return end
+    >      window:mvaddstr(y, x, '')
+    >      for col=x,right-1 do window:addch(' '); end
+    >      x = left + 1  -- left padding; TODO: indent
+    >      window:mvaddstr(y, x, '')
+    >    end
+    >  end
+    >  if cursor_y == 0 and cursor_x == 0 then
+    >    cursor_y = y
+    >    cursor_x = x
+    >  end
+    >  window:mvaddstr(cursor_y, cursor_x, '')
+    >end
+- __teliva_timestamp:
+    >Fri Feb 11 01:33:31 2022
+  __teliva_note:
+    >support /tmp being on a separate volume
+    >
+    >also better error-checking
+  main:
+    >function main()
+    >  init_colors()
+    >  curses.curs_set(0)  -- hide cursor except when editing
+    >
+    >  local infile = io.open('zet', 'r')
+    >  if infile then
+    >    read_zettels(infile)
+    >  end
+    >  current_zettel_id = zettels.root  -- cursor
+    >  view_settings.first_zettel = zettels.root  -- start rendering here
+    >
+    >  while true do
+    >    render(window)
+    >    update(window)
+    >
+    >    -- save zettels, but hold on to previous state on disk
+    >    -- until last possible second
+    >    local outfile = io.open('teliva_tmp', 'w')
+    >    if outfile then
+    >      write_zettels(outfile)
+    >      local status, message = os.rename('teliva_tmp', 'zet')
+    >      assert(status, message)  -- unceremoniously abort, but we hopefully only lost a little
+    >    end
+    >    -- TODO: what if io.open failed for a non-sandboxing related reason?!
+    >    -- We could silently fail to save.
+    >  end
+    >end