diff options
author | Tom Tromey <tom@tromey.com> | 2019-10-21 11:21:14 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-11-05 15:23:36 -0700 |
commit | 1df2f9ef6cae23a08a50a3b2f33ce2664ce9ae9e (patch) | |
tree | a7b1c72b7e81c9e4179ea641fc5eb17fefe8e4bf /gdb/tui/tui-winsource.h | |
parent | 5d0510553eb447bf6861f4641b5ae3aaf9503a13 (diff) | |
download | gdb-1df2f9ef6cae23a08a50a3b2f33ce2664ce9ae9e.zip gdb-1df2f9ef6cae23a08a50a3b2f33ce2664ce9ae9e.tar.gz gdb-1df2f9ef6cae23a08a50a3b2f33ce2664ce9ae9e.tar.bz2 |
Style disassembly in the TUI
This patch changes the TUI disassembly window to style its contents.
The styling should be identical to what is seen in the CLI. This
involved a bit of rearrangement, so that the source and disassembly
windows could share both the copy_source_line utility function, and
the ability to react to changes in "set style enabled".
This version introduces a new function to strip the styling from the
address string when computing the length. As a byproduct, it also
removes the unused "insn_size" computation from
tui_disasm_window::set_contents.
gdb/ChangeLog
2019-11-05 Tom Tromey <tom@tromey.com>
* tui/tui-source.h (struct tui_source_window): Inline
constructor. Remove destructor.
<style_changed, m_observable>: Move to superclass.
* tui/tui-winsource.h (tui_copy_source_line): Declare.
(struct tui_source_window_base): Move private members to end.
<style_changed, m_observable>: Move from tui_source_window.
* tui/tui-winsource.c (tui_copy_source_line): Move from
tui-source.c. Rename from copy_source_line. Add special handling
for negative line number.
(tui_source_window_base::style_changed): Move from
tui_source_window.
(tui_source_window_base): Register observer.
(~tui_source_window_base): New.
* tui/tui-source.c (copy_source_line): Move to tui-winsource.c;
rename.
(tui_source_window::set_contents): Use tui_copy_source_line.
(tui_source_window::tui_source_window): Move to tui-source.h.
(tui_source_window::~tui_source_window): Remove.
(tui_source_window::style_changed): Move to superclass.
* tui/tui-disasm.c (tui_disassemble): Create string file with
styling, when possible. Add "addr_size" parameter.
(tui_disasm_window::set_contents): Use tui_copy_source_line.
Don't compute maximum size.
(len_without_escapes): New function
Change-Id: I8722635eeecbbb1633d943a65b856404c2d467b0
Diffstat (limited to 'gdb/tui/tui-winsource.h')
-rw-r--r-- | gdb/tui/tui-winsource.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h index 185d3dd..7c3c626 100644 --- a/gdb/tui/tui-winsource.h +++ b/gdb/tui/tui-winsource.h @@ -74,11 +74,9 @@ struct tui_source_element struct tui_source_window_base : public tui_win_info { -private: - void show_source_content (); - protected: explicit tui_source_window_base (enum tui_win_type type); + ~tui_source_window_base (); DISABLE_COPY_AND_ASSIGN (tui_source_window_base); @@ -140,6 +138,16 @@ public: struct gdbarch *gdbarch = nullptr; std::vector<tui_source_element> content; + +private: + + void show_source_content (); + + /* Called when the user "set style enabled" setting is changed. */ + void style_changed (); + + /* A token used to register and unregister an observer. */ + gdb::observers::token m_observable; }; @@ -227,6 +235,16 @@ extern void tui_update_source_windows_with_addr (struct gdbarch *, CORE_ADDR); extern void tui_update_source_windows_with_line (struct symtab *, int); +/* Extract some source text from PTR. LINE_NO is the line number. If + it is positive, it is printed at the start of the line. FIRST_COL + is the first column to extract, and LINE_WIDTH is the number of + characters to display. Returns a string holding the desired text. + PTR is updated to point to the start of the next line. */ + +extern std::string tui_copy_source_line (const char **ptr, + int line_no, int first_col, + int line_width); + /* Constant definitions. */ #define SCROLL_THRESHOLD 2 /* Threshold for lazy scroll. */ |