Add support for horizontal scroll wheel. (Bjorn Winckler)
diff --git a/src/edit.c b/src/edit.c
index 3370a28..4754fd9 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -224,7 +224,7 @@
 static int  ins_bs __ARGS((int c, int mode, int *inserted_space_p));
 #ifdef FEAT_MOUSE
 static void ins_mouse __ARGS((int c));
-static void ins_mousescroll __ARGS((int up));
+static void ins_mousescroll __ARGS((int dir));
 #endif
 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
 static void ins_tabline __ARGS((int c));
@@ -1112,11 +1112,19 @@
 	    break;
 
 	case K_MOUSEDOWN: /* Default action for scroll wheel up: scroll up */
-	    ins_mousescroll(FALSE);
+	    ins_mousescroll(MSCR_DOWN);
 	    break;
 
 	case K_MOUSEUP:	/* Default action for scroll wheel down: scroll down */
-	    ins_mousescroll(TRUE);
+	    ins_mousescroll(MSCR_UP);
+	    break;
+
+	case K_MOUSELEFT: /* Scroll wheel left */
+	    ins_mousescroll(MSCR_LEFT);
+	    break;
+
+	case K_MOUSERIGHT: /* Scroll wheel right */
+	    ins_mousescroll(MSCR_RIGHT);
 	    break;
 #endif
 #ifdef FEAT_GUI_TABLINE
@@ -3516,7 +3524,8 @@
 	edit_submode_extra = NULL;
 
     /* Ignore end of Select mode mapping and mouse scroll buttons. */
-    if (c == K_SELECT || c == K_MOUSEDOWN || c == K_MOUSEUP)
+    if (c == K_SELECT || c == K_MOUSEDOWN || c == K_MOUSEUP
+	    || c == K_MOUSELEFT || c == K_MOUSERIGHT)
 	return retval;
 
     /* Set "compl_get_longest" when finding the first matches. */
@@ -8859,8 +8868,8 @@
 }
 
     static void
