To: vim_dev@googlegroups.com
Subject: Patch 7.3.353
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.3.353 (after 7.3.343)
Problem: Missing part of the urxvt patch.
Solution: Add the change in term.c
Files: src/term.c
*** ../vim-7.3.352/src/term.c 2011-09-14 14:43:21.000000000 +0200
--- src/term.c 2011-10-26 23:48:01.000000000 +0200
***************
*** 4008,4014 ****
}
#ifdef FEAT_TERMRESPONSE
! if (key_name[0] == NUL)
{
/* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
* eat other possible responses to t_RV, rxvt returns
--- 4008,4016 ----
}
#ifdef FEAT_TERMRESPONSE
! 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
***************
*** 4047,4053 ****
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
{
/* if xterm version >= 95 use mouse dragging */
! if (extra >= 95)
set_option_value((char_u *)"ttym", 0L,
(char_u *)"xterm2", 0);
/* if xterm version >= 141 try to get termcap codes */
--- 4049,4055 ----
if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
{
/* if xterm version >= 95 use mouse dragging */
! 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 */
***************
*** 4141,4146 ****
--- 4143,4151 ----
# ifdef FEAT_MOUSE_PTERM
|| key_name[0] == (int)KS_PTERM_MOUSE
# endif
+ # ifdef FEAT_MOUSE_URXVT
+ || key_name[0] == (int)KS_URXVT_MOUSE
+ # endif
)
{
is_click = is_drag = FALSE;
***************
*** 4219,4225 ****
--- 4224,4292 ----
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.
*** ../vim-7.3.352/src/version.c 2011-10-26 22:02:10.000000000 +0200
--- src/version.c 2011-10-26 23:43:26.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 353,
/**/
--
hundred-and-one symptoms of being an internet addict:
99. The hum of a cooling fan and the click of keys is comforting to you.
/// Bram Moolenaar -- Bram@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 ///