summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.632
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2012-09-26 01:10:42 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:51:55 +0200
commit9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch)
treeb428a16618e36ed864a8d76ea3435e19a452bf90 /source/ap/vim/patches/7.3.632
parent75a4a592e5ccda30715f93563d741b83e0dcf39e (diff)
downloadcurrent-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.gz
current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.xz
Slackware 14.0slackware-14.0
Wed Sep 26 01:10:42 UTC 2012 Slackware 14.0 x86_64 stable is released! We're perfectionists here at Slackware, so this release has been a long time a-brewing. But we think you'll agree that it was worth the wait. Slackware 14.0 combines modern components, ease of use, and flexible configuration... our "KISS" philosophy demands it. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Thanks to everyone who helped make this happen. The Slackware team, the upstream developers, and (of course) the awesome Slackware user community. Have fun! :-)
Diffstat (limited to 'source/ap/vim/patches/7.3.632')
-rw-r--r--source/ap/vim/patches/7.3.632537
1 files changed, 537 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.632 b/source/ap/vim/patches/7.3.632
new file mode 100644
index 000000000..9e38969e6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.632
@@ -0,0 +1,537 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.632
+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.632
+Problem: Cannot select beyond 222 columns with the mouse in xterm.
+Solution: Add support for SGR mouse tracking. (Hayaki Saito)
+Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c,
+ src/option.h, src/os_unix.c, src/term.c, src/version.c
+
+
+*** ../vim-7.3.631/runtime/doc/options.txt 2012-07-10 16:49:08.000000000 +0200
+--- runtime/doc/options.txt 2012-08-15 16:04:26.000000000 +0200
+***************
+*** 7383,7388 ****
+--- 7424,7435 ----
+ jsbterm JSB term mouse handling.
+ *pterm-mouse*
+ pterm QNX pterm mouse handling.
++ *urxvt-mouse*
++ urxvt Mouse handling for the urxvt (rxvt-unicode) terminal.
++ *sgr-mouse*
++ sgr Mouse handling for the terminal that emits SGR-styled
++ mouse reporting. Works with xterm version 277 or
++ later.
+
+ The mouse handling must be enabled at compile time |+mouse_xterm|
+ |+mouse_dec| |+mouse_netterm|.
+***************
+*** 7395,7400 ****
+--- 7442,7448 ----
+ or "xterm2" already. The main use of this option is to set it to
+ "xterm", when the terminal name doesn't start with "xterm", but it can
+ handle xterm mouse codes.
++ The "sgr" value will be set if the xterm version is 277 or later.
+ The "xterm2" value will be set if the xterm version is reported to be
+ 95 or higher. This only works when compiled with the |+termresponse|
+ feature and if |t_RV| is set to the escape sequence to request the
+*** ../vim-7.3.631/src/feature.h 2012-04-25 16:50:44.000000000 +0200
+--- src/feature.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 1056,1061 ****
+--- 1056,1064 ----
+ # ifdef FEAT_BIG
+ # define FEAT_MOUSE_URXVT
+ # endif
++ # ifdef FEAT_BIG
++ # define FEAT_MOUSE_SGR
++ # endif
+ # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
+ # define DOS_MOUSE
+ # endif
+***************
+*** 1077,1082 ****
+--- 1080,1090 ----
+ # define FEAT_MOUSE_XTERM
+ #endif
+
++ /* sgr is a small variation of mouse_xterm, and shares its code */
++ #if defined(FEAT_MOUSE_SGR) && !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) \
+***************
+*** 1087,1093 ****
+ || 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))
+--- 1095,1102 ----
+ || defined(FEAT_MOUSE_JSB) \
+ || defined(FEAT_MOUSE_PTERM) \
+ || defined(FEAT_SYSMOUSE) \
+! || defined(FEAT_MOUSE_URXVT) \
+! || defined(FEAT_MOUSE_SGR))
+ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
+ #endif
+ #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+*** ../vim-7.3.631/src/keymap.h 2012-01-20 17:15:47.000000000 +0100
+--- src/keymap.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 110,115 ****
+--- 110,118 ----
+ /* Used for the urxvt mouse. */
+ #define KS_URXVT_MOUSE 238
+
++ /* Used for the sgr mouse. */
++ #define KS_SGR_MOUSE 237
++
+ /*
+ * Filler used after KS_SPECIAL and others
+ */
+***************
+*** 412,417 ****
+--- 415,421 ----
+ #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER)
+ #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER)
+ #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER)
++ #define K_SGR_MOUSE TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER)
+
+ #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER)
+ #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER)
+*** ../vim-7.3.631/src/misc2.c 2012-08-15 14:04:50.000000000 +0200
+--- src/misc2.c 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 2433,2438 ****
+--- 2433,2441 ----
+ #ifdef FEAT_MOUSE_URXVT
+ {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"},
+ #endif
++ #ifdef FEAT_MOUSE_SGR
++ {K_SGR_MOUSE, (char_u *)"SgrMouse"},
++ #endif
+ {K_LEFTMOUSE, (char_u *)"LeftMouse"},
+ {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"},
+ {K_LEFTDRAG, (char_u *)"LeftDrag"},
+*** ../vim-7.3.631/src/option.h 2012-07-10 16:49:08.000000000 +0200
+--- src/option.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 822,828 ****
+ 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
+--- 822,828 ----
+ 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", "sgr", NULL};
+ # endif
+ # define TTYM_XTERM 0x01
+ # define TTYM_XTERM2 0x02
+***************
+*** 831,836 ****
+--- 831,837 ----
+ # define TTYM_JSBTERM 0x10
+ # define TTYM_PTERM 0x20
+ # define TTYM_URXVT 0x40
++ # define TTYM_SGR 0x80
+ #endif
+ EXTERN char_u *p_udir; /* 'undodir' */
+ EXTERN long p_ul; /* 'undolevels' */
+*** ../vim-7.3.631/src/os_unix.c 2012-04-20 15:55:10.000000000 +0200
+--- src/os_unix.c 2012-08-15 16:06:54.000000000 +0200
+***************
+*** 2159,2168 ****
+--- 2159,2171 ----
+ * Return 1 for "xterm".
+ * Return 2 for "xterm2".
+ * Return 3 for "urxvt".
++ * Return 4 for "sgr".
+ */
+ int
+ use_xterm_mouse()
+ {
++ if (ttym_flags == TTYM_SGR)
++ return 4;
+ if (ttym_flags == TTYM_URXVT)
+ return 3;
+ if (ttym_flags == TTYM_XTERM2)
+***************
+*** 3339,3345 ****
+ 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")
+--- 3342,3349 ----
+ 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")
+***************
+*** 3348,3353 ****
+--- 3352,3368 ----
+ }
+ # endif
+
++ # ifdef FEAT_MOUSE_SGR
++ if (ttym_flags == TTYM_SGR)
++ {
++ out_str_nf((char_u *)
++ (on
++ ? IF_EB("\033[?1006h", ESC_STR "[?1006h")
++ : IF_EB("\033[?1006l", ESC_STR "[?1006l")));
++ ison = on;
++ }
++ # endif
++
+ if (xterm_mouse_vers > 0)
+ {
+ if (on) /* enable mouse events, use mouse tracking if available */
+***************
+*** 3577,3582 ****
+--- 3592,3618 ----
+ else
+ del_mouse_termcode(KS_URXVT_MOUSE);
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ /* same as the dec mouse */
++ if (use_xterm_mouse() == 4
++ # ifdef FEAT_GUI
++ && !gui.in_use
++ # endif
++ )
++ {
++ set_mouse_termcode(KS_SGR_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_SGR_MOUSE);
++ # endif
+ }
+ #endif
+
+*** ../vim-7.3.631/src/term.c 2012-02-05 22:05:44.000000000 +0100
+--- src/term.c 2012-08-15 16:14:09.000000000 +0200
+***************
+*** 1997,2002 ****
+--- 1997,2003 ----
+ # define HMT_JSBTERM 8
+ # define HMT_PTERM 16
+ # define HMT_URXVT 32
++ # define HMT_SGR 64
+ static int has_mouse_termcode = 0;
+ # endif
+
+***************
+*** 2037,2042 ****
+--- 2038,2048 ----
+ has_mouse_termcode |= HMT_URXVT;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ if (n == KS_SGR_MOUSE)
++ has_mouse_termcode |= HMT_SGR;
++ else
++ # endif
+ has_mouse_termcode |= HMT_NORMAL;
+ # endif
+ }
+***************
+*** 2079,2084 ****
+--- 2085,2095 ----
+ has_mouse_termcode &= ~HMT_URXVT;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ if (n == KS_SGR_MOUSE)
++ has_mouse_termcode &= ~HMT_SGR;
++ else
++ # endif
+ has_mouse_termcode &= ~HMT_NORMAL;
+ # endif
+ }
+***************
+*** 4023,4029 ****
+ #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
+--- 4034,4041 ----
+ #ifdef FEAT_TERMRESPONSE
+ if (key_name[0] == NUL
+ /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
+! || key_name[0] == KS_URXVT_MOUSE
+! || key_name[0] == KS_SGR_MOUSE)
+ {
+ /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
+ * eat other possible responses to t_RV, rxvt returns
+***************
+*** 4061,4066 ****
+--- 4073,4088 ----
+
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
++ # ifdef TTYM_SGR
++ if (extra >= 277
++ # ifdef TTYM_URXVT
++ && ttym_flags != TTYM_URXVT
++ # endif
++ )
++ set_option_value((char_u *)"ttym", 0L,
++ (char_u *)"sgr", 0);
++ else
++ # endif
+ /* if xterm version >= 95 use mouse dragging */
+ if (extra >= 95
+ # ifdef TTYM_URXVT
+***************
+*** 4147,4167 ****
+ /*
+ * If it is a mouse click, get the coordinates.
+ */
+! if (key_name[0] == (int)KS_MOUSE
+ # ifdef FEAT_MOUSE_JSB
+! || key_name[0] == (int)KS_JSBTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_NET
+! || key_name[0] == (int)KS_NETTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_DEC
+! || key_name[0] == (int)KS_DEC_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_PTERM
+! || key_name[0] == (int)KS_PTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_URXVT
+! || key_name[0] == (int)KS_URXVT_MOUSE
+ # endif
+ )
+ {
+--- 4169,4192 ----
+ /*
+ * If it is a mouse click, get the coordinates.
+ */
+! if (key_name[0] == KS_MOUSE
+ # ifdef FEAT_MOUSE_JSB
+! || key_name[0] == KS_JSBTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_NET
+! || key_name[0] == KS_NETTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_DEC
+! || key_name[0] == KS_DEC_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_PTERM
+! || key_name[0] == KS_PTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_URXVT
+! || key_name[0] == KS_URXVT_MOUSE
+! # endif
+! # ifdef FEAT_MOUSE_SGR
+! || key_name[0] == KS_SGR_MOUSE
+ # endif
+ )
+ {
+***************
+*** 4243,4250 ****
+ }
+ }
+
+! # ifdef FEAT_MOUSE_URXVT
+! if (key_name[0] == (int)KS_URXVT_MOUSE)
+ {
+ for (;;)
+ {
+--- 4268,4276 ----
+ }
+ }
+
+! # if defined(FEAT_MOUSE_URXVT) || defined(FEAT_MOUSE_SGR)
+! if (key_name[0] == KS_URXVT_MOUSE
+! || key_name[0] == KS_SGR_MOUSE)
+ {
+ for (;;)
+ {
+***************
+*** 4256,4261 ****
+--- 4282,4301 ----
+ * ^-- row
+ * ^----- column
+ * ^-------- code
++ *
++ * SGR 1006 mouse reporting mode:
++ * Almost identical to xterm mouse mode, except the values
++ * are decimal instead of bytes.
++ *
++ * \033[<%d;%d;%dM
++ * ^-- row
++ * ^----- column
++ * ^-------- code
++ *
++ * \033[<%d;%d;%dm : mouse release event
++ * ^-- row
++ * ^----- column
++ * ^-------- code
+ */
+ p = tp + slen;
+
+***************
+*** 4263,4294 ****
+ 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;
+ }
+--- 4303,4348 ----
+ if (*p++ != ';')
+ return -1;
+
++ /* when mouse reporting is SGR, add 32 to mouse code */
++ if (key_name[0] == KS_SGR_MOUSE)
++ mouse_code += 32;
++
+ mouse_col = getdigits(&p) - 1;
+ if (*p++ != ';')
+ return -1;
+
+ mouse_row = getdigits(&p) - 1;
+! if (key_name[0] == KS_SGR_MOUSE && *p == 'm')
+! mouse_code |= MOUSE_RELEASE;
+! else if (*p != 'M')
+ return -1;
++ p++;
+
+ 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)
+! {
+ int slen2;
+ int cmd_complete = 0;
+!
+! /* check if the command is complete by looking for the
+! * 'M' */
+! for (slen2 = slen; slen2 < len; slen2++)
+! {
+! if (tp[slen2] == 'M'
+! || (key_name[0] == KS_SGR_MOUSE
+! && tp[slen2] == 'm'))
+! {
+ cmd_complete = 1;
+ break;
+ }
+ }
+ p += j;
+! if (cmd_complete && getdigits(&p) == mouse_code)
+! {
+ slen += j; /* skip the \033[ */
+ continue;
+ }
+***************
+*** 4302,4307 ****
+--- 4356,4364 ----
+ #ifdef FEAT_MOUSE_URXVT
+ || key_name[0] == (int)KS_URXVT_MOUSE
+ #endif
++ #ifdef FEAT_MOUSE_SGR
++ || key_name[0] == KS_SGR_MOUSE
++ #endif
+ )
+ {
+ # if !defined(MSWIN) && !defined(MSDOS)
+*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200
+--- src/version.c 2012-08-15 15:47:30.000000000 +0200
+***************
+*** 384,389 ****
+--- 384,394 ----
+ # else
+ "-mouse_urxvt",
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ "+mouse_sgr",
++ # else
++ "-mouse_sgr",
++ # endif
+ #endif
+ #ifdef __QNX__
+ # ifdef FEAT_MOUSE_PTERM
+*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200
+--- src/version.c 2012-08-15 15:47:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 632,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+243. You unsuccessfully try to download a pizza from www.dominos.com.
+
+ /// 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 ///