-ins_mousescroll(up)
-    int		up;
+ins_mousescroll(dir)
+    int		dir;
 {
     pos_T	tpos;
 # if defined(FEAT_WINDOWS)
@@ -8898,10 +8907,27 @@
 	    )
 # endif
     {
-	if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
-	    scroll_redraw(up, (long)(curwin->w_botline - curwin->w_topline));
+	if (dir == MSCR_DOWN || dir == MSCR_UP)
+	{
+	    if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
+		scroll_redraw(dir,
+			(long)(curwin->w_botline - curwin->w_topline));
+	    else
+		scroll_redraw(dir, 3L);
+	}
+#ifdef FEAT_GUI
 	else
-	    scroll_redraw(up, 3L);
+	{
+	    int val, step = 6;
+
+	    if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
+		step = W_WIDTH(curwin);
+	    val = curwin->w_leftcol + (dir == MSCR_RIGHT ? -step : step);
+	    if (val < 0)
+		val = 0;
+	    gui_do_horiz_scroll(val, TRUE);
+	}
+#endif
 # ifdef FEAT_INS_EXPAND
 	did_scroll = TRUE;
 # endif
@@ -8985,7 +9011,7 @@
 
     undisplay_dollar();
     tpos = curwin->w_cursor;
-    if (gui_do_horiz_scroll())
+    if (gui_do_horiz_scroll(scrollbar_value, FALSE))
     {
 	start_arrow(&tpos);
 # ifdef FEAT_CINDENT
diff --git a/src/eval.c b/src/eval.c
index 4f1be3f..ac0ad26 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -10927,6 +10927,8 @@
 		|| n == K_X2MOUSE
 		|| n == K_X2DRAG
 		|| n == K_X2RELEASE
+		|| n == K_MOUSELEFT
+		|| n == K_MOUSERIGHT
 		|| n == K_MOUSEDOWN
 		|| n == K_MOUSEUP)
 	{
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 153271b..7b7874a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1334,6 +1334,8 @@
 	/* Mouse scroll wheel: ignored here */
 	case K_MOUSEDOWN:
 	case K_MOUSEUP:
+	case K_MOUSELEFT:
+	case K_MOUSERIGHT:
 	/* Alternate buttons ignored here */
 	case K_X1MOUSE:
 	case K_X1DRAG:
@@ -1361,7 +1363,7 @@
 	case K_HOR_SCROLLBAR:
 		if (msg_scrolled == 0)
 		{
-		    gui_do_horiz_scroll();
+		    gui_do_horiz_scroll(scrollbar_value, FALSE);
 		    redrawcmd();
 		}
 		goto cmdline_not_changed;
diff --git a/src/gui.c b/src/gui.c
index 5aece03..49014a5 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -31,6 +31,7 @@
 #endif
 static void gui_do_scrollbar __ARGS((win_T *wp, int which, int enable));
 static colnr_T scroll_line_len __ARGS((linenr_T lnum));
+static linenr_T gui_find_longest_lnum __ARGS((void));
 static void gui_update_horiz_scrollbar __ARGS((int));
 static void gui_set_fg_color __ARGS((char_u *name));
 static void gui_set_bg_color __ARGS((char_u *name));
@@ -2759,7 +2760,8 @@
  *  button	    --- may be any of MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT,
  *			MOUSE_X1, MOUSE_X2
  *			MOUSE_DRAG, or MOUSE_RELEASE.
- *			MOUSE_4 and MOUSE_5 are used for a scroll wheel.
+ *			MOUSE_4 and MOUSE_5 are used for vertical scroll wheel,
+ *			MOUSE_6 and MOUSE_7 for horizontal scroll wheel.
  *  x, y	    --- Coordinates of mouse in pixels.
  *  repeated_click  --- TRUE if this click comes only a short time after a
  *			previous click.
@@ -2803,6 +2805,12 @@
 	    goto button_set;
 	case MOUSE_5:
 	    button_char = KE_MOUSEUP;
+	    goto button_set;
+	case MOUSE_6:
+	    button_char = KE_MOUSELEFT;
+	    goto button_set;
+	case MOUSE_7:
+	    button_char = KE_MOUSERIGHT;
 button_set:
 	    {
 		/* Don't put events in the input queue now. */
@@ -3845,14 +3853,14 @@
 	scrollbar_value = value;
 
 	if (State & NORMAL)
-	    gui_do_horiz_scroll();
+	    gui_do_horiz_scroll(scrollbar_value, FALSE);
 	else if (State & INSERT)
 	    ins_horscroll();
 	else if (State & CMDLINE)
 	{
 	    if (msg_scrolled == 0)
 	    {
-		gui_do_horiz_scroll();
+		gui_do_horiz_scroll(scrollbar_value, FALSE);
 		redrawcmdline();
 	    }
 	}
@@ -4319,6 +4327,51 @@
  * search for it when scrolling horizontally. */
 static linenr_T longest_lnum = 0;
 
+/*
+ * Find longest visible line number.  If this is not possible (or not desired,
+ * by setting 'h' in "guioptions") then the current line number is returned.
+ */
+    static linenr_T
+gui_find_longest_lnum()
+{
+    linenr_T ret = 0;
+
+    /* Calculate maximum for horizontal scrollbar.  Check for reasonable
+     * line numbers, topline and botline can be invalid when displaying is
+     * postponed. */
+    if (vim_strchr(p_go, GO_HORSCROLL) == NULL
+	    && curwin->w_topline <= curwin->w_cursor.lnum
+	    && curwin->w_botline > curwin->w_cursor.lnum
+	    && curwin->w_botline <= curbuf->b_ml.ml_line_count + 1)
+    {
+	linenr_T    lnum;
+	colnr_T	    n;
+	long	    max = 0;
+
+	/* Use maximum of all visible lines.  Remember the lnum of the
+	 * longest line, closest to the cursor line.  Used when scrolling
+	 * below. */
+	for (lnum = curwin->w_topline; lnum < curwin->w_botline; ++lnum)
+	{
+	    n = scroll_line_len(lnum);
+	    if (n > (colnr_T)max)
+	    {
+		max = n;
+		ret = lnum;
+	    }
+	    else if (n == (colnr_T)max
+		    && abs((int)(lnum - curwin->w_cursor.lnum))
+		       < abs((int)(ret - curwin->w_cursor.lnum)))
+		ret = lnum;
+	}
+    }
+    else
+	/* Use cursor line only. */
+	ret = curwin->w_cursor.lnum;
+
+    return ret;
+}
+
     static void
 gui_update_horiz_scrollbar(force)
     int		force;
@@ -4358,38 +4411,9 @@
     {
 	value = curwin->w_leftcol;
 
-	/* Calculate maximum for horizontal scrollbar.  Check for reasonable
-	 * line numbers, topline and botline can be invalid when displaying is
-	 * postponed. */
-	if (vim_strchr(p_go, GO_HORSCROLL) == NULL
-		&& curwin->w_topline <= curwin->w_cursor.lnum
-		&& curwin->w_botline > curwin->w_cursor.lnum
-		&& curwin->w_botline <= curbuf->b_ml.ml_line_count + 1)
-	{
-	    linenr_T	lnum;
-	    colnr_T	n;
+	longest_lnum = gui_find_longest_lnum();
+	max = scroll_line_len(longest_lnum);
 
-	    /* Use maximum of all visible lines.  Remember the lnum of the
-	     * longest line, clostest to the cursor line.  Used when scrolling
-	     * below. */
-	    max = 0;
-	    for (lnum = curwin->w_topline; lnum < curwin->w_botline; ++lnum)
-	    {
-		n = scroll_line_len(lnum);
-		if (n > (colnr_T)max)
-		{
-		    max = n;
-		    longest_lnum = lnum;
-		}
-		else if (n == (colnr_T)max
-			&& abs((int)(lnum - curwin->w_cursor.lnum))
-			   < abs((int)(longest_lnum - curwin->w_cursor.lnum)))
-		    longest_lnum = lnum;
-	    }
-	}
-	else
-	    /* Use cursor line only. */
-	    max = scroll_line_len(curwin->w_cursor.lnum);
 #ifdef FEAT_VIRTUALEDIT
 	if (virtual_active())
 	{
@@ -4442,26 +4466,33 @@
  * Do a horizontal scroll.  Return TRUE if the cursor moved, FALSE otherwise.
  */
     int
-gui_do_horiz_scroll()
+gui_do_horiz_scroll(leftcol, compute_longest_lnum)
+    colnr_T	leftcol;
+    int		compute_longest_lnum;
 {
     /* no wrapping, no scrolling */
     if (curwin->w_p_wrap)
 	return FALSE;
 
-    if ((long_u)curwin->w_leftcol == scrollbar_value)
+    if (curwin->w_leftcol == leftcol)
 	return FALSE;
 
-    curwin->w_leftcol = (colnr_T)scrollbar_value;
+    curwin->w_leftcol = leftcol;
 
     /* When the line of the cursor is too short, move the cursor to the
-     * longest visible line.  Do a sanity check on "longest_lnum", just in
-     * case. */
+     * longest visible line. */
     if (vim_strchr(p_go, GO_HORSCROLL) == NULL
-	    && longest_lnum >= curwin->w_topline
-	    && longest_lnum < curwin->w_botline
-	    && !virtual_active())
+	    && !virtual_active()
+	    && leftcol > scroll_line_len(curwin->w_cursor.lnum))
     {
-	if (scrollbar_value > (long_u)scroll_line_len(curwin->w_cursor.lnum))
+	if (compute_longest_lnum)
+	{
+	    curwin->w_cursor.lnum = gui_find_longest_lnum();
+	    curwin->w_cursor.col = 0;
+	}
+	/* Do a sanity check on "longest_lnum", just in case. */
+	else if (longest_lnum >= curwin->w_topline
+		&& longest_lnum < curwin->w_botline)
 	{
 	    curwin->w_cursor.lnum = longest_lnum;
 	    curwin->w_cursor.col = 0;
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index d8e2487..2cde1ee 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -1700,7 +1700,13 @@
 	case GDK_SCROLL_DOWN:
 	    button = MOUSE_5;
 	    break;
-	default: /* We don't care about left and right...  Yet. */
+	case GDK_SCROLL_LEFT:
+	    button = MOUSE_7;
+	    break;
+	case GDK_SCROLL_RIGHT:
+	    button = MOUSE_6;
+	    break;
+	default: /* This shouldn't happen */
 	    return FALSE;
     }
 
diff --git a/src/keymap.h b/src/keymap.h
index 39837e5..16d128a 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -228,8 +228,13 @@
     , KE_S_XF3
     , KE_S_XF4
 
+    /* NOTE: The scroll wheel events are inverted: i.e. UP is the same as
+     * moving the actual scroll wheel down, LEFT is the same as moving the
+     * scroll wheel right. */
     , KE_MOUSEDOWN	/* scroll wheel pseudo-button Down */
     , KE_MOUSEUP	/* scroll wheel pseudo-button Up */
+    , KE_MOUSELEFT	/* scroll wheel pseudo-button Left */
+    , KE_MOUSERIGHT	/* scroll wheel pseudo-button Right */
 
     , KE_KINS		/* keypad Insert key */
     , KE_KDEL		/* keypad Delete key */
@@ -440,6 +445,8 @@
 
 #define K_MOUSEDOWN	TERMCAP2KEY(KS_EXTRA, KE_MOUSEDOWN)
 #define K_MOUSEUP	TERMCAP2KEY(KS_EXTRA, KE_MOUSEUP)
+#define K_MOUSELEFT	TERMCAP2KEY(KS_EXTRA, KE_MOUSELEFT)
+#define K_MOUSERIGHT	TERMCAP2KEY(KS_EXTRA, KE_MOUSERIGHT)
 
 #define K_CSI		TERMCAP2KEY(KS_EXTRA, KE_CSI)
 #define K_SNR		TERMCAP2KEY(KS_EXTRA, KE_SNR)
diff --git a/src/message.c b/src/message.c
index 7c94cbf..3b1b458 100644
--- a/src/message.c
+++ b/src/message.c
@@ -987,6 +987,7 @@
 				|| c == K_LEFTDRAG   || c == K_LEFTRELEASE
 				|| c == K_MIDDLEDRAG || c == K_MIDDLERELEASE
 				|| c == K_RIGHTDRAG  || c == K_RIGHTRELEASE
+				|| c == K_MOUSELEFT  || c == K_MOUSERIGHT
 				|| c == K_MOUSEDOWN  || c == K_MOUSEUP
 				|| (!mouse_has(MOUSE_RETURN)
 				    && mouse_row < msg_row
diff --git a/src/misc1.c b/src/misc1.c
index fb04fb6..9371760 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3158,6 +3158,8 @@
 		    || n == K_RIGHTRELEASE
 		    || n == K_MOUSEDOWN
 		    || n == K_MOUSEUP
+		    || n == K_MOUSELEFT
+		    || n == K_MOUSERIGHT
 		    || n == K_X1MOUSE
 		    || n == K_X1DRAG
 		    || n == K_X1RELEASE
diff --git a/src/misc2.c b/src/misc2.c
index 98f2991..6b9ffe1 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2362,8 +2362,12 @@
     {K_RIGHTMOUSE,	(char_u *)"RightMouse"},
     {K_RIGHTDRAG,	(char_u *)"RightDrag"},
     {K_RIGHTRELEASE,	(char_u *)"RightRelease"},
-    {K_MOUSEDOWN,	(char_u *)"MouseDown"},
-    {K_MOUSEUP,		(char_u *)"MouseUp"},
+    {K_MOUSEDOWN,	(char_u *)"ScrollWheelUp"},
+    {K_MOUSEUP,		(char_u *)"ScrollWheelDown"},
+    {K_MOUSELEFT,	(char_u *)"ScrollWheelRight"},
+    {K_MOUSERIGHT,	(char_u *)"ScrollWheelLeft"},
+    {K_MOUSEDOWN,	(char_u *)"MouseDown"}, /* OBSOLETE: Use	  */
+    {K_MOUSEUP,		(char_u *)"MouseUp"},	/* ScrollWheelXXX instead */
     {K_X1MOUSE,		(char_u *)"X1Mouse"},
     {K_X1DRAG,		(char_u *)"X1Drag"},
     {K_X1RELEASE,		(char_u *)"X1Release"},
diff --git a/src/normal.c b/src/normal.c
index d9e9588..d880ee6 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -368,8 +368,10 @@
     /* pound sign */
     {POUND,	nv_ident,	0,			0},
 #ifdef FEAT_MOUSE
-    {K_MOUSEUP, nv_mousescroll,	0,			TRUE},
-    {K_MOUSEDOWN, nv_mousescroll, 0,			FALSE},
+    {K_MOUSEUP, nv_mousescroll,	0,			MSCR_UP},
+    {K_MOUSEDOWN, nv_mousescroll, 0,			MSCR_DOWN},
+    {K_MOUSELEFT, nv_mousescroll, 0,			MSCR_LEFT},
+    {K_MOUSERIGHT, nv_mousescroll, 0,			MSCR_RIGHT},
     {K_LEFTMOUSE, nv_mouse,	0,			0},
     {K_LEFTMOUSE_NM, nv_mouse,	0,			0},
     {K_LEFTDRAG, nv_mouse,	0,			0},
@@ -3861,7 +3863,7 @@
 	K_LEFTMOUSE, K_LEFTDRAG, K_LEFTRELEASE,
 	K_MIDDLEMOUSE, K_MIDDLEDRAG, K_MIDDLERELEASE,
 	K_RIGHTMOUSE, K_RIGHTDRAG, K_RIGHTRELEASE,
-	K_MOUSEDOWN, K_MOUSEUP,
+	K_MOUSEDOWN, K_MOUSEUP, K_MOUSELEFT, K_MOUSERIGHT,
 	K_X1MOUSE, K_X1DRAG, K_X1RELEASE, K_X2MOUSE, K_X2DRAG, K_X2RELEASE,
 	K_CURSORHOLD,
 	0
@@ -4536,7 +4538,8 @@
 /*
  * Mouse scroll wheel: Default action is to scroll three lines, or one page
  * when Shift or Ctrl is used.
- * K_MOUSEUP (cap->arg == TRUE) or K_MOUSEDOWN (cap->arg == FALSE)
+ * K_MOUSEUP (cap->arg == 1) or K_MOUSEDOWN (cap->arg == 0) or
+ * K_MOUSELEFT (cap->arg == -1) or K_MOUSERIGHT (cap->arg == -2)
  */
     static void
 nv_mousescroll(cap)
@@ -4559,16 +4562,36 @@
     }
 # endif
 
-    if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
+    if (cap->arg == MSCR_UP || cap->arg == MSCR_DOWN)
     {
-	(void)onepage(cap->arg ? FORWARD : BACKWARD, 1L);
+	if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
+	{
+	    (void)onepage(cap->arg ? FORWARD : BACKWARD, 1L);
+	}
+	else
+	{
+	    cap->count1 = 3;
+	    cap->count0 = 3;
+	    nv_scroll_line(cap);
+	}
     }
+# ifdef FEAT_GUI
     else
     {
-	cap->count1 = 3;
-	cap->count0 = 3;
-	nv_scroll_line(cap);
+	/* Horizontal scroll - only allowed when 'wrap' is disabled */
+	if (!curwin->w_p_wrap)
+	{
+	    int val, step = 6;
+	    if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
+		step = W_WIDTH(curwin);
+	    val = curwin->w_leftcol + (cap->arg == MSCR_RIGHT ? -step : +step);
+	    if (val < 0)
+		val = 0;
+
+	    gui_do_horiz_scroll(val, TRUE);
+	}
     }
+# endif
 
 # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
     curwin->w_redr_status = TRUE;
@@ -5166,7 +5189,7 @@
 	clearopbeep(cap->oap);
 
     /* Even if an operator was pending, we still want to scroll */
-    gui_do_horiz_scroll();
+    gui_do_horiz_scroll(scrollbar_value, FALSE);
 }
 #endif
 
diff --git a/src/proto/gui.pro b/src/proto/gui.pro
index 136570c..fa5ce89 100644
--- a/src/proto/gui.pro
+++ b/src/proto/gui.pro
@@ -46,7 +46,7 @@
 void gui_may_update_scrollbars __ARGS((void));
 void gui_update_scrollbars __ARGS((int force));
 int gui_do_scroll __ARGS((void));
-int gui_do_horiz_scroll __ARGS((void));
+int gui_do_horiz_scroll __ARGS((colnr_T leftcol, int compute_longest_lnum));
 void gui_check_colors __ARGS((void));
 guicolor_T gui_get_color __ARGS((char_u *name));
 int gui_get_lightness __ARGS((guicolor_T pixel));
diff --git a/src/screen.c b/src/screen.c
index 2577218..ca5827f 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2822,7 +2822,7 @@
     int		is_concealing	= FALSE;
     int		boguscols	= 0;	/* nonexistent columns added to force
 					   wrapping */
-    int		vcol_off        = 0;	/* offset for concealed characters */
+    int		vcol_off	= 0;	/* offset for concealed characters */
     int		did_wcol	= FALSE;
 # define VCOL_HLC (vcol - vcol_off)
 #else
diff --git a/src/term.c b/src/term.c
index 57bb730..8c42662 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4167,6 +4167,8 @@
 		&& key_name[0] == (int)KS_EXTRA
 		&& (key_name[1] == (int)KE_X1MOUSE
 		    || key_name[1] == (int)KE_X2MOUSE
+		    || key_name[1] == (int)KE_MOUSELEFT
+		    || key_name[1] == (int)KE_MOUSERIGHT
 		    || key_name[1] == (int)KE_MOUSEDOWN
 		    || key_name[1] == (int)KE_MOUSEUP))
 	{
@@ -5054,7 +5056,7 @@
     {
 	/*
 	 * If 'cpoptions' does not contain '<', check for special key codes,
-	 * like "<C-S-MouseLeft>"
+	 * like "<C-S-LeftMouse>"
 	 */
 	if (do_special && (do_lt || STRNCMP(src, "<lt>", 4) != 0))
 	{
diff --git a/src/vim.h b/src/vim.h
index 6790a48..38bd0ef 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1721,12 +1721,18 @@
 # define MOUSE_CTRL	0x10
 
 /* mouse buttons that are handled like a key press (GUI only) */
+/* Note that the scroll wheel keys are inverted: MOUSE_5 scrolls lines up but
+ * the result of this is that the window moves down, similarly MOUSE_6 scrolls
+ * columns left but the window moves right. */
 # define MOUSE_4	0x100	/* scroll wheel down */
 # define MOUSE_5	0x200	/* scroll wheel up */
 
 # define MOUSE_X1	0x300 /* Mouse-button X1 (6th) */
 # define MOUSE_X2	0x400 /* Mouse-button X2 */
 
+# define MOUSE_6	0x500	/* scroll wheel left */
+# define MOUSE_7	0x600	/* scroll wheel right */
+
 /* 0x20 is reserved by xterm */
 # define MOUSE_DRAG_XTERM   0x40
 
@@ -2180,4 +2186,10 @@
 #define BFA_WIPE	2	/* buffer is going to be wiped out */
 #define BFA_KEEP_UNDO	4	/* do not free undo information */
 
+/* direction for nv_mousescroll() and ins_mousescroll() */
+#define MSCR_DOWN	0	/* DOWN must be FALSE */
+#define MSCR_UP		1
+#define MSCR_LEFT	-1
+#define MSCR_RIGHT	-2
+
 #endif /* VIM__H */