diff --git a/src/buffer.c b/src/buffer.c
index 7e848f6..3723863 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1689,6 +1689,9 @@
     clear_string_option(&buf->b_p_inde);
     clear_string_option(&buf->b_p_indk);
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+    clear_string_option(&buf->b_p_bexpr);
+#endif
 #if defined(FEAT_EVAL)
     clear_string_option(&buf->b_p_fex);
 #endif
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index cfb55df..dbab4e2 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -900,7 +900,7 @@
 	    if (getline_is_func)
 	    {
 # ifdef FEAT_PROFILE
-		if (do_profiling)
+		if (do_profiling == PROF_YES)
 		    func_line_end(real_cookie);
 # endif
 		if (func_has_ended(real_cookie))
@@ -910,7 +910,7 @@
 		}
 	    }
 #ifdef FEAT_PROFILE
-	    else if (do_profiling
+	    else if (do_profiling == PROF_YES
 			     && getline_equal(getline, cookie, getsourceline))
 		script_line_end();
 #endif
@@ -947,7 +947,7 @@
 		*dbg_tick = debug_tick;
 	    }
 # ifdef FEAT_PROFILE
-	    if (do_profiling)
+	    if (do_profiling == PROF_YES)
 	    {
 		if (getline_is_func)
 		    func_line_start(real_cookie);
@@ -1912,7 +1912,7 @@
 #ifdef FEAT_EVAL
 # ifdef FEAT_PROFILE
     /* Count this line for profiling if ea.skip is FALSE. */
-    if (do_profiling && !ea.skip)
+    if (do_profiling == PROF_YES && !ea.skip)
     {
 	if (getline_equal(getline, cookie, get_func_line))
 	    func_line_exec(getline_cookie(getline, cookie));
@@ -5633,21 +5633,22 @@
 	l -= 2;
     }
 
-    if (l < 1)
+    ++l;
+    if (l <= 1)
 	type = ct_NONE;
-    else if (STRNICMP(p, "args", l) == 0)
+    else if (STRNICMP(p, "args>", l) == 0)
 	type = ct_ARGS;
-    else if (STRNICMP(p, "bang", l) == 0)
+    else if (STRNICMP(p, "bang>", l) == 0)
 	type = ct_BANG;
-    else if (STRNICMP(p, "count", l) == 0)
+    else if (STRNICMP(p, "count>", l) == 0)
 	type = ct_COUNT;
-    else if (STRNICMP(p, "line1", l) == 0)
+    else if (STRNICMP(p, "line1>", l) == 0)
 	type = ct_LINE1;
-    else if (STRNICMP(p, "line2", l) == 0)
+    else if (STRNICMP(p, "line2>", l) == 0)
 	type = ct_LINE2;
-    else if (STRNICMP(p, "lt", l) == 0)
+    else if (STRNICMP(p, "lt>", l) == 0)
 	type = ct_LT;
-    else if (STRNICMP(p, "register", l) == 0)
+    else if (STRNICMP(p, "reg>", l) == 0 || STRNICMP(p, "register>", l) == 0)
 	type = ct_REGISTER;
 
     switch (type)
diff --git a/src/fileio.c b/src/fileio.c
index 5dd502c..a5fdfb7 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -8518,7 +8518,7 @@
     save_current_SID = current_SID;
 
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
 	prof_child_enter(&wait_time); /* doesn't count for the caller itself */
 # endif
 
@@ -8614,7 +8614,7 @@
     current_SID = save_current_SID;
     restore_funccal(save_funccalp);
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
 	prof_child_exit(&wait_time);
 # endif
 #endif
diff --git a/src/getchar.c b/src/getchar.c
index 9810ed4..e941f94 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -63,7 +63,7 @@
  * Returns a value between 0 and 255, index in maphash.
  * Put Normal/Visual mode mappings mostly separately from Insert/Cmdline mode.
  */
-#define MAP_HASH(mode, c1) (((mode) & (NORMAL + VISUAL + OP_PENDING)) ? (c1) : ((c1) ^ 0x80))
+#define MAP_HASH(mode, c1) (((mode) & (NORMAL + VISUAL + SELECTMODE + OP_PENDING)) ? (c1) : ((c1) ^ 0x80))
 
 /*
  * Each mapping is put in one of the 256 hash lists, to speed up finding it.
@@ -2236,12 +2236,13 @@
 				{
 # ifdef FEAT_VISUAL
 				    /*
-				     * In Select mode, a Visual mode menu is
-				     * used.  Switch to Visual mode
+				     * In Select mode and a Visual mode menu
+				     * is used:  Switch to Visual mode
 				     * temporarily.  Append K_SELECT to switch
 				     * back to Select mode.
 				     */
-				    if (VIsual_active && VIsual_select)
+				    if (VIsual_active && VIsual_select
+					    && (current_menu->modes & VISUAL))
 				    {
 					VIsual_select = FALSE;
 					(void)ins_typebuf(K_SELECT_STRING,
@@ -2297,11 +2298,12 @@
 
 #ifdef FEAT_VISUAL
 			/*
-			 * In Select mode, a Visual mode mapping is used.
+			 * In Select mode and a Visual mode mapping is used:
 			 * Switch to Visual mode temporarily.  Append K_SELECT
 			 * to switch back to Select mode.
 			 */
-			if (VIsual_active && VIsual_select)
+			if (VIsual_active && VIsual_select
+						     && (mp->m_mode & VISUAL))
 			{
 			    VIsual_select = FALSE;
 			    (void)ins_typebuf(K_SELECT_STRING, REMAP_NONE,
@@ -2926,13 +2928,15 @@
  * arg is pointer to any arguments. Note: arg cannot be a read-only string,
  * it will be modified.
  *
- * for :map   mode is NORMAL + VISUAL + OP_PENDING
+ * for :map   mode is NORMAL + VISUAL + SELECTMODE + OP_PENDING
  * for :map!  mode is INSERT + CMDLINE
  * for :cmap  mode is CMDLINE
  * for :imap  mode is INSERT
  * for :lmap  mode is LANGMAP
  * for :nmap  mode is NORMAL
- * for :vmap  mode is VISUAL
+ * for :vmap  mode is VISUAL + SELECTMODE
+ * for :xmap  mode is VISUAL
+ * for :smap  mode is SELECTMODE
  * for :omap  mode is OP_PENDING
  *
  * for :abbr  mode is INSERT + CMDLINE
@@ -3524,7 +3528,11 @@
     else if (modec == 'n' && *p != 'o')		    /* avoid :noremap */
 	mode = NORMAL;				/* :nmap */
     else if (modec == 'v')
-	mode = VISUAL;				/* :vmap */
+	mode = VISUAL + SELECTMODE;		/* :vmap */
+    else if (modec == 'x')
+	mode = VISUAL;				/* :xmap */
+    else if (modec == 's')
+	mode = SELECTMODE;			/* :smap */
     else if (modec == 'o')
 	mode = OP_PENDING;			/* :omap */
     else
@@ -3533,7 +3541,7 @@
 	if (forceit)
 	    mode = INSERT + CMDLINE;		/* :map ! */
 	else
-	    mode = VISUAL + NORMAL + OP_PENDING;/* :map */
+	    mode = VISUAL + SELECTMODE + NORMAL + OP_PENDING;/* :map */
     }
 
     *cmdp = p;
@@ -3668,8 +3676,8 @@
 	msg_putchar('l');			/* :lmap */
     else if (mp->m_mode & CMDLINE)
 	msg_putchar('c');			/* :cmap */
-    else if ((mp->m_mode & (NORMAL + VISUAL + OP_PENDING))
-					      == NORMAL + VISUAL + OP_PENDING)
+    else if ((mp->m_mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
+				 == NORMAL + VISUAL + SELECTMODE + OP_PENDING)
 	msg_putchar(' ');			/* :map */
     else
     {
@@ -3684,11 +3692,24 @@
 	    msg_putchar('o');		/* :omap */
 	    ++len;
 	}
-	if (mp->m_mode & VISUAL)
+	if ((mp->m_mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
 	{
 	    msg_putchar('v');		/* :vmap */
 	    ++len;
 	}
+	else
+	{
+	    if (mp->m_mode & VISUAL)
+	    {
+		msg_putchar('x');		/* :xmap */
+		++len;
+	    }
+	    if (mp->m_mode & SELECTMODE)
+	    {
+		msg_putchar('s');		/* :smap */
+		++len;
+	    }
+	}
     }
     while (++len <= 3)
 	msg_putchar(' ');
@@ -3749,7 +3770,11 @@
     if (vim_strchr(modechars, 'n') != NULL)
 	mode |= NORMAL;
     if (vim_strchr(modechars, 'v') != NULL)
+	mode |= VISUAL + SELECTMODE;
+    if (vim_strchr(modechars, 'x') != NULL)
 	mode |= VISUAL;
+    if (vim_strchr(modechars, 's') != NULL)
+	mode |= SELECTMODE;
     if (vim_strchr(modechars, 'o') != NULL)
 	mode |= OP_PENDING;
     if (vim_strchr(modechars, 'i') != NULL)
@@ -3857,7 +3882,7 @@
 	{
 	    expand_mapmodes = INSERT + CMDLINE;
 	    if (!isabbrev)
-		expand_mapmodes += VISUAL + NORMAL + OP_PENDING;
+		expand_mapmodes += VISUAL + SELECTMODE + NORMAL + OP_PENDING;
 	}
 	expand_isabbrev = isabbrev;
 	xp->xp_context = EXPAND_MAPPINGS;
@@ -4310,22 +4335,28 @@
 		    cmd = "map";
 		switch (mp->m_mode)
 		{
-		    case NORMAL + VISUAL + OP_PENDING:
+		    case NORMAL + VISUAL + SELECTMODE + OP_PENDING:
 			break;
 		    case NORMAL:
 			c1 = 'n';
 			break;
-		    case VISUAL:
+		    case VISUAL + SELECTMODE:
 			c1 = 'v';
 			break;
+		    case VISUAL:
+			c1 = 'x';
+			break;
+		    case SELECTMODE:
+			c1 = 's';
+			break;
 		    case OP_PENDING:
 			c1 = 'o';
 			break;
-		    case NORMAL + VISUAL:
+		    case NORMAL + VISUAL + SELECTMODE:
 			c1 = 'n';
 			c2 = 'v';
 			break;
-		    case VISUAL + OP_PENDING:
+		    case VISUAL + SELECTMODE + OP_PENDING:
 			c1 = 'v';
 			c2 = 'o';
 			break;
@@ -4697,6 +4728,9 @@
 #endif
 
 #if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS)
+
+#define VIS_SEL	(VISUAL+SELECTMODE)	/* abbreviation */
+
 /*
  * Default mappings for some often used keys.
  */
@@ -4709,58 +4743,58 @@
 #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
 	/* Use the Windows (CUA) keybindings. */
 # ifdef FEAT_GUI
-	{(char_u *)"<C-PageUp> H", NORMAL+VISUAL},
+	{(char_u *)"<C-PageUp> H", NORMAL+VIS_SEL},
 	{(char_u *)"<C-PageUp> <C-O>H",INSERT},
-	{(char_u *)"<C-PageDown> L$", NORMAL+VISUAL},
+	{(char_u *)"<C-PageDown> L$", NORMAL+VIS_SEL},
 	{(char_u *)"<C-PageDown> <C-O>L<C-O>$", INSERT},
 
 	/* paste, copy and cut */
 	{(char_u *)"<S-Insert> \"*P", NORMAL},
-	{(char_u *)"<S-Insert> \"-d\"*P", VISUAL},
+	{(char_u *)"<S-Insert> \"-d\"*P", VIS_SEL},
 	{(char_u *)"<S-Insert> <C-R><C-O>*", INSERT+CMDLINE},
-	{(char_u *)"<C-Insert> \"*y", VISUAL},
-	{(char_u *)"<S-Del> \"*d", VISUAL},
-	{(char_u *)"<C-Del> \"*d", VISUAL},
-	{(char_u *)"<C-X> \"*d", VISUAL},
+	{(char_u *)"<C-Insert> \"*y", VIS_SEL},
+	{(char_u *)"<S-Del> \"*d", VIS_SEL},
+	{(char_u *)"<C-Del> \"*d", VIS_SEL},
+	{(char_u *)"<C-X> \"*d", VIS_SEL},
 	/* Missing: CTRL-C (cancel) and CTRL-V (block selection) */
 # else
-	{(char_u *)"\316\204 H", NORMAL+VISUAL},    /* CTRL-PageUp is "H" */
+	{(char_u *)"\316\204 H", NORMAL+VIS_SEL},    /* CTRL-PageUp is "H" */
 	{(char_u *)"\316\204 \017H",INSERT},	    /* CTRL-PageUp is "^OH"*/
-	{(char_u *)"\316v L$", NORMAL+VISUAL},	    /* CTRL-PageDown is "L$" */
+	{(char_u *)"\316v L$", NORMAL+VIS_SEL},	    /* CTRL-PageDown is "L$" */
 	{(char_u *)"\316v \017L\017$", INSERT},	    /* CTRL-PageDown ="^OL^O$"*/
-	{(char_u *)"\316w <C-Home>", NORMAL+VISUAL},
+	{(char_u *)"\316w <C-Home>", NORMAL+VIS_SEL},
 	{(char_u *)"\316w <C-Home>", INSERT+CMDLINE},
-	{(char_u *)"\316u <C-End>", NORMAL+VISUAL},
+	{(char_u *)"\316u <C-End>", NORMAL+VIS_SEL},
 	{(char_u *)"\316u <C-End>", INSERT+CMDLINE},
 
 	/* paste, copy and cut */
 #  ifdef FEAT_CLIPBOARD
 #   ifdef DJGPP
 	{(char_u *)"\316\122 \"*P", NORMAL},	    /* SHIFT-Insert is "*P */
-	{(char_u *)"\316\122 \"-d\"*P", VISUAL},    /* SHIFT-Insert is "-d"*P */
+	{(char_u *)"\316\122 \"-d\"*P", VIS_SEL},    /* SHIFT-Insert is "-d"*P */
 	{(char_u *)"\316\122 \022\017*", INSERT},  /* SHIFT-Insert is ^R^O* */
-	{(char_u *)"\316\222 \"*y", VISUAL},	    /* CTRL-Insert is "*y */
+	{(char_u *)"\316\222 \"*y", VIS_SEL},	    /* CTRL-Insert is "*y */
 #    if 0 /* Shift-Del produces the same code as Del */
-	{(char_u *)"\316\123 \"*d", VISUAL},	    /* SHIFT-Del is "*d */
+	{(char_u *)"\316\123 \"*d", VIS_SEL},	    /* SHIFT-Del is "*d */
 #    endif
-	{(char_u *)"\316\223 \"*d", VISUAL},	    /* CTRL-Del is "*d */
-	{(char_u *)"\030 \"-d", VISUAL},	    /* CTRL-X is "-d */
+	{(char_u *)"\316\223 \"*d", VIS_SEL},	    /* CTRL-Del is "*d */
+	{(char_u *)"\030 \"-d", VIS_SEL},	    /* CTRL-X is "-d */
 #   else
 	{(char_u *)"\316\324 \"*P", NORMAL},	    /* SHIFT-Insert is "*P */
-	{(char_u *)"\316\324 \"-d\"*P", VISUAL},    /* SHIFT-Insert is "-d"*P */
+	{(char_u *)"\316\324 \"-d\"*P", VIS_SEL},    /* SHIFT-Insert is "-d"*P */
 	{(char_u *)"\316\324 \022\017*", INSERT},  /* SHIFT-Insert is ^R^O* */
-	{(char_u *)"\316\325 \"*y", VISUAL},	    /* CTRL-Insert is "*y */
-	{(char_u *)"\316\327 \"*d", VISUAL},	    /* SHIFT-Del is "*d */
-	{(char_u *)"\316\330 \"*d", VISUAL},	    /* CTRL-Del is "*d */
-	{(char_u *)"\030 \"-d", VISUAL},	    /* CTRL-X is "-d */
+	{(char_u *)"\316\325 \"*y", VIS_SEL},	    /* CTRL-Insert is "*y */
+	{(char_u *)"\316\327 \"*d", VIS_SEL},	    /* SHIFT-Del is "*d */
+	{(char_u *)"\316\330 \"*d", VIS_SEL},	    /* CTRL-Del is "*d */
+	{(char_u *)"\030 \"-d", VIS_SEL},	    /* CTRL-X is "-d */
 #   endif
 #  else
 	{(char_u *)"\316\324 P", NORMAL},	    /* SHIFT-Insert is P */
-	{(char_u *)"\316\324 \"-dP", VISUAL},	    /* SHIFT-Insert is "-dP */
+	{(char_u *)"\316\324 \"-dP", VIS_SEL},	    /* SHIFT-Insert is "-dP */
 	{(char_u *)"\316\324 \022\017\"", INSERT}, /* SHIFT-Insert is ^R^O" */
-	{(char_u *)"\316\325 y", VISUAL},	    /* CTRL-Insert is y */
-	{(char_u *)"\316\327 d", VISUAL},	    /* SHIFT-Del is d */
-	{(char_u *)"\316\330 d", VISUAL},	    /* CTRL-Del is d */
+	{(char_u *)"\316\325 y", VIS_SEL},	    /* CTRL-Insert is y */
+	{(char_u *)"\316\327 d", VIS_SEL},	    /* SHIFT-Del is d */
+	{(char_u *)"\316\330 d", VIS_SEL},	    /* CTRL-Del is d */
 #  endif
 # endif
 #endif
@@ -4769,13 +4803,15 @@
 	/* Use the Standard MacOS binding. */
 	/* paste, copy and cut */
 	{(char_u *)"<D-v> \"*P", NORMAL},
-	{(char_u *)"<D-v> \"-d\"*P", VISUAL},
+	{(char_u *)"<D-v> \"-d\"*P", VIS_SEL},
 	{(char_u *)"<D-v> <C-R>*", INSERT+CMDLINE},
-	{(char_u *)"<D-c> \"*y", VISUAL},
-	{(char_u *)"<D-x> \"*d", VISUAL},
-	{(char_u *)"<Backspace> \"-d", VISUAL},
+	{(char_u *)"<D-c> \"*y", VIS_SEL},
+	{(char_u *)"<D-x> \"*d", VIS_SEL},
+	{(char_u *)"<Backspace> \"-d", VIS_SEL},
 #endif
 };
+
+# undef VIS_SEL
 #endif
 
 /*
diff --git a/src/gui.c b/src/gui.c
index 07d7788..c2942ee 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -2802,6 +2802,7 @@
 	case OP_PENDING:
 	case NORMAL:		checkfor = MOUSE_NORMAL;	break;
 	case VISUAL:		checkfor = MOUSE_VISUAL;	break;
+	case SELECTMODE:	checkfor = MOUSE_VISUAL;	break;
 	case REPLACE:
 	case REPLACE+LANGMAP:
 #ifdef FEAT_VREPLACE
@@ -3077,7 +3078,9 @@
 }
 #endif
 
-static int	prev_which_scrollbars[3] = {-1, -1, -1};
+#ifndef FEAT_WINDOWS
+static int		    prev_which_scrollbars[3];
+#endif
 
 /*
  * Set which components are present.
@@ -3211,7 +3214,13 @@
 
 	for (i = 0; i < 3; i++)
 	{
-	    if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
+	    if (gui.which_scrollbars[i] !=
+#ifdef FEAT_WINDOWS
+		    curtab->tp_prev_which_scrollbars[i]
+#else
+		    prev_which_scrollbars[i]
+#endif
+		    )
 	    {
 		if (i == SBAR_BOTTOM)
 		    gui_mch_enable_scrollbar(&gui.bottom_sbar,
@@ -3227,7 +3236,12 @@
 		if (gui.which_scrollbars[i])
 		    fix_size = TRUE;
 	    }
-	    prev_which_scrollbars[i] = gui.which_scrollbars[i];
+#ifdef FEAT_WINDOWS
+	    curtab->tp_prev_which_scrollbars[i]
+#else
+	    prev_which_scrollbars[i]
+#endif
+						= gui.which_scrollbars[i];
 	}
 
 #ifdef FEAT_MENU
@@ -3479,7 +3493,7 @@
 		gui_do_scrollbar(wp, i, FALSE);
 	    }
 	}
-	prev_which_scrollbars[i] = -1;
+	curtab->tp_prev_which_scrollbars[i] = -1;
     }
 }
 #endif
@@ -3673,6 +3687,16 @@
 	/* Value may have been changed for closed fold. */
 	sb->value = sb->wp->w_topline - 1;
 # endif
+
+	/* When dragging one scrollbar and there is another one at the other
+	 * side move the thumb of that one too. */
+	if (gui.which_scrollbars[SBAR_RIGHT] && gui.which_scrollbars[SBAR_LEFT])
+	    gui_mch_set_scrollbar_thumb(
+		    &sb->wp->w_scrollbars[
+			    sb == &sb->wp->w_scrollbars[SBAR_RIGHT]
+						    ? SBAR_LEFT : SBAR_RIGHT],
+		    sb->value, sb->size, sb->max);
+
 #else
 	bytes[0] = CSI;
 	bytes[1] = KS_VER_SCROLLBAR;
diff --git a/src/vim.h b/src/vim.h
index b49b144..f179e9f 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -596,6 +596,7 @@
 #define EXTERNCMD	0x600	/* executing an external command */
 #define SHOWMATCH	(0x700 + INSERT) /* show matching paren */
 #define CONFIRM		0x800	/* ":confirm" prompt */
+#define SELECTMODE	0x1000	/* Select mode, only for mappings */
 
 /* directions */
 #define FORWARD			1
@@ -1523,6 +1524,11 @@
 
 #include "structs.h"	    /* file that defines many structures */
 
+/* Values for "do_profiling". */
+#define PROF_NONE	0	/* profiling not started */
+#define PROF_YES	1	/* profiling busy */
+#define PROF_PAUSED	2	/* profiling paused */
+
 #ifdef FEAT_MOUSE
 
 /* Codes for mouse button events in lower three bits: */
@@ -1974,4 +1980,5 @@
 #define BAD_KEEP	-1	/* leave it */
 #define BAD_DROP	-2	/* erase it */
 
+
 #endif /* VIM__H */
diff --git a/src/window.c b/src/window.c
index c450221..c37ec67 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3113,6 +3113,12 @@
     tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T));
     if (tp != NULL)
     {
+# ifdef FEAT_GUI
+	int	i;
+
+	for (i = 0; i < 3; i++)
+	    tp->tp_prev_which_scrollbars[i] = -1;
+# endif
 # ifdef FEAT_DIFF
 	tp->tp_diff_invalid = TRUE;
 # endif
@@ -3395,7 +3401,10 @@
     /* When 'guioptions' includes 'L' or 'R' may have to remove or add
      * scrollbars.  Have to update them anyway. */
     if (gui.in_use && starting == 0)
+    {
+	gui_init_which_components(NULL);
 	gui_update_scrollbars(TRUE);
+    }
     need_mouse_correct = TRUE;
 #endif
 
