diff options
author | bptato <nincsnevem662@gmail.com> | 2025-02-15 15:38:02 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-02-15 16:52:57 +0100 |
commit | 342a82c3a9c3acc635916834d206028914979112 (patch) | |
tree | a222ec2330c567d5a9ce244bf4f9caaacf4d370c /src/local | |
parent | 5feb2c37ee8d6e914f4d31e4db6ddc3e68b24c6a (diff) | |
download | chawan-342a82c3a9c3acc635916834d206028914979112.tar.gz |
buffer: wait for scripts in headless mode
Dump mode remains the same, except now it can be controlled in config.toml as well.
Diffstat (limited to 'src/local')
-rw-r--r-- | src/local/container.nim | 2 | ||||
-rw-r--r-- | src/local/pager.nim | 26 |
2 files changed, 15 insertions, 13 deletions
diff --git a/src/local/container.nim b/src/local/container.nim index cb6ebdb5..a6670498 100644 --- a/src/local/container.nim +++ b/src/local/container.nim @@ -1714,7 +1714,7 @@ proc handleCommand(container: Container) = container.iface.resolve(packet[2], packet[0] - sizeof(packet[2]), packet[1]) proc startLoad(container: Container) = - if not container.config.dumpMode: + if container.config.headless == hmFalse: container.repaintLoop() container.iface.load().then(proc(res: int) = container.onload(res) diff --git a/src/local/pager.nim b/src/local/pager.nim index 8a5eb87f..389b771c 100644 --- a/src/local/pager.nim +++ b/src/local/pager.nim @@ -501,7 +501,8 @@ proc runJSJobs(pager: Pager) = pager.quit(0) proc evalJS(pager: Pager; src, filename: string; module = false): JSValue = - pager.term.catchSigint() + if pager.config.start.headless == hmFalse: + pager.term.catchSigint() let flags = if module: JS_EVAL_TYPE_MODULE else: @@ -516,7 +517,8 @@ proc evalJS(pager: Pager; src, filename: string; module = false): JSValue = pager.quit(pager.exitCode) else: pager.runJSJobs() - pager.term.respectSigint() + if pager.config.start.headless == hmFalse: + pager.term.respectSigint() proc evalActionJS(pager: Pager; action: string): JSValue = if action.startsWith("cmd."): @@ -778,11 +780,10 @@ proc input(pager: Pager): EmptyPromise = return p proc run*(pager: Pager; pages: openArray[string]; contentType: string; - cs: Charset; dump, history: bool) = + cs: Charset; history: bool) = var istream: PosixStream = nil - var dump = dump let ps = newPosixStream(STDIN_FILENO) - if not dump: + if pager.config.start.headless == hmFalse: if ps.isatty(): istream = ps let os = newPosixStream(STDOUT_FILENO) @@ -791,8 +792,8 @@ proc run*(pager: Pager; pages: openArray[string]; contentType: string; istream = newPosixStream("/dev/tty", O_RDONLY, 0) else: istream = nil - dump = istream == nil - pager.dumpMode = dump + if istream == nil: + pager.config.start.headless = hmDump pager.pollData.register(pager.forkserver.estream.fd, POLLIN) pager.loader.registerFun = proc(fd: int) = pager.pollData.register(fd, POLLIN) @@ -818,17 +819,18 @@ proc run*(pager: Pager; pages: openArray[string]; contentType: string; # stdin may very well receive ANSI text let contentType = if contentType != "": contentType else: "text/x-ansi" pager.readPipe(contentType, cs, ps, "*stdin*") - let history = not dump and history # we don't want history for dump either + # we don't want history for dump/headless mode + let history = pager.config.start.headless == hmFalse and history for page in pages: pager.loadURL(page, contentType, cs, history) pager.showAlerts() pager.acceptBuffers() - if not dump: + if pager.config.start.headless == hmFalse: pager.inputLoop() else: + if pager.config.start.headless == hmTrue: # else just dump + pager.headlessLoop() pager.dumpBuffers() - if pager.config.start.headless: - pager.headlessLoop() # Note: this function does not work correctly if start < x of last written char proc writeStatusMessage(pager: Pager; str: string; format = Format(); @@ -1747,7 +1749,7 @@ proc applySiteconf(pager: Pager; url: URL; charsetOverride: Charset; styling: pager.config.buffer.styling, autofocus: pager.config.buffer.autofocus, history: pager.config.buffer.history, - dumpMode: pager.dumpMode, + headless: pager.config.start.headless, charsetOverride: charsetOverride, protocol: pager.config.protocol, metaRefresh: pager.config.buffer.metaRefresh, |