curses message history vs dumplog message history

When I implemented getmsghistory()/putmsghistory() for curses I was
assuming that DUMPLOG would only be used with tty, but it is interface
neutral and can be used with curses (or others).  So curses message
history needs to behave like tty message history and be sure to pass
along messages that bypass pline() and the normal message window.
(Mainly one-line summaries of long quest messages, but also old
messages fetched from a save file and available to be re-saved without
having been shown if new session doesn't generate enough new messages
to flush them.)
This commit is contained in:
PatR
2019-06-30 11:50:08 -07:00
parent d352dd8d1a
commit 18ae35ef39
2 changed files with 16 additions and 1 deletions

View File

@@ -887,6 +887,9 @@ boolean restoring_msghist;
static boolean initd = FALSE;
static int stash_count;
static nhprev_mesg *stash_head = 0;
#ifdef DUMPLOG
extern unsigned saved_pline_index; /* pline.c */
#endif
if (restoring_msghist && !initd) {
/* hide any messages we've gathered since starting current session
@@ -896,12 +899,19 @@ boolean restoring_msghist;
stash_head = first_mesg, first_mesg = (nhprev_mesg *) 0;
last_mesg = (nhprev_mesg *) 0; /* no need to remember the tail */
initd = TRUE;
#ifdef DUMPLOG
/* this suffices; there's no need to scrub saved_pline[] pointers */
saved_pline_index = 0;
#endif
}
if (msg) {
mesg_add_line(msg);
/* treat all saved and restored messages as turn #1 */
last_mesg->turn = 1L;
#ifdef DUMPLOG
dumplogmsg(last_mesg->str);
#endif
} else if (stash_count) {
nhprev_mesg *mesg;
long mesg_turn;
@@ -921,6 +931,9 @@ boolean restoring_msghist;
mesg_add_line(mesg->str);
/* added line became new tail */
last_mesg->turn = mesg_turn;
#ifdef DUMPLOG
dumplogmsg(mesg->str);
#endif
free((genericptr_t) mesg->str);
free((genericptr_t) mesg);
}