diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/tui/tui-io.c | 21 |
2 files changed, 24 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a533ffd..28e969c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-10-06 Tom Tromey <tom@tromey.com> + + PR tui/28819: + * tui/tui-io.c (gdb_wgetch): New function. + (tui_mld_getc, tui_getc): Use it. + 2018-10-05 Tom Tromey <tom@tromey.com> * sol-thread.c (sol_thread_target::wait): Rename inner diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c index c7df50a..4476151 100644 --- a/gdb/tui/tui-io.c +++ b/gdb/tui/tui-io.c @@ -412,6 +412,21 @@ tui_mld_beep (const struct match_list_displayer *displayer) beep (); } +/* A wrapper for wgetch that enters nonl mode. We We normally want + curses' "nl" mode, but when reading from the user, we'd like to + differentiate between C-j and C-m, because some users bind these + keys differently in their .inputrc. So, put curses into nonl mode + just when reading from the user. See PR tui/20819. */ + +static int +gdb_wgetch (WINDOW *win) +{ + nonl (); + int r = wgetch (win); + nl (); + return r; +} + /* Helper function for tui_mld_read_key. This temporarily replaces tui_getc for use during tab-completion match list display. */ @@ -420,7 +435,7 @@ static int tui_mld_getc (FILE *fp) { WINDOW *w = TUI_CMD_WIN->generic.handle; - int c = wgetch (w); + int c = gdb_wgetch (w); return c; } @@ -612,7 +627,7 @@ tui_getc (FILE *fp) tui_readline_output (0, 0); #endif - ch = wgetch (w); + ch = gdb_wgetch (w); /* The \n must be echoed because it will not be printed by readline. */ @@ -659,7 +674,7 @@ tui_getc (FILE *fp) int ch_pending; nodelay (w, TRUE); - ch_pending = wgetch (w); + ch_pending = gdb_wgetch (w); nodelay (w, FALSE); /* If we have pending input following a start sequence, call the stdin |