diff --git a/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java b/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java index 14868cc07..f123bba0f 100644 --- a/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java +++ b/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java @@ -244,6 +244,18 @@ public void appendAllParametersDetails(StringBuilder out, int indentCount, Strin * @param indent the indentation */ public void appendCommands(StringBuilder out, int indentCount, int descriptionIndent, String indent) { + boolean hasOnlyHiddenCommands = true; + for (Map.Entry commands : commander.getRawCommands().entrySet()) { + Object arg = commands.getValue().getObjects().get(0); + Parameters p = arg.getClass().getAnnotation(Parameters.class); + + if (p == null || !p.hidden()) + hasOnlyHiddenCommands = false; + } + + if (hasOnlyHiddenCommands) + return; + out.append(indent + " Commands:\n"); // The magic value 3 is the number of spaces between the name of the option and its description