aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui/tui-source.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-09-27 20:30:30 -0600
committerTom Tromey <tom@tromey.com>2020-09-27 20:30:32 -0600
commit9e820dec13ec153f5843a30afe6d1c5037405278 (patch)
tree4dd4ccdadf25c5eb5781d4034cc5be52e109d32a /gdb/tui/tui-source.h
parentc15c15c8d998af6676562d15b9a1f1dcac1fa3ea (diff)
downloadgdb-9e820dec13ec153f5843a30afe6d1c5037405278.zip
gdb-9e820dec13ec153f5843a30afe6d1c5037405278.tar.gz
gdb-9e820dec13ec153f5843a30afe6d1c5037405278.tar.bz2
Use a curses pad for source and disassembly windows
This changes the TUI source and disassembly windows to use a curses pad for their text. This is an important step toward properly handling non-ASCII characters, because it makes it easy to scroll horizontally without needing gdb to also understand multi-byte character boundaries -- this can be wholly delegated to curses. Horizontal scrolling is probably also faster now, because no re-rendering is required. gdb/ChangeLog 2020-09-27 Tom Tromey <tom@tromey.com> * unittests/tui-selftests.c: Update. * tui/tui-winsource.h (struct tui_source_window_base) <extra_margin, show_line_number, refresh_pad>: New methods. <m_max_length, m_pad>: New members. (tui_copy_source_line): Update. * tui/tui-winsource.c (tui_copy_source_line): Remove line_no, first_col, line_width, ndigits parameters. Add length. (tui_source_window_base::show_source_line): Write to pad. Line number now 0-based. (tui_source_window_base::refresh_pad): New method. (tui_source_window_base::show_source_content): Write to pad. Call refresh_pad. (tui_source_window_base::do_scroll_horizontal): Call refresh_pad, not refill. (tui_source_window_base::update_exec_info): Call show_line_number. * tui/tui-source.h (struct tui_source_window) <extra_margin>: New method. <m_digits>: New member. * tui/tui-source.c (tui_source_window::set_contents): Set m_digits and m_max_length. (tui_source_window::show_line_number): New method. * tui/tui-io.h (tui_puts): Fix comment. * tui/tui-disasm.c (tui_disasm_window::set_contents): Set m_max_length.
Diffstat (limited to 'gdb/tui/tui-source.h')
-rw-r--r--gdb/tui/tui-source.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
index 1df84cf..020f710 100644
--- a/gdb/tui/tui-source.h
+++ b/gdb/tui/tui-source.h
@@ -63,12 +63,23 @@ protected:
bool set_contents (struct gdbarch *gdbarch,
const struct symtab_and_line &sal) override;
+ int extra_margin () const override
+ {
+ return m_digits;
+ }
+
+ void show_line_number (int lineno) const override;
+
private:
/* Answer whether a particular line number or address is displayed
in the current source window. */
bool line_is_displayed (int line) const;
+ /* How many digits to use when formatting the line number. This
+ includes the trailing space. */
+ int m_digits;
+
/* It is the resolved form as returned by symtab_to_fullname. */
gdb::unique_xmalloc_ptr<char> m_fullname;
};