diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-07-25 22:02:36 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-07-25 22:02:36 +0200 |
commit | 53901442f37a59e5495165f91db5574c0b43ab04 (patch) | |
tree | 45b25c0438bb017fb7201d9da9394664ed8b9d46 | |
parent | 00136dc321586800986e8f743c2f108f5eecbf92 (diff) | |
download | vim-git-53901442f37a59e5495165f91db5574c0b43ab04.tar.gz |
patch 8.1.0212: preferred cursor column not set in interfacesv8.1.0212
Problem: Preferred cursor column not set in interfaces.
Solution: Set w_set_curswant when setting the cursor. (David Hotham,
closes #3060)
-rw-r--r-- | src/if_lua.c | 1 | ||||
-rw-r--r-- | src/if_mzsch.c | 1 | ||||
-rw-r--r-- | src/if_perl.xs | 1 | ||||
-rw-r--r-- | src/if_py_both.h | 1 | ||||
-rw-r--r-- | src/if_ruby.c | 1 | ||||
-rw-r--r-- | src/if_tcl.c | 1 | ||||
-rw-r--r-- | src/testdir/test_lua.vim | 17 | ||||
-rw-r--r-- | src/testdir/test_perl.vim | 13 | ||||
-rw-r--r-- | src/testdir/test_python2.vim | 14 | ||||
-rw-r--r-- | src/testdir/test_python3.vim | 16 | ||||
-rw-r--r-- | src/testdir/test_ruby.vim | 13 | ||||
-rw-r--r-- | src/testdir/test_tcl.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
13 files changed, 93 insertions, 1 deletions
diff --git a/src/if_lua.c b/src/if_lua.c index c0d809adc..7602c80de 100644 --- 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) diff --git a/src/if_mzsch.c b/src/if_mzsch.c index 54474bd80..23b67a99b 100644 --- a/src/if_mzsch.c +++ b/src/if_mzsch.c @@ -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(); diff --git a/src/if_perl.xs b/src/if_perl.xs index 55a24c6ac..bc15efa94 100644 --- 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); } diff --git a/src/if_py_both.h b/src/if_py_both.h index 58db254dc..459bc50cd 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -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 diff --git a/src/if_ruby.c b/src/if_ruby.c index d67801dfa..4b9af318d 100644 --- a/src/if_ruby.c +++ b/src/if_ruby.c @@ -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; diff --git a/src/if_tcl.c b/src/if_tcl.c index 9ecabf84c..228936554 100644 --- 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; diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim index 228079203..e021a2f44 100644 --- 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 diff --git a/src/testdir/test_perl.vim b/src/testdir/test_perl.vim index 0528814b4..661c65cdc 100644 --- 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 diff --git a/src/testdir/test_python2.vim b/src/testdir/test_python2.vim index fb98c1eda..c438ba041 100644 --- 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 diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim index bb241dacb..69ad80213 100644 --- 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 diff --git a/src/testdir/test_ruby.vim b/src/testdir/test_ruby.vim index 0017f73ae..ae27b39cd 100644 --- 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 diff --git a/src/testdir/test_tcl.vim b/src/testdir/test_tcl.vim index 54e3617a7..c0eadc637 100644 --- 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 diff --git a/src/version.c b/src/version.c index 24753d1e5..81ed54446 100644 --- a/src/version.c +++ b/src/version.c @@ -794,6 +794,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 212, +/**/ 211, /**/ 210, |