about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-11-05 15:48:27 +0100
committerbptato <nincsnevem662@gmail.com>2022-11-09 15:05:23 +0100
commitc2df7d47b151be732542cc3ff37817762e87bcb8 (patch)
tree1a28d912a181fe9544e6d797573ea22052bc4172
parentf3f13da82686c73e5593e3ba3362b2470bd215bc (diff)
downloadchawan-c2df7d47b151be732542cc3ff37817762e87bcb8.tar.gz
Use separate FileLoader instance for each buffer
-rw-r--r--src/display/client.nim4
-rw-r--r--src/display/pager.nim4
-rw-r--r--src/io/buffer.nim7
3 files changed, 7 insertions, 8 deletions
diff --git a/src/display/client.nim b/src/display/client.nim
index 9f43a623..ddbccc21 100644
--- a/src/display/client.nim
+++ b/src/display/client.nim
@@ -70,7 +70,7 @@ proc statusMode(client: Client) =
   print(EL())
 
 proc readPipe(client: Client, ctype: string) =
-  let buffer = newBuffer(client.config, client.loader, client.console.tty)
+  let buffer = newBuffer(client.config, client.console.tty)
   buffer.contenttype = if ctype != "": ctype else: "text/plain"
   buffer.ispipe = true
   buffer.istream = newFileStream(stdin)
@@ -128,7 +128,7 @@ proc command(client: Client, src: string) =
   client.command0(src)
   client.console.err.setPosition(previ)
   if client.console.lastbuf == nil:
-    let buffer = newBuffer(client.config, client.loader, client.console.tty)
+    let buffer = newBuffer(client.config, client.console.tty)
     buffer.istream = newStringStream(client.console.err.readAll()) #TODO
     buffer.contenttype = "text/plain"
     buffer.location = parseUrl("javascript:void(0);").get
diff --git a/src/display/pager.nim b/src/display/pager.nim
index fbd91483..61407e60 100644
--- a/src/display/pager.nim
+++ b/src/display/pager.nim
@@ -289,7 +289,7 @@ proc toggleSource*(pager: Pager) {.jsfunc.} =
   if pager.container.sourcepair != nil:
     pager.setContainer(pager.container.sourcepair)
   else:
-    let buffer = newBuffer(pager.config, pager.loader, pager.tty)
+    let buffer = newBuffer(pager.config, pager.tty)
     buffer.source = pager.container.buffer.source
     buffer.streamclosed = true
     buffer.location = pager.container.buffer.location
@@ -316,7 +316,7 @@ proc gotoURL*(pager: Pager, request: Request, prevurl = none(URL), force = false
     # feedback on what is actually going to happen when typing a URL; TODO.
     let response = pager.loader.doRequest(request)
     if response.body != nil:
-      let buffer = newBuffer(pager.config, pager.loader, pager.tty)
+      let buffer = newBuffer(pager.config, pager.tty)
       buffer.contenttype = if ctype != "": ctype else: response.contenttype
       buffer.istream = response.body
       buffer.location = request.url
diff --git a/src/io/buffer.nim b/src/io/buffer.nim
index 8bfd6d16..f4cce8c4 100644
--- a/src/io/buffer.nim
+++ b/src/io/buffer.nim
@@ -72,14 +72,13 @@ type
     config*: Config
     tty: File
 
-proc newBuffer*(config: Config, loader: FileLoader, tty: File): Buffer =
+proc newBuffer*(config: Config, tty: File): Buffer =
   new(result)
   result.attrs = getTermAttributes(stdout)
   result.width = result.attrs.width
   result.height = result.attrs.height - 1
   result.config = config
-  result.loader = loader
-  result.tty = tty
+  result.loader = newFileLoader()
 
   result.display = newFixedGrid(result.width, result.height)
   result.prevdisplay = newFixedGrid(result.width, result.height)
@@ -1216,7 +1215,7 @@ proc setupBuffer*(buffer: Buffer) =
   buffer.redraw = true
 
 proc dupeBuffer*(buffer: Buffer, location = none(URL)): Buffer =
-  let clone = newBuffer(buffer.config, buffer.loader, buffer.tty)
+  let clone = newBuffer(buffer.config, buffer.tty)
   clone.contenttype = buffer.contenttype
   clone.ispipe = buffer.ispipe
   if location.isSome: