* tui/tui.c (tui_rl_command_key): Switch to TUI_ONE_COMMAND_MODE
authorStephane Carrez <stcarrez@nerim.fr>
Sat, 10 Nov 2012 13:12:18 +0000 (13:12 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Sat, 10 Nov 2012 13:12:18 +0000 (13:12 +0000)
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.

gdb/ChangeLog
gdb/tui/tui-io.c
gdb/tui/tui.c

index e85145b..b8fc396 100644 (file)
@@ -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
index 2fb7bb4..29c1a2c 100644 (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)
index 3e79b32..feec526 100644 (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;