diff options
author | bptato <nincsnevem662@gmail.com> | 2022-11-21 23:31:29 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2022-11-21 23:31:29 +0100 |
commit | bd8e806b04b024f916b274650185c3480d3cff36 (patch) | |
tree | 2076cd4525a1d2672ff6986ae3fea9b1d364a13b /src/display | |
parent | 95444650537805d414deec706ad98e37df8b88db (diff) | |
download | chawan-bd8e806b04b024f916b274650185c3480d3cff36.tar.gz |
Termcap support (?)
Diffstat (limited to 'src/display')
-rw-r--r-- | src/display/client.nim | 6 | ||||
-rw-r--r-- | src/display/pager.nim | 12 |
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() |