summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1469
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1469')
-rw-r--r--data/vim/patches/8.1.1469229
1 files changed, 229 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1469 b/data/vim/patches/8.1.1469
new file mode 100644
index 000000000..e82dd7e9b
--- /dev/null
+++ b/data/vim/patches/8.1.1469
@@ -0,0 +1,229 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1469
+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.1469
+Problem: No test for checking the cursor style response.
+Solution: Add a simple test.
+Files: src/term.c, src/testdir/test_termcodes.vim
+
+
+*** ../vim-8.1.1468/src/term.c 2019-06-04 21:41:24.465087519 +0200
+--- src/term.c 2019-06-05 22:01:10.635280005 +0200
+***************
+*** 4015,4021 ****
+ blink_state_is_inverted()
+ {
+ #ifdef FEAT_TERMRESPONSE
+! return rbm_status.tr_progress == STATUS_GOT && rcs_status.tr_progress == STATUS_GOT
+ && initial_cursor_blink != initial_cursor_shape_blink;
+ #else
+ return FALSE;
+--- 4015,4022 ----
+ blink_state_is_inverted()
+ {
+ #ifdef FEAT_TERMRESPONSE
+! return rbm_status.tr_progress == STATUS_GOT
+! && rcs_status.tr_progress == STATUS_GOT
+ && initial_cursor_blink != initial_cursor_shape_blink;
+ #else
+ return FALSE;
+***************
+*** 5062,5068 ****
+ * {lead}1$r<digit> q{tail}
+ *
+ * {lead} can be <Esc>P or DCS
+! * {tail} can be Esc>\ or STERM
+ *
+ * Consume any code that starts with "{lead}.+r" or "{lead}.$r".
+ */
+--- 5063,5069 ----
+ * {lead}1$r<digit> q{tail}
+ *
+ * {lead} can be <Esc>P or DCS
+! * {tail} can be <Esc>\ or STERM
+ *
+ * Consume any code that starts with "{lead}.+r" or "{lead}.$r".
+ */
+***************
+*** 5072,5100 ****
+ {
+ j = 1 + (tp[0] == ESC);
+ if (len < j + 3)
+! i = len; /* need more chars */
+ else if ((argp[1] != '+' && argp[1] != '$') || argp[2] != 'r')
+! i = 0; /* no match */
+ else if (argp[1] == '+')
+! /* key code response */
+! for (i = j; i < len; ++i)
+! {
+! if ((tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\')
+! || tp[i] == STERM)
+ {
+! if (i - j >= 3)
+! got_code_from_term(tp + j, i);
+! key_name[0] = (int)KS_EXTRA;
+! key_name[1] = (int)KE_IGNORE;
+! slen = i + 1 + (tp[i] == ESC);
+! break;
+ }
+- }
+ else
+ {
+! /* Probably the cursor shape response. Make sure that "i"
+! * is equal to "len" when there are not sufficient
+! * characters. */
+ for (i = j + 3; i < len; ++i)
+ {
+ if (i - j == 3 && !isdigit(tp[i]))
+--- 5073,5101 ----
+ {
+ j = 1 + (tp[0] == ESC);
+ if (len < j + 3)
+! i = len; // need more chars
+ else if ((argp[1] != '+' && argp[1] != '$') || argp[2] != 'r')
+! i = 0; // no match
+ else if (argp[1] == '+')
+! // key code response
+! for (i = j; i < len; ++i)
+ {
+! if ((tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\')
+! || tp[i] == STERM)
+! {
+! if (i - j >= 3)
+! got_code_from_term(tp + j, i);
+! key_name[0] = (int)KS_EXTRA;
+! key_name[1] = (int)KE_IGNORE;
+! slen = i + 1 + (tp[i] == ESC);
+! break;
+! }
+ }
+ else
+ {
+! // Probably the cursor shape response. Make sure that "i"
+! // is equal to "len" when there are not sufficient
+! // characters.
+ for (i = j + 3; i < len; ++i)
+ {
+ if (i - j == 3 && !isdigit(tp[i]))
+***************
+*** 5110,5122 ****
+ {
+ int number = argp[3] - '0';
+
+! /* 0, 1 = block blink, 2 = block
+! * 3 = underline blink, 4 = underline
+! * 5 = vertical bar blink, 6 = vertical bar */
+ number = number == 0 ? 1 : number;
+ initial_cursor_shape = (number + 1) / 2;
+! /* The blink flag is actually inverted, compared to
+! * the value set with T_SH. */
+ initial_cursor_shape_blink =
+ (number & 1) ? FALSE : TRUE;
+ rcs_status.tr_progress = STATUS_GOT;
+--- 5111,5123 ----
+ {
+ int number = argp[3] - '0';
+
+! // 0, 1 = block blink, 2 = block
+! // 3 = underline blink, 4 = underline
+! // 5 = vertical bar blink, 6 = vertical bar
+ number = number == 0 ? 1 : number;
+ initial_cursor_shape = (number + 1) / 2;
+! // The blink flag is actually inverted, compared to
+! // the value set with T_SH.
+ initial_cursor_shape_blink =
+ (number & 1) ? FALSE : TRUE;
+ rcs_status.tr_progress = STATUS_GOT;
+*** ../vim-8.1.1468/src/testdir/test_termcodes.vim 2019-05-03 13:44:06.560890132 +0200
+--- src/testdir/test_termcodes.vim 2019-06-05 22:06:18.865258613 +0200
+***************
+*** 624,626 ****
+--- 624,686 ----
+ let &mouse = save_mouse
+ bwipe!
+ endfunc
++
++ " This only checks if the sequence is recognized.
++ " TODO: check that the values were parsed properly
++ func Test_term_rgb_response()
++ set t_RF=x
++ set t_RB=y
++
++ " response to t_RF, 4 digits
++ let red = 0x12
++ let green = 0x34
++ let blue = 0x56
++ let seq = printf("\<Esc>]10;rgb:%02x00/%02x00/%02x00\x07", red, green, blue)
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termrfgresp)
++
++ " response to t_RF, 2 digits
++ let red = 0x78
++ let green = 0x9a
++ let blue = 0xbc
++ let seq = printf("\<Esc>]10;rgb:%02x/%02x/%02x\x07", red, green, blue)
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termrfgresp)
++
++ " response to t_RB, 4 digits
++ let red = 0x21
++ let green = 0x43
++ let blue = 0x65
++ let seq = printf("\<Esc>]11;rgb:%02x00/%02x00/%02x00\x07", red, green, blue)
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termrbgresp)
++
++ " response to t_RB, 2 digits
++ let red = 0x87
++ let green = 0xa9
++ let blue = 0xcb
++ let seq = printf("\<Esc>]11;rgb:%02x/%02x/%02x\x07", red, green, blue)
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termrbgresp)
++
++ set t_RF= t_RB=
++ endfunc
++
++ " This only checks if the sequence is recognized.
++ " This must be last, because it has side effects to xterm properties.
++ " TODO: check that the values were parsed properly
++ func Test_xx_term_style_response()
++ " Termresponse is only parsed when t_RV is not empty.
++ set t_RV=x
++
++ " send the termresponse to trigger requesting the XT codes
++ let seq = "\<Esc>[>41;337;0c"
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termresponse)
++
++ let seq = "\<Esc>P1$r2 q\<Esc>\\"
++ call feedkeys(seq, 'Lx!')
++ call assert_equal(seq, v:termstyleresp)
++
++ set t_RV=
++ endfunc
+*** ../vim-8.1.1468/src/version.c 2019-06-05 21:25:30.770629173 +0200
+--- src/version.c 2019-06-05 22:02:14.018853267 +0200
+***************
+*** 769,770 ****
+--- 769,772 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1469,
+ /**/
+
+--
+I AM THANKFUL...
+...for the clothes that fit a little too snug because it
+means I have more than enough to eat.
+
+ /// 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 ///