Patch 8.2.2904
Problem:    "g$" causes scroll if half a double width char is visible.
Solution:   Advance to the last fully visible character. (closes #8254)
Files:      src/normal.c, src/testdir/test_normal.vim


*** ../vim-8.2.2903/src/normal.c        2021-05-04 21:56:24.877671364 +0200
--- src/normal.c        2021-05-29 19:17:12.752383426 +0200
***************
*** 6144,6149 ****
--- 6144,6160 ----
                i = curwin->w_leftcol + curwin->w_width - col_off - 1;
                coladvance((colnr_T)i);
  
+               // if the character doesn't fit move one back
+               if (curwin->w_cursor.col > 0
+                                      && (*mb_ptr2cells)(ml_get_cursor()) > 1)
+               {
+                   colnr_T vcol;
+ 
+                   getvvcol(curwin, &curwin->w_cursor, NULL, NULL, &vcol);
+                   if (vcol >= curwin->w_leftcol + curwin->w_width - col_off)
+                       --curwin->w_cursor.col;
+               }
+ 
                // Make sure we stick in this column.
                validate_virtcol();
                curwin->w_curswant = curwin->w_virtcol;
*** ../vim-8.2.2903/src/testdir/test_normal.vim 2021-05-29 16:30:08.674611431 
+0200
--- src/testdir/test_normal.vim 2021-05-29 19:14:13.020819768 +0200
***************
*** 2201,2209 ****
    %d
    15vsp
    set wrap listchars= sbr=
!   let lineA='abcdefghijklmnopqrstuvwxyz'
!   let lineB='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
!   let 
lineC='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    $put =lineA
    $put =lineB
  
--- 2201,2209 ----
    %d
    15vsp
    set wrap listchars= sbr=
!   let lineA = 'abcdefghijklmnopqrstuvwxyz'
!   let lineB = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
!   let lineC = 
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    $put =lineA
    $put =lineB
  
***************
*** 2238,2243 ****
--- 2238,2265 ----
    call assert_equal('l', getreg(0))
    call assert_beeps('normal 5g$')
  
+   " Test for g$ with double-width character half displayed
+   vsplit
+   9wincmd |
+   setlocal nowrap nonumber
+   call setline(2, 'asdfasdfヨ')
+   2
+   normal 0g$
+   call assert_equal(8, col('.'))
+   10wincmd |
+   normal 0g$
+   call assert_equal(9, col('.'))
+ 
+   setlocal signcolumn=yes
+   11wincmd |
+   normal 0g$
+   call assert_equal(8, col('.'))
+   12wincmd |
+   normal 0g$
+   call assert_equal(9, col('.'))
+ 
+   close
+ 
    " Test for g_
    call assert_beeps('normal! 100g_')
    call setline(2, ['  foo  ', '  foobar  '])
*** ../vim-8.2.2903/src/version.c       2021-05-29 17:56:33.833094008 +0200
--- src/version.c       2021-05-29 19:03:39.530491760 +0200
***************
*** 752,753 ****
--- 752,755 ----
  {   /* Add new patch number below this line */
+ /**/
+     2904,
  /**/

-- 
ARTHUR:   Ni!
BEDEVERE: Nu!
ARTHUR:   No.  Ni!  More like this. "Ni"!
BEDEVERE: Ni, ni, ni!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202105291718.14THIR9F1566890%40masaka.moolenaar.net.

Raspunde prin e-mail lui