Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ jobs:
- uses: codecov/codecov-action@v5
with:
files: build/coverage.info
functionalities: fixes

preset:
name: Preset
Expand Down
29 changes: 14 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -504,26 +504,25 @@ Before parsing, you can set the following options:
parsed vs. at the end of all parsing. This could cause the callback to be
executed multiple times. Also works with positional options.
- `->callback_priority(CallbackPriority priority)`: 🚧 changes the order in
which the option callback is executed. Four principal callback call-points
are available. `CallbackPriority::First` executes at the very beginning of
which the option callback is executed. Four principal callback call-points are
available. `CallbackPriority::First` executes at the very beginning of
processing, before configuration files are read and environment variables are
interpreted. `CallbackPriority::PreRequirementsCheck` executes after
configuration and environment processing but before requirements checking.
`CallbackPriority::Normal` executes after the requirements check but before
any previously potentially raised exceptions are re-thrown.
`CallbackPriority::Last` executes after exception handling is completed.
For each position, both ordinary option callbacks and help callbacks are
invoked. The relative order between them can be controlled using the
corresponding `PreHelp` variants. `CallbackPriority::FirstPreHelp` executes
ordinary option callbacks before help callbacks at the very beginning of
processing. `CallbackPriority::PreRequirementsCheckPreHelp` executes ordinary
option callbacks before help callbacks after configuration and environment
processing but before requirements checking. `CallbackPriority::NormalPreHelp`
executes ordinary option callbacks before help callbacks after the
requirements check but before exception re-throwing.
`CallbackPriority::LastPreHelp` executes ordinary option callbacks before help
callbacks after exception handling has completed. When using the standard
priorities (`CallbackPriority::First`,
`CallbackPriority::Last` executes after exception handling is completed. For
each position, both ordinary option callbacks and help callbacks are invoked.
The relative order between them can be controlled using the corresponding
`PreHelp` variants. `CallbackPriority::FirstPreHelp` executes ordinary option
callbacks before help callbacks at the very beginning of processing.
`CallbackPriority::PreRequirementsCheckPreHelp` executes ordinary option
callbacks before help callbacks after configuration and environment processing
but before requirements checking. `CallbackPriority::NormalPreHelp` executes
ordinary option callbacks before help callbacks after the requirements check
but before exception re-throwing. `CallbackPriority::LastPreHelp` executes
ordinary option callbacks before help callbacks after exception handling has
completed. When using the standard priorities (`CallbackPriority::First`,
`CallbackPriority::PreRequirementsCheck`, `CallbackPriority::Normal`,
`CallbackPriority::Last`), help callbacks are executed before ordinary option
callbacks. By default, help callbacks use `CallbackPriority::First`, and
Expand Down
13 changes: 7 additions & 6 deletions include/CLI/impl/Formatter_inl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ CLI11_INLINE std::string Formatter::make_footer(const App *app) const {
if(footer.empty()) {
return std::string{};
}
return '\n' + footer + "\n\n";
return '\n' + footer + '\n';
}

CLI11_INLINE std::string Formatter::make_help(const App *app, std::string name, AppFormatMode mode) const {
Expand Down Expand Up @@ -263,12 +263,13 @@ CLI11_INLINE std::string Formatter::make_expanded(const App *sub, AppFormatMode
footer_string = "";
}
}
if(is_footer_paragraph_formatting_enabled()) {
detail::streamOutAsParagraph(out, footer_string, footer_paragraph_width_); // Format footer as paragraph
} else {
out << footer_string << '\n';
if(!footer_string.empty()) {
if(is_footer_paragraph_formatting_enabled()) {
detail::streamOutAsParagraph(out, footer_string, footer_paragraph_width_); // Format footer as paragraph
} else {
out << footer_string;
}
}
out << '\n';
return out.str();
}

Expand Down