To: vim_dev@googlegroups.com Subject: Patch 7.3.353 Fcc: outbox From: Bram Moolenaar 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: "[>{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 [#;#;#M, but we are matching [ */ ! || key_name[0] == KS_URXVT_MOUSE) { /* Check for xterm version string: "[>{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 ///