Skip to content

Commit

Permalink
patch 8.1.0212: preferred cursor column not set in interfaces
Browse files Browse the repository at this point in the history
Problem:    Preferred cursor column not set in interfaces.
Solution:   Set w_set_curswant when setting the cursor. (David Hotham,
            closes #3060)
  • Loading branch information
brammool committed Jul 25, 2018
1 parent 00136dc commit 5390144
Show file tree
Hide file tree
Showing 13 changed files with 93 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/if_lua.c
Original file line number Diff line number Diff line change
Expand Up @@ -1377,6 +1377,7 @@ luaV_window_newindex (lua_State *L)
luaV_checksandbox(L);
#endif
w->w_cursor.col = v - 1;
w->w_set_curswant = TRUE;
update_screen(VALID);
}
else if (strncmp(s, "width", 5) == 0)
Expand Down
1 change: 1 addition & 0 deletions src/if_mzsch.c
Original file line number Diff line number Diff line change
Expand Up @@ -2132,6 +2132,7 @@ set_cursor(void *data, int argc, Scheme_Object **argv)

win->win->w_cursor.lnum = lnum;
win->win->w_cursor.col = col;
win->win->w_set_curswant = TRUE;
update_screen(VALID);

raise_if_error();
Expand Down
1 change: 1 addition & 0 deletions src/if_perl.xs
Original file line number Diff line number Diff line change
Expand Up @@ -1691,6 +1691,7 @@ Cursor(win, ...)
col = (int) SvIV(ST(2));
win->w_cursor.lnum = lnum;
win->w_cursor.col = col;
win->w_set_curswant = TRUE;
check_cursor(); /* put cursor on an existing line */
update_screen(NOT_VALID);
}
Expand Down
1 change: 1 addition & 0 deletions src/if_py_both.h
Original file line number Diff line number Diff line change
Expand Up @@ -3985,6 +3985,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)

self->win->w_cursor.lnum = lnum;
self->win->w_cursor.col = col;
self->win->w_set_curswant = TRUE;
#ifdef FEAT_VIRTUALEDIT
self->win->w_cursor.coladd = 0;
#endif
Expand Down
1 change: 1 addition & 0 deletions src/if_ruby.c
Original file line number Diff line number Diff line change
Expand Up @@ -1517,6 +1517,7 @@ static VALUE window_set_cursor(VALUE self, VALUE pos)
col = RARRAY_PTR(pos)[1];
win->w_cursor.lnum = NUM2LONG(lnum);
win->w_cursor.col = NUM2UINT(col);
win->w_set_curswant = TRUE;
check_cursor(); /* put cursor on an existing line */
update_screen(NOT_VALID);
return Qnil;
Expand Down
1 change: 1 addition & 0 deletions src/if_tcl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1091,6 +1091,7 @@ winselfcmd(
/* TODO: should check column */
win->w_cursor.lnum = val1;
win->w_cursor.col = col2vim(val2);
win->w_set_curswant = TRUE;
flags |= FL_UPDATE_SCREEN;
break;

Expand Down
17 changes: 17 additions & 0 deletions src/testdir/test_lua.vim
Original file line number Diff line number Diff line change
Expand Up @@ -555,3 +555,20 @@ func Test_luafile_error()
call delete('Xlua_file')
bwipe!
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
13 changes: 13 additions & 0 deletions src/testdir/test_perl.vim
Original file line number Diff line number Diff line change
Expand Up @@ -258,3 +258,16 @@ func Test_000_SvREFCNT()
--perl
%bw!
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
14 changes: 14 additions & 0 deletions src/testdir/test_python2.vim
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,17 @@ func Test_pydo()
bwipe!
bwipe!
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
16 changes: 15 additions & 1 deletion src/testdir/test_python3.vim
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
" Test for python 2 commands.
" Test for python 3 commands.
" TODO: move tests from test88.in here.

if !has('python3')
Expand All @@ -22,3 +22,17 @@ func Test_py3do()
bwipe!
bwipe!
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
13 changes: 13 additions & 0 deletions src/testdir/test_ruby.vim
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,16 @@ func Test_rubyfile()
call assert_fails('rubyfile ' . tempfile)
call delete(tempfile)
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
13 changes: 13 additions & 0 deletions src/testdir/test_tcl.vim
Original file line number Diff line number Diff line change
Expand Up @@ -665,3 +665,16 @@ func Test_tcl_exit()

tcl unset bar
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
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
212,
/**/
211,
/**/
Expand Down

0 comments on commit 5390144

Please sign in to comment.