diff options
author | Tom Tromey <tromey@adacore.com> | 2020-01-03 13:59:27 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-01-21 12:39:17 -0700 |
commit | f6474de9aacec990d44d2d65a337668b389efd99 (patch) | |
tree | 4d70c7c91fba9b49b5b0c62baa7759b6e1d5b13e /gdb/extension-priv.h | |
parent | b4654b109bd023d0a22f445db7d4e27f769593f4 (diff) | |
download | gdb-f6474de9aacec990d44d2d65a337668b389efd99.zip gdb-f6474de9aacec990d44d2d65a337668b389efd99.tar.gz gdb-f6474de9aacec990d44d2d65a337668b389efd99.tar.bz2 |
Allow use of Pygments to colorize source code
While GNU Source Highlight is good, it's also difficult to build and
distribute. For one thing, it needs Boost. For another, it has an
unusual configuration and installation setup.
Pygments, a Python library, doesn't suffer from these issues, and so I
thought it would be a reasonable fallback.
This patch implements this idea. GNU Source Highlight is preferred,
but if it is unavailable (or fails), the extension languages are
tried. This patch also implements support for Pygments.
Something similar could be done for Guile, using:
https://dthompson.us/projects/guile-syntax-highlight.html
However, I don't know enough about Guile internals to make this
happen, so I have not done it here.
gdb/ChangeLog
2020-01-21 Tom Tromey <tromey@adacore.com>
* source-cache.c (source_cache::ensure): Call ext_lang_colorize.
* python/python.c (python_extension_ops): Update.
(gdbpy_colorize): New function.
* python/lib/gdb/__init__.py (colorize): New function.
* extension.h (ext_lang_colorize): Declare.
* extension.c (ext_lang_colorize): New function.
* extension-priv.h (struct extension_language_ops) <colorize>: New
member.
* cli/cli-style.c (_initialize_cli_style): Update help text.
Change-Id: I5e21623ee05f1f66baaa6deaeca78b578c031bf4
Diffstat (limited to 'gdb/extension-priv.h')
-rw-r--r-- | gdb/extension-priv.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/extension-priv.h b/gdb/extension-priv.h index 2af2ded..c356710 100644 --- a/gdb/extension-priv.h +++ b/gdb/extension-priv.h @@ -254,6 +254,13 @@ struct extension_language_ops struct type *obj_type, const char *method_name, std::vector<xmethod_worker_up> *dm_vec); + + /* Colorize a source file. NAME is the source file's name, and + CONTENTS is the contents of the file. This should either return + colorized (using ANSI terminal escapes) version of the contents, + or an empty option. */ + gdb::optional<std::string> (*colorize) (const std::string &name, + const std::string &contents); }; /* State necessary to restore a signal handler to its previous value. */ |