.. Copyright (C) 2024-2025 Free Software Foundation, Inc. Originally contributed by David Malcolm This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . .. default-domain:: c Tutorial part 6: fix-it hints ============================= libgdiagnostics supports adding "fix-it hints" to a :type:`diagnostic`: suggestions for the user on how to edit their code to fix a problem. These can be expressed as insertions, replacements, and removals of text. For example, here we use :func:`diagnostic_add_fix_it_hint_replace` to add a replacement fix-it hint to a diagnostic: .. literalinclude:: ../../../testsuite/libgdiagnostics.dg/test-fix-it-hint.c :language: c :start-after: /* begin quoted source */ :end-before: /* end quoted source */ On compiling and running the program, we should get output similar to:: test-fix-it-hint.c:19:13: error: unknown field 'colour'; did you mean 'color' 19 | return p->colour; | ^~~~~~ | color We can also add a call to :func:`diagnostic_manager_write_patch` to the program cleanup code:: diagnostic_manager_write_patch (diag_mgr, stderr); This will write a patch to the stream (here ``stderr``) giving the effect of all fix-it hints on all diagnostics emitted by the :type:`diagnostic_manager`, giving something like:: @@ -16,7 +16,7 @@ struct rgb get_color (struct object *p) { - return p->colour; + return p->color; } See the :doc:`guide to fix-it hints <../topics/fix-it-hints>` for more information, or go on to :doc:`the next section of the tutorial <07-execution-paths>`.