summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin McCarthy <kevin@8t8.us>2016-05-03 13:21:41 -0700
committerKevin McCarthy <kevin@8t8.us>2016-05-03 13:21:41 -0700
commitfa0dcb09fe69d23ceba28159e6be6b72adb9a9df (patch)
tree2c2e986c572768bf7927eac187b0c93dc7234f60
parent8c55b7db9309ce659ae428d6576315ee6cb808fc (diff)
Skip bidi markers in the pager and index. (closes #3827)
Curses and slang don't support them, so there's little point in showing them or attempting to somehow deal with them. This patch adds filtering in the pager, and changes the filtering added in 6e0aca94cdb0 for the index to completely skip the marker.
-rw-r--r--mbyte.c8
-rw-r--r--pager.c11
2 files changed, 13 insertions, 6 deletions
diff --git a/mbyte.c b/mbyte.c
index 470686c9..adea5f43 100644
--- a/mbyte.c
+++ b/mbyte.c
@@ -548,14 +548,12 @@ int mutt_filter_unprintable (char **s)
}
if (!IsWPrint (wc))
wc = '?';
- /* HACK:
- * Work around a gnu screen bug. See ticket #3827.
- * Filter out the RIGHT-TO-LEFT and LEFT-TO-RIGHT bidi marks because
- * they result in screen corruption.
+ /* Filter out the RIGHT-TO-LEFT and LEFT-TO-RIGHT bidi markers because
+ * they result in screen corruption. See ticket #3827.
*/
else if (Charset_is_utf8 &&
((wc == (wchar_t)0x200f) || (wc == (wchar_t)0x200e)))
- wc = '?';
+ continue;
k2 = wcrtomb (scratch, wc, &mbstate2);
scratch[k2] = '\0';
mutt_buffer_addstr (b, scratch);
diff --git a/pager.c b/pager.c
index d47842ab..3daa5d07 100644
--- a/pager.c
+++ b/pager.c
@@ -1146,10 +1146,19 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
if (k == 0)
k = 1;
- if (Charset_is_utf8 && (wc == 0x200B || wc == 0xFEFF))
+ if (Charset_is_utf8)
{
+ if (wc == 0x200B || wc == 0xFEFF)
+ {
dprint (3, (debugfile, "skip zero-width character U+%04X\n", (unsigned short)wc));
continue;
+ }
+ /* Filter bidi markers, see ticket #3827 */
+ if (wc == (wchar_t)0x200f || wc == (wchar_t)0x200e)
+ {
+ dprint (3, (debugfile, "skip bidi marker U+%04X\n", (unsigned short)wc));
+ continue;
+ }
}
/* Handle backspace */