diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak
index 51e3618..c7f8337 100644
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -353,7 +353,7 @@
 OUTDIR = gobj$(DEBUG_SUFFIX)
 DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD
 EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
-EXTRA_LIBS += -mwindows -lcomctl32
+EXTRA_LIBS += -mwindows -lcomctl32 -lversion
 else
 EXE = vim$(DEBUG_SUFFIX).exe
 OUTDIR = obj$(DEBUG_SUFFIX)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c96f114..a876508 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -92,6 +92,7 @@
 static void	cursorcmd __ARGS((void));
 static int	ccheck_abbr __ARGS((int));
 static int	nextwild __ARGS((expand_T *xp, int type, int options));
+static void	escape_fname __ARGS((char_u **pp));
 static int	showmatches __ARGS((expand_T *xp, int wildmenu));
 static void	set_expand_context __ARGS((expand_T *xp));
 static int	ExpandFromContext __ARGS((expand_T *xp, char_u *, int *, char_u ***, int));
@@ -3365,18 +3366,14 @@
 		/* If 'str' starts with "\~", replace "~" at start of
 		 * files[i] with "\~". */
 		if (str[0] == '\\' && str[1] == '~' && files[i][0] == '~')
-		{
-		    p = alloc((unsigned)(STRLEN(files[i]) + 2));
-		    if (p != NULL)
-		    {
-			p[0] = '\\';
-			STRCPY(p + 1, files[i]);
-			vim_free(files[i]);
-			files[i] = p;
-		    }
-		}
+		    escape_fname(&files[i]);
 	    }
 	    xp->xp_backslash = XP_BS_NONE;
+
+	    /* If the first file starts with a '+' escape it.  Otherwise it
+	     * could be seen as "+cmd". */
+	    if (*files[0] == '+')
+		escape_fname(&files[0]);
 	}
 	else if (xp->xp_context == EXPAND_TAGS)
 	{
@@ -3398,6 +3395,25 @@
 }
 
 /*
+ * Put a backslash before the file name in "pp", which is in allocated memory.
+ */
+    static void
+escape_fname(pp)
+    char_u **pp;
+{
+    char_u	*p;
+
+    p = alloc((unsigned)(STRLEN(*pp) + 2));
+    if (p != NULL)
+    {
+	p[0] = '\\';
+	STRCPY(p + 1, *pp);
+	vim_free(*pp);
+	*pp = p;
+    }
+}
+
+/*
  * For each file name in files[num_files]:
  * If 'orig_pat' starts with "~/", replace the home directory with "~".
  */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index f0b4717..52c8abe 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -188,8 +188,61 @@
 static BalloonEval  *cur_beval = NULL;
 static UINT	    BevalTimerId = 0;
 static DWORD	    LastActivity = 0;
+
+/*
+ * excerpts from headers since this may not be presented
+ * in the extremelly old compilers
+ */
+#include <pshpack1.h>
+
+typedef struct _DllVersionInfo
+{
+    DWORD cbSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformID;
+} DLLVERSIONINFO;
+
+typedef struct tagTOOLINFOA_NEW
+{
+	UINT cbSize;
+	UINT uFlags;
+	HWND hwnd;
+	UINT uId;
+	RECT rect;
+	HINSTANCE hinst;
+	LPSTR lpszText;
+	LPARAM lParam;
+} TOOLINFO_NEW;
+
+typedef struct tagNMTTDISPINFO_NEW
+{
+    NMHDR      hdr;
+    LPTSTR     lpszText;
+    char       szText[80];
+    HINSTANCE  hinst;
+    UINT       uFlags;
+    LPARAM     lParam;
+} NMTTDISPINFO_NEW;
+
+#include <poppack.h>
+
+typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+#ifndef TTM_SETMAXTIPWIDTH
+# define TTM_SETMAXTIPWIDTH	 (WM_USER+24)
 #endif
 
+#ifndef TTF_DI_SETITEM
+# define TTF_DI_SETITEM          0x8000
+#endif
+
+#ifndef TTN_GETDISPINFO
+# define TTN_GETDISPINFO        (TTN_FIRST - 0)
+#endif
+
+#endif /* defined(FEAT_BEVAL) */
+
 /* Local variables: */
 
 #ifdef FEAT_MENU
@@ -4021,13 +4074,93 @@
  * 5) WM_NOTOFY:TTN_POP destroys created tooltip
  */
 
