diff --git a/lib/errorlogger.cpp b/lib/errorlogger.cpp
index 12a620468..d4f855db3 100644
--- a/lib/errorlogger.cpp
+++ b/lib/errorlogger.cpp
@@ -298,10 +298,16 @@ std::string ErrorLogger::ErrorMessage::toString(bool verbose, const std::string
// template is given. Reformat the output according to it
else {
std::string result = outputFormat;
+ // Support a few special characters to allow to specific formatting, see http://sourceforge.net/apps/phpbb/cppcheck/viewtopic.php?f=4&t=494&sid=21715d362c0dbafd3791da4d9522f814
+ // Substitution should be done first so messages from cppcheck never get translated.
+ findAndReplace(result, "\\b", "\b");
+ findAndReplace(result, "\\n", "\n");
+ findAndReplace(result, "\\r", "\r");
+ findAndReplace(result, "\\t", "\t");
+
findAndReplace(result, "{id}", _id);
findAndReplace(result, "{severity}", Severity::toString(_severity));
findAndReplace(result, "{message}", verbose ? _verboseMessage : _shortMessage);
-
if (!_callStack.empty()) {
std::ostringstream oss;
oss << _callStack.back().line;
diff --git a/man/manual.docbook b/man/manual.docbook
index 6c50af638..1199b0825 100644
--- a/man/manual.docbook
+++ b/man/manual.docbook
@@ -448,6 +448,8 @@ gui/test.cpp:16: error: Mismatching allocation and deallocation: kChecking gui/test.cpp...
gui/test.cpp,31,error,memleak,Memory leak: b
gui/test.cpp,16,error,mismatchAllocDealloc,Mismatching allocation and deallocation: k
+
+ The escape sequences \b (backspace), \n (newline), \r (formfeed) and \t (horizontal tab) are supported.