To: vim-dev@vim.org Subject: Patch 6.1a.003 Fcc: outbox From: Bram Moolenaar MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 6.1a.003 Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: yanking in Visual mode doesn't include the last byte. (Eric Long) Solution: Don't add a space for a double-wide character. Files: src/ops.c *** ../vim61a.002/src/ops.c Wed Feb 20 20:47:18 2002 --- src/ops.c Mon Feb 25 21:57:04 2002 *************** *** 2614,2625 **** if (virtual_active()) { getvcol(curwin, &oap->end, &cs, NUL, &ce); ! if (p[endcol] == NUL || cs + oap->end.coladd < ce) { - /* Special case: inside a single char */ if (oap->start.lnum == oap->end.lnum && oap->start.col == oap->end.col) { is_oneChar = TRUE; bd.startspaces = oap->end.coladd - oap->start.coladd + oap->inclusive; --- 2614,2632 ---- if (virtual_active()) { getvcol(curwin, &oap->end, &cs, NUL, &ce); ! if (p[endcol] == NUL || (cs + oap->end.coladd < ce ! # ifdef FEAT_MBYTE ! /* Don't add space for double-wide ! * char; endcol will be on last byte ! * of multi-byte char. */ ! && (*mb_head_off)(p, p + endcol) == 0 ! # endif ! )) { if (oap->start.lnum == oap->end.lnum && oap->start.col == oap->end.col) { + /* Special case: inside a single char */ is_oneChar = TRUE; bd.startspaces = oap->end.coladd - oap->start.coladd + oap->inclusive; *** ../vim61a.002/src/version.c Mon Feb 25 21:35:47 2002 --- src/version.c Mon Feb 25 22:00:25 2002 *************** *** 608,609 **** --- 608,611 ---- { /* Add new patch number below this line */ + /**/ + 3, /**/ -- What a wonderfully exciting cough! Do you mind if I join you? -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\ /// Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim \\\ \\\ Project leader for A-A-P -- http://www.a-a-p.org /// \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///