diff --git a/runtime/spell/README.txt b/runtime/spell/README.txt
index 44dedb7afad0c0b6753fce0e832b9a9cb8cf882b..01d30608a2ae609f727c4120e9ab9683f69c6891 100644
--- a/runtime/spell/README.txt
+++ b/runtime/spell/README.txt
@@ -69,7 +69,7 @@ This procedure should work well:
    change too much, the OpenOffice people are not stupid.  However, you may
    want to remove obvious mistakes.  And remove single-letter words that
    aren't really words, they mess up the suggestions (English has this
-   problem).
+   problem).  You can use the "fixdup" Vim script to find duplicate words.
 
 3. Make the diff file.  "aap diff" will do this for you.  If a diff would be
    too big you might consider writing a Vim script to do systematic changes.
diff --git a/runtime/spell/de/de_AT.diff b/runtime/spell/de/de_AT.diff
index e13e4d5d35f84750d556f0f49eb67d7a311a9e0d..8256aaf5ff889d838351ce22e76443e79d640145 100644
--- a/runtime/spell/de/de_AT.diff
+++ b/runtime/spell/de/de_AT.diff
@@ -26,7 +26,7 @@
 + 
   
 *** de_AT.orig.dic	Mon Aug 15 22:59:43 2005
---- de_AT.dic	Mon Aug 15 23:03:19 2005
+--- de_AT.dic	Mon Aug 15 23:11:02 2005
 ***************
 *** 18,20 ****
   Fleischbänke/N
@@ -42,3 +42,15 @@
   zulieb
 ! 
   Äbte/N
+***************
+*** 18792,18794 ****
+  Geschwulstherde
+- Geselchte/N
+  Geselle/N
+--- 18791,18792 ----
+***************
+*** 20472,20474 ****
+  HTML
+- Häfen
+  Häftling/EPS
+--- 20470,20471 ----
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index 9ba853cebfece5dca7ef0356f3b80950e314fdb3..1013907ee4567b8b3c4f602650fcd7fee16d9271 100644
Binary files a/runtime/spell/en.utf-8.spl and b/runtime/spell/en.utf-8.spl differ
diff --git a/runtime/spell/fixdup b/runtime/spell/fixdup
new file mode 100644
index 0000000000000000000000000000000000000000..0dd532d5e64c1cb4985a02c33b8aa54f0fb080ae
--- /dev/null
+++ b/runtime/spell/fixdup
@@ -0,0 +1,27 @@
+" Vim script to fix duplicate words in a .dic file  vim: set ft=vim:
+"
+" Usage: Edit the .dic file and source this script.
+
+let deleted = 0
+
+" Start below the word count.
+let lnum = 2
+while lnum <= line('$')
+  let word = getline(lnum)
+  if word !~ '/'
+    if search('^' . word . '/', 'w') != 0
+      let deleted += 1
+      exe lnum . "d"
+      continue		" don't increment lnum, it's already at the next word
+    endif
+  endif
+  let lnum += 1
+endwhile
+
+if deleted == 0
+  echomsg "No duplicate words found"
+elseif deleted == 1
+  echomsg "Deleted 1 duplicate word"
+else
+  echomsg printf("Deleted %d duplicate words", deleted)
+endif
diff --git a/runtime/spell/main.aap b/runtime/spell/main.aap
index 5aaaaa1022d77fdab50479e460b97f9bd0f95e5b..352bc5565c5f54ae2c46a0ba52e880cfe01852f3 100644
--- a/runtime/spell/main.aap
+++ b/runtime/spell/main.aap
@@ -6,7 +6,7 @@
 
 LANG = af bg ca cs da de el en eo fr fo gl he hr it nl ny pl sk yi hu
 
-# "hu" is at the end, because it takes so much time.
+# "hu" is at the end, because it takes very long.
 #
 # TODO:
 # Finnish doesn't work, the dictionary fi_FI.zip file contains hyphenation...
