summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-07-25 22:02:36 +0200
committerBram Moolenaar <Bram@vim.org>2018-07-25 22:02:36 +0200
commit53901442f37a59e5495165f91db5574c0b43ab04 (patch)
tree45b25c0438bb017fb7201d9da9394664ed8b9d46
parent00136dc321586800986e8f743c2f108f5eecbf92 (diff)
downloadvim-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.c1
-rw-r--r--src/if_mzsch.c1
-rw-r--r--src/if_perl.xs1
-rw-r--r--src/if_py_both.h1
-rw-r--r--src/if_ruby.c1
-rw-r--r--src/if_tcl.c1
-rw-r--r--src/testdir/test_lua.vim17
-rw-r--r--src/testdir/test_perl.vim13
-rw-r--r--src/testdir/test_python2.vim14
-rw-r--r--src/testdir/test_python3.vim16
-rw-r--r--src/testdir/test_ruby.vim13
-rw-r--r--src/testdir/test_tcl.vim13
-rw-r--r--src/version.c2
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,