fix bz60 and bz61 - meta char feedback
60: getpos() doesn't report the offending keystroke accurately when rejecting M-something as a movement keystroke while moving the cursor; 61: typing M-N as a command keystroke produces |Unknown command 'M- | '. where the '.' on the second line clobbers the top line of the map. I can't reproduce the first one without extending the altmeta hack [a run-time option to treat two char sequence ESC c as M-c] to getpos() and nh_poskey(), which I've done for testing but am not including here. I can't reproduce the second as it's described, but M-^J produces |Unknown command 'M- |'.--More-- and this fixes that, with a general fix that applies to any meta char. The diffs include some cleanup/groundwork for maybe extending altmeta.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 do_name.c $NHDT-Date: 1449982602 2015/12/13 04:56:42 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.79 $ */
|
||||
/* NetHack 3.6 do_name.c $NHDT-Date: 1450178550 2015/12/15 11:22:30 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.80 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -54,7 +54,7 @@ const char *goal;
|
||||
putstr(tmpwin, 0, "Use [HJKL] to move the cursor 8 units at a time.");
|
||||
putstr(tmpwin, 0, "Or enter a background symbol (ex. <).");
|
||||
putstr(tmpwin, 0, "Use @ to move the cursor on yourself.");
|
||||
if (getpos_hilitefunc != NULL)
|
||||
if (getpos_hilitefunc)
|
||||
putstr(tmpwin, 0, "Use $ to display valid locations.");
|
||||
putstr(tmpwin, 0, "Use # to toggle automatic description.");
|
||||
/* disgusting hack; the alternate selection characters work for any
|
||||
@@ -197,7 +197,7 @@ const char *goal;
|
||||
/* update message window to reflect that we're still targetting */
|
||||
show_goal_msg = TRUE;
|
||||
msg_given = TRUE;
|
||||
} else if ((c == '$') && (getpos_hilitefunc != NULL)) {
|
||||
} else if (c == '$' && getpos_hilitefunc) {
|
||||
if (!hilite_state) {
|
||||
(*getpos_hilitefunc)(0);
|
||||
(*getpos_hilitefunc)(1);
|
||||
@@ -307,7 +307,7 @@ const char *goal;
|
||||
clear_nhwindow(WIN_MESSAGE);
|
||||
ccp->x = cx;
|
||||
ccp->y = cy;
|
||||
getpos_hilitefunc = NULL;
|
||||
getpos_hilitefunc = (void FDECL((*), (int))) 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user