Commit fa0dcb09 authored by Kevin J. McCarthy's avatar Kevin J. McCarthy

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.
parent 8c55b7db
......@@ -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);
......
......@@ -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 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment