diff options
author | David Adam <zanchey@ucc.gu.uwa.edu.au> | 2015-08-03 11:33:30 +0800 |
---|---|---|
committer | David Adam <zanchey@ucc.gu.uwa.edu.au> | 2015-08-03 14:18:06 +0800 |
commit | e56f0628d50baabe075e0fe95fad9e05f048b0a6 (patch) | |
tree | 3a8f92b412c021709438efac1e64b45c4383d151 /src/common.cpp | |
parent | 546ba888ae9c5b1f1600b5bea47ef607bbf4cb4e (diff) |
common.cpp: check wcwidth for supported characters
Rather than trying to detect Unicode support from the environment, check
the printable width of characters in the current locale before deciding
on whether to use them.
Closes #1927.
Diffstat (limited to 'src/common.cpp')
-rw-r--r-- | src/common.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/common.cpp b/src/common.cpp index ea1cc4e3..78d0e238 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -525,13 +525,10 @@ wcstring wsetlocale(int category, const wchar_t *locale) /* Use ellipsis if on known unicode system, otherwise use $ */ - char *ctype = setlocale(LC_CTYPE, NULL); - bool unicode = (strstr(ctype, ".UTF") || strstr(ctype, ".utf")); - - ellipsis_char = unicode ? L'\x2026' : L'$'; + ellipsis_char = (wcwidth(L'\x2026') > 0) ? L'\x2026' : L'$'; // U+23CE is the "return" character - omitted_newline_char = unicode ? L'\x23CE' : L'~'; + omitted_newline_char = (wcwidth(L'\x23CE') > 0) ? L'\x23CE' : L'~'; if (!res) return wcstring(); |