summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0933
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0933')
-rw-r--r--data/vim/patches/8.1.0933473
1 files changed, 473 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0933 b/data/vim/patches/8.1.0933
new file mode 100644
index 000000000..693c17933
--- /dev/null
+++ b/data/vim/patches/8.1.0933
@@ -0,0 +1,473 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0933
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0933
+Problem: When using VTP scroll region isn't used properly.
+Solution: Make better use of the scroll region. (Nobuhiro Takasaki,
+ closes #3974)
+Files: src/os_win32.c, src/term.c
+
+
+*** ../vim-8.1.0932/src/os_win32.c 2019-02-16 14:07:34.326138106 +0100
+--- src/os_win32.c 2019-02-16 16:44:59.511679299 +0100
+***************
+*** 171,176 ****
+--- 171,179 ----
+ static void scroll(unsigned cLines);
+ static void set_scroll_region(unsigned left, unsigned top,
+ unsigned right, unsigned bottom);
++ static void set_scroll_region_tb(unsigned top, unsigned bottom);
++ static void set_scroll_region_lr(unsigned left, unsigned right);
++ static void insert_lines(unsigned cLines);
+ static void delete_lines(unsigned cLines);
+ static void gotoxy(unsigned x, unsigned y);
+ static void standout(void);
+***************
+*** 5392,5398 ****
+
+ if (handles[0] == INVALID_HANDLE_VALUE)
+ {
+! CloseHandle(handles[1]);
+ return FALSE;
+ }
+
+--- 5395,5401 ----
+
+ if (handles[0] == INVALID_HANDLE_VALUE)
+ {
+! CloseHandle(handles[1]);
+ return FALSE;
+ }
+
+***************
+*** 5976,5984 ****
+ g_srScrollRegion.Top = top;
+ g_srScrollRegion.Right = right;
+ g_srScrollRegion.Bottom = bottom;
+
+! if (USE_VTP)
+! vtp_printf("\033[%d;%dr", top + 1, bottom + 1);
+ }
+
+
+--- 5979,6008 ----
+ g_srScrollRegion.Top = top;
+ g_srScrollRegion.Right = right;
+ g_srScrollRegion.Bottom = bottom;
++ }
++
++ static void
++ set_scroll_region_tb(
++ unsigned top,
++ unsigned bottom)
++ {
++ if (top >= bottom || bottom > (unsigned)Rows - 1)
++ return;
+
+! g_srScrollRegion.Top = top;
+! g_srScrollRegion.Bottom = bottom;
+! }
+!
+! static void
+! set_scroll_region_lr(
+! unsigned left,
+! unsigned right)
+! {
+! if (left >= right || right > (unsigned)Columns - 1)
+! return;
+!
+! g_srScrollRegion.Left = left;
+! g_srScrollRegion.Right = right;
+ }
+
+
+***************
+*** 5988,6034 ****
+ static void
+ insert_lines(unsigned cLines)
+ {
+! SMALL_RECT source;
+ COORD dest;
+ CHAR_INFO fill;
+
+! dest.X = 0;
+ dest.Y = g_coord.Y + cLines;
+
+! source.Left = 0;
+ source.Top = g_coord.Y;
+ source.Right = g_srScrollRegion.Right;
+ source.Bottom = g_srScrollRegion.Bottom - cLines;
+
+! if (!USE_VTP)
+ {
+ fill.Char.AsciiChar = ' ';
+! fill.Attributes = g_attrCurrent;
+
+- ScrollConsoleScreenBuffer(g_hConOut, &source, NULL, dest, &fill);
+- }
+- else
+- {
+ set_console_color_rgb();
+
+! gotoxy(1, source.Top + 1);
+! vtp_printf("\033[%dT", cLines);
+ }
+!
+! /* Here we have to deal with a win32 console flake: If the scroll
+! * region looks like abc and we scroll c to a and fill with d we get
+! * cbd... if we scroll block c one line at a time to a, we get cdd...
+! * vim expects cdd consistently... So we have to deal with that
+! * here... (this also occurs scrolling the same way in the other
+! * direction). */
+
+ if (source.Bottom < dest.Y)
+ {
+ COORD coord;
+
+! coord.X = 0;
+! coord.Y = source.Bottom;
+! clear_chars(coord, Columns * (dest.Y - source.Bottom));
+ }
+ }
+
+--- 6012,6060 ----
+ static void
+ insert_lines(unsigned cLines)
+ {
+! SMALL_RECT source, clip;
+ COORD dest;
+ CHAR_INFO fill;
+
+! dest.X = g_srScrollRegion.Left;
+ dest.Y = g_coord.Y + cLines;
+
+! source.Left = g_srScrollRegion.Left;
+ source.Top = g_coord.Y;
+ source.Right = g_srScrollRegion.Right;
+ source.Bottom = g_srScrollRegion.Bottom - cLines;
+
+! clip.Left = g_srScrollRegion.Left;
+! clip.Top = g_coord.Y;
+! clip.Right = g_srScrollRegion.Right;
+! clip.Bottom = g_srScrollRegion.Bottom;
+!
+ {
+ fill.Char.AsciiChar = ' ';
+! fill.Attributes = g_attrDefault;
+
+ set_console_color_rgb();
+
+! ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
+ }
+! // Here we have to deal with a win32 console flake: If the scroll
+! // region looks like abc and we scroll c to a and fill with d we get
+! // cbd... if we scroll block c one line at a time to a, we get cdd...
+! // vim expects cdd consistently... So we have to deal with that
+! // here... (this also occurs scrolling the same way in the other
+! // direction).
+
+ if (source.Bottom < dest.Y)
+ {
+ COORD coord;
++ int i;
+
+! coord.X = source.Left;
+! for (i = clip.Top; i < dest.Y; ++i)
+! {
+! coord.Y = i;
+! clear_chars(coord, source.Right - source.Left + 1);
+! }
+ }
+ }
+
+***************
+*** 6039,6088 ****
+ static void
+ delete_lines(unsigned cLines)
+ {
+! SMALL_RECT source;
+ COORD dest;
+ CHAR_INFO fill;
+ int nb;
+
+! dest.X = 0;
+ dest.Y = g_coord.Y;
+
+! source.Left = 0;
+ source.Top = g_coord.Y + cLines;
+ source.Right = g_srScrollRegion.Right;
+ source.Bottom = g_srScrollRegion.Bottom;
+
+! if (!USE_VTP)
+ {
+ fill.Char.AsciiChar = ' ';
+! fill.Attributes = g_attrCurrent;
+
+- ScrollConsoleScreenBuffer(g_hConOut, &source, NULL, dest, &fill);
+- }
+- else
+- {
+ set_console_color_rgb();
+
+! gotoxy(1, source.Top + 1);
+! vtp_printf("\033[%dS", cLines);
+ }
+!
+! /* Here we have to deal with a win32 console flake: If the scroll
+! * region looks like abc and we scroll c to a and fill with d we get
+! * cbd... if we scroll block c one line at a time to a, we get cdd...
+! * vim expects cdd consistently... So we have to deal with that
+! * here... (this also occurs scrolling the same way in the other
+! * direction). */
+
+ nb = dest.Y + (source.Bottom - source.Top) + 1;
+
+ if (nb < source.Top)
+ {
+ COORD coord;
+
+! coord.X = 0;
+! coord.Y = nb;
+! clear_chars(coord, Columns * (source.Top - nb));
+ }
+ }
+
+--- 6065,6112 ----
+ static void
+ delete_lines(unsigned cLines)
+ {
+! SMALL_RECT source, clip;
+ COORD dest;
+ CHAR_INFO fill;
+ int nb;
+
+! dest.X = g_srScrollRegion.Left;
+ dest.Y = g_coord.Y;
+
+! source.Left = g_srScrollRegion.Left;
+ source.Top = g_coord.Y + cLines;
+ source.Right = g_srScrollRegion.Right;
+ source.Bottom = g_srScrollRegion.Bottom;
+
+! clip.Left = g_srScrollRegion.Left;
+! clip.Top = g_coord.Y;
+! clip.Right = g_srScrollRegion.Right;
+! clip.Bottom = g_srScrollRegion.Bottom;
+!
+ {
+ fill.Char.AsciiChar = ' ';
+! fill.Attributes = g_attrDefault;
+
+ set_console_color_rgb();
+
+! ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
+ }
+! // Here we have to deal with a win32 console flake; See insert_lines()
+! // above.
+
+ nb = dest.Y + (source.Bottom - source.Top) + 1;
+
+ if (nb < source.Top)
+ {
+ COORD coord;
++ int i;
+
+! coord.X = source.Left;
+! for (i = nb; i < clip.Bottom; ++i)
+! {
+! coord.Y = i;
+! clear_chars(coord, source.Right - source.Left + 1);
+! }
+ }
+ }
+
+***************
+*** 6508,6513 ****
+--- 6532,6545 ----
+ {
+ set_scroll_region(0, arg1 - 1, Columns - 1, arg2 - 1);
+ }
++ else if (argc == 2 && *p == 'R')
++ {
++ set_scroll_region_tb(arg1, arg2);
++ }
++ else if (argc == 2 && *p == 'V')
++ {
++ set_scroll_region_lr(arg1, arg2);
++ }
+ else if (argc == 1 && *p == 'A')
+ {
+ gotoxy(g_coord.X + 1,
+*** ../vim-8.1.0932/src/term.c 2019-02-12 20:46:45.247272511 +0100
+--- src/term.c 2019-02-16 16:46:22.787339791 +0100
+***************
+*** 540,602 ****
+ * are also translated in os_win32.c.
+ */
+ {(int)KS_NAME, "win32"},
+! {(int)KS_CE, "\033|K"}, /* clear to end of line */
+! {(int)KS_AL, "\033|L"}, /* add new blank line */
+ # ifdef TERMINFO
+! {(int)KS_CAL, "\033|%p1%dL"}, /* add number of new blank lines */
+ # else
+! {(int)KS_CAL, "\033|%dL"}, /* add number of new blank lines */
+ # endif
+! {(int)KS_DL, "\033|M"}, /* delete line */
+ # ifdef TERMINFO
+! {(int)KS_CDL, "\033|%p1%dM"}, /* delete number of lines */
+ # else
+! {(int)KS_CDL, "\033|%dM"}, /* delete number of lines */
+ # endif
+! {(int)KS_CL, "\033|J"}, /* clear screen */
+! {(int)KS_CD, "\033|j"}, /* clear to end of display */
+! {(int)KS_VI, "\033|v"}, /* cursor invisible */
+! {(int)KS_VE, "\033|V"}, /* cursor visible */
+!
+! {(int)KS_ME, "\033|0m"}, /* normal */
+! {(int)KS_MR, "\033|112m"}, /* reverse: black on lightgray */
+! {(int)KS_MD, "\033|15m"}, /* bold: white on black */
+ #if 1
+! {(int)KS_SO, "\033|31m"}, /* standout: white on blue */
+! {(int)KS_SE, "\033|0m"}, /* standout end */
+ #else
+! {(int)KS_SO, "\033|F"}, /* standout: high intensity */
+! {(int)KS_SE, "\033|f"}, /* standout end */
+ #endif
+! {(int)KS_CZH, "\033|225m"}, /* italic: blue text on yellow */
+! {(int)KS_CZR, "\033|0m"}, /* italic end */
+! {(int)KS_US, "\033|67m"}, /* underscore: cyan text on red */
+! {(int)KS_UE, "\033|0m"}, /* underscore end */
+! {(int)KS_CCO, "16"}, /* allow 16 colors */
+ # ifdef TERMINFO
+! {(int)KS_CAB, "\033|%p1%db"}, /* set background color */
+! {(int)KS_CAF, "\033|%p1%df"}, /* set foreground color */
+ # else
+! {(int)KS_CAB, "\033|%db"}, /* set background color */
+! {(int)KS_CAF, "\033|%df"}, /* set foreground color */
+ # endif
+
+! {(int)KS_MS, "y"}, /* save to move cur in reverse mode */
+ {(int)KS_UT, "y"},
+ {(int)KS_XN, "y"},
+ {(int)KS_LE, "\b"},
+ # ifdef TERMINFO
+! {(int)KS_CM, "\033|%i%p1%d;%p2%dH"},/* cursor motion */
+ # else
+! {(int)KS_CM, "\033|%i%d;%dH"},/* cursor motion */
+ # endif
+! {(int)KS_VB, "\033|B"}, /* visual bell */
+! {(int)KS_TI, "\033|S"}, /* put terminal in termcap mode */
+! {(int)KS_TE, "\033|E"}, /* out of termcap mode */
+ # ifdef TERMINFO
+! {(int)KS_CS, "\033|%i%p1%d;%p2%dr"},/* scroll region */
+ # else
+! {(int)KS_CS, "\033|%i%d;%dr"},/* scroll region */
+ # endif
+ # ifdef FEAT_TERMGUICOLORS
+ {(int)KS_8F, "\033|38;2;%lu;%lu;%lum"},
+--- 540,604 ----
+ * are also translated in os_win32.c.
+ */
+ {(int)KS_NAME, "win32"},
+! {(int)KS_CE, "\033|K"}, // clear to end of line
+! {(int)KS_AL, "\033|L"}, // add new blank line
+ # ifdef TERMINFO
+! {(int)KS_CAL, "\033|%p1%dL"}, // add number of new blank lines
+ # else
+! {(int)KS_CAL, "\033|%dL"}, // add number of new blank lines
+ # endif
+! {(int)KS_DL, "\033|M"}, // delete line
+ # ifdef TERMINFO
+! {(int)KS_CDL, "\033|%p1%dM"}, // delete number of lines
+! {(int)KS_CSV, "\033|%p1%d;%p2%dV"},
+ # else
+! {(int)KS_CDL, "\033|%dM"}, // delete number of lines
+! {(int)KS_CSV, "\033|%d;%dV"},
+ # endif
+! {(int)KS_CL, "\033|J"}, // clear screen
+! {(int)KS_CD, "\033|j"}, // clear to end of display
+! {(int)KS_VI, "\033|v"}, // cursor invisible
+! {(int)KS_VE, "\033|V"}, // cursor visible
+!
+! {(int)KS_ME, "\033|0m"}, // normal
+! {(int)KS_MR, "\033|112m"}, // reverse: black on lightgray
+! {(int)KS_MD, "\033|15m"}, // bold: white on black
+ #if 1
+! {(int)KS_SO, "\033|31m"}, // standout: white on blue
+! {(int)KS_SE, "\033|0m"}, // standout end
+ #else
+! {(int)KS_SO, "\033|F"}, // standout: high intensity
+! {(int)KS_SE, "\033|f"}, // standout end
+ #endif
+! {(int)KS_CZH, "\033|225m"}, // italic: blue text on yellow
+! {(int)KS_CZR, "\033|0m"}, // italic end
+! {(int)KS_US, "\033|67m"}, // underscore: cyan text on red
+! {(int)KS_UE, "\033|0m"}, // underscore end
+! {(int)KS_CCO, "16"}, // allow 16 colors
+ # ifdef TERMINFO
+! {(int)KS_CAB, "\033|%p1%db"}, // set background color
+! {(int)KS_CAF, "\033|%p1%df"}, // set foreground color
+ # else
+! {(int)KS_CAB, "\033|%db"}, // set background color
+! {(int)KS_CAF, "\033|%df"}, // set foreground color
+ # endif
+
+! {(int)KS_MS, "y"}, // save to move cur in reverse mode
+ {(int)KS_UT, "y"},
+ {(int)KS_XN, "y"},
+ {(int)KS_LE, "\b"},
+ # ifdef TERMINFO
+! {(int)KS_CM, "\033|%i%p1%d;%p2%dH"}, // cursor motion
+ # else
+! {(int)KS_CM, "\033|%i%d;%dH"}, // cursor motion
+ # endif
+! {(int)KS_VB, "\033|B"}, // visual bell
+! {(int)KS_TI, "\033|S"}, // put terminal in termcap mode
+! {(int)KS_TE, "\033|E"}, // out of termcap mode
+ # ifdef TERMINFO
+! {(int)KS_CS, "\033|%i%p1%d;%p2%dr"}, // scroll region
+ # else
+! {(int)KS_CS, "\033|%i%d;%dr"}, // scroll region
+ # endif
+ # ifdef FEAT_TERMGUICOLORS
+ {(int)KS_8F, "\033|38;2;%lu;%lu;%lum"},
+***************
+*** 6778,6786 ****
+--- 6780,6792 ----
+ # ifdef TERMINFO
+ {(int)KS_CAB, "\033|%p1%db", "\033|%p14%dm"}, // set background color
+ {(int)KS_CAF, "\033|%p1%df", "\033|%p13%dm"}, // set foreground color
++ {(int)KS_CS, "\033|%p1%d;%p2%dR", "\033|%p1%d;%p2%dR"},
++ {(int)KS_CSV, "\033|%p1%d;%p2%dV", "\033|%p1%d;%p2%dV"},
+ # else
+ {(int)KS_CAB, "\033|%db", "\033|4%dm"}, // set background color
+ {(int)KS_CAF, "\033|%df", "\033|3%dm"}, // set foreground color
++ {(int)KS_CS, "\033|%d;%dR", "\033|%d;%dR"},
++ {(int)KS_CSV, "\033|%d;%dV", "\033|%d;%dV"},
+ # endif
+ {(int)KS_CCO, "256", "256"}, // colors
+ {(int)KS_NAME} // terminator
+*** ../vim-8.1.0932/src/version.c 2019-02-16 15:09:21.225946157 +0100
+--- src/version.c 2019-02-16 16:46:41.599260036 +0100
+***************
+*** 781,782 ****
+--- 781,784 ----
+ { /* Add new patch number below this line */
++ /**/
++ 933,
+ /**/
+
+--
+FIRST VILLAGER: We have found a witch. May we burn her?
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///