+/*
+ * determine whether installed Common Controls support multiline tooltips
+ * (i.e. their version is >= 4.70
+ */
+    int
+multiline_balloon_available(void)
+{
+    HINSTANCE hDll;
+    static char comctl_dll[] = "comctl32.dll";
+    static int multiline_tip = MAYBE;
+
+    if (multiline_tip != MAYBE)
+	return multiline_tip;
+
+    hDll = GetModuleHandle(comctl_dll);
+    if (hDll != NULL)
+    {
+        DLLGETVERSIONPROC pGetVer;
+        pGetVer = (DLLGETVERSIONPROC)GetProcAddress(hDll, "DllGetVersion");
+
+        if (pGetVer != NULL)
+        {
+            DLLVERSIONINFO dvi;
+            HRESULT hr;
+
+            ZeroMemory(&dvi, sizeof(dvi));
+            dvi.cbSize = sizeof(dvi);
+
+            hr = (*pGetVer)(&dvi);
+
+            if (SUCCEEDED(hr)
+		    && (dvi.dwMajorVersion > 4
+		    || (dvi.dwMajorVersion == 4 && dvi.dwMinorVersion >= 70)))
+	    {
+		multiline_tip = TRUE;
+		return multiline_tip;
+	    }
+        }
+	else
+	{
+	    /* there is chance we have ancient CommCtl 4.70
+	       which doesn't export DllGetVersion */
+	    DWORD dwHandle = 0;
+	    DWORD len = GetFileVersionInfoSize(comctl_dll, &dwHandle);
+	    if (len > 0)
+	    {
+		VS_FIXEDFILEINFO *ver;
+		UINT vlen = 0;
+		void *data = alloc(len);
+
+		if (data != NULL
+			&& GetFileVersionInfo(comctl_dll, 0, len, data)
+			&& VerQueryValue(data, "\\", (void **)&ver, &vlen)
+			&& vlen
+			&& HIWORD(ver->dwFileVersionMS) > 4
+			|| (HIWORD(ver->dwFileVersionMS) == 4
+			    && LOWORD(ver->dwFileVersionMS) >= 70))
+		{
+		    vim_free(data);
+		    multiline_tip = TRUE;
+		    return multiline_tip;
+		}
+		vim_free(data);
+	    }
+	}
+    }
+    multiline_tip = FALSE;
+    return multiline_tip;
+}
+
     static void
 make_tooltip(beval, text, pt)
     BalloonEval *beval;
     char *text;
     POINT pt;
 {
-    TOOLINFO	ti;
+    TOOLINFO	*pti;
+    int		ToolInfoSize;
+
+    if (multiline_balloon_available() == TRUE)
+	ToolInfoSize = sizeof(TOOLINFO_NEW);
+    else
+	ToolInfoSize = sizeof(TOOLINFO);
+
+    pti = (TOOLINFO *)alloc(ToolInfoSize);
+    if (pti == NULL)
+	return;
 
     beval->balloon = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS,
 	    NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
@@ -4037,20 +4170,32 @@
     SetWindowPos(beval->balloon, HWND_TOPMOST, 0, 0, 0, 0,
 	    SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
 
-    ti.cbSize = sizeof(TOOLINFO);
-    ti.uFlags = TTF_SUBCLASS;
-    ti.hwnd = beval->target;
-    ti.hinst = 0; /* Don't use string resources */
-    ti.uId = ID_BEVAL_TOOLTIP;
-    ti.lpszText = text;
+    pti->cbSize = ToolInfoSize;
+    pti->uFlags = TTF_SUBCLASS;
+    pti->hwnd = beval->target;
+    pti->hinst = 0; /* Don't use string resources */
+    pti->uId = ID_BEVAL_TOOLTIP;
+
+    if (multiline_balloon_available() == TRUE)
+    {
+	RECT rect;
+	TOOLINFO_NEW *ptin = (TOOLINFO_NEW *)pti;
+	pti->lpszText = LPSTR_TEXTCALLBACK;
+	ptin->lParam = (LPARAM)text;
+	if (GetClientRect(s_textArea, &rect)) /* switch multiline tooltips on */
+	    SendMessage(beval->balloon, TTM_SETMAXTIPWIDTH, 0,
+		    (LPARAM)rect.right);
+    }
+    else
+	pti->lpszText = text; /* do this old way */
 
     /* Limit ballooneval bounding rect to CursorPos neighbourhood */
-    ti.rect.left = pt.x - 3;
-    ti.rect.top = pt.y - 3;
-    ti.rect.right = pt.x + 3;
-    ti.rect.bottom = pt.y + 3;
+    pti->rect.left = pt.x - 3;
+    pti->rect.top = pt.y - 3;
+    pti->rect.right = pt.x + 3;
+    pti->rect.bottom = pt.y + 3;
 
-    SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)&ti);
+    SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)pti);
     /* Make tooltip appear sooner */
     SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10);
     /*
@@ -4059,6 +4204,7 @@
      */
     mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0);
     mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0);
