aboutsummaryrefslogtreecommitdiff
path: root/src/renderers/renderhelpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderers/renderhelpers.cpp')
-rw-r--r--src/renderers/renderhelpers.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/renderers/renderhelpers.cpp b/src/renderers/renderhelpers.cpp
index 9e44fa8..a18d434 100644
--- a/src/renderers/renderhelpers.cpp
+++ b/src/renderers/renderhelpers.cpp
@@ -340,9 +340,17 @@ static QString cleanLineEndings(QString &input)
void renderhelpers::renderEscapeCodes(const QByteArray &input,
QTextCharFormat& format, const QTextCharFormat& defaultFormat, QTextCursor& cursor)
{
- const auto tokens = input.split(escapeString);
QString inputString = QString::fromUtf8(input);
cleanLineEndings(inputString);
+
+ // Don't render escapes if set to 'ignore'
+ if (kristall::globals().options.ansi_escapes == AnsiEscRenderMode::ignore)
+ {
+ cursor.insertText(input, defaultFormat);
+ return;
+ }
+
+ const auto tokens = input.split(escapeString);
for (QString::const_iterator it = inputString.cbegin(); it != inputString.cend(); ++it)
{
const auto currentCharacter = *it;;
@@ -356,8 +364,15 @@ void renderhelpers::renderEscapeCodes(const QByteArray &input,
parseCSI(input, it, format, defaultFormat, cursor);
}
}
+ else if (kristall::globals().options.ansi_escapes == AnsiEscRenderMode::strip)
+ {
+ // 'strip' mode -> we still interpret escapes as above, but just render
+ // text in the default format.
+ cursor.insertText(currentCharacter, defaultFormat);
+ }
else
{
+ // 'render' mode -> we use the interpreted ANSI format
cursor.insertText(currentCharacter, format);
}
}