summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-12-05 22:26:44 +0000
committerBram Moolenaar <Bram@vim.org>2022-12-05 22:26:44 +0000
commit1cb16c3a20a9d17df1a8dc3813ef64dc98e42637 (patch)
tree64128dc38949473b1814a6bdbf42059e84786c03 /src
parentf0a9c004825ab686270ee57260652cce25e61049 (diff)
downloadvim-git-1cb16c3a20a9d17df1a8dc3813ef64dc98e42637.tar.gz
patch 9.0.1016: screenpos() does not count filler lines for diff modev9.0.1016
Problem: screenpos() does not count filler lines for diff mode. Solution: Add filler lines. (closes 11658)
Diffstat (limited to 'src')
-rw-r--r--src/move.c6
-rw-r--r--src/testdir/test_cursor_func.vim16
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 0 deletions
diff --git a/src/move.c b/src/move.c
index 954a13714..fde7f20e2 100644
--- a/src/move.c
+++ b/src/move.c
@@ -1426,6 +1426,12 @@ textpos2screenpos(
is_folded = hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL);
#endif
row = plines_m_win(wp, wp->w_topline, lnum - 1) + 1;
+
+#ifdef FEAT_DIFF
+ // Add filler lines above this buffer line.
+ row += diff_check_fill(wp, lnum);
+#endif
+
#ifdef FEAT_FOLDING
if (is_folded)
{
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index 8bdc956e2..fe64be0e7 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -156,6 +156,22 @@ func Test_screenpos_fold()
bwipe!
endfunc
+func Test_screenpos_diff()
+ CheckFeature diff
+
+ enew!
+ call setline(1, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'])
+ vnew
+ call setline(1, ['a', 'b', 'c', 'g', 'h', 'i'])
+ windo diffthis
+ wincmd w
+ call assert_equal(#{col: 3, row: 7, endcol: 3, curscol: 3}, screenpos(0, 4, 1))
+
+ windo diffoff
+ bwipe!
+ bwipe!
+endfunc
+
func Test_screenpos_number()
rightbelow new
rightbelow 73vsplit
diff --git a/src/version.c b/src/version.c
index a19d94765..3dbc0a0a5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1016,
+/**/
1015,
/**/
1014,