Highlight source code using GNU Source Highlight
authorTom Tromey <tom@tromey.com>
Wed, 10 Oct 2018 04:21:05 +0000 (22:21 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 28 Dec 2018 19:49:54 +0000 (12:49 -0700)
commit62f29fda90cf1d5a1899f57ef78452471c707fd6
tree4d2e519c41de4248f7b4f169f8f379f73f3f0a51
parent4a3045920bbe4e50a0f4920b0fdc4e88ef23015c
Highlight source code using GNU Source Highlight

This changes gdb to highlight source using GNU Source Highlight, if it
is available.

This affects the output of the "list" command and also the TUI source
window.

No new test because I didn't see a way to make it work when Source
Highlight is not found.

gdb/ChangeLog
2018-12-28  Tom Tromey  <tom@tromey.com>

* utils.h (can_emit_style_escape): Declare.
* utils.c (can_emit_style_escape): No longer static.
* cli/cli-style.c (set_style_enabled): New function.
(_initialize_cli_style): Use it.
* tui/tui-winsource.c (tui_show_source_line): Use tui_puts.
(tui_alloc_source_buffer): Change how source lines are allocated.
* tui/tui-source.c (copy_source_line): New function.
(tui_set_source_content): Use source cache.
* tui/tui-io.h (tui_puts): Update.
* tui/tui-io.c (tui_puts_internal): Add window parameter.
(tui_puts): Likewise.
(tui_redisplay_readline): Update.
* tui/tui-data.c (free_content_elements): Change how source window
contents are freed.
* source.c (forget_cached_source_info): Clear the source cache.
(print_source_lines_base): Use the source cache.
* source-cache.h: New file.
* source-cache.c: New file.
* configure.ac: Check for GNU Source Highlight library.
* configure: Update.
* config.in: Update.
* Makefile.in (SRCHIGH_LIBS, SRCHIGH_CFLAGS): New variables.
(INTERNAL_CFLAGS_BASE): Add SRCHIGH_CFLAGS.
(CLIBS): Add SRCHIGH_LIBS.
(COMMON_SFILES): Add source-cache.c.
(HFILES_NO_SRCDIR): Add source-cache.h.
16 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/cli/cli-style.c
gdb/config.in
gdb/configure
gdb/configure.ac
gdb/source-cache.c [new file with mode: 0644]
gdb/source-cache.h [new file with mode: 0644]
gdb/source.c
gdb/tui/tui-data.c
gdb/tui/tui-io.c
gdb/tui/tui-io.h
gdb/tui/tui-source.c
gdb/tui/tui-winsource.c
gdb/utils.c
gdb/utils.h