Mercurial > vim
diff src/register.c @ 25380:ac88cd21ae88 v8.2.3227
patch 8.2.3227: 'virtualedit' can only be set globally
Commit: https://github.com/vim/vim/commit/53ba05b09075f14227f9be831a22ed16f7cc26b2
Author: Gary Johnson <garyjohn@spocom.com>
Date: Mon Jul 26 22:19:10 2021 +0200
patch 8.2.3227: 'virtualedit' can only be set globally
Problem: 'virtualedit' can only be set globally.
Solution: Make 'virtualedit' global-local. (Gary Johnson, closes https://github.com/vim/vim/issues/8638)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 26 Jul 2021 22:30:05 +0200 |
parents | 078edc1821bf |
children | b1440083f0da |
line wrap: on
line diff
--- a/src/register.c +++ b/src/register.c @@ -1556,6 +1556,7 @@ do_put( long cnt; pos_T orig_start = curbuf->b_op_start; pos_T orig_end = curbuf->b_op_end; + unsigned int cur_ve_flags = get_ve_flags(); #ifdef FEAT_CLIPBOARD // Adjust register name for "unnamed" in 'clipboard'. @@ -1742,7 +1743,7 @@ do_put( yanklen = (int)STRLEN(y_array[0]); - if (ve_flags == VE_ALL && y_type == MCHAR) + if (cur_ve_flags == VE_ALL && y_type == MCHAR) { if (gchar_cursor() == TAB) { @@ -1777,7 +1778,7 @@ do_put( if (dir == FORWARD && c != NUL) { - if (ve_flags == VE_ALL) + if (cur_ve_flags == VE_ALL) getvcol(curwin, &curwin->w_cursor, &col, NULL, &endcol2); else getvcol(curwin, &curwin->w_cursor, NULL, NULL, &col); @@ -1786,7 +1787,7 @@ do_put( // move to start of next multi-byte character curwin->w_cursor.col += (*mb_ptr2len)(ml_get_cursor()); else - if (c != TAB || ve_flags != VE_ALL) + if (c != TAB || cur_ve_flags != VE_ALL) ++curwin->w_cursor.col; ++col; } @@ -1794,7 +1795,7 @@ do_put( getvcol(curwin, &curwin->w_cursor, &col, NULL, &endcol2); col += curwin->w_cursor.coladd; - if (ve_flags == VE_ALL + if (cur_ve_flags == VE_ALL && (curwin->w_cursor.coladd > 0 || endcol2 == curwin->w_cursor.col)) {