Mercurial > vim
changeset 14395:c15bef307de6 v8.1.0212
patch 8.1.0212: preferred cursor column not set in interfaces
commit https://github.com/vim/vim/commit/53901442f37a59e5495165f91db5574c0b43ab04
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 25 22:02:36 2018 +0200
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 25 Jul 2018 22:15:05 +0200 |
parents | 1386ba8142b4 |
children | cee68b7551a2 |
files | src/if_lua.c src/if_mzsch.c src/if_perl.xs src/if_py_both.h src/if_ruby.c src/if_tcl.c src/testdir/test_lua.vim src/testdir/test_perl.vim src/testdir/test_python2.vim src/testdir/test_python3.vim src/testdir/test_ruby.vim src/testdir/test_tcl.vim src/version.c |
diffstat | 13 files changed, 93 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if_lua.c +++ b/src/if_lua.c @@ -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)
--- a/src/if_mzsch.c +++ b/src/if_mzsch.c @@ -2132,6 +2132,7 @@ set_cursor(void *data, int argc, Scheme_ win->win->w_cursor.lnum = lnum; win->win->w_cursor.col = col; + win->win->w_set_curswant = TRUE; update_screen(VALID); raise_if_error();
--- a/src/if_perl.xs +++ b/src/if_perl.xs @@ -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); }
--- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -3985,6 +3985,7 @@ WindowSetattr(WindowObject *self, char * 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
--- a/src/if_ruby.c +++ b/src/if_ruby.c @@ -1517,6 +1517,7 @@ static VALUE window_set_cursor(VALUE sel 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;
--- a/src/if_tcl.c +++ b/src/if_tcl.c @@ -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;
--- a/src/testdir/test_lua.vim +++ b/src/testdir/test_lua.vim @@ -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
--- a/src/testdir/test_perl.vim +++ b/src/testdir/test_perl.vim @@ -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
--- a/src/testdir/test_python2.vim +++ b/src/testdir/test_python2.vim @@ -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
--- a/src/testdir/test_python3.vim +++ b/src/testdir/test_python3.vim @@ -1,4 +1,4 @@ -" Test for python 2 commands. +" Test for python 3 commands. " TODO: move tests from test88.in here. if !has('python3') @@ -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
--- a/src/testdir/test_ruby.vim +++ b/src/testdir/test_ruby.vim @@ -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
--- a/src/testdir/test_tcl.vim +++ b/src/testdir/test_tcl.vim @@ -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