From d68554d4fe34884fb9209957f3b09e9544c419d6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar <Bram@vim.org> Date: Sun, 25 Jul 2010 13:43:20 +0200 Subject: [PATCH] Include old Python changes in Python 3 interface. --- src/if_python3.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/if_python3.c b/src/if_python3.c index bb0763ab0e..0b3a0527b9 100644 --- a/src/if_python3.c +++ b/src/if_python3.c @@ -34,7 +34,7 @@ # undef _POSIX_THREADS #endif -#if defined(_WIN32) && defined (HAVE_FCNTL_H) +#if defined(_WIN32) && defined(HAVE_FCNTL_H) # undef HAVE_FCNTL_H #endif @@ -1828,6 +1828,7 @@ WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) { long lnum; long col; + long len; if (!PyArg_Parse(val, "(ll)", &lnum, &col)) return -1; @@ -1842,10 +1843,16 @@ WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) if (VimErrorCheck()) return -1; - /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */ + /* When column is out of range silently correct it. */ + len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE)); + if (col > len) + col = len; this->win->w_cursor.lnum = lnum; this->win->w_cursor.col = col; +#ifdef FEAT_VIRTUALEDIT + this->win->w_cursor.coladd = 0; +#endif update_screen(VALID); return 0; @@ -2242,9 +2249,9 @@ SetBufferLine(buf_T *buf, Py_ssize_t n, PyObject *line, Py_ssize_t *len_change) PyErr_SetVim(_("cannot delete line")); else { - deleted_lines_mark((linenr_T)n, 1L); if (buf == curwin->w_buffer) py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1); + deleted_lines_mark((linenr_T)n, 1L); } curbuf = savebuf; -- GitLab