Skip to content

Commit

Permalink
updated for version 7.3.353
Browse files Browse the repository at this point in the history
Problem:    Missing part of the urxvt patch.
Solution:   Add the change in term.c
  • Loading branch information
brammool committed Oct 26, 2011
1 parent e32a8f0 commit 23bfbcb
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 2 deletions.
71 changes: 69 additions & 2 deletions src/term.c
Expand Up @@ -4008,7 +4008,9 @@ check_termcode(max_offset, buf, buflen)
}

#ifdef FEAT_TERMRESPONSE
if (key_name[0] == NUL)
if (key_name[0] == NUL
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
|| key_name[0] == KS_URXVT_MOUSE)
{
/* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
* eat other possible responses to t_RV, rxvt returns
Expand Down Expand Up @@ -4047,7 +4049,7 @@ check_termcode(max_offset, buf, buflen)
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
{
/* if xterm version >= 95 use mouse dragging */
if (extra >= 95)
if (extra >= 95 && ttym_flags != TTYM_URXVT)
set_option_value((char_u *)"ttym", 0L,
(char_u *)"xterm2", 0);
/* if xterm version >= 141 try to get termcap codes */
Expand Down Expand Up @@ -4140,6 +4142,9 @@ check_termcode(max_offset, buf, buflen)
# endif
# ifdef FEAT_MOUSE_PTERM
|| key_name[0] == (int)KS_PTERM_MOUSE
# endif
# ifdef FEAT_MOUSE_URXVT
|| key_name[0] == (int)KS_URXVT_MOUSE
# endif
)
{
Expand Down Expand Up @@ -4219,7 +4224,69 @@ check_termcode(max_offset, buf, buflen)
else
break;
}
}

# ifdef FEAT_MOUSE_URXVT
if (key_name[0] == (int)KS_URXVT_MOUSE)
{
for (;;)
{
/* URXVT 1015 mouse reporting mode:
* Almost identical to xterm mouse mode, except the values
* are decimal instead of bytes.
*
* \033[%d;%d;%dM
* ^-- row
* ^----- column
* ^-------- code
*/
p = tp + slen;

mouse_code = getdigits(&p);
if (*p++ != ';')
return -1;

mouse_col = getdigits(&p) - 1;
if (*p++ != ';')
return -1;

mouse_row = getdigits(&p) - 1;
if (*p++ != 'M')
return -1;

slen += (int)(p - (tp + slen));

/* skip this one if next one has same code (like xterm
* case) */
j = termcodes[idx].len;
if (STRNCMP(tp, tp + slen, (size_t)j) == 0) {
/* check if the command is complete by looking for the
* M */
int slen2;
int cmd_complete = 0;
for (slen2 = slen; slen2 < len; slen2++) {
if (tp[slen2] == 'M') {
cmd_complete = 1;
break;
}
}
p += j;
if (cmd_complete && getdigits(&p) == mouse_code) {
slen += j; /* skip the \033[ */
continue;
}
}
break;
}
}
# endif

if (key_name[0] == (int)KS_MOUSE
#ifdef FEAT_MOUSE_URXVT
|| key_name[0] == (int)KS_URXVT_MOUSE
#endif
)
{
# if !defined(MSWIN) && !defined(MSDOS)
/*
* Handle mouse events.
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -714,6 +714,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
353,
/**/
352,
/**/
Expand Down

0 comments on commit 23bfbcb

Please sign in to comment.