]> granicus.if.org Git - vim/commitdiff
patch 9.0.1072: screenpos() column result in fold may be too small v9.0.1072
authorzeertzjq <zeertzjq@outlook.com>
Sun, 18 Dec 2022 12:28:59 +0000 (12:28 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 18 Dec 2022 12:28:59 +0000 (12:28 +0000)
Problem:    screenpos() column result in fold may be too small.
Solution:   Add space of 'number', sign column, etc. (closes #11715)

src/move.c
src/testdir/test_cursor_func.vim
src/version.c

index fde7f20e253cd8aa77d51957f0fd9e69ad8843be..29ba56940ba1353aaa18c5e96aec9ed1c9ddb9d5 100644 (file)
@@ -1416,7 +1416,6 @@ textpos2screenpos(
 
     if (pos->lnum >= wp->w_topline && pos->lnum <= wp->w_botline)
     {
-       colnr_T     off;
        colnr_T     col;
        int         width;
        linenr_T    lnum = pos->lnum;
@@ -1432,11 +1431,12 @@ textpos2screenpos(
        row += diff_check_fill(wp, lnum);
 #endif
 
+       colnr_T off = win_col_off(wp);
 #ifdef FEAT_FOLDING
        if (is_folded)
        {
            row += W_WINROW(wp);
-           coloff = wp->w_wincol + 1;
+           coloff = wp->w_wincol + 1 + off;
        }
        else
 #endif
@@ -1445,7 +1445,6 @@ textpos2screenpos(
 
            // similar to what is done in validate_cursor_col()
            col = scol;
-           off = win_col_off(wp);
            col += off;
            width = wp->w_width - off + win_col_off2(wp);
 
index fe64be0e71f51be84bcb1824d522edfe7d9c0f65..d74255e19bd62dd91dd074ec33e1faef12d669c3 100644 (file)
@@ -150,8 +150,12 @@ func Test_screenpos_fold()
   redraw
   call assert_equal(2, screenpos(1, 2, 1).row)
   call assert_equal(#{col: 1, row: 3, endcol: 1, curscol: 1}, screenpos(1, 3, 1))
-  call assert_equal(3, screenpos(1, 4, 1).row)
-  call assert_equal(3, screenpos(1, 5, 1).row)
+  call assert_equal(#{col: 1, row: 3, endcol: 1, curscol: 1}, screenpos(1, 4, 1))
+  call assert_equal(#{col: 1, row: 3, endcol: 1, curscol: 1}, screenpos(1, 5, 1))
+  setlocal number
+  call assert_equal(#{col: 5, row: 3, endcol: 5, curscol: 5}, screenpos(1, 3, 1))
+  call assert_equal(#{col: 5, row: 3, endcol: 5, curscol: 5}, screenpos(1, 4, 1))
+  call assert_equal(#{col: 5, row: 3, endcol: 5, curscol: 5}, screenpos(1, 5, 1))
   call assert_equal(4, screenpos(1, 6, 1).row)
   bwipe!
 endfunc
index f80aeca91376106d7ecda4a650e6ebefa17c21d6..91313cb3f3db28520ce92eae73334b996ec1a603 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1072,
 /**/
     1071,
 /**/