]> granicus.if.org Git - vim/commitdiff
patch 8.2.5058: input() does not handle composing characters properly v8.2.5058
authorzeertzjq <zeertzjq@outlook.com>
Sun, 5 Jun 2022 18:01:37 +0000 (19:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 5 Jun 2022 18:01:37 +0000 (19:01 +0100)
Problem:    input() does not handle composing characters properly.
Solution:   Use mb_cptr2char_adv() instead of mb_ptr2char_adv().
            (closes #10527)

src/getchar.c
src/testdir/test_functions.vim
src/version.c

index 55fad1cb2995c1aceee93bc5cfa6f3f147eb97ce..03d90ac87ea6c166e9f7f0ce5202c298b6559248 100644 (file)
@@ -669,7 +669,7 @@ stuffReadbuffSpec(char_u *s)
        }
        else
        {
-           c = mb_ptr2char_adv(&s);
+           c = mb_cptr2char_adv(&s);
            if (c == CAR || c == NL || c == ESC)
                c = ' ';
            stuffcharReadbuff(c);
index af07a64243d915c9b8b327704b626aab1ab2819c..f55e846fa5942f81a131318066936477af3e5dcb 100644 (file)
@@ -1545,6 +1545,10 @@ func Test_input_func()
   call feedkeys(":let c = input('name? ', \"x\\<BS>y\")\<CR>\<CR>", 'xt')
   call assert_equal('y', c)
 
+  " Test for using text with composing characters as default input
+  call feedkeys(":let c = input('name? ', \"ã̳\")\<CR>\<CR>", 'xt')
+  call assert_equal('ã̳', c)
+
   " Test for using <CR> as default input
   call feedkeys(":let c = input('name? ', \"\\<CR>\")\<CR>x\<CR>", 'xt')
   call assert_equal(' x', c)
index 254b5f1f8dc60cbdccef58656dd1841caa14a39d..744fad6612020f2f4d3e1f6102773fec92d6ae38 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    5058,
 /**/
     5057,
 /**/