]> git.wh0rd.org Git - nano.git/commitdiff
in parse_verbatim_kbinput(), don't include the ability to enter a
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 28 May 2006 16:25:15 +0000 (16:25 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 28 May 2006 16:25:15 +0000 (16:25 +0000)
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

ChangeLog
src/winio.c

index 0b358e556dd3e7f9dc54f82606338f7b37469199..8eb724a8a9a71310035477c8c642ad7782b7b3dd 100644 (file)
--- 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()
index 01edb8192707b4127c1abf060a61854ece7b052f..d659ac494ad81c2e311275fbe341266004d622c0 100644 (file)
@@ -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. */