| 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 |
| |
| |
| |
| |
| |
| *** 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. |
| |
| |
| |
| *** 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 /// |