From: Stephane Carrez <stephane.carrez@gmail.com>
To: gdb-patches@sourceware.org
Subject: [PATCH]: Fix gdb's prompt for continue in TUI SingleKey mode
Date: Sat, 10 Nov 2012 13:25:00 -0000 [thread overview]
Message-ID: <CAJJuuYo440ttti=aWKXz9LkGvas6Ub2TWn14v6RBRBnVS+1cuw@mail.gmail.com> (raw)
Hi!
When gdb is in TUI SingleKey mode, if a command calls 'prompt_for_continue',
the readline keymap is using the SingleKey tui keymap and this prevents the user
from typing any useful key (such as Return). Furthermore, typing some SingleKey
command (r, s, n, etc) will execute the command (results are strange).
You can reproduce easily by typing 'info' in SingleKey mode.
In this mode, if you type 'v' (info local), the gdb's prompt is not
displayed at all.
I've committed this patch to fix those issues.
Basically when we execute a gdb command, we must be in TUI_ONE_COMMAND_MODE
(or TUI_COMMAND_MODE). We must restore the TUI_SINGLE_KEY_MODE only
if we are not called from prompt_for_continue (I've used the check on
'immediate_quit'
for that).
Stephane
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.14811
diff -u -p -r1.14811 ChangeLog
--- ChangeLog 10 Nov 2012 12:25:02 -0000 1.14811
+++ ChangeLog 10 Nov 2012 13:11:24 -0000
@@ -1,5 +1,13 @@
2012-11-10 Stephane Carrez <Stephane.Carrez@gmail.com>
+ * tui/tui.c (tui_rl_command_key): Switch to TUI_ONE_COMMAND_MODE
+ while executing the gdb command.
+ (tui_rl_startup_hook): Do not switch back to TUI_SINGLE_KEY_MODE if we
+ are called from prompt_for_continue.
+ * tui/tui-io.c (tui_redisplay_readline): Likewise.
+
+2012-11-10 Stephane Carrez <Stephane.Carrez@gmail.com>
+
PR tui/9584
* tui/tui.c (tui_rl_command_key): Do not call execute_command
cvs diff: Diffing tui
Index: tui/tui-io.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tui-io.c,v
retrieving revision 1.32
diff -u -p -r1.32 tui-io.c
--- tui/tui-io.c 4 Jan 2012 08:27:58 -0000 1.32
+++ tui/tui-io.c 10 Nov 2012 13:11:24 -0000
@@ -211,8 +211,11 @@ tui_redisplay_readline (void)
/* Detect when we temporarily left SingleKey and now the readline
edit buffer is empty, automatically restore the SingleKey
- mode. */
- if (tui_current_key_mode == TUI_ONE_COMMAND_MODE && rl_end == 0)
+ mode. The restore must only be done if the command has finished.
+ The command could call prompt_for_continue and we must not
+ restore SingleKey so that the prompt and normal keymap are used. */
+ if (tui_current_key_mode == TUI_ONE_COMMAND_MODE && rl_end == 0
+ && immediate_quit == 0)
tui_set_key_mode (TUI_SINGLE_KEY_MODE);
if (tui_current_key_mode == TUI_SINGLE_KEY_MODE)
Index: tui/tui.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tui.c,v
retrieving revision 1.71
diff -u -p -r1.71 tui.c
--- tui/tui.c 10 Nov 2012 12:25:07 -0000 1.71
+++ tui/tui.c 10 Nov 2012 13:11:24 -0000
@@ -247,6 +247,10 @@ tui_rl_command_key (int count, int key)
in the readline history which turns out to be better. */
rl_insert_text (tui_commands[i].cmd);
rl_newline (1, '\n');
+
+ /* Switch to gdb command mode while executing the command.
+ This way the gdb's continue prompty will be displayed. */
+ tui_set_key_mode (TUI_ONE_COMMAND_MODE);
return 0;
}
}
@@ -285,7 +289,7 @@ static int
tui_rl_startup_hook (void)
{
rl_already_prompted = 1;
- if (tui_current_key_mode != TUI_COMMAND_MODE)
+ if (tui_current_key_mode != TUI_COMMAND_MODE && immediate_quit == 0)
tui_set_key_mode (TUI_SINGLE_KEY_MODE);
tui_redisplay_readline ();
return 0;
next reply other threads:[~2012-11-10 13:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-10 13:25 Stephane Carrez [this message]
2012-11-12 15:44 ` Tom Tromey
2012-11-13 7:36 ` Stephane Carrez
2012-11-13 16:33 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAJJuuYo440ttti=aWKXz9LkGvas6Ub2TWn14v6RBRBnVS+1cuw@mail.gmail.com' \
--to=stephane.carrez@gmail.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox