Patch 8.1.0058
Problem:    Display problem with margins and scrolling.
Solution:   Place the cursor in the right column. (Kouichi Iwamoto,
            closes #3016)
Files:      src/screen.c


*** ../vim-8.1.0057/src/screen.c        2018-06-16 15:32:34.460024472 +0200
--- src/screen.c        2018-06-16 16:14:27.022630636 +0200
***************
*** 9797,9802 ****
--- 9797,9803 ----
      int               j;
      unsigned  temp;
      int               cursor_row;
+     int               cursor_col = 0;
      int               type;
      int               result_empty;
      int               can_ce = can_clear(T_CE);
***************
*** 9893,9898 ****
--- 9894,9902 ----
      gui_dont_update_cursor(row + off <= gui.cursor_row);
  #endif
  
+     if (wp != NULL && wp->w_wincol != 0 && *T_CSV != NUL && *T_CCS == NUL)
+       cursor_col = wp->w_wincol;
+ 
      if (*T_CCS != NUL)           /* cursor relative to region */
        cursor_row = row;
      else
***************
*** 9939,9945 ****
      }
  
      screen_stop_highlight();
!     windgoto(cursor_row, 0);
      if (clear_attr != 0)
        screen_start_highlight(clear_attr);
  
--- 9943,9949 ----
      }
  
      screen_stop_highlight();
!     windgoto(cursor_row, cursor_col);
      if (clear_attr != 0)
        screen_start_highlight(clear_attr);
  
***************
*** 9958,9964 ****
            if (type == USE_T_AL)
            {
                if (i && cursor_row != 0)
!                   windgoto(cursor_row, 0);
                out_str(T_AL);
            }
            else  /* type == USE_T_SR */
--- 9962,9968 ----
            if (type == USE_T_AL)
            {
                if (i && cursor_row != 0)
!                   windgoto(cursor_row, cursor_col);
                out_str(T_AL);
            }
            else  /* type == USE_T_SR */
***************
*** 9975,9981 ****
      {
        for (i = 0; i < line_count; ++i)
        {
!           windgoto(off + i, 0);
            out_str(T_CE);
            screen_start();         /* don't know where cursor is now */
        }
--- 9979,9985 ----
      {
        for (i = 0; i < line_count; ++i)
        {
!           windgoto(off + i, cursor_col);
            out_str(T_CE);
            screen_start();         /* don't know where cursor is now */
        }
***************
*** 10011,10016 ****
--- 10015,10021 ----
      int               i;
      unsigned  temp;
      int               cursor_row;
+     int               cursor_col = 0;
      int               cursor_end;
      int               result_empty;   /* result is empty until end of region 
*/
      int               can_delete;     /* deleting line codes can be used */
***************
*** 10110,10115 ****
--- 10115,10123 ----
                                                && gui.cursor_row < end + off);
  #endif
  
+     if (wp != NULL && wp->w_wincol != 0 && *T_CSV != NUL && *T_CCS == NUL)
+       cursor_col = wp->w_wincol;
+ 
      if (*T_CCS != NUL)            /* cursor relative to region */
      {
        cursor_row = row;
***************
*** 10172,10184 ****
        redraw_block(row, end, wp);
      else if (type == USE_T_CD)        /* delete the lines */
      {
!       windgoto(cursor_row, 0);
        out_str(T_CD);
        screen_start();                 /* don't know where cursor is now */
      }
      else if (type == USE_T_CDL)
      {
!       windgoto(cursor_row, 0);
        term_delete_lines(line_count);
        screen_start();                 /* don't know where cursor is now */
      }
--- 10180,10192 ----
        redraw_block(row, end, wp);
      else if (type == USE_T_CD)        /* delete the lines */
      {
!       windgoto(cursor_row, cursor_col);
        out_str(T_CD);
        screen_start();                 /* don't know where cursor is now */
      }
      else if (type == USE_T_CDL)
      {
!       windgoto(cursor_row, cursor_col);
        term_delete_lines(line_count);
        screen_start();                 /* don't know where cursor is now */
      }
***************
*** 10189,10195 ****
       */
      else if (type == USE_NL)
      {
!       windgoto(cursor_end - 1, 0);
        for (i = line_count; --i >= 0; )
            out_char('\n');             /* cursor will remain on same line */
      }
--- 10197,10203 ----
       */
      else if (type == USE_NL)
      {
!       windgoto(cursor_end - 1, cursor_col);
        for (i = line_count; --i >= 0; )
            out_char('\n');             /* cursor will remain on same line */
      }
***************
*** 10199,10210 ****
        {
            if (type == USE_T_DL)
            {
!               windgoto(cursor_row, 0);
                out_str(T_DL);          /* delete a line */
            }
            else /* type == USE_T_CE */
            {
!               windgoto(cursor_row + i, 0);
                out_str(T_CE);          /* erase a line */
            }
            screen_start();             /* don't know where cursor is now */
--- 10207,10218 ----
        {
            if (type == USE_T_DL)
            {
!               windgoto(cursor_row, cursor_col);
                out_str(T_DL);          /* delete a line */
            }
            else /* type == USE_T_CE */
            {
!               windgoto(cursor_row + i, cursor_col);
                out_str(T_CE);          /* erase a line */
            }
            screen_start();             /* don't know where cursor is now */
***************
*** 10219,10225 ****
      {
        for (i = line_count; i > 0; --i)
        {
!           windgoto(cursor_end - i, 0);
            out_str(T_CE);              /* erase a line */
            screen_start();             /* don't know where cursor is now */
        }
--- 10227,10233 ----
      {
        for (i = line_count; i > 0; --i)
        {
!           windgoto(cursor_end - i, cursor_col);
            out_str(T_CE);              /* erase a line */
            screen_start();             /* don't know where cursor is now */
        }
*** ../vim-8.1.0057/src/version.c       2018-06-16 15:32:34.460024472 +0200
--- src/version.c       2018-06-16 16:13:43.890855764 +0200
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     58,
  /**/

-- 
Never go to the toilet in a paperless office.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            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].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui