mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.1.0212: preferred cursor column not set in interfaces
Problem: Preferred cursor column not set in interfaces. Solution: Set w_set_curswant when setting the cursor. (David Hotham, closes #3060)
This commit is contained in:
@@ -1377,6 +1377,7 @@ luaV_window_newindex (lua_State *L)
|
|||||||
luaV_checksandbox(L);
|
luaV_checksandbox(L);
|
||||||
#endif
|
#endif
|
||||||
w->w_cursor.col = v - 1;
|
w->w_cursor.col = v - 1;
|
||||||
|
w->w_set_curswant = TRUE;
|
||||||
update_screen(VALID);
|
update_screen(VALID);
|
||||||
}
|
}
|
||||||
else if (strncmp(s, "width", 5) == 0)
|
else if (strncmp(s, "width", 5) == 0)
|
||||||
|
@@ -2132,6 +2132,7 @@ set_cursor(void *data, int argc, Scheme_Object **argv)
|
|||||||
|
|
||||||
win->win->w_cursor.lnum = lnum;
|
win->win->w_cursor.lnum = lnum;
|
||||||
win->win->w_cursor.col = col;
|
win->win->w_cursor.col = col;
|
||||||
|
win->win->w_set_curswant = TRUE;
|
||||||
update_screen(VALID);
|
update_screen(VALID);
|
||||||
|
|
||||||
raise_if_error();
|
raise_if_error();
|
||||||
|
@@ -1691,6 +1691,7 @@ Cursor(win, ...)
|
|||||||
col = (int) SvIV(ST(2));
|
col = (int) SvIV(ST(2));
|
||||||
win->w_cursor.lnum = lnum;
|
win->w_cursor.lnum = lnum;
|
||||||
win->w_cursor.col = col;
|
win->w_cursor.col = col;
|
||||||
|
win->w_set_curswant = TRUE;
|
||||||
check_cursor(); /* put cursor on an existing line */
|
check_cursor(); /* put cursor on an existing line */
|
||||||
update_screen(NOT_VALID);
|
update_screen(NOT_VALID);
|
||||||
}
|
}
|
||||||
|
@@ -3985,6 +3985,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
|
|||||||
|
|
||||||
self->win->w_cursor.lnum = lnum;
|
self->win->w_cursor.lnum = lnum;
|
||||||
self->win->w_cursor.col = col;
|
self->win->w_cursor.col = col;
|
||||||
|
self->win->w_set_curswant = TRUE;
|
||||||
#ifdef FEAT_VIRTUALEDIT
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
self->win->w_cursor.coladd = 0;
|
self->win->w_cursor.coladd = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1517,6 +1517,7 @@ static VALUE window_set_cursor(VALUE self, VALUE pos)
|
|||||||
col = RARRAY_PTR(pos)[1];
|
col = RARRAY_PTR(pos)[1];
|
||||||
win->w_cursor.lnum = NUM2LONG(lnum);
|
win->w_cursor.lnum = NUM2LONG(lnum);
|
||||||
win->w_cursor.col = NUM2UINT(col);
|
win->w_cursor.col = NUM2UINT(col);
|
||||||
|
win->w_set_curswant = TRUE;
|
||||||
check_cursor(); /* put cursor on an existing line */
|
check_cursor(); /* put cursor on an existing line */
|
||||||
update_screen(NOT_VALID);
|
update_screen(NOT_VALID);
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
@@ -1091,6 +1091,7 @@ winselfcmd(
|
|||||||
/* TODO: should check column */
|
/* TODO: should check column */
|
||||||
win->w_cursor.lnum = val1;
|
win->w_cursor.lnum = val1;
|
||||||
win->w_cursor.col = col2vim(val2);
|
win->w_cursor.col = col2vim(val2);
|
||||||
|
win->w_set_curswant = TRUE;
|
||||||
flags |= FL_UPDATE_SCREEN;
|
flags |= FL_UPDATE_SCREEN;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -555,3 +555,20 @@ func Test_luafile_error()
|
|||||||
call delete('Xlua_file')
|
call delete('Xlua_file')
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
lua << EOF
|
||||||
|
w = vim.window()
|
||||||
|
w.line = 1
|
||||||
|
w.col = 5
|
||||||
|
EOF
|
||||||
|
call assert_equal([1, 5], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 5], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -258,3 +258,16 @@ func Test_000_SvREFCNT()
|
|||||||
--perl
|
--perl
|
||||||
%bw!
|
%bw!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
perldo $curwin->Cursor(1, 5)
|
||||||
|
call assert_equal([1, 6], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 6], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -22,3 +22,17 @@ func Test_pydo()
|
|||||||
bwipe!
|
bwipe!
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
py import vim
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
pydo vim.current.window.cursor = (1, 5)
|
||||||
|
call assert_equal([1, 6], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 6], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
" Test for python 2 commands.
|
" Test for python 3 commands.
|
||||||
" TODO: move tests from test88.in here.
|
" TODO: move tests from test88.in here.
|
||||||
|
|
||||||
if !has('python3')
|
if !has('python3')
|
||||||
@@ -22,3 +22,17 @@ func Test_py3do()
|
|||||||
bwipe!
|
bwipe!
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
py3 import vim
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
py3do vim.current.window.cursor = (1, 5)
|
||||||
|
call assert_equal([1, 6], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 6], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -57,3 +57,16 @@ func Test_rubyfile()
|
|||||||
call assert_fails('rubyfile ' . tempfile)
|
call assert_fails('rubyfile ' . tempfile)
|
||||||
call delete(tempfile)
|
call delete(tempfile)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
rubydo $curwin.cursor = [1, 5]
|
||||||
|
call assert_equal([1, 6], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 6], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -665,3 +665,16 @@ func Test_tcl_exit()
|
|||||||
|
|
||||||
tcl unset bar
|
tcl unset bar
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_cursor()
|
||||||
|
" Check that setting the cursor position works.
|
||||||
|
new
|
||||||
|
call setline(1, ['first line', 'second line'])
|
||||||
|
normal gg
|
||||||
|
tcldo $::vim::current(window) cursor 1 5
|
||||||
|
call assert_equal([1, 5], [line('.'), col('.')])
|
||||||
|
|
||||||
|
" Check that movement after setting cursor position keeps current column.
|
||||||
|
normal j
|
||||||
|
call assert_equal([2, 5], [line('.'), col('.')])
|
||||||
|
endfunc
|
||||||
|
@@ -793,6 +793,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
212,
|
||||||
/**/
|
/**/
|
||||||
211,
|
211,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user