Blob Blame History Raw
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    ///