To: vim_dev@googlegroups.com Subject: Patch 7.3.343 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.3.342/src/feature.h 2011-05-19 13:40:47.000000000 +0200 --- src/feature.h 2011-10-20 21:02:15.000000000 +0200 *************** *** 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)) *** ../vim-7.3.342/src/keymap.h 2010-08-15 21:57:32.000000000 +0200 --- src/keymap.h 2011-10-20 21:00:37.000000000 +0200 *************** *** 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 */ *** ../vim-7.3.342/src/option.h 2011-09-30 14:44:49.000000000 +0200 --- src/option.h 2011-10-20 19:38:59.000000000 +0200 *************** *** 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' */ *** ../vim-7.3.342/src/os_unix.c 2011-10-12 21:04:15.000000000 +0200 --- src/os_unix.c 2011-10-20 21:02:00.000000000 +0200 *************** *** 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 *** ../vim-7.3.342/src/version.c 2011-10-20 18:24:16.000000000 +0200 --- src/version.c 2011-10-20 19:40:48.000000000 +0200 *************** *** 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 ///