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