https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87488

--- Comment #10 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Thu Oct 10 17:03:46 2019
New Revision: 276843

URL: https://gcc.gnu.org/viewcvs?rev=276843&root=gcc&view=rev
Log:
Documentation hyperlinks for [-Wname-of-option] (PR 87488)

This patch uses the support for pretty-printing escaped URLs added in
the previous patch (PR 87488) so that in a sufficiently capable terminal
the [-Wname-of-option] emitted at the end of each diagnostic becomes a
hyperlink to the documentation for that option on the GCC website.

I've tested it with Fedora 30's GNOME Terminal (3.32.2 with VTE 0.56.3);
the option text is printed with a dotted underline, hovering shows the
URL, and on right-clicking it offers menu items to visit/copy the URL.

gcc/ChangeLog:
        PR 87488
        * Makefile.in (CFLAGS-opts.o): Pass in DOCUMENTATION_ROOT_URL via
        -D.
        * configure.ac (--with-documentation-root-url): New option.
        * configure: Regenerate.
        * diagnostic-format-json.cc (json_end_diagnostic): If there is an
        option URL, add it as a new string field of the diagnostic option.
        * diagnostic.c (diagnostic_initialize): Initialize get_option_url.
        (print_option_information): If get_option_url is non-NULL, call
        it, and if the result is non-NULL, potentially emit an escape
        sequence to markup the option text with the resulting URL.
        * diagnostic.h (diagnostic_context::get_option_url): New callback.
        * doc/invoke.texi (-fdiagnostics-format=): Add "option_url" to
        example of JSON output.
        * opts-diagnostic.h (get_option_url): New decl.
        * opts.c (get_option_url): New function.
        * toplev.c (general_init): Initialize the get_option_url callback.

gcc/testsuite/ChangeLog:
        PR 87488
        * c-c++-common/diagnostic-format-json-2.c: Expect an "option_url"
        field.
        * c-c++-common/diagnostic-format-json-3.c: Likewise.
        * gfortran.dg/diagnostic-format-json-2.F90: Likewise.
        * gfortran.dg/diagnostic-format-json-3.F90: Likewise.
        * jit.dg/test-error-array-bounds.c (create_code): Ensure that
        error messages don't contain escaped URLs.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/configure
    trunk/gcc/configure.ac
    trunk/gcc/diagnostic-format-json.cc
    trunk/gcc/diagnostic.c
    trunk/gcc/diagnostic.h
    trunk/gcc/doc/invoke.texi
    trunk/gcc/opts-diagnostic.h
    trunk/gcc/opts.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
    trunk/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
    trunk/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
    trunk/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
    trunk/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
    trunk/gcc/testsuite/jit.dg/test-error-array-bounds.c
    trunk/gcc/toplev.c

Reply via email to