aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Carrez <stcarrez@nerim.fr>2012-11-10 13:12:18 +0000
committerStephane Carrez <stcarrez@nerim.fr>2012-11-10 13:12:18 +0000
commit9b8d6827200e1b04d3ca860ce52472655e84248c (patch)
tree0de47fc751fdda000fe6f16745d0fd1477790e91
parente840f632eb1879fd022f88ab1e2f5ce3a41d3cbe (diff)
downloadgdb-9b8d6827200e1b04d3ca860ce52472655e84248c.zip
gdb-9b8d6827200e1b04d3ca860ce52472655e84248c.tar.gz
gdb-9b8d6827200e1b04d3ca860ce52472655e84248c.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/tui/tui-io.c7
-rw-r--r--gdb/tui/tui.c6
3 files changed, 18 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e85145b..b8fc396 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index 2fb7bb4..29c1a2c 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -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)
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 3e79b32..feec526 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -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;