Skip to content

Commit 23bfbcb

Browse files
committed
updated for version 7.3.353
Problem: Missing part of the urxvt patch. Solution: Add the change in term.c
1 parent e32a8f0 commit 23bfbcb

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

src/term.c

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4008,7 +4008,9 @@ check_termcode(max_offset, buf, buflen)
40084008
}
40094009

40104010
#ifdef FEAT_TERMRESPONSE
4011-
if (key_name[0] == NUL)
4011+
if (key_name[0] == NUL
4012+
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
4013+
|| key_name[0] == KS_URXVT_MOUSE)
40124014
{
40134015
/* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
40144016
* eat other possible responses to t_RV, rxvt returns
@@ -4047,7 +4049,7 @@ check_termcode(max_offset, buf, buflen)
40474049
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
40484050
{
40494051
/* if xterm version >= 95 use mouse dragging */
4050-
if (extra >= 95)
4052+
if (extra >= 95 && ttym_flags != TTYM_URXVT)
40514053
set_option_value((char_u *)"ttym", 0L,
40524054
(char_u *)"xterm2", 0);
40534055
/* if xterm version >= 141 try to get termcap codes */
@@ -4140,6 +4142,9 @@ check_termcode(max_offset, buf, buflen)
41404142
# endif
41414143
# ifdef FEAT_MOUSE_PTERM
41424144
|| key_name[0] == (int)KS_PTERM_MOUSE
4145+
# endif
4146+
# ifdef FEAT_MOUSE_URXVT
4147+
|| key_name[0] == (int)KS_URXVT_MOUSE
41434148
# endif
41444149
)
41454150
{
@@ -4219,7 +4224,69 @@ check_termcode(max_offset, buf, buflen)
42194224
else
42204225
break;
42214226
}
4227+
}
4228+
4229+
# ifdef FEAT_MOUSE_URXVT
4230+
if (key_name[0] == (int)KS_URXVT_MOUSE)
4231+
{
4232+
for (;;)
4233+
{
4234+
/* URXVT 1015 mouse reporting mode:
4235+
* Almost identical to xterm mouse mode, except the values
4236+
* are decimal instead of bytes.
4237+
*
4238+
* \033[%d;%d;%dM
4239+
* ^-- row
4240+
* ^----- column
4241+
* ^-------- code
4242+
*/
4243+
p = tp + slen;
4244+
4245+
mouse_code = getdigits(&p);
4246+
if (*p++ != ';')
4247+
return -1;
4248+
4249+
mouse_col = getdigits(&p) - 1;
4250+
if (*p++ != ';')
4251+
return -1;
4252+
4253+
mouse_row = getdigits(&p) - 1;
4254+
if (*p++ != 'M')
4255+
return -1;
42224256

4257+
slen += (int)(p - (tp + slen));
4258+
4259+
/* skip this one if next one has same code (like xterm
4260+
* case) */
4261+
j = termcodes[idx].len;
4262+
if (STRNCMP(tp, tp + slen, (size_t)j) == 0) {
4263+
/* check if the command is complete by looking for the
4264+
* M */
4265+
int slen2;
4266+
int cmd_complete = 0;
4267+
for (slen2 = slen; slen2 < len; slen2++) {
4268+
if (tp[slen2] == 'M') {
4269+
cmd_complete = 1;
4270+
break;
4271+
}
4272+
}
4273+
p += j;
4274+
if (cmd_complete && getdigits(&p) == mouse_code) {
4275+
slen += j; /* skip the \033[ */
4276+
continue;
4277+
}
4278+
}
4279+
break;
4280+
}
4281+
}
4282+
# endif
4283+
4284+
if (key_name[0] == (int)KS_MOUSE
4285+
#ifdef FEAT_MOUSE_URXVT
4286+
|| key_name[0] == (int)KS_URXVT_MOUSE
4287+
#endif
4288+
)
4289+
{
42234290
# if !defined(MSWIN) && !defined(MSDOS)
42244291
/*
42254292
* Handle mouse events.

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,8 @@ static char *(features[]) =
714714

715715
static int included_patches[] =
716716
{ /* Add new patch number below this line */
717+
/**/
718+
353,
717719
/**/
718720
352,
719721
/**/

0 commit comments

Comments
 (0)