From 69cc75177ff14bedf43b3c3ccb2e31a5fe3d8921 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Sat, 27 Mar 2010 22:55:20 +0000 Subject: Display bad Unicode bytes with a leading 'x' so form feed is distinguished from \xff. --- doc/ScintillaHistory.html | 7 +++++++ src/Editor.cxx | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 402b295fa..f94b28b54 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -378,6 +378,13 @@ Multiple paste option.
  • + Detects more forms of bad UTF-8 including overlong sequences, surrogates, and characters outside + the valid range. +
  • +
  • + SCI_GETTAG retrieves the value of captured expressions within regular expression searches. +
  • +
  • Rectangular selection expansion Bug #2948260.
  • diff --git a/src/Editor.cxx b/src/Editor.cxx index 03b06af23..c313e3928 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -2060,8 +2060,8 @@ void Editor::LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayou } lastSegItalics = false; } else if (isBadUTF) { - char hexits[3]; - sprintf(hexits, "%2X", ll->chars[charInLine] & 0xff); + char hexits[4]; + sprintf(hexits, "x%2X", ll->chars[charInLine] & 0xff); ll->positions[charInLine + 1] = surface->WidthText(ctrlCharsFont, hexits, istrlen(hexits)) + 3; } else { // Regular character @@ -2829,8 +2829,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis cc, 1, textBack, textFore); } } else if ((i == startseg) && (static_cast(ll->chars[i]) >= 0x80) && IsUnicodeMode()) { - char hexits[3]; - sprintf(hexits, "%2X", ll->chars[i] & 0xff); + // A single byte >= 0x80 in UTF-8 is a bad byte and is displayed as its hex value + char hexits[4]; + sprintf(hexits, "x%2X", ll->chars[i] & 0xff); DrawTextBlob(surface, vsDraw, rcSegment, hexits, textBack, textFore, twoPhaseDraw); } else { // Normal text display -- cgit v1.2.3