+    vim_free(pti);
 }
 
     static void
@@ -4187,7 +4333,6 @@
 	beval->clientData = clientData;
 
 	InitCommonControls();
-
 	cur_beval = beval;
 
 	if (p_beval)
@@ -4208,19 +4353,28 @@
 
     if (cur_beval != NULL)
     {
-	if (pnmh->code == TTN_SHOW)
+	switch (pnmh->code)
 	{
+	case TTN_SHOW:
 	    // TRACE0("TTN_SHOW {{{");
 	    // TRACE0("TTN_SHOW }}}");
-	}
-	else if (pnmh->code == TTN_POP) /* Before tooltip disappear */
-	{
+	    break;
+	case TTN_POP: /* Before tooltip disappear */
 	    // TRACE0("TTN_POP {{{");
 	    delete_tooltip(cur_beval);
 	    gui_mch_enable_beval_area(cur_beval);
 	    // TRACE0("TTN_POP }}}");
 
 	    cur_beval->showState = ShS_NEUTRAL;
+	    break;
+	case TTN_GETDISPINFO:
+	{
+	    /* if you get there then we have new common controls */
+	    NMTTDISPINFO_NEW *info = (NMTTDISPINFO_NEW *)pnmh;
+	    info->lpszText = (LPSTR)info->lParam;
+	    info->uFlags |= TTF_DI_SETITEM;
+	}
+	    break;
 	}
     }
 }
diff --git a/src/po/Make_mvc.mak b/src/po/Make_mvc.mak
index 607cf5e..5448bee 100644
--- a/src/po/Make_mvc.mak
+++ b/src/po/Make_mvc.mak
@@ -6,11 +6,53 @@
 # Please read README_mvc.txt before using this file.
 #
 
-LANGUAGES =	af ca cs de en_GB es fr ga it ja ko no pl ru sk sv uk vi zh_TW \
-		zh_TW.UTF-8 zh_CN zh_CN.UTF-8
-MOFILES =	af.mo ca.mo cs.mo de.mo en_GB.mo es.mo fr.mo ga.mo it.mo ja.mo \
-		ko.mo no.mo pl.mo ru.mo sk.mo sv.mo uk.mo vi.mo \
-		zh_TW.mo zh_TW.UTF-8.mo zh_CN.mo zh_CN.UTF-8.mo
+LANGUAGES = \
+		af \
+		ca \
+		cs \
+		de \
+		en_GB \
+		es \
+		fr \
+		ga \
+		it \
+		ja \
+		ko \
+		no \
+		pl \
+		ru \
+		sk \
+		sv \
+		uk \
+		vi \
+		zh_CN \
+		zh_CN.UTF-8 \
+		zh_TW \
+		zh_TW.UTF-8 \
+
+MOFILES = \
+		af.mo \
+		ca.mo \
+		cs.mo \
+		de.mo \
+		en_GB.mo \
+		es.mo \
+		fr.mo \
+		ga.mo \
+		it.mo \
+		ja.mo \
+		ko.mo \
+		no.mo \
+		pl.mo \
+		ru.mo \
+		sk.mo \
+		sv.mo \
+		uk.mo \
+		vi.mo \
+		zh_CN.UTF-8.mo \
+		zh_CN.mo \
+		zh_TW.UTF-8.mo \
+		zh_TW.mo \
 
 PACKAGE = vim
 
diff --git a/src/search.c b/src/search.c
index b2de027..288197c 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3666,7 +3666,7 @@
     old_start = old_end;
 
     /*
-     * If we start on "<aaa>" use the whole block inclusive.
+     * If we start on "<aaa>" select that block.
      */
 #ifdef FEAT_VISUAL
     if (!VIsual_active || equalpos(VIsual, curwin->w_cursor))
@@ -3713,7 +3713,7 @@
      */
     for (n = 0; n < count; ++n)
     {
-	if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|>\\)",
+	if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|\\_s\\=>\\)",
 		    (char_u *)"",
 		    (char_u *)"</[^>]*>", BACKWARD, (char_u *)"", 0) <= 0)
 	{
@@ -3791,9 +3791,9 @@
 	    }
 	curwin->w_cursor = end_pos;
 
-	/* If we now have the same start as before reset "do_include" and try
+	/* If we now have the same text as before reset "do_include" and try
 	 * again. */
-	if (equalpos(start_pos, old_start))
+	if (equalpos(start_pos, old_start) && equalpos(end_pos, old_end))
 	{
 	    do_include = TRUE;
 	    curwin->w_cursor = old_start;
diff --git a/src/version.h b/src/version.h
index 7df4ee1..0352cd3 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 20)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 20, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 21)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 21, compiled "
