about summary refs log tree commit diff stats
path: root/src/local
diff options
context:
space:
mode:
Diffstat (limited to 'src/local')
-rw-r--r--src/local/pager.nim20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/local/pager.nim b/src/local/pager.nim
index 87ac422a..6c18c91c 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -159,8 +159,11 @@ proc getLineHist(pager: Pager, mode: LineMode): LineHistory =
     pager.linehist[mode] = newLineHistory()
   return pager.linehist[mode]
 
-proc setLineEdit(pager: Pager, prompt: string, mode: LineMode, current = "", hide = false) =
-  pager.lineedit = some(readLine(prompt, pager.attrs.width, current = current, term = pager.term, hide = hide, hist = pager.getLineHist(mode)))
+proc setLineEdit(pager: Pager, prompt: string, mode: LineMode,
+    current = "", hide = false) =
+  let hist = pager.getLineHist(mode)
+  let edit = readLine(prompt, pager.attrs.width, current, {}, hide, hist)
+  pager.lineedit = some(edit)
   pager.linemode = mode
 
 proc clearLineEdit(pager: Pager) =
@@ -344,10 +347,8 @@ proc draw*(pager: Pager) =
   if pager.askpromise != nil:
     discard
   elif pager.lineedit.isSome:
-    if pager.lineedit.get.isnew:
-      #TODO hack
-      # make term notice that it must redraw when status is restored
-      let x = newFixedGrid(pager.attrs.width)
+    if pager.lineedit.get.invalid:
+      let x = pager.lineedit.get.generateOutput()
       pager.term.writeGrid(x, 0, pager.attrs.height - 1)
   else:
     pager.term.writeGrid(pager.statusgrid, 0, pager.attrs.height - 1)
@@ -355,13 +356,6 @@ proc draw*(pager: Pager) =
   if pager.askpromise != nil:
     pager.term.setCursor(pager.askcursor, pager.attrs.height - 1)
   elif pager.lineedit.isSome:
-    if pager.lineedit.get.isnew:
-      #TODO hack
-      pager.term.setCursor(0, pager.attrs.height - 1)
-      pager.lineedit.get.drawPrompt()
-      pager.term.setCursor(pager.lineedit.get.getCursorX(), pager.attrs.height - 1)
-      pager.lineedit.get.fullRedraw()
-      pager.lineedit.get.isnew = false
     pager.term.setCursor(pager.lineedit.get.getCursorX(), pager.attrs.height - 1)
   elif container.select.open:
     pager.term.setCursor(container.select.getCursorX(),