mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
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 #8638)
This commit is contained in:
committed by
Bram Moolenaar
parent
29b857150c
commit
53ba05b090
16
src/ops.c
16
src/ops.c
@@ -1474,18 +1474,22 @@ op_insert(oparg_T *oap, long count1)
|
||||
// doing block_prep(). When only "block" is used, virtual edit is
|
||||
// already disabled, but still need it when calling
|
||||
// coladvance_force().
|
||||
// coladvance_force() uses get_ve_flags() to get the 'virtualedit'
|
||||
// state for the current buffer. To override that state, we need to
|
||||
// set the buffer-local value of ve_flags rather than the global value.
|
||||
if (curwin->w_cursor.coladd > 0)
|
||||
{
|
||||
int old_ve_flags = ve_flags;
|
||||
int old_ve_flags = curbuf->b_ve_flags;
|
||||
|
||||
ve_flags = VE_ALL;
|
||||
if (u_save_cursor() == FAIL)
|
||||
return;
|
||||
|
||||
curbuf->b_ve_flags = VE_ALL;
|
||||
coladvance_force(oap->op_type == OP_APPEND
|
||||
? oap->end_vcol + 1 : getviscol());
|
||||
if (oap->op_type == OP_APPEND)
|
||||
--curwin->w_cursor.col;
|
||||
ve_flags = old_ve_flags;
|
||||
curbuf->b_ve_flags = old_ve_flags;
|
||||
}
|
||||
// Get the info about the block before entering the text
|
||||
block_prep(oap, &bd, oap->start.lnum, TRUE);
|
||||
@@ -1816,15 +1820,17 @@ op_change(oparg_T *oap)
|
||||
void
|
||||
adjust_cursor_eol(void)
|
||||
{
|
||||
unsigned int cur_ve_flags = get_ve_flags();
|
||||
|
||||
if (curwin->w_cursor.col > 0
|
||||
&& gchar_cursor() == NUL
|
||||
&& (ve_flags & VE_ONEMORE) == 0
|
||||
&& (cur_ve_flags & VE_ONEMORE) == 0
|
||||
&& !(restart_edit || (State & INSERT)))
|
||||
{
|
||||
// Put the cursor on the last character in the line.
|
||||
dec_cursor();
|
||||
|
||||
if (ve_flags == VE_ALL)
|
||||
if (cur_ve_flags == VE_ALL)
|
||||
{
|
||||
colnr_T scol, ecol;
|
||||
|
||||
|
Reference in New Issue
Block a user