forked from aniani/vim
updated for version 7.3.353
Problem: Missing part of the urxvt patch. Solution: Add the change in term.c
This commit is contained in:
71
src/term.c
71
src/term.c
@@ -4008,7 +4008,9 @@ check_termcode(max_offset, buf, buflen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_TERMRESPONSE
|
#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
|
/* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
|
||||||
* eat other possible responses to t_RV, rxvt returns
|
* eat other possible responses to t_RV, rxvt returns
|
||||||
@@ -4047,7 +4049,7 @@ check_termcode(max_offset, buf, buflen)
|
|||||||
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
|
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
|
||||||
{
|
{
|
||||||
/* if xterm version >= 95 use mouse dragging */
|
/* if xterm version >= 95 use mouse dragging */
|
||||||
if (extra >= 95)
|
if (extra >= 95 && ttym_flags != TTYM_URXVT)
|
||||||
set_option_value((char_u *)"ttym", 0L,
|
set_option_value((char_u *)"ttym", 0L,
|
||||||
(char_u *)"xterm2", 0);
|
(char_u *)"xterm2", 0);
|
||||||
/* if xterm version >= 141 try to get termcap codes */
|
/* if xterm version >= 141 try to get termcap codes */
|
||||||
@@ -4140,6 +4142,9 @@ check_termcode(max_offset, buf, buflen)
|
|||||||
# endif
|
# endif
|
||||||
# ifdef FEAT_MOUSE_PTERM
|
# ifdef FEAT_MOUSE_PTERM
|
||||||
|| key_name[0] == (int)KS_PTERM_MOUSE
|
|| key_name[0] == (int)KS_PTERM_MOUSE
|
||||||
|
# endif
|
||||||
|
# ifdef FEAT_MOUSE_URXVT
|
||||||
|
|| key_name[0] == (int)KS_URXVT_MOUSE
|
||||||
# endif
|
# endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -4219,7 +4224,69 @@ check_termcode(max_offset, buf, buflen)
|
|||||||
else
|
else
|
||||||
break;
|
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)
|
# if !defined(MSWIN) && !defined(MSDOS)
|
||||||
/*
|
/*
|
||||||
* Handle mouse events.
|
* Handle mouse events.
|
||||||
|
|||||||
@@ -714,6 +714,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
353,
|
||||||
/**/
|
/**/
|
||||||
352,
|
352,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user