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.