bool complaint_issued;
 static unsigned *indent_ptr = 0;
 
-\f
+void
+warnings_print_categories (warnings warn_flags)
+{
+  if (! (warn_flags & silent))
+    {
+      char const *warn_names[] =
+        {
+          "midrule-values",
+          "yacc",
+          "conflicts-sr",
+          "conflicts-rr",
+          "other"
+        };
+
+      bool any = false;
+      int i;
+      for (i = 0; i < ARRAY_CARDINALITY (warn_names); ++i)
+        if (warn_flags & 1 << i)
+          {
+            fprintf (stderr, "%s-W%s", any ? ", " : " [", warn_names[i]);
+            any = true;
+          }
+      if (any)
+        fprintf (stderr, "]");
+    }
+}
 
 /** Report an error message.
  *
 
 
 typedef enum
   {
-    Wnone             = 0,      /**< Issue no warnings.  */
-    Werror            = 1 << 0, /**< Warnings are treated as errors.  */
-    Wmidrule_values   = 1 << 1, /**< Unset or unused midrule values.  */
-    Wyacc             = 1 << 2, /**< POSIXME.  */
-    Wconflicts_sr     = 1 << 3, /**< S/R conflicts.  */
-    Wconflicts_rr     = 1 << 4, /**< R/R conflicts.  */
-    Wother            = 1 << 5, /**< All other warnings.  */
-    complaint         = 1 << 6, /**< All complaints.  */
-    fatal             = 1 << 7, /**< All fatal errors.  */
-    Wall              = ~Werror /**< All above warnings.  */
+    Wnone             = 0,       /**< Issue no warnings.  */
+    Wmidrule_values   = 1 << 0,  /**< Unset or unused midrule values.  */
+    Wyacc             = 1 << 1,  /**< POSIXME.  */
+    Wconflicts_sr     = 1 << 2,  /**< S/R conflicts.  */
+    Wconflicts_rr     = 1 << 3,  /**< R/R conflicts.  */
+    Wother            = 1 << 4,  /**< All other warnings.  */
+
+    Werror            = 1 << 10, /**< Warnings are treated as errors.  */
+    complaint         = 1 << 11, /**< All complaints.  */
+    fatal             = 1 << 12, /**< All fatal errors.  */
+    silent            = 1 << 13, /**< Do not display the warning type.  */
+    Wall              = ~Werror  /**< All above warnings.  */
   } warnings;
 
 /** What warnings are issued.  */
 extern warnings warnings_flag;
 
+/** Display a "[-Wyacc]" like message on stderr.  */
+void warnings_print_categories (warnings warn_flags);
+
 /** Record that a warning is about to be issued, and treat it as an
     error if <tt>warnings_flag & Werror</tt>.  This is exported
     only for the sake of Yacc-compatible conflict reports in conflicts.c.