updated for version 7.0142
diff --git a/src/eval.c b/src/eval.c
index 6547b46..448bd7f 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -17583,6 +17583,7 @@
 	MSG_PUTS("...");
     }
     msg_putchar(')');
+    msg_clr_eos();
 #ifdef FEAT_EVAL
     if (p_verbose > 0)
 	last_set_msg(fp->uf_script_ID);
@@ -18934,12 +18935,19 @@
 last_set_msg(scriptID)
     scid_T scriptID;
 {
+    char_u *p;
+
     if (scriptID != 0)
     {
-	verbose_enter();
-	MSG_PUTS(_("\n\tLast set from "));
-	MSG_PUTS(get_scriptname(scriptID));
-	verbose_leave();
+	p = home_replace_save(NULL, get_scriptname(scriptID));
+	if (p != NULL)
+	{
+	    verbose_enter();
+	    MSG_PUTS(_("\n\tLast set from "));
+	    MSG_PUTS(p);
+	    vim_free(p);
+	    verbose_leave();
+	}
     }
 }
 
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c6190be..544e76b 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2369,17 +2369,24 @@
 	 * Do arabic shaping into a temporary buffer.  This is very
 	 * inefficient!
 	 */
-	if (len * 2 > buflen)
+	if (len * 2 + 2 > buflen)
 	{
 	    /* Re-allocate the buffer.  We keep it around to avoid a lot of
 	     * alloc()/free() calls. */
 	    vim_free(arshape_buf);
-	    buflen = len * 2;
+	    buflen = len * 2 + 2;
 	    arshape_buf = alloc(buflen);
 	    if (arshape_buf == NULL)
 		return;	/* out of memory */
 	}
 
+	if (utf_iscomposing(utf_ptr2char(ccline.cmdbuff + start)))
+	{
+	    /* Prepend a space to draw the leading composing char on. */
+	    arshape_buf[0] = ' ';
+	    newlen = 1;
+	}
+
 	for (j = start; j < start + len; j += mb_l)
 	{
 	    p = ccline.cmdbuff + j;
diff --git a/src/regexp.c b/src/regexp.c
index e212cc0..d72a7ef 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -6243,7 +6243,6 @@
     {
 	char_u	*str1, *str2;
 	int	c1, c2, c11, c12;
-	int	ix;
 	int	junk;
 
 	/* we have to handle the strcmp ourselves, since it is necessary to
@@ -6251,11 +6250,10 @@
 	str1 = s1;
 	str2 = s2;
 	c1 = c2 = 0;
-	for (ix = 0; ix < *n; )
+	while ((int)(str1 - s1) < *n)
 	{
 	    c1 = mb_ptr2char_adv(&str1);
 	    c2 = mb_ptr2char_adv(&str2);
-	    ix += utf_char2len(c1);
 
 	    /* decompose the character if necessary, into 'base' characters
 	     * because I don't care about Arabic, I will hard-code the Hebrew
diff --git a/src/screen.c b/src/screen.c
index 11d89b6..269c780 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3480,6 +3480,15 @@
 			if (mb_c < 0x80)
 			    c = mb_c;
 			mb_utf8 = TRUE;
+
+			/* At start of the line we can have a composing char.
+			 * Draw it as a space with a composing char. */
+			if (utf_iscomposing(mb_c))
+			{
+			    u8c_c2 = u8c_c1;
+			    u8c_c1 = mb_c;
+			    mb_c = ' ';
+			}
 		    }
 
 		    if ((mb_l == 1 && c >= 0x80)
diff --git a/src/search.c b/src/search.c
index 3013d13..37b3873 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1105,7 +1105,16 @@
 	    if (msgbuf != NULL)
 	    {
 		msgbuf[0] = dirc;
-		STRCPY(msgbuf + 1, p);
+#ifdef FEAT_MBYTE
+		if (enc_utf8 && utf_iscomposing(utf_ptr2char(p)))
+		{
+		    /* Use a space to draw the composing char on. */
+		    msgbuf[1] = ' ';
+		    STRCPY(msgbuf + 2, p);
+		}
+		else
+#endif
+		    STRCPY(msgbuf + 1, p);
 		if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
 		{
 		    p = msgbuf + STRLEN(msgbuf);
diff --git a/src/version.h b/src/version.h
index 208f7a5..5fd353d 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 Sep 5)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 5, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 6)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 6, compiled "