+2011-01-31 Tom Tromey <tromey@redhat.com>
+
+ PR python/12216:
+ * python/python.c (execute_gdb_command): Call
+ prevent_dont_repeat.
+ * top.c (suppress_dont_repeat): New global.
+ (dont_repeat): Use it.
+ (prevent_dont_repeat): New function.
+ * command.h (prevent_dont_repeat): Declare.
+
2011-01-31 Tom Tromey <tromey@redhat.com>
* infcmd.c (finish_backward): Use breakpoint_set_silent.
extern void dont_repeat (void);
+extern struct cleanup *prevent_dont_repeat (void);
+
/* Used to mark commands that don't do anything. If we just leave the
function field NULL, the command is interpreted as a help topic, or
as a class of commands. */
char *copy = xstrdup (arg);
struct cleanup *cleanup = make_cleanup (xfree, copy);
+ prevent_dont_repeat ();
if (to_string)
result = execute_command_to_string (copy, from_tty);
else
}
}
\f
+/* When nonzero, cause dont_repeat to do nothing. This should only be
+ set via prevent_dont_repeat. */
+
+static int suppress_dont_repeat = 0;
+
/* Commands call this if they do not want to be repeated by null lines. */
void
dont_repeat (void)
{
- if (server_command)
+ if (suppress_dont_repeat || server_command)
return;
/* If we aren't reading from standard input, we are saving the last
if (instream == stdin)
*line = 0;
}
+
+/* Prevent dont_repeat from working, and return a cleanup that
+ restores the previous state. */
+
+struct cleanup *
+prevent_dont_repeat (void)
+{
+ struct cleanup *result = make_cleanup_restore_integer (&suppress_dont_repeat);
+
+ suppress_dont_repeat = 1;
+ return result;
+}
+
\f
/* Read a line from the stream "instream" without command line editing.