Patch 8.0.0996
Problem: Mac: t_RS is echoed on the screne in Terminal.app. Even though
$TERM is set to "xterm-256colors" it cannot handle this xterm
escape sequence.
Solution: Recognize Terminal.app from the termresponse and skip sending t_RS
if it looks like Terminal.app.
Files: src/term.c
*** ../vim-8.0.0995/src/term.c 2017-08-24 20:21:11.778002961 +0200
--- src/term.c 2017-08-26 15:10:30.928418061 +0200
***************
*** 1360,1365 ****
--- 1360,1368 ----
static char_u termleader[256 + 1]; /* for check_termcode() */
#ifdef FEAT_TERMRESPONSE
static int check_for_codes = FALSE; /* check for key code response */
+ # ifdef MACOS
+ static int is_terminal_app = FALSE; /* recognized Terminal.app */
+ # endif
#endif
static struct builtin_term *
***************
*** 3497,3504 ****
void
may_req_bg_color(void)
{
- int done = FALSE;
-
if (can_get_termresponse() && starting == 0)
{
/* Only request background if t_RB is set and 'background' wasn't
--- 3500,3505 ----
***************
*** 3510,3536 ****
LOG_TR("Sending BG request");
out_str(T_RBG);
rbg_status = STATUS_SENT;
- done = TRUE;
- }
! /* Only request the cursor shape if t_SH and t_RS are set. */
! if (rcm_status == STATUS_GET
! && *T_CSH != NUL
! && *T_CRS != NUL)
! {
! LOG_TR("Sending cursor shape request");
! out_str(T_CRS);
! rcm_status = STATUS_SENT;
! done = TRUE;
}
}
- if (done)
- {
- /* check for the characters now, otherwise they might be eaten by
- * get_keystroke() */
- out_flush();
- (void)vpeekc_nomap();
- }
}
# ifdef DEBUG_TERMRESPONSE
--- 3511,3523 ----
LOG_TR("Sending BG request");
out_str(T_RBG);
rbg_status = STATUS_SENT;
! /* check for the characters now, otherwise they might be eaten by
! * get_keystroke() */
! out_flush();
! (void)vpeekc_nomap();
}
}
}
# ifdef DEBUG_TERMRESPONSE
***************
*** 4531,4536 ****
--- 4518,4550 ----
if (mch_getenv((char_u *)"COLORS") == NULL)
may_adjust_color_count(256);
}
+
+ # ifdef MACOS
+ /* Mac Terminal.app sends 1;95;0 */
+ if (col == 95
+ && STRNCMP(tp + extra - 2, ">1;95;0c", 9) == 0)
+ {
+ /* Terminal.app sets $TERM to "xterm-256colors",
+ * but it's not fully xterm compatible. */
+ is_terminal_app = TRUE;
+ }
+ # endif
+
+ /* Only request the cursor style if t_SH and t_RS are
+ * set. Not for Terminal.app, it can't handle t_RS, it
+ * echoes the characters to the screen. */
+ if (rcm_status == STATUS_GET
+ # ifdef MACOS
+ && !is_terminal_app
+ # endif
+ && *T_CSH != NUL
+ && *T_CRS != NUL)
+ {
+ LOG_TR("Sending cursor style request");
+ out_str(T_CRS);
+ rcm_status = STATUS_SENT;
+ out_flush();
+ }
}
# ifdef FEAT_EVAL
set_vim_var_string(VV_TERMRESPONSE, tp, i + 1);
*** ../vim-8.0.0995/src/version.c 2017-08-25 23:22:01.689645666 +0200
--- src/version.c 2017-08-26 15:14:48.690780271 +0200
***************
*** 771,772 ****
--- 771,774 ----
{ /* Add new patch number below this line */
+ /**/
+ 996,
/**/
--
Q: What is the difference between open-source and commercial software?
A: If you have a problem with commercial software you can call a phone
number and they will tell you it might be solved in a future version.
For open-source software there isn't a phone number to call, but you
get the solution within a day.
/// 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.