about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-18 14:53:38 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-18 14:53:38 +0100
commit2bde1a2b91fa9a0cdbc853b47f773c7f7828bc0b (patch)
treecbac20fb97cf52b16457108657e249d3439d7cd4 /src
parent74f7ff805a5de7f1394f9a9ca5c3c3f0aa07caa3 (diff)
downloadchawan-2bde1a2b91fa9a0cdbc853b47f773c7f7828bc0b.tar.gz
pager: keep reading if term has chars buffered
Diffstat (limited to 'src')
-rw-r--r--src/local/pager.nim4
-rw-r--r--src/local/term.nim3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/local/pager.nim b/src/local/pager.nim
index b61e02e9..0052e18f 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -804,6 +804,10 @@ proc input(pager: Pager): EmptyPromise =
   pager.inputBuffer = ""
   if p == nil:
     p = newResolvedPromise()
+  if pager.term.hasBuffer():
+    return p.then(proc(): EmptyPromise =
+      return pager.input()
+    )
   return p
 
 proc run*(pager: Pager; pages: openArray[string]; contentType: string;
diff --git a/src/local/term.nim b/src/local/term.nim
index 00c60e2b..5199fadb 100644
--- a/src/local/term.nim
+++ b/src/local/term.nim
@@ -274,6 +274,9 @@ proc resetInputBuffer*(term: Terminal) =
   term.ibufn = 0
   term.ibufLen = 0
 
+proc hasBuffer*(term: Terminal): bool =
+  return term.ibufn < term.ibufLen
+
 proc flush*(term: Terminal) =
   term.outfile.flushFile()