0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

updated for version 7.3.343

Problem:    No mouse support for urxvt.
Solution:   Implement urxvt mouse support, also for > 252 columns.  (Yiding
            Jia)
This commit is contained in:
Bram Moolenaar
2011-10-20 21:09:35 +02:00
parent 62dbdc4a5a
commit c842748302
5 changed files with 70 additions and 8 deletions

View File

@@ -1053,6 +1053,9 @@
# ifdef FEAT_BIG # ifdef FEAT_BIG
# define FEAT_MOUSE_DEC # define FEAT_MOUSE_DEC
# endif # endif
# ifdef FEAT_BIG
# define FEAT_MOUSE_URXVT
# endif
# if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
# define DOS_MOUSE # define DOS_MOUSE
# endif # endif
@@ -1068,13 +1071,23 @@
#if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
# define FEAT_SYSMOUSE # define FEAT_SYSMOUSE
#endif #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. */ /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
#if !defined(FEAT_MOUSE_TTY) \ #if !defined(FEAT_MOUSE_TTY) \
&& (defined(FEAT_MOUSE_XTERM) \ && (defined(FEAT_MOUSE_XTERM) \
|| defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ || defined(FEAT_MOUSE_NET) \
|| defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ || defined(FEAT_MOUSE_DEC) \
|| defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \ || defined(DOS_MOUSE) \
|| defined(FEAT_SYSMOUSE)) || 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 */ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
#endif #endif
#if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))

View File

@@ -92,13 +92,13 @@
*/ */
#define KS_TEAROFF 244 #define KS_TEAROFF 244
/* used for JSB term mouse */ /* Used for JSB term mouse. */
#define KS_JSBTERM_MOUSE 243 #define KS_JSBTERM_MOUSE 243
/* used a termcap entry that produces a normal character */ /* Used a termcap entry that produces a normal character. */
#define KS_KEY 242 #define KS_KEY 242
/* Used for the qnx pterm mouse */ /* Used for the qnx pterm mouse. */
#define KS_PTERM_MOUSE 241 #define KS_PTERM_MOUSE 241
/* Used for click in a tab pages label. */ /* Used for click in a tab pages label. */
@@ -107,6 +107,9 @@
/* Used for menu in a tab pages line. */ /* Used for menu in a tab pages line. */
#define KS_TABMENU 239 #define KS_TABMENU 239
/* Used for the urxvt mouse. */
#define KS_URXVT_MOUSE 238
/* /*
* Filler used after KS_SPECIAL and others * Filler used after KS_SPECIAL and others
*/ */

View File

@@ -819,7 +819,7 @@ EXTERN long p_ttyscroll; /* 'ttyscroll' */
EXTERN char_u *p_ttym; /* 'ttymouse' */ EXTERN char_u *p_ttym; /* 'ttymouse' */
EXTERN unsigned ttym_flags; EXTERN unsigned ttym_flags;
# ifdef IN_OPTION_C # ifdef IN_OPTION_C
static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL}; static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL};
# endif # endif
# define TTYM_XTERM 0x01 # define TTYM_XTERM 0x01
# define TTYM_XTERM2 0x02 # define TTYM_XTERM2 0x02
@@ -827,6 +827,7 @@ static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm"
# define TTYM_NETTERM 0x08 # define TTYM_NETTERM 0x08
# define TTYM_JSBTERM 0x10 # define TTYM_JSBTERM 0x10
# define TTYM_PTERM 0x20 # define TTYM_PTERM 0x20
# define TTYM_URXVT 0x40
#endif #endif
EXTERN char_u *p_udir; /* 'undodir' */ EXTERN char_u *p_udir; /* 'undodir' */
EXTERN long p_ul; /* 'undolevels' */ EXTERN long p_ul; /* 'undolevels' */

View File

@@ -2158,10 +2158,13 @@ use_xterm_like_mouse(name)
* Return non-zero when using an xterm mouse, according to 'ttymouse'. * Return non-zero when using an xterm mouse, according to 'ttymouse'.
* Return 1 for "xterm". * Return 1 for "xterm".
* Return 2 for "xterm2". * Return 2 for "xterm2".
* Return 3 for "urxvt".
*/ */
int int
use_xterm_mouse() use_xterm_mouse()
{ {
if (ttym_flags == TTYM_URXVT)
return 3;
if (ttym_flags == TTYM_XTERM2) if (ttym_flags == TTYM_XTERM2)
return 2; return 2;
if (ttym_flags == TTYM_XTERM) if (ttym_flags == TTYM_XTERM)
@@ -3318,6 +3321,17 @@ mch_setmouse(on)
return; return;
xterm_mouse_vers = use_xterm_mouse(); 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 (xterm_mouse_vers > 0)
{ {
if (on) /* enable mouse events, use mouse tracking if available */ if (on) /* enable mouse events, use mouse tracking if available */
@@ -3434,6 +3448,9 @@ check_mouse_termcode()
{ {
# ifdef FEAT_MOUSE_XTERM # ifdef FEAT_MOUSE_XTERM
if (use_xterm_mouse() if (use_xterm_mouse()
# ifdef FEAT_MOUSE_URXVT
&& use_xterm_mouse() != 3
# endif
# ifdef FEAT_GUI # ifdef FEAT_GUI
&& !gui.in_use && !gui.in_use
# endif # endif
@@ -3523,6 +3540,27 @@ check_mouse_termcode()
else else
del_mouse_termcode(KS_PTERM_MOUSE); del_mouse_termcode(KS_PTERM_MOUSE);
# endif # 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 #endif

View File

@@ -379,6 +379,11 @@ static char *(features[]) =
# else # else
"-mouse_xterm", "-mouse_xterm",
# endif # endif
# ifdef FEAT_MOUSE_URXVT
"+mouse_urxvt",
# else
"-mouse_urxvt",
# endif
#endif #endif
#ifdef __QNX__ #ifdef __QNX__
# ifdef FEAT_MOUSE_PTERM # ifdef FEAT_MOUSE_PTERM
@@ -709,6 +714,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
343,
/**/ /**/
342, 342,
/**/ /**/