| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.343 |
| 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.343 |
| Problem: No mouse support for urxvt. |
| Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding |
| Jia) |
| Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c, |
| src/term.c, src/version.c |
| |
| |
| |
| |
| |
| *** 1053,1058 **** |
| --- 1053,1061 ---- |
| # ifdef FEAT_BIG |
| # define FEAT_MOUSE_DEC |
| # endif |
| + # ifdef FEAT_BIG |
| + # define FEAT_MOUSE_URXVT |
| + # endif |
| # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) |
| # define DOS_MOUSE |
| # endif |
| |
| *** 1068,1080 **** |
| #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) |
| # define FEAT_SYSMOUSE |
| #endif |
| /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ |
| #if !defined(FEAT_MOUSE_TTY) \ |
| && (defined(FEAT_MOUSE_XTERM) \ |
| ! || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ |
| ! || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ |
| ! || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \ |
| ! || defined(FEAT_SYSMOUSE)) |
| # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ |
| #endif |
| #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) |
| --- 1071,1093 ---- |
| #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) |
| # define FEAT_SYSMOUSE |
| #endif |
| + |
| + /* urxvt is a small variation of mouse_xterm, and shares its code */ |
| + #if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM) |
| + # define FEAT_MOUSE_XTERM |
| + #endif |
| + |
| /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ |
| #if !defined(FEAT_MOUSE_TTY) \ |
| && (defined(FEAT_MOUSE_XTERM) \ |
| ! || defined(FEAT_MOUSE_NET) \ |
| ! || defined(FEAT_MOUSE_DEC) \ |
| ! || defined(DOS_MOUSE) \ |
| ! || defined(FEAT_MOUSE_GPM) \ |
| ! || defined(FEAT_MOUSE_JSB) \ |
| ! || defined(FEAT_MOUSE_PTERM) \ |
| ! || defined(FEAT_SYSMOUSE) \ |
| ! || defined(FEAT_MOUSE_URXVT)) |
| # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ |
| #endif |
| #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) |
| |
| |
| |
| *** 92,104 **** |
| */ |
| #define KS_TEAROFF 244 |
| |
| ! /* used for JSB term mouse */ |
| #define KS_JSBTERM_MOUSE 243 |
| |
| ! /* used a termcap entry that produces a normal character */ |
| #define KS_KEY 242 |
| |
| ! /* Used for the qnx pterm mouse */ |
| #define KS_PTERM_MOUSE 241 |
| |
| /* Used for click in a tab pages label. */ |
| --- 92,104 ---- |
| */ |
| #define KS_TEAROFF 244 |
| |
| ! /* Used for JSB term mouse. */ |
| #define KS_JSBTERM_MOUSE 243 |
| |
| ! /* Used a termcap entry that produces a normal character. */ |
| #define KS_KEY 242 |
| |
| ! /* Used for the qnx pterm mouse. */ |
| #define KS_PTERM_MOUSE 241 |
| |
| /* Used for click in a tab pages label. */ |
| |
| *** 107,112 **** |
| --- 107,115 ---- |
| /* Used for menu in a tab pages line. */ |
| #define KS_TABMENU 239 |
| |
| + /* Used for the urxvt mouse. */ |
| + #define KS_URXVT_MOUSE 238 |
| + |
| /* |
| * Filler used after KS_SPECIAL and others |
| */ |
| |
| |
| |
| *** 819,825 **** |
| EXTERN char_u *p_ttym; /* 'ttymouse' */ |
| EXTERN unsigned ttym_flags; |
| # ifdef IN_OPTION_C |
| ! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL}; |
| # endif |
| # define TTYM_XTERM 0x01 |
| # define TTYM_XTERM2 0x02 |
| --- 819,825 ---- |
| EXTERN char_u *p_ttym; /* 'ttymouse' */ |
| EXTERN unsigned ttym_flags; |
| # ifdef IN_OPTION_C |
| ! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; |
| # endif |
| # define TTYM_XTERM 0x01 |
| # define TTYM_XTERM2 0x02 |
| |
| *** 827,832 **** |
| --- 827,833 ---- |
| # define TTYM_NETTERM 0x08 |
| # define TTYM_JSBTERM 0x10 |
| # define TTYM_PTERM 0x20 |
| + # define TTYM_URXVT 0x40 |
| #endif |
| EXTERN char_u *p_udir; /* 'undodir' */ |
| EXTERN long p_ul; /* 'undolevels' */ |
| |
| |
| |
| *** 2158,2167 **** |
| --- 2158,2170 ---- |
| * Return non-zero when using an xterm mouse, according to 'ttymouse'. |
| * Return 1 for "xterm". |
| * Return 2 for "xterm2". |
| + * Return 3 for "urxvt". |
| */ |
| int |
| use_xterm_mouse() |
| { |
| + if (ttym_flags == TTYM_URXVT) |
| + return 3; |
| if (ttym_flags == TTYM_XTERM2) |
| return 2; |
| if (ttym_flags == TTYM_XTERM) |
| |
| *** 3318,3323 **** |
| --- 3321,3337 ---- |
| return; |
| |
| xterm_mouse_vers = use_xterm_mouse(); |
| + |
| + # ifdef FEAT_MOUSE_URXVT |
| + if (ttym_flags == TTYM_URXVT) { |
| + out_str_nf((char_u *) |
| + (on |
| + ? IF_EB("\033[?1015h", ESC_STR "[?1015h") |
| + : IF_EB("\033[?1015l", ESC_STR "[?1015l"))); |
| + ison = on; |
| + } |
| + # endif |
| + |
| if (xterm_mouse_vers > 0) |
| { |
| if (on) /* enable mouse events, use mouse tracking if available */ |
| |
| *** 3434,3439 **** |
| --- 3448,3456 ---- |
| { |
| # ifdef FEAT_MOUSE_XTERM |
| if (use_xterm_mouse() |
| + # ifdef FEAT_MOUSE_URXVT |
| + && use_xterm_mouse() != 3 |
| + # endif |
| # ifdef FEAT_GUI |
| && !gui.in_use |
| # endif |
| |
| *** 3523,3528 **** |
| --- 3540,3566 ---- |
| else |
| del_mouse_termcode(KS_PTERM_MOUSE); |
| # endif |
| + # ifdef FEAT_MOUSE_URXVT |
| + /* same as the dec mouse */ |
| + if (use_xterm_mouse() == 3 |
| + # ifdef FEAT_GUI |
| + && !gui.in_use |
| + # endif |
| + ) |
| + { |
| + set_mouse_termcode(KS_URXVT_MOUSE, (char_u *)(term_is_8bit(T_NAME) |
| + ? IF_EB("\233", CSI_STR) |
| + : IF_EB("\033[", ESC_STR "["))); |
| + |
| + if (*p_mouse != NUL) |
| + { |
| + mch_setmouse(FALSE); |
| + setmouse(); |
| + } |
| + } |
| + else |
| + del_mouse_termcode(KS_URXVT_MOUSE); |
| + # endif |
| } |
| #endif |
| |
| |
| |
| |
| *** 380,383 **** |
| --- 380,388 ---- |
| "-mouse_xterm", |
| # endif |
| + # ifdef FEAT_MOUSE_URXVT |
| + "+mouse_urxvt", |
| + # else |
| + "-mouse_urxvt", |
| + # endif |
| #endif |
| #ifdef __QNX__ |
| |
| *** 711,712 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 343, |
| /**/ |
| |
| -- |
| Warning label on a superhero Halloween costume: |
| "Caution: Cape does not enable user to fly." |
| |
| /// 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 /// |