about summary refs log tree commit diff stats
path: root/src/display
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-11-21 23:31:29 +0100
committerbptato <nincsnevem662@gmail.com>2022-11-21 23:31:29 +0100
commitbd8e806b04b024f916b274650185c3480d3cff36 (patch)
tree2076cd4525a1d2672ff6986ae3fea9b1d364a13b /src/display
parent95444650537805d414deec706ad98e37df8b88db (diff)
downloadchawan-bd8e806b04b024f916b274650185c3480d3cff36.tar.gz
Termcap support (?)
Diffstat (limited to 'src/display')
-rw-r--r--src/display/client.nim6
-rw-r--r--src/display/pager.nim12
2 files changed, 13 insertions, 5 deletions
diff --git a/src/display/client.nim b/src/display/client.nim
index add5dfbc..9ef501ab 100644
--- a/src/display/client.nim
+++ b/src/display/client.nim
@@ -264,16 +264,20 @@ proc newConsole(pager: Pager, tty: File): Console =
       raise newException(Defect, "Failed to open file for console pipe.")
     result.err = newFileStream(f)
     result.pager = pager
+    result.tty = tty
   else:
     result.err = newFileStream(stderr)
 
 proc launchClient*(client: Client, pages: seq[string], ctype: Option[string], dump: bool) =
   var tty: File
+  var dump = dump
   if not dump:
     if stdin.isatty():
       tty = stdin
     elif stdout.isatty():
       discard open(tty, "/dev/tty", fmRead)
+    else:
+      dump = true
   client.pager.launchPager(tty)
   client.console = newConsole(client.pager, tty)
   let pid = getpid()
@@ -296,7 +300,7 @@ proc launchClient*(client: Client, pages: seq[string], ctype: Option[string], du
   for page in pages:
     client.pager.loadURL(page, ctype = ctype)
 
-  if stdout.isatty() and not dump:
+  if not dump:
     client.inputLoop()
   else:
     for msg in client.pager.status:
diff --git a/src/display/pager.nim b/src/display/pager.nim
index f19e02a0..4d1d56e4 100644
--- a/src/display/pager.nim
+++ b/src/display/pager.nim
@@ -106,15 +106,17 @@ proc searchPrev(pager: Pager) {.jsfunc.} =
     else:
       pager.container.cursorNextMatch(pager.regex.get, true)
 
+#TODO get rid of this
 proc statusMode(pager: Pager) =
-  print(HVP(pager.attrs.height + 1, 1))
-  print(SGR())
-  print(EL())
+  pager.term.setCursor(0, pager.attrs.height - 1)
+  pager.term.resetFormat2()
+  pager.term.eraseLine()
 
+#TODO ditto
 proc setLineEdit*(pager: Pager, edit: LineEdit, mode: LineMode) =
   pager.statusMode()
   edit.writeStart()
-  stdout.flushFile()
+  pager.term.flush()
   pager.lineedit = some(edit)
   pager.linemode = mode
 
@@ -250,9 +252,11 @@ proc refreshStatusMsg*(pager: Pager) =
     format.reverse = true
     pager.writeStatusMessage(msg, format)
 
+#TODO get rid of this
 func generateStatusOutput(pager: Pager): string =
   return pager.generateStatusMessage()
 
+#TODO ditto
 proc displayStatus*(pager: Pager) =
   if pager.lineedit.isNone:
     pager.statusMode()