about summary refs log tree commit diff stats
path: root/src/local
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-02-15 15:38:02 +0100
committerbptato <nincsnevem662@gmail.com>2025-02-15 16:52:57 +0100
commit342a82c3a9c3acc635916834d206028914979112 (patch)
treea222ec2330c567d5a9ce244bf4f9caaacf4d370c /src/local
parent5feb2c37ee8d6e914f4d31e4db6ddc3e68b24c6a (diff)
downloadchawan-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.nim2
-rw-r--r--src/local/pager.nim26
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,