diff --git a/runtime/spell/nl/nl_NL.diff b/runtime/spell/nl/nl_NL.diff
index 6859a47335905f88944f24e6ab862de598c7ec46..dc6c599811d7f2ab3c608fdbad48cd7fd9c368e3 100644
--- a/runtime/spell/nl/nl_NL.diff
+++ b/runtime/spell/nl/nl_NL.diff
@@ -1,5 +1,5 @@
 *** nl_NL.orig.aff	Sun Jul  3 18:24:07 2005
---- nl_NL.aff	Sun Jul 31 22:18:15 2005
+--- nl_NL.aff	Tue Aug 16 22:39:54 2005
 ***************
 *** 3,6 ****
 --- 3,30 ----
@@ -135,12 +135,13 @@
   REP kritikus criticus
 ***************
 *** 333 ****
---- 357,359 ----
+--- 357,360 ----
   REP aflassen afgelasten
 + REP svp s.v.p.
 + REP zoz z.o.z.
++ 
 *** nl_NL.orig.dic	Sun Jul  3 18:24:07 2005
---- nl_NL.dic	Thu Jul 21 11:06:07 2005
+--- nl_NL.dic	Sat Aug 13 14:10:15 2005
 ***************
 *** 1,3 ****
   119937
@@ -258,7 +259,7 @@
   voorjaarsmoeheid
 ***************
 *** 119938 ****
---- 119963,120137 ----
+--- 119963,120139 ----
   überhaupt
 + Christiaan/X
 + Fred/X
@@ -434,3 +435,5 @@
 + enz.
 + bijv.
 + Gerard
++ Google
++ Luuk
diff --git a/runtime/spell/yi.vim b/runtime/spell/yi.vim
new file mode 100644
index 0000000000000000000000000000000000000000..c08cf8cb09d01d75ab1a16b7fd594ba271862767
--- /dev/null
+++ b/runtime/spell/yi.vim
@@ -0,0 +1,10 @@
+" For Yiddish capitals should not be checked.  But only change the
+" 'spellcapcheck' option when it is not at its default value.
+let s:spc = &l:spc
+setlocal spc&
+if s:spc == &l:spc
+  setlocal spc=
+else
+  let &l:spc = s:spc
+endif
+unlet s:spc
diff --git a/runtime/spell/yi/yi_tr.diff b/runtime/spell/yi/yi_tr.diff
index 5f26a7b8aca90e165fdb53f924cab0437ffaaa0d..4b5148f0c3cd63b0be1ebedede390af1e7413d2c 100644
--- a/runtime/spell/yi/yi_tr.diff
+++ b/runtime/spell/yi/yi_tr.diff
@@ -6,7 +6,7 @@
 + 84608
   gruntelement
   dzhobendiks
-*** /dev/null	Tue Aug 16 10:44:00 2005
+*** /dev/null	Fri Aug 19 23:01:14 2005
 --- yi_tr.aff	Tue Aug 16 10:48:01 2005
 ***************
 *** 0 ****
diff --git a/src/Makefile b/src/Makefile
index 2a74f4ed7ec6e738215c00490d99e1fffb86b4da..72f036b29dd85eb7c3d975c9804afac05db38fb6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1840,15 +1840,12 @@ installtutor: $(DEST_VIM) $(DEST_RT) $(DEST_TUTOR)
 	-$(INSTALL_DATA) $(TUTORSOURCE)/README* $(TUTORSOURCE)/tutor* $(DEST_TUTOR)
 	chmod $(HELPMOD) $(DEST_TUTOR)/*
 
-# Install the spell files, if they exist.
+# Install the spell files, if they exist.  This assumes at least the English
+# spell file is there.
 installspell: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
 	if test -f $(SPELLSOURCE)/en.latin1.spl; then \
-	  $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
-	  chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
-	fi
-	if test -f $(SPELLSOURCE)/en.utf-8.spl; then \
-	  $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
-	  chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
+	  $(INSTALL_DATA) $(SPELLSOURCE)/*.spl *.vim $(DEST_SPELL); \
+	  chmod $(HELPMOD) $(DEST_SPELL)/*.spl *.vim; \
 	fi
 
 # install helper program xxd