diff options
author | bptato <nincsnevem662@gmail.com> | 2023-01-06 20:16:18 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-01-06 22:24:01 +0100 |
commit | 8323cf214819297cae0ce0908e339a78a289434a (patch) | |
tree | a861b10713ae244ae593e8988087a8aa449a3375 | |
parent | 85ec984f948623662a76a3fbfe50354f6be9612e (diff) | |
download | chawan-8323cf214819297cae0ce0908e339a78a289434a.tar.gz |
Slightly refactor commandMode
-rw-r--r-- | res/config.toml | 8 | ||||
-rw-r--r-- | src/buffer/container.nim | 2 | ||||
-rw-r--r-- | src/display/client.nim | 16 | ||||
-rw-r--r-- | src/display/pager.nim | 13 |
4 files changed, 27 insertions, 12 deletions
diff --git a/res/config.toml b/res/config.toml index ae0d4d8d..968e4626 100644 --- a/res/config.toml +++ b/res/config.toml @@ -89,7 +89,6 @@ M-d = 'pager.discardTree()' 'M-.' = 'pager.nextSiblingBuffer()' 'M-/' = 'pager.parentBuffer()' M-c = 'pager.command()' -C = 'pager.commandMode();console.show()' '/' = 'pager.isearchForward()' '?' = 'pager.isearchBackward()' n = 'pager.searchNext()' @@ -122,3 +121,10 @@ C-e = 'line.end()' C-v = 'line.escape()' C-p = 'line.prevHist()' C-n = 'line.nextHist()' +M-c = ''' +pager.commandMode = !(console.buffer == pager.buffer); +if (pager.commandMode) + console.hide(); +else + console.show(); +''' diff --git a/src/buffer/container.nim b/src/buffer/container.nim index d5c6becf..3315b79c 100644 --- a/src/buffer/container.nim +++ b/src/buffer/container.nim @@ -672,7 +672,7 @@ proc onload(container: Container, res: LoadResult) = container.setCursorXY(res.x, res.y)) proc load(container: Container) = - container.setLoadInfo("Connecting to " & $container.source.location) + container.setLoadInfo("Connecting to " & container.location.host & "...") container.iface.connect().then(proc(res: ConnectResult): auto = let info = container.loadinfo if res.code != -2: diff --git a/src/display/client.nim b/src/display/client.nim index ecc01260..50d7383c 100644 --- a/src/display/client.nim +++ b/src/display/client.nim @@ -272,6 +272,9 @@ proc hide(console: Console) {.jsfunc.} = if console.pager.container == console.container: console.pager.setContainer(console.prev) +proc buffer(console: Console): Container {.jsfget.} = + return console.container + proc acceptBuffers(client: Client) = while client.pager.unreg.len > 0: let (pid, stream) = client.pager.unreg.pop() @@ -307,17 +310,22 @@ proc handleRead(client: Client, fd: int) = client.input() client.handlePagerEvents() elif fd == client.dispatcher.forkserver.estream.fd: - var nl = true + var nl = false + const prefix = "STDERR: " + var s = prefix while true: try: let c = client.dispatcher.forkserver.estream.readChar() - if nl: - client.console.err.write("STDERR: ") + if nl and s.len > prefix.len: + client.console.err.write(s) + s = prefix nl = false - client.console.err.write(c) + s &= c nl = c == '\n' except IOError: break + if s.len > prefix.len: + client.console.err.write(s) client.console.err.flush() else: let container = client.fdmap[fd] diff --git a/src/display/pager.nim b/src/display/pager.nim index 0f5a683b..08cfca41 100644 --- a/src/display/pager.nim +++ b/src/display/pager.nim @@ -42,7 +42,7 @@ type numload*: int alerts: seq[string] alerton: bool - commandMode*: bool + commandMode* {.jsget.}: bool container*: Container dispatcher*: Dispatcher lineedit*: Option[LineEdit] @@ -656,9 +656,10 @@ proc readPipe*(pager: Pager, ctype: Option[string], fd: FileHandle) = proc command(pager: Pager) {.jsfunc.} = pager.setLineEdit("COMMAND: ", COMMAND) -proc commandMode(pager: Pager) {.jsfunc.} = - pager.commandmode = true - pager.command() +proc commandMode(pager: Pager, val: bool) {.jsfset.} = + pager.commandMode = val + if val: + pager.command() proc updateReadLineISearch(pager: Pager, linemode: LineMode) = let lineedit = pager.lineedit.get @@ -707,7 +708,7 @@ proc updateReadLine*(pager: Pager) = pager.gotoURL(newRequest(url), some(pager.container.source.location), replace = pager.container, referrer = pager.container) of COMMAND: pager.scommand = s - if pager.commandmode: + if pager.commandMode: pager.command() of BUFFER: pager.container.readSuccess(s) of SEARCH_F: @@ -730,7 +731,7 @@ proc updateReadLine*(pager: Pager) = pager.username = "" pager.discardBuffer() of BUFFER: pager.container.readCanceled() - of COMMAND: pager.commandmode = false + of COMMAND: pager.commandMode = false else: discard if lineedit.state in {CANCEL, FINISH}: if pager.lineedit.get == lineedit: |