summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ui.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/ui.c b/ui.c
index f5c4936..3b1fdc1 100644
--- a/ui.c
+++ b/ui.c
@@ -950,7 +950,8 @@ void uiRead(void) {
 }
 
 static const time_t Signatures[] = {
-	0x6C72696774616301,
+	0x6C72696774616301, // no heat, unreadTotal, unreadWarm
+	0x6C72696774616302,
 };
 
 static size_t signatureVersion(time_t signature) {
@@ -971,10 +972,13 @@ int uiSave(const char *name) {
 	FILE *file = dataOpen(name, "w");
 	if (!file) return -1;
 
-	if (writeTime(file, Signatures[0])) return -1;
+	if (writeTime(file, Signatures[1])) return -1;
 	for (size_t num = 0; num < windows.len; ++num) {
 		const struct Window *window = windows.ptrs[num];
 		if (writeString(file, idNames[window->id])) return -1;
+		if (writeTime(file, window->heat)) return -1;
+		if (writeTime(file, window->unreadTotal)) return -1;
+		if (writeTime(file, window->unreadWarm)) return -1;
 		for (size_t i = 0; i < BufferCap; ++i) {
 			time_t time = bufferTime(&window->buffer, i);
 			const char *line = bufferLine(&window->buffer, i);
@@ -1017,12 +1021,17 @@ void uiLoad(const char *name) {
 		fclose(file);
 		return;
 	}
-	signatureVersion(signature);
+	size_t version = signatureVersion(signature);
 
 	char *buf = NULL;
 	size_t cap = 0;
 	while (0 < readString(file, &buf, &cap)) {
 		struct Window *window = windows.ptrs[windowFor(idFor(buf))];
+		if (version > 0) {
+			window->heat = readTime(file);
+			window->unreadTotal = readTime(file);
+			window->unreadWarm = readTime(file);
+		}
 		for (;;) {
 			time_t time = readTime(file);
 			if (!time) break;
@@ -1031,6 +1040,7 @@ void uiLoad(const char *name) {
 		}
 		reflow(window);
 		waddch(window->pad, '\n');
+		window->unreadLines++;
 	}
 
 	free(buf);
16:20:33 -0500'>2022-02-20Share a cut buffer between all edit buffersJune McEnroe 2022-02-20Assert return values in edit testsJune McEnroe 2022-02-20Move mbs out of struct Edit, use a global bufferJune McEnroe 2022-02-20Clear edit buffer before running commandJune McEnroe 2022-02-20Show indicator in status when window has pending inputJune McEnroe 2022-02-20Use separate edit buffers for each IDJune McEnroe 2022-02-20Make sure new cap is actually larger than new lengthJune McEnroe 2022-02-20Remove unused mbs.len field from struct EditJune McEnroe 2022-02-19Remove unneeded includes in ui.cJune McEnroe 2022-02-19Reimplement tab completeJune McEnroe 2022-02-19Handle errors from editFn, etc.June McEnroe 2022-02-19Reimplement text macrosJune McEnroe 2022-02-19Factor out input handling to input.cJune McEnroe 2022-02-19Factor out window management to window.cJune McEnroe 2022-02-19Enable -Wmissing-prototypesJune McEnroe 2022-02-19Fix edit.[ch] license notice additional permissionsJune McEnroe 2022-02-19Run line editing testsJune McEnroe 2022-02-18Implement new line editing "library"June McEnroe 2022-02-18Simplify cursor positioning in inputJune McEnroe 2022-02-18Fix M-f orderingJune McEnroe 2022-02-12Move sandman build to scripts/MakefileJune McEnroe 2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe 2022-02-12Copy RPP defines from oconfigureJune McEnroe