Have 'thread|frame apply' style their output.
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sat, 9 Mar 2019 22:55:44 +0000 (23:55 +0100)
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sat, 27 Apr 2019 12:25:28 +0000 (14:25 +0200)
commit8a522c6cab56bd55f1454638786f999f6f636354
treea73bb0f05e55c318a7026e0aee00c74853f410d9
parent136afab8c7d8a8a91dbf38e79be4f9dc4125d552
Have 'thread|frame apply' style their output.

'thread|frame apply CMD' launches CMD so that CMD output goes to a string_file.
This patch ensures that string_file for such CMD output contains
style escape sequences that 'thread|frame apply' will later on
output on the real terminal, so as to have CMD output properly styled.

The idea is to have the class ui_file having overridable methods
to indicate that the output to this ui_file should be done using
'terminal' behaviour such as styling.
Then these methods are overriden in string_file so that a specially
constructed string_file will get output with style escape sequences.

After this patch, the output of CMD by thread|frame apply CMD is styled
similarly as when CMD is launched directly.
Note that string_file (term_out true) could also support wrapping,
but this is not done (yet?).

Tested on debian/amd64.

gdb/ChangeLog
2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

Support style in 'frame|thread apply'

* gdbcmd.h (execute_command_to_string): New term_out parameter.
* record.c (record_start, record_stop): Update callers of
execute_command_to_string with false.
* ui-file.h (class ui_file): New term_out and can_emit_style_escape
methods.
(class string_file): New constructor with term_out parameter.
Override methods term_out and can_emit_style_escape.  New member
term_out.
(class stdio_file): Override can_emit_style_escape.
(class tee_file): Override term_out and can_emit_style_escape.
* utils.h (can_emit_style_escape): Remove.
* utils.c (can_emit_style_escape): Likewise.
Update all callers of can_emit_style_escape (SOMESTREAM) to
SOMESTREAM->can_emit_style_escape.
* source-cache.c (source_cache::get_source_lines): Likewise.
* stack.c (frame_apply_command_count): Call execute_command_to_string
passing the term_out characteristic of the current gdb_stdout.
* thread.c (thr_try_catch_cmd): Likewise.
* top.c (execute_command_to_string): pass term_out parameter
to construct the string_file for the command output.
* ui-file.c (term_cli_styling): New function (most code moved
from utils.c can_emit_style_escape).
(string_file::string_file, string_file::can_emit_style_escape,
stdio_file::can_emit_style_escape, tee_file::term_out,
tee_file::can_emit_style_escape): New functions.
gdb/gdbcmd.h
gdb/record.c
gdb/source-cache.c
gdb/stack.c
gdb/thread.c
gdb/top.c
gdb/ui-file.c
gdb/ui-file.h
gdb/utils.c
gdb/utils.h
This page took 0.025608 seconds and 4 git commands to generate.