Add set_repeat_arguments function

The "x", "list", and "show commands" commands have special repetition
behavior: repeating the command doesn't re-run it with the same
arguments

This is currently implemented by modifying the passed-in argument; but
that won't work properly with const arguments (and seems pretty
obscure besides).

This patch adds a new "set_repeat_arguments" function and changes the
relevant places to call it.

gdb/ChangeLog
2017-11-07  Tom Tromey  <tom@tromey.com>

	* printcmd.c (x_command): Call set_repeat_arguments.
	* cli/cli-cmds.c (list_command): Call set_repeat_arguments.
	* top.c (repeat_arguments): New global.
	(set_repeat_arguments): New function.
	(execute_command): Handle repeat_arguments.
	(show_commands): Calls set_repeat_arguments.
	* command.h (set_repeat_arguments): Declare.
This commit is contained in:
Tom Tromey 2017-10-12 08:27:21 -06:00
parent 022643b445
commit 85c4be7c83
6 changed files with 42 additions and 11 deletions

View file

@ -1082,7 +1082,7 @@ list_command (char *arg, int from_tty)
turn it into the no-arg variant. */
if (from_tty)
*arg = 0;
set_repeat_arguments ("");
if (dummy_beg && sal_end.symtab == 0)
error (_("No default source file yet. Do \"help list\"."));