commit 5c7d88dc16361f251ff7d6fe2d4b315fe25215ca
parent a620e683e7e5a46aff92fa3b68dbbdf6f4622ab4
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Sun, 28 May 2006 16:25:15 +0000
in parse_verbatim_kbinput(), don't include the ability to enter a
Unicode sequence via verbatim input mode if we're not in a UTF-8 locale
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3588 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
M | ChangeLog | | | 3 | ++- |
M | src/winio.c | | | 73 | ++++++++++++++++++++++++++++++++++++++----------------------------------- |
2 files changed, 40 insertions(+), 36 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -315,7 +315,8 @@ CVS code -
- Simplify the if blocks wherever possible. (DLR)
parse_verbatim_kbinput()
- Don't include the ability to enter a Unicode sequence via
- verbatim input mode if ENABLE_UTF8 isn't defined. (DLR)
+ verbatim input mode if ENABLE_UTF8 isn't defined or we're not
+ in a UTF-8 locale. (DLR)
check_statusblank()
- Avoid redundant updates when statusblank is 0. (DLR)
display_string()
diff --git a/src/winio.c b/src/winio.c
@@ -1449,49 +1449,52 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
while ((kbinput = get_input(win, 1)) == NULL);
#ifdef ENABLE_UTF8
- /* Check whether the first keystroke is a valid hexadecimal
- * digit. */
- uni = get_unicode_kbinput(*kbinput);
-
- /* If the first keystroke isn't a valid hexadecimal digit, put back
- * the first keystroke. */
- if (uni != ERR)
-#endif /* ENABLE_UTF8 */
-
- unget_input(kbinput, 1);
-
-#ifdef ENABLE_UTF8
- /* Otherwise, read in keystrokes until we have a complete Unicode
- * sequence, and put back the corresponding Unicode value. */
- else {
- char *uni_mb;
- int uni_mb_len, *seq, i;
+ if (using_utf8()) {
+ /* Check whether the first keystroke is a valid hexadecimal
+ * digit. */
+ uni = get_unicode_kbinput(*kbinput);
+
+ /* If the first keystroke isn't a valid hexadecimal digit, put
+ * back the first keystroke. */
+ if (uni != ERR)
+ unget_input(kbinput, 1);
+
+ /* Otherwise, read in keystrokes until we have a complete
+ * Unicode sequence, and put back the corresponding Unicode
+ * value. */
+ else {
+ char *uni_mb;
+ int uni_mb_len, *seq, i;
- if (win == edit)
- /* TRANSLATORS: This is displayed during the input of a
- * six-digit Unicode code. */
- statusbar(_("Unicode Input"));
+ if (win == edit)
+ /* TRANSLATORS: This is displayed during the input of a
+ * six-digit hexadecimal Unicode character code. */
+ statusbar(_("Unicode Input"));
- while (uni == ERR) {
- while ((kbinput = get_input(win, 1)) == NULL);
+ while (uni == ERR) {
+ while ((kbinput = get_input(win, 1)) == NULL);
- uni = get_unicode_kbinput(*kbinput);
- }
+ uni = get_unicode_kbinput(*kbinput);
+ }
- /* Put back the multibyte equivalent of the Unicode value. */
- uni_mb = make_mbchar(uni, &uni_mb_len);
+ /* Put back the multibyte equivalent of the Unicode
+ * value. */
+ uni_mb = make_mbchar(uni, &uni_mb_len);
- seq = (int *)nmalloc(uni_mb_len * sizeof(int));
+ seq = (int *)nmalloc(uni_mb_len * sizeof(int));
- for (i = 0; i < uni_mb_len; i++)
- seq[i] = (unsigned char)uni_mb[i];
+ for (i = 0; i < uni_mb_len; i++)
+ seq[i] = (unsigned char)uni_mb[i];
- unget_input(seq, uni_mb_len);
+ unget_input(seq, uni_mb_len);
- free(seq);
- free(uni_mb);
- }
-#endif /* ENABLE_UTF8 */
+ free(seq);
+ free(uni_mb);
+ }
+ } else
+#endif
+ /* Put back the first keystroke. */
+ unget_input(kbinput, 1);
/* Get the complete sequence, and save the characters in it as the
* result. */