diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-05-08 18:49:42 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-05-08 18:49:42 +0000 |
commit | c41535fdc41896a2e881e1386eb3be9dff6ca6c4 (patch) | |
tree | 27748eeb952799924a6f232d7d48398c331fc846 /gdb/cli | |
parent | 80f5885c0674e3f865455e9e03ea60e67f1e4ed3 (diff) | |
download | gdb-c41535fdc41896a2e881e1386eb3be9dff6ca6c4.zip gdb-c41535fdc41896a2e881e1386eb3be9dff6ca6c4.tar.gz gdb-c41535fdc41896a2e881e1386eb3be9dff6ca6c4.tar.bz2 |
Display the ">" prompt in interactive mode while reading canned
commands, even when the current interpreter is MI.
interps.c (interp_set_temp): New function.
interps.h (interp_set_temp): Add prototype.
cli/cli-script.c (restore_interp): New cleanup function.
(read_command_lines): Temporarily override the current interpreter
with CLI and arrange for restoring the original one.
Diffstat (limited to 'gdb/cli')
-rw-r--r-- | gdb/cli/cli-script.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index cfa1c77..4b6c416 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -1178,6 +1178,12 @@ recurse_read_control_structure (char * (*read_next_line_func) (void), return ret; } +static void +restore_interp (void *arg) +{ + interp_set_temp (interp_name ((struct interp *)arg)); +} + /* Read lines from the input stream and accumulate them in a chain of struct command_line's, which is then returned. For input from a terminal, the special command "end" is used to mark the end of the @@ -1210,8 +1216,21 @@ read_command_lines (char *prompt_arg, int from_tty, int parse_commands, } } - head = read_command_lines_1 (read_next_line, parse_commands, - validator, closure); + + /* Reading commands assumes the CLI behavior, so temporarily + override the current interpreter with CLI. */ + if (current_interp_named_p (INTERP_CONSOLE)) + head = read_command_lines_1 (read_next_line, parse_commands, + validator, closure); + else + { + struct interp *old_interp = interp_set_temp (INTERP_CONSOLE); + struct cleanup *old_chain = make_cleanup (restore_interp, old_interp); + + head = read_command_lines_1 (read_next_line, parse_commands, + validator, closure); + do_cleanups (old_chain); + } if (deprecated_readline_end_hook && from_tty && input_from_terminal_p ()) { |