* 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.
This commit is contained in:
Stephane Carrez 2012-11-10 13:12:18 +00:00
parent e840f632eb
commit 9b8d682720
3 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,11 @@
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

View File

@ -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)

View File

@ -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;