updated for version 7.0087
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 "