To: vim_dev@googlegroups.com Subject: Patch 8.2.2640 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2640 Problem: screenstring() returns non-existing composing characters. Solution: Only use composing characters if there is a base character. Files: src/evalfunc.c, src/testdir/test_listchars.vim *** ../vim-8.2.2639/src/evalfunc.c 2021-03-14 19:46:22.007284572 +0100 --- src/evalfunc.c 2021-03-22 17:08:19.500462426 +0100 *************** *** 7902,7908 **** c = ScreenLines[off]; buflen += mb_char2bytes(c, buf); ! if (enc_utf8) for (i = 0; i < Screen_mco && ScreenLinesC[i][off] != 0; ++i) buflen += mb_char2bytes(ScreenLinesC[i][off], buf + buflen); --- 7902,7908 ---- c = ScreenLines[off]; buflen += mb_char2bytes(c, buf); ! if (enc_utf8 && ScreenLinesUC[off] != 0) for (i = 0; i < Screen_mco && ScreenLinesC[i][off] != 0; ++i) buflen += mb_char2bytes(ScreenLinesC[i][off], buf + buflen); *** ../vim-8.2.2639/src/testdir/test_listchars.vim 2021-02-16 21:14:30.549742128 +0100 --- src/testdir/test_listchars.vim 2021-03-22 17:10:35.952068682 +0100 *************** *** 146,152 **** set list " Non-breaking space let nbsp = nr2char(0xa0) ! call append(0, [ ">".nbsp."<" ]) let expected = '>X< ' --- 146,152 ---- set list " Non-breaking space let nbsp = nr2char(0xa0) ! call append(0, [ ">" .. nbsp .. "<" ]) let expected = '>X< ' *************** *** 193,204 **** set list let nbsp = nr2char(0xa0) ! call append(0, [ ! \ "a\tb c".nbsp."d" ! \ ]) ! let expected = [ ! \ 'a←↔↔↔↔↔→b␣c≠d⇔' ! \ ] redraw! call cursor(1, 1) call assert_equal(expected, ScreenLines(1, virtcol('$'))) --- 193,200 ---- set list let nbsp = nr2char(0xa0) ! call append(0, ["a\tb c" .. nbsp .. "d"]) ! let expected = ['a←↔↔↔↔↔→b␣c≠d⇔'] redraw! call cursor(1, 1) call assert_equal(expected, ScreenLines(1, virtcol('$'))) *************** *** 221,230 **** let nbsp1 = nr2char(0xa0) let nbsp2 = nr2char(0x202f) call append(0, [ ! \ " \u3099\t \u309A".nbsp1.nbsp1."\u0302".nbsp2.nbsp2."\u0302", \ ]) let expected = [ ! \ "_ \u3099^I \u309A=".nbsp1."\u0302=".nbsp2."\u0302$" \ ] redraw! call cursor(1, 1) --- 217,226 ---- let nbsp1 = nr2char(0xa0) let nbsp2 = nr2char(0x202f) call append(0, [ ! \ " \u3099\t \u309A" .. nbsp1 .. nbsp1 .. "\u0302" .. nbsp2 .. nbsp2 .. "\u0302", \ ]) let expected = [ ! \ "_ \u3099^I \u309A=" .. nbsp1 .. "\u0302=" .. nbsp2 .. "\u0302$" \ ] redraw! call cursor(1, 1) *** ../vim-8.2.2639/src/version.c 2021-03-22 16:45:32.524949544 +0100 --- src/version.c 2021-03-22 17:09:12.504309112 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2640, /**/ -- hundred-and-one symptoms of being an internet addict: 15. Your heart races faster and beats irregularly each time you see a new WWW site address in print or on TV, even though you've never had heart problems before. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///