From 976e7bfbb4d9f90f0d666e547b15720290ba4389 Mon Sep 17 00:00:00 2001
From: Přemysl Eric Janouch <p@janouch.name>
Date: Tue, 6 Sep 2022 23:17:47 +0200
Subject: xP: separate input buffers

---
 xP/public/xP.js | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/xP/public/xP.js b/xP/public/xP.js
index dba8a99..19a769a 100644
--- a/xP/public/xP.js
+++ b/xP/public/xP.js
@@ -163,13 +163,22 @@ rpc.addEventListener('BufferRemove', event => {
 })
 
 rpc.addEventListener('BufferActivate', event => {
-	let e = event.detail
+	let e = event.detail, b = buffers.get(e.bufferName)
+	let old = buffers.get(bufferCurrent)
 	bufferCurrent = e.bufferName
-	setTimeout(() => {
-		let el = document.getElementById('input')
-		if (el !== null)
-			el.focus()
-	})
+
+	let textarea = document.getElementById('input')
+	if (textarea === null)
+		return
+
+	textarea.focus()
+	if (old !== undefined)
+		old.input = textarea.value
+
+	if (b !== undefined)
+		textarea.value = b.input || ''
+	else
+		textarea.value = ''
 })
 
 rpc.addEventListener('BufferLine', event => {
@@ -388,8 +397,6 @@ function onKeyDown(event) {
 	event.preventDefault()
 }
 
-// TODO: This should be remembered across buffer switches,
-// and we'll probably have to intercept /all/ key presses.
 let Input = {
 	view: vnode => {
 		return m('textarea#input', {
-- 
cgit v1.2.3-70-g09d2