Patch 8.0.1556
Problem:    May not parse the t_RS response correctly, resulting in wrong
            characters in the input stream.
Solution:   When the t_RS response is partly received wait for more
            characters.
Files:      src/term.c


*** ../vim-8.0.1555/src/term.c  2018-02-23 18:23:25.222809256 +0100
--- src/term.c  2018-03-02 20:58:12.642961499 +0100
***************
*** 4866,4872 ****
             * {tail} can be Esc>\ or STERM
             *
             * Check for cursor shape response from xterm:
!            * {lead}1$r<number> q{tail}
             *
             * {lead} can be <Esc>P or DCS
             * {tail} can be Esc>\ or STERM
--- 4866,4872 ----
             * {tail} can be Esc>\ or STERM
             *
             * Check for cursor shape response from xterm:
!            * {lead}1$r<digit> q{tail}
             *
             * {lead} can be <Esc>P or DCS
             * {tail} can be Esc>\ or STERM
***************
*** 4897,4931 ****
                        break;
                    }
                  }
!               else if ((len >= j + 6 && isdigit(argp[3]))
!                       && argp[4] == ' '
!                       && argp[5] == 'q')
                {
!                   /* cursor shape response */
!                   i = j + 6;
!                   if ((tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\')
!                           || tp[i] == STERM)
                    {
!                       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 = STATUS_GOT;
!                       LOG_TR("Received cursor shape response");
  
!                       key_name[0] = (int)KS_EXTRA;
!                       key_name[1] = (int)KE_IGNORE;
!                       slen = i + 1 + (tp[i] == ESC);
  # ifdef FEAT_EVAL
!                       set_vim_var_string(VV_TERMSTYLERESP, tp, slen);
  # endif
                    }
                }
  
--- 4897,4942 ----
                        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]))
!                           break;
!                       if (i - j == 4 && tp[i] != ' ')
!                           break;
!                       if (i - j == 5 && tp[i] != 'q')
!                           break;
!                       if (i - j == 6 && tp[i] != ESC && tp[i] != STERM)
!                           break;
!                       if ((i - j == 6 && tp[i] == STERM)
!                        || (i - j == 7 && tp[i] == '\\'))
!                       {
!                           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 = STATUS_GOT;
!                           LOG_TR("Received cursor shape response");
  
!                           key_name[0] = (int)KS_EXTRA;
!                           key_name[1] = (int)KE_IGNORE;
!                           slen = i + 1;
  # ifdef FEAT_EVAL
!                           set_vim_var_string(VV_TERMSTYLERESP, tp, slen);
  # endif
+                           break;
+                       }
                    }
                }
  
*** ../vim-8.0.1555/src/version.c       2018-03-01 23:10:38.611140189 +0100
--- src/version.c       2018-03-02 20:44:07.312325192 +0100
***************
*** 780,781 ****
--- 780,783 ----
  {   /* Add new patch number below this line */
+ /**/
+     1556,
  /**/

-- 
Wi n0t trei a h0liday in Sweden thi yer?
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@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    ///

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui