-$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.7 $ $NHDT-Date: 1558234580 2019/05/19 02:56:20 $
+$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.8 $ $NHDT-Date: 1558248715 2019/05/19 06:51:55 $
This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however,
leaving part of longer underlying line's text visible
curses: if message window is only one line, cancelling some prompts with ESC
left the prompts visible on the message line instead of erasing them
+curses: support EDIT_GETLIN (but like with tty, it's disabled by default) to
+ pre-load an earlier response as the default answer for some prompts
Windows: some startup error messages were not being delivered successfully
-/* NetHack 3.6 config.h $NHDT-Date: 1447728911 2015/11/17 02:55:11 $ $NHDT-Branch: master $:$NHDT-Revision: 1.91 $ */
+/* NetHack 3.6 config.h $NHDT-Date: 1558248715 2019/05/19 06:51:55 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.122 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2016. */
/* NetHack may be freely redistributed. See license for details. */
* probably not useful for normal play */
/* #define EXTRA_SANITY_CHECKS */
-/* EDIT_GETLIN makes the string input in TTY, Qt4, and X11
- so some prompts will remember the previously input text
- (within the same session) */
+/* EDIT_GETLIN makes the string input in TTY, curses, Qt4, and X11
+ for some prompts be pre-loaded with previously input text (from
+ a previous instance of the same prompt) as the default response.
+ In some cases, the previous instance can only be within the same
+ session; in others, such as #annotate, the previous input can be
+ from any session because the response is saved and restored with
+ the map. The 'edit' capability is just <delete> or <backspace>
+ to strip off characters at the end, or <escape> to discard the
+ whole thing, then type a new end for the text. */
/* #define EDIT_GETLIN */
/* #define DUMPLOG */ /* End-of-game dump logs */
int ch;
WINDOW *win = curses_get_nhwin(MESSAGE_WIN);
int border_space = 0;
- int len = 0; /* of answer string */
+ int len; /* of answer string */
boolean border = curses_window_has_border(MESSAGE_WIN);
- *answer = '\0';
orig_cursor = curs_set(0);
curses_get_window_size(MESSAGE_WIN, &height, &width);
if (border) {
- height -= 2, width -= 2;
+ /* height -= 2, width -= 2; -- sizes already account for border */
border_space = 1;
if (mx < 1)
mx = 1;
maxlines = buffer / width * 2;
Strcpy(tmpbuf, prompt);
Strcat(tmpbuf, " ");
+ p_answer = tmpbuf + strlen(tmpbuf);
+#ifdef EDIT_GETLIN
+ len = (int) strlen(answer);
+ if (len >= buffer) {
+ len = buffer - 1;
+ answer[len] = '\0';
+ }
+ Strcpy(p_answer, answer);
+#else
+ len = 0;
+ *answer = '\0';
+#endif
nlines = curses_num_lines(tmpbuf, width);
maxlines += nlines * 2;
linestarts = (char **) alloc((unsigned) (maxlines * sizeof (char *)));
- p_answer = tmpbuf + strlen(tmpbuf);
linestarts[0] = tmpbuf;
if (mx > border_space) { /* newline */
wmove(win, my, mx);
curs_set(1);
wrefresh(win);
- curses_got_input(); /* despite its name, before rathre than after... */
+ curses_got_input(); /* despite its name, before rather than after... */
#ifdef PDCURSES
ch = wgetch(win);
#else