diff --git a/7.3.353 b/7.3.353 new file mode 100644 index 0000000..1846243 --- /dev/null +++ b/7.3.353 @@ -0,0 +1,155 @@ +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 ///