Make gdb_in_secondary_prompt_p() be per UI
authorPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:51 +0000 (01:11 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:51 +0000 (01:11 +0100)
gdb/ChangeLog:
2016-06-21  Pedro Alves  <palves@redhat.com>

* top.c (gdb_secondary_prompt_depth): Delete.
(gdb_in_secondary_prompt_p): Add ui parameter.  Use it.
(gdb_readline_wrapper_cleanup, gdb_readline_wrapper): Adjust to
per-UI gdb_secondary_prompt_depth.
* top.h (struct ui) <secondary_prompt_depth>: New field.

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

index bad45aa2ffcbf37d3d9ba12e2f4fd726bfeede3c..e3293d15ea37353bd6c579e5054bcb4d2144d8be 100644 (file)
@@ -1,3 +1,11 @@
+2016-06-21  Pedro Alves  <palves@redhat.com>
+
+       * top.c (gdb_secondary_prompt_depth): Delete.
+       (gdb_in_secondary_prompt_p): Add ui parameter.  Use it.
+       (gdb_readline_wrapper_cleanup, gdb_readline_wrapper): Adjust to
+       per-UI gdb_secondary_prompt_depth.
+       * top.h (struct ui) <secondary_prompt_depth>: New field.
+
 2016-06-21  Pedro Alves  <palves@redhat.com>
 
        * cli/cli-interp.c (cli_interpreter_pre_command_loop): New
index 7e82dcfc372d02aa36c53a34e58c09ed771c7cd0..79f4293556ba827bbf2b6de54dd8e9036702e6c9 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -757,17 +757,12 @@ static char *gdb_readline_wrapper_result;
 static void (*saved_after_char_processing_hook) (void);
 
 
-/* The number of nested readline secondary prompts that are currently
-   active.  */
-
-static int gdb_secondary_prompt_depth = 0;
-
 /* See top.h.  */
 
 int
-gdb_in_secondary_prompt_p (void)
+gdb_in_secondary_prompt_p (struct ui *ui)
 {
-  return gdb_secondary_prompt_depth > 0;
+  return ui->secondary_prompt_depth > 0;
 }
 
 
@@ -828,8 +823,8 @@ gdb_readline_wrapper_cleanup (void *arg)
 
   gdb_readline_wrapper_result = NULL;
   gdb_readline_wrapper_done = 0;
-  gdb_secondary_prompt_depth--;
-  gdb_assert (gdb_secondary_prompt_depth >= 0);
+  ui->secondary_prompt_depth--;
+  gdb_assert (ui->secondary_prompt_depth >= 0);
 
   after_char_processing_hook = saved_after_char_processing_hook;
   saved_after_char_processing_hook = NULL;
@@ -859,7 +854,7 @@ gdb_readline_wrapper (const char *prompt)
 
   cleanup->target_is_async_orig = target_is_async_p ();
 
-  gdb_secondary_prompt_depth++;
+  ui->secondary_prompt_depth++;
   back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
 
   if (cleanup->target_is_async_orig)
index 009fdb75e8c6d50fcfedf46553e90499d4a2e7aa..2aa44080c9b57327d123c0f604e35166ef73e205 100644 (file)
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -73,6 +73,10 @@ struct ui
      "start" -ex "next"') are processed.  */
   int async;
 
+  /* The number of nested readline secondary prompts that are
+     currently active.  */
+  int secondary_prompt_depth;
+
   /* stdio stream that command input is being read from.  Set to stdin
      normally.  Set by source_command to the file we are sourcing.
      Set to NULL if we are executing a user-defined command or
@@ -190,9 +194,10 @@ extern char *get_prompt (void);
    by gdb for its command prompt.  */
 extern void set_prompt (const char *s);
 
-/* Return 1 if the current input handler is a secondary prompt, 0 otherwise.  */
+/* Return 1 if UI's current input handler is a secondary prompt, 0
+   otherwise.  */
 
-extern int gdb_in_secondary_prompt_p (void);
+extern int gdb_in_secondary_prompt_p (struct ui *ui);
 
 /* From random places.  */
 extern int readnow_symbol_files;
index 6f2d8924a8fb4a9e7f174902c90b24deb6c08196..ed79b4441445c68b2917e311fda42119c5dd17aa 100644 (file)
@@ -212,7 +212,7 @@ tui_redisplay_readline (void)
      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
-      && !gdb_in_secondary_prompt_p ())
+      && !gdb_in_secondary_prompt_p (current_ui))
     tui_set_key_mode (TUI_SINGLE_KEY_MODE);
 
   if (tui_current_key_mode == TUI_SINGLE_KEY_MODE)
@@ -585,7 +585,7 @@ tui_getc (FILE *fp)
          with empty lines with gdb prompt at beginning.  Instead of that,
          stay on the same line but provide a visual effect to show the
          user we recognized the command.  */
-      if (rl_end == 0 && !gdb_in_secondary_prompt_p ())
+      if (rl_end == 0 && !gdb_in_secondary_prompt_p (current_ui))
         {
          wmove (w, getcury (w), 0);
 
index e1160d2aa8852627beaeb670d1e14dc296035ce7..7c3e70497a17f6e23528edc451b8affe8e6badc0 100644 (file)
@@ -304,7 +304,7 @@ tui_rl_startup_hook (void)
 {
   rl_already_prompted = 1;
   if (tui_current_key_mode != TUI_COMMAND_MODE
-      && !gdb_in_secondary_prompt_p ())
+      && !gdb_in_secondary_prompt_p (current_ui))
     tui_set_key_mode (TUI_SINGLE_KEY_MODE);
   tui_redisplay_readline ();
   return 0;