diff --git a/src/gui_w32.c b/src/gui_w32.c
index 3ecedde..3e31e77 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -415,6 +415,9 @@
 #ifndef SPI_GETWHEELSCROLLLINES
 # define SPI_GETWHEELSCROLLLINES    104
 #endif
+#ifndef SPI_SETWHEELSCROLLLINES
+# define SPI_SETWHEELSCROLLLINES    105
+#endif
 
 #define VMOUSEZ_CLASSNAME  "MouseZ"		/* hidden wheel window class */
 #define VMOUSEZ_TITLE      "Magellan MSWHEEL"	/* hidden wheel window title */
diff --git a/src/ops.c b/src/ops.c
index 3b45b2d..4502313 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -5717,6 +5717,11 @@
     struct yankreg  *old_y_previous, *old_y_current;
     long	    len;
 
+    if (maxlen >= 0)
+	len = maxlen;
+    else
+	len = (long)STRLEN(str);
+
     /* Special case: '/' search pattern */
     if (name == '/')
     {
@@ -5724,6 +5729,26 @@
 	return;
     }
 
+#ifdef FEAT_EVAL
+    if (name == '=')
+    {
+	char_u	    *p, *s;
+
+	p = vim_strnsave(str, (int)len);
+	if (p == NULL)
+	    return;
+	if (must_append)
+	{
+	    s = concat_str(get_expr_line_src(), p);
+	    vim_free(p);
+	    p = s;
+
+	}
+	set_expr_line(p);
+	return;
+    }
+#endif
+
     if (!valid_yank_reg(name, TRUE))	    /* check for valid reg name */
     {
 	emsg_invreg(name);
@@ -5740,10 +5765,6 @@
     get_yank_register(name, TRUE);
     if (!y_append && !must_append)
 	free_yank_all();
-    if (maxlen >= 0)
-	len = maxlen;
-    else
-	len = (long)STRLEN(str);
 #ifndef FEAT_VISUAL
     /* Just in case - make sure we don't use MBLOCK */
     if (yank_type == MBLOCK)
diff --git a/src/screen.c b/src/screen.c
index 7db9b71..b1fbedf 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3594,11 +3594,16 @@
 			char_attr = syntax_attr;
 		    if (c != 0 && (!has_syntax || can_spell))
 		    {
+			char_u	*prev_ptr;
 # ifdef FEAT_MBYTE
-			char_u	*prev_ptr = ptr - (has_mbyte ? mb_l : 1);
-# else
-			char_u	*prev_ptr = ptr - 1;
+			if (has_mbyte)
+			{
+			    prev_ptr = ptr - mb_l;
+			    v -= mb_l - 1;
+			}
+			else
 # endif
+			    prev_ptr = ptr - 1;
 			word_end = v + spell_check(wp, prev_ptr, &spell_attr);
 
 			/* In Insert mode only highlight a word that
diff --git a/src/spell/Makefile b/src/spell/Makefile
index ff5b754..5933d27 100644
--- a/src/spell/Makefile
+++ b/src/spell/Makefile
@@ -15,6 +15,9 @@
 nl: $(SPELLDIR)/nl.latin1.spl \
 	$(SPELLDIR)/nl.utf-8.spl
 
+de: $(SPELLDIR)/de.latin1.spl \
+	$(SPELLDIR)/de.utf-8.spl
+
 fr: $(SPELLDIR)/fr.latin1.spl \
 	$(SPELLDIR)/fr.utf-8.spl
 
@@ -36,6 +39,9 @@
 	-diff -a -C 1 pl_PL.orig.aff pl_PL.aff >pl_PL.diff
 	-diff -a -C 1 pl_PL.orig.dic pl_PL.dic >>pl_PL.diff
 	
+	-diff -a -C 1 de_DE.orig.aff de_DE.aff >de_DE.diff
+	-diff -a -C 1 de_DE.orig.dic de_DE.dic >>de_DE.diff
+	
 	-diff -a -C 1 fr_FR.orig.aff fr_FR.aff >fr_FR.diff
 	-diff -a -C 1 fr_FR.orig.dic fr_FR.dic >>fr_FR.diff
 
@@ -84,6 +90,14 @@
 			nl_NL.aff nl_NL.dic
 	env LANG=nl_NL.UTF-8 $(VIM) -e -c "mkspell! $(SPELLDIR)/nl nl_NL" -c q
 
+$(SPELLDIR)/de.latin1.spl : $(VIM) \
+			de_DE.aff de_DE.dic
+	env LANG=de_DE.ISO8859-1 $(VIM) -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+
+$(SPELLDIR)/de.utf-8.spl : $(VIM) \
+			de_DE.aff de_DE.dic
+	env LANG=de_DE.UTF-8 $(VIM) -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+
 $(SPELLDIR)/fr.latin1.spl : $(VIM) \
 			fr_FR.aff fr_FR.dic
 	env LANG=fr_FR.ISO8859-1 $(VIM) -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim
index 93ae4b2..79a40c9 100644
--- a/src/testdir/test49.vim
+++ b/src/testdir/test49.vim
@@ -1,6 +1,6 @@
 " Vim script language tests
 " Author:	Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change:	2005 May 18
+" Last Change:	2005 Jun 17
 
 "-------------------------------------------------------------------------------
 " Test environment							    {{{1
@@ -8069,7 +8069,7 @@
     function! MSG(n)
 	let g:taken = g:taken . "M" . a:n
 	if (a:n >= 10 && a:n <= 27) ? v:errmsg != "" : v:errmsg !~ "asdf"
-	    let g:taken = g:taken . "x"
+	    let g:taken = g:taken . v:errmsg
 	endif
 	let v:errmsg = ""
     endfunction
@@ -8225,13 +8225,13 @@
     let var = ERR(36) + CONT(36)
     call MSG(36)
 
-    let v{ERRabort(37) + CONT(37)} = 0
+    let v{ERRabort(37) + CONT(37) . 'asdf'} = 0
     call MSG(37)
-    let v{ERRabort(38) + CONT(38)}
+    let v{ERRabort(38) + CONT(38) . 'asdf'}
     call MSG(38)
     let var = exists('v{ERRabort(39) + CONT(39)}')
     call MSG(39)
-    unlet v{ERRabort(40) + CONT(40)}
+    unlet v{ERRabort(40) + CONT(40) . 'asdf'}
     call MSG(40)
     function F{ERRabort(41) + CONT(41)}()
     endfunction
diff --git a/src/version.h b/src/version.h
index 3366bb1..0afb2fd 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 Jun 16)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 16, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 17)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 17, compiled "
