]> git.neil.brown.name Git - edlib.git/commitdiff
lib-markup: encode all control characters
authorNeilBrown <neil@brown.name>
Wed, 28 Apr 2021 23:35:18 +0000 (09:35 +1000)
committerNeilBrown <neil@brown.name>
Thu, 6 May 2021 11:22:34 +0000 (21:22 +1000)
Previously only control characters 0-0x35 and 0x7f were encoded as
something graphic.  But unicode has more than that.
So use iswcntrl() to find them all.

Signed-off-by: NeilBrown <neil@brown.name>
lib-markup.c

index 795b69c111333d3bed9b48d3f707e6c74b899aa9..0812443c965e1cb2c216667d05551cb06877bd01 100644 (file)
@@ -362,6 +362,11 @@ DEF_CMD(render_line)
                        buf_concat(&b, "</>");
                } else if (ch == 0x7f) {
                        buf_concat(&b, "<fg:red>^?</>");
+               } else if (ch >= 0x80 && iswcntrl(ch)) {
+                       /* Extra unicode control */
+                       buf_concat(&b, "<fg:magenta>^");
+                       buf_append(&b, 96 + (ch & 0x1f));
+                       buf_concat(&b, "</>");
                } else
                        buf_append(&b, ch);
                chars++;