updated for version 7.0151
diff --git a/runtime/autoload/csscomplete.vim b/runtime/autoload/csscomplete.vim
index 9461f39..f674454 100644
--- a/runtime/autoload/csscomplete.vim
+++ b/runtime/autoload/csscomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	CSS 2.1
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2005 Sep 23
+" Last Change:	2005 Sep 27
 
 function! csscomplete#CompleteCSS(findstart, base)
 if a:findstart
@@ -304,7 +304,14 @@
 		elseif prop == 'z-index'
 			let values = ["auto"]
 		else
-			return []
+			" If no property match it is possible we are outside of {} and
+			" trying to complete pseudo-(class|element)
+			let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
+			if ",a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var," =~ ','.element.','
+				let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
+			else
+				return []
+			endif
 		endif
 
 		" Complete values
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 10dd285..efd528a 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,28 +1,36 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Last Change:	Aug 29, 2005
+" Date:		Sep 29, 2005
+" Version:	72
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
-"               netrw.vim is provided *as is* and comes with no warranty
-"               of any kind, either expressed or implied. By using this
-"               plugin, you agree that in no event will the copyright
-"               holder be liable for any damages resulting from the use
+"               netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
+"               *as is* and comes with no warranty of any kind, either
+"               expressed or implied. By using this plugin, you agree that
+"               in no event will the copyright holder be liable for any damages
+"               resulting from the use of this software.
 "               of this software.
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves {{{1
 "  (James 1:22 RSV)
 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-let s:keepcpo= &cpo
-set cpo&vim
-" call Decho("doing autoload/netrw.vim")
+
+" Exception for &cp: {{{1
+if &cp || exists("g:loaded_netrw")
+  finish
+endif
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
 endif
+let g:loaded_netrw = "v72"
+let s:keepcpo      = &cpo
+set cpo&vim
+" call Decho("doing autoload/netrw.vim")
 
 " ---------------------------------------------------------------------
 " Default values for global netrw variables {{{1
@@ -403,12 +411,14 @@
    ".........................................
    " ftp + <.netrc>:  NetRead Method #2
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
-"    call Decho("read via ftp+.netrc (method #2)")
+"     call Decho("read via ftp+.netrc (method #2)")
      let netrw_fname= b:netrw_fname
      new
      setlocal ff=unix
      exe "put ='".g:netrw_ftpmode."'"
-     exe "put ='"."get ".netrw_fname." ".tmpfile."'"
+"     call Decho("filter input: ".getline("."))
+     exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'"
+"     call Decho("filter input: ".getline("."))
      if exists("g:netrw_port") && g:netrw_port != ""
 "      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
       exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -438,27 +448,33 @@
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
+"     call Decho("filter input: ".getline("."))
     else
      put ='open '.g:netrw_machine
+"     call Decho("filter input: ".getline("."))
     endif
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put =g:netrw_passwd
+"     call Decho("filter input: ".getline("."))
+     put ='\"'.g:netrw_passwd.'\"'
+"     call Decho("filter input: ".getline("."))
     else
-     put ='user '.g:netrw_uid.' '.g:netrw_passwd
+     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
+"     call Decho("filter input: ".getline("."))
     endif
  
     if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
      put =g:netrw_ftpmode
+"     call Decho("filter input: ".getline("."))
     endif
-    put ='get '.netrw_fname.' '.tmpfile
+    put ='get \"'.netrw_fname.'\" '.tmpfile
+"     call Decho("filter input: ".getline("."))
  
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
-"    call Decho('performing ftp -i -n')
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
     exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
@@ -502,7 +518,8 @@
       echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
-     exit
+"     call Dret("NetRead")
+     return
     endif
  
     if match(b:netrw_fname,"#") == -1
@@ -581,7 +598,7 @@
       echohl Error | echo "***netrw*** fetch command not available" | echohl None
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
-     exit
+"     call Dret("NetRead")
     endif
     if exists("g:netrw_option") && g:netrw_option == ":http"
      let netrw_option= "http"
@@ -655,7 +672,7 @@
    endif
   else
    let fname= a:fname
-"   call Decho("(copied) fname<".fname.">")
+"   call Decho("fname=a:fname<".fname.">")
   endif
  
   if a:readcmd[0] == '0'
@@ -688,8 +705,12 @@
    exe a:readcmd." ".v:cmdarg." ".fname
    let line1        = curline + 1
    let line2        = line("$") - lastline + 1
+
   else
    " not readable
+"   call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)")
+   echohl WarningMsg | echo "***netrw*** file <".fname."> not readable"| echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("NetGetFile : fname<".fname."> not readable")
    return
   endif
@@ -729,7 +750,7 @@
   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
    echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!"
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"   call Dret("NetRead")
+"   call Dret("NetWrite")
    return
   endif
  
@@ -839,9 +860,9 @@
     new
     setlocal ff=unix
     exe "put ='".g:netrw_ftpmode."'"
-"    call Decho(" NetWrite: put ='".g:netrw_ftpmode."'")
-    exe "put ='"."put ".tmpfile." ".netrw_fname."'"
-"    call Decho("put ='"."put ".tmpfile." ".netrw_fname."'")
+"    call Decho(" filter input: ".getline("."))
+    exe "put ='"."put ".tmpfile.' \"'.netrw_fname.'\"'."'"
+"    call Decho(" filter input: ".getline("."))
     if exists("g:netrw_port") && g:netrw_port != ""
 "     call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
      exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -868,16 +889,22 @@
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
+"     call Decho("filter input: ".getline("."))
     else
      put ='open '.g:netrw_machine
+"     call Decho("filter input: ".getline("."))
     endif
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put =g:netrw_passwd
+"     call Decho("filter input: ".getline("."))
+     put ='\"'.g:netrw_passwd.'\"'
+"     call Decho("filter input: ".getline("."))
     else
-     put ='user '.g:netrw_uid.' '.g:netrw_passwd
+     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
+"     call Decho("filter input: ".getline("."))
     endif
-    put ='put '.tmpfile.' '.netrw_fname
+    put ='put '.tmpfile.' \"'.netrw_fname.'\"'
+"    call Decho("filter input: ".getline("."))
     " save choice/id/password for future use
     let b:netrw_lastfile = choice
  
@@ -885,7 +912,6 @@
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
-"    call Decho('performing ftp -i -n')
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
     exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
@@ -1056,7 +1082,7 @@
   " analyze a:dirname and g:netrw_list_cmd
   let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
   let dirname = substitute(a:dirname,'\\','/','ge')
-"  call Decho("dirpat<".dirpat.">")
+"  call Decho("dirname<".dirname.">")
   if dirname !~ dirpat
    if !exists("g:netrw_quiet")
     echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None
@@ -1126,9 +1152,9 @@
 "   call Decho("new path<".path.">")
 
    " remote-read the requested file into current buffer
-   enew!
+   keepjumps keepalt enew!
    set ma
-"   call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape))
+"   call Decho("exe file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape))
    exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)
    exe "silent doau BufReadPre ".fname
    silent call netrw#NetRead(method."://".user.machine."/".path)
@@ -1136,7 +1162,7 @@
    keepjumps 1d
 
    " save certain window-oriented variables into buffer-oriented variables
-   call s:BufWinVars()
+   call s:SetBufWinVars()
    call s:NetOptionRestore()
    setlocal nomod
 
@@ -1162,7 +1188,7 @@
    endif
   else
 "   call Decho("generate a new buffer")
-   enew!
+   keepjumps keepalt enew!
   endif
 
   " rename file to reflect where its from
@@ -1200,7 +1226,7 @@
   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
   nnoremap <buffer> <silent> v		:call <SID>NetSplit(1)<cr>
   nnoremap <buffer> <silent> x		:call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
-  nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
+  nnoremap <buffer> <silent> <2-leftmouse>	:call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
   exe 'nnoremap <buffer> <silent> <del>	:call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
   exe 'vnoremap <buffer> <silent> <del>	:call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
   exe 'nnoremap <buffer> <silent> d	:call <SID>NetMakeDir("'.user.machine.'")<cr>'
@@ -1260,6 +1286,7 @@
     if g:netrw_ftp_browse_reject != ""
      exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
     endif
+    silent! keepjumps %s/\r$//e
 
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
@@ -1274,9 +1301,9 @@
     keepjumps norm! 0
 
     " more cleanup
-    exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
-    exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
-    exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+    exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
    endif
 
   else
@@ -1333,33 +1360,33 @@
     keepjumps norm! 0
     endif
 
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e'
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
-    exe w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endif
 
    if line("$") >= w:netrw_bannercnt
     if g:netrw_sort_by =~ "^n"
      call s:SetSort()
      if g:netrw_sort_direction =~ 'n'
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
      else
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
     endif
     if w:netrw_longlist == 1
      " shorten the list to keep its width <= winwidth characters
-     exe "keepjumps silent ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
+     exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
     endif
    endif
   endif
 
-  " cleanup any windows mess at end-of-line
-  keepjumps silent! %s/\r$//e
   call s:NetrwWideListing()
   if line("$") >= w:netrw_bannercnt
+   " place cursor on the top-left corner of the file listing
    exe "keepjumps ".w:netrw_bannercnt
+   norm! 0
   endif
 
   call s:NetOptionRestore()
@@ -1449,7 +1476,7 @@
     let s:netrw_skipbrowse= 1
     echo 'Pressing "a" also works'
    elseif line("$") > w:netrw_bannercnt
-    exe w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endif
 
   elseif w:netrw_longlist == 0
@@ -1690,7 +1717,7 @@
    " create a local copy
    let fname= tempname().".".exten
 "   call Decho("create a local copy of <".a:fname."> as <".fname.">")
-   exe "keepjumps silent bot 1new ".a:fname
+   exe "silent keepjumps bot 1new ".a:fname
    set bh=delete
    exe "w! ".fname
    q
@@ -1765,11 +1792,11 @@
   if w:netrw_method == 2 || w:netrw_method == 5 
    " ftp + <.netrc>:  Method #2
    if a:path != ""
-    put ='cd '.a:path
-"    call Decho("ftp:  cd ".a:path)
+    put ='cd \"'.a:path.'\"'
+"    call Decho('ftp:  '.getline("."))
    endif
    exe "put ='".a:cmd."'"
-"   call Decho("ftp:  ".a:cmd)
+"   call Decho("ftp:  ".getline("."))
 "    redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
    if exists("g:netrw_port") && g:netrw_port != ""
 "    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
@@ -1791,13 +1818,13 @@
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put =g:netrw_passwd
+     put ='\"'.g:netrw_passwd.'\"'
     else
-     put ='user '.g:netrw_uid.' '.g:netrw_passwd
+     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
     endif
  
    if a:path != ""
-    put ='cd '.a:path
+    put ='cd \"'.a:path.'\"'
    endif
    exe "put ='".a:cmd."'"
  
@@ -1815,14 +1842,14 @@
 
   " cleanup for Windows
   if has("win32") || has("win95") || has("win64") || has("win16")
-   keepjumps silent!! %s/\r$//e
+   silent! keepjumps! %s/\r$//e
   endif
   if a:cmd == "dir"
    " infer directory/link based on the file permission string
-   keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
-   keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+   silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+   silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
    if w:netrw_longlist == 0 || w:netrw_longlist == 2
-    exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
+    exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
    endif
   endif
 
@@ -1860,9 +1887,9 @@
    " Prune the list by hiding any files which match
 "   call Decho("pruning <".hide."> listhide<".listhide.">")
    if g:netrw_hide == 1
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$g~'.hide.'~d'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d'
    elseif g:netrw_hide == 2
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d'
    endif
   endwhile
 
@@ -1996,10 +2023,10 @@
      exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
     endif
     exe "silent keepjumps ".newcolstart.','.newcolend.'d'
-    exe w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endwhile
    exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
-   set noma nomod
+   setlocal noma nomod
   endif
 
 "  call Dret("NetrwWideListing")
@@ -2130,9 +2157,12 @@
   if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
    " looks like a "b" was pressed while in the banner region
    if line("$") > w:netrw_bannercnt
-    exe w:netrw_bannercnt
+    exe 'silent keepjumps '.w:netrw_bannercnt
    endif
-   echo ""
+   if &ch > 1
+    " "clear" the message
+    echo ""
+   endif
 "  call Dret("NetBookmarkDir - ignoring")
    return
   endif
@@ -2229,12 +2259,10 @@
 " ---------------------------------------------------------------------
 " NetObtain: obtain file under cursor (for remote browsing support) {{{2
 fun! s:NetObtain()
-  if !exists("s:netrw_users_stl")
-   let s:netrw_users_stl= &stl
-  endif
   let fname= expand("<cWORD>")
-  exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ')
-  redraw!
+
+  " NetrwStatusLine support - for obtaining support
+  call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
 
 "  call Dfunc("NetObtain() method=".w:netrw_method)
   if exists("w:netrw_method") && w:netrw_method =~ '[235]'
@@ -2277,11 +2305,11 @@
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put =g:netrw_passwd
+     put ='\"'.g:netrw_passwd.'\"'
 "     call Decho('ftp:  g:netrw_uid')
 "     call Decho('ftp:  g:netrw_passwd')
     else
-     put ='user '.g:netrw_uid.' '.g:netrw_passwd
+     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
 "     call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
     endif
  
@@ -2306,12 +2334,14 @@
     " restore
     exe "silent! ".endline.",$d"
     exe "keepjumps ".curline
-    set noma nomod
+    setlocal noma nomod
    else
     if !exists("g:netrw_quiet")
      echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
+    let &stl        = s:netrw_users_stl
+    let &laststatus = s:netrw_users_ls
 "    call Dret("NetObtain")
     return
    endif
@@ -2335,7 +2365,8 @@
   endif
 
   " restore status line
-  let &stl= s:netrw_users_stl
+  let &stl        = s:netrw_users_stl
+  let &laststatus = s:netrw_users_ls
   redraw!
 
 "  call Dret("NetObtain")
@@ -2404,7 +2435,7 @@
 
   " get cleared buffer
   if bufnum < 0 || !bufexists(bufnum)
-   keepalt enew!
+   keepjumps keepalt enew!
 "   call Decho("enew buffer")
   else
    exe "keepalt b ".bufnum
@@ -2496,7 +2527,7 @@
   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
   nnoremap <buffer> <silent> v		:call <SID>NetSplit(3)<cr>
   nnoremap <buffer> <silent> x		:call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
-  nnoremap <buffer> <silent> <2-leftmouse> :exe "call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))"<cr>
+  nnoremap <buffer> <silent> <2-leftmouse>	:call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
   nnoremap <buffer> <silent> <s-up>	:Pexplore<cr>
   nnoremap <buffer> <silent> <s-down>	:Nexplore<cr>
   exe 'nnoremap <buffer> <silent> <del>	:call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
@@ -2574,19 +2605,19 @@
      call s:SetSort()
 
      if g:netrw_sort_direction =~ 'n'
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
      else
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
 
     else
      if g:netrw_sort_direction =~ 'n'
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
      else
-      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
+      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
     endif
 
    endif
@@ -2594,14 +2625,16 @@
 
   call s:NetrwWideListing()
   if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
-   exe w:netrw_bannercnt
+   " place cursor on the top-left corner of the file listing
+   exe 'silent '.w:netrw_bannercnt
+   norm! 0
   endif
 
   " record previous current directory
   let w:netrw_prvdir= b:netrw_curdir
 
   " save certain window-oriented variables into buffer-oriented variables
-  call s:BufWinVars()
+  call s:SetBufWinVars()
   call s:NetOptionRestore()
   setlocal noma nomod nonu bh=hide nobl
 
@@ -2701,7 +2734,7 @@
   endwhile
   
   " cleanup any windows mess at end-of-line
-  keepjumps silent! %s/\r$//e
+  silent! keepjumps %s/\r$//e
   setlocal ts=32
 
 "  call Dret("LocalBrowseList")
@@ -3032,12 +3065,8 @@
      endif
     endif
 
-    " NetrwStatusLine support
+    " NetrwStatusLine support - for exploring support
     let w:netrw_explore_indx= indx
-    if !exists("s:netrw_users_stl")
-     let s:netrw_users_stl= &stl
-    endif
-    set stl=%f\ %h%m%r%=%{NetrwStatusLine()}
 "    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
 
     " sanity check
@@ -3050,15 +3079,21 @@
     endif
 
     exe "let dirfile= w:netrw_explore_list[".indx."]"
-"    call Decho("dirfile<".dirfile."> indx=".indx)
+"    call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
     let newdir= substitute(dirfile,'/[^/]*$','','e')
 "    call Decho("newdir<".newdir.">")
+
 "    call Decho("calling LocalBrowse(newdir<".newdir.">)")
     call s:LocalBrowse(newdir)
-    call search(substitute(dirfile,"^.*/","",""),"W")
+    if w:netrw_longlist == 0 || w:netrw_longlist == 1
+     call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
+    else
+     call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
+    endif
     let w:netrw_explore_mtchcnt = indx + 1
     let w:netrw_explore_bufnr   = bufnr(".")
     let w:netrw_explore_line    = line(".")
+    call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
 "    call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
 
    else
@@ -3078,12 +3113,73 @@
 endfun
 
 " ---------------------------------------------------------------------
+" SetupNetrwStatusLine: {{{2
+fun! s:SetupNetrwStatusLine(statline)
+"  call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
+
+  if !exists("s:netrw_setup_statline")
+   let s:netrw_setup_statline= 1
+"   call Decho("do first-time status line setup")
+
+   if !exists("s:netrw_users_stl")
+    let s:netrw_users_stl= &stl
+   endif
+   if !exists("s:netrw_users_ls")
+    let s:netrw_users_ls= &laststatus
+   endif
+
+   " set up User9 highlighting as needed
+   let keepa= @a
+   redir @a
+   try
+    hi User9
+   catch /^Vim\%((\a\+)\)\=:E411/
+    if &bg == "dark"
+     hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
+    else
+     hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
+    endif
+   endtry
+   redir END
+   let @a= keepa
+  endif
+
+  " set up status line (may use User9 highlighting)
+  " insure that windows have a statusline
+  " make sure statusline is displayed
+  let &stl=a:statline
+  set laststatus=2
+"  call Decho("stl=".&stl)
+  redraw!
+
+"  call Dret("SetupNetrwStatusLine : stl=".&stl)
+endfun
+
+" ---------------------------------------------------------------------
 " NetrwStatusLine: {{{2
 fun! NetrwStatusLine()
-"  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
+
+  " vvv NetrwStatusLine() debugging vvv
+"  let g:stlmsg=""
+"  if !exists("w:netrw_explore_bufnr")
+"   let g:stlmsg="!X<explore_bufnr>"
+"  elseif w:netrw_explore_bufnr != bufnr(".")
+"   let g:stlmsg="explore_bufnr!=".bufnr(".")
+"  endif
+"  if !exists("w:netrw_explore_line")
+"   let g:stlmsg=" !X<explore_line>"
+"  elseif w:netrw_explore_line != line(".")
+"   let g:stlmsg=" explore_line!={line(.)<".line(".").">"
+"  endif
+"  if !exists("w:netrw_explore_list")
+"   let g:stlmsg=" !X<explore_list>"
+"  endif
+  " ^^^ NetrwStatusLine() debugging ^^^
+
   if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
    " restore user's status line
-   let &stl= s:netrw_users_stl
+   let &stl        = s:netrw_users_stl
+   let &laststatus = s:netrw_users_ls
    if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
    if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
    return ""
@@ -3146,7 +3242,7 @@
   let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
   let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
   let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
-  let scpurm   = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
+  let scpurm   = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
   let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
   let davurm   = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
   let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
@@ -3336,6 +3432,7 @@
 "  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
   let g:netrw_passwd=a:2
  endif
+
 "  call Dret("NetUserPass")
 endfun
 
@@ -3357,20 +3454,21 @@
    let w:acdkeep = &autochdir
    set noautochdir
   endif
-  let w:cinkeep  = &cin
-  let w:cinokeep = &cino
-  let w:comkeep  = &com
-  let w:cpokeep  = &cpo
+  let w:cinkeep   = &cin
+  let w:cinokeep  = &cino
+  let w:comkeep   = &com
+  let w:cpokeep   = &cpo
   if !g:netrw_keepdir
-   let w:dirkeep = getcwd()
+   let w:dirkeep  = getcwd()
   endif
-  let w:gdkeep   = &gd
-  let w:repkeep  = &report
-  let w:twkeep   = &tw
+  let w:gdkeep    = &gd
+  let w:repkeep   = &report
+  let w:spellkeep = &spell
+  let w:twkeep    = &tw
   setlocal cino =
   setlocal com  =
   setlocal cpo -=aA
-  setlocal nocin noai
+  setlocal nocin noai nospell
   setlocal tw   =0
   setlocal report=10000
   if has("win32") && !has("win95")
@@ -3392,22 +3490,22 @@
   endif
   unlet w:netoptionsave
  
-  let &ai	= w:aikeep
-  if has("netbeans_intg") || has("sun_workshop")
-   let &acd     = w:acdkeep
+  if exists("w:aikeep")| let &ai= w:aikeep|endif
+  if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
+   let &acd= w:acdkeep
+   unlet w:acdkeep
   endif
-  let &cin	= w:cinkeep
-  let &cino	= w:cinokeep
-  let &com	= w:comkeep
-  let &cpo	= w:cpokeep
-  if exists("w:dirkeep")
-   exe "lcd ".w:dirkeep
-  endif
-  let &gd	= w:gdkeep
-  let &report   = w:repkeep
-  let &tw	= w:twkeep
+  if exists("w:cinkeep")  |let &cin    = w:cinkeep     |unlet w:cinkeep  |endif
+  if exists("w:cinokeep") |let &cino   = w:cinokeep    |unlet w:cinokeep |endif
+  if exists("w:comkeep")  |let &com    = w:comkeep     |unlet w:comkeep  |endif
+  if exists("w:cpokeep")  |let &cpo    = w:cpokeep     |unlet w:cpokeep  |endif
+  if exists("w:dirkeep")  |exe "lcd ".w:dirkeep        |unlet w:dirkeep  |endif
+  if exists("w:gdkeep")   |let &gd     = w:gdkeep      |unlet w:gdkeep   |endif
+  if exists("w:repkeep")  |let &report = w:repkeep     |unlet w:repkeep  |endif
+  if exists("w:spellkeep")|let &spell  = w:spellkeep   |unlet w:spellkeep|endif
+  if exists("w:twkeep")   |let &tw     = w:twkeep      |unlet w:twkeep   |endif
   if exists("w:swfkeep")
-   if &directory == ""
+   if &directory == "" && exists("w:swfkeep")
     " user hasn't specified a swapfile directory;
     " netrw will temporarily make the swapfile
     " directory the current local one.
@@ -3419,17 +3517,6 @@
    endif
    unlet w:swfkeep
   endif
-  unlet w:aikeep
-  unlet w:cinkeep
-  unlet w:cinokeep
-  unlet w:comkeep
-  unlet w:cpokeep
-  unlet w:gdkeep
-  unlet w:repkeep
-  unlet w:twkeep
-  if exists("w:dirkeep")
-   unlet w:dirkeep
-  endif
  
 "  call Dret("NetOptionRestore")
 endfun
@@ -3441,7 +3528,7 @@
 "               example and as a fix for a Windows 95 problem: in my
 "               experience, win95's ftp always dumped four blank lines
 "               at the end of the transfer.
-if has("win95") && g:netrw_win95ftp
+if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
  fun! NetReadFixup(method, line1, line2)
 "   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
    if method == 3   " ftp (no <.netrc>)
@@ -3542,14 +3629,14 @@
     return
    endif
    if seq == '*'
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
    else
-    exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
    endif
    let priority = priority + 1
   endwhile
 
-  exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
+  exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
 
 "  call Dret("SetSort")
 endfun
@@ -3587,14 +3674,14 @@
 endfun
 
 " ---------------------------------------------------------------------
-" BufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
+" SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
 "   To allow separate windows to have their own activities, such as
 "   Explore **/pattern, several variables have been made window-oriented.
 "   However, when the user splits a browser window (ex: ctrl-w s), these
-"   variables are not inherited by the new window.  BufWinVars() and
+"   variables are not inherited by the new window.  SetBufWinVars() and
 "   UseBufWinVars() get around that.
-fun! s:BufWinVars()
-"  call Dfunc("BufWinVars()")
+fun! s:SetBufWinVars()
+"  call Dfunc("SetBufWinVars()")
   if exists("w:netrw_longlist")       |let b:netrw_longlist        = w:netrw_longlist       |endif
   if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt       = w:netrw_bannercnt      |endif
   if exists("w:netrw_method")         |let b:netrw_method          = w:netrw_method         |endif
@@ -3605,7 +3692,7 @@
   if exists("w:netrw_explore_bufnr")  |let b:netrw_explore_bufnr   = w:netrw_explore_bufnr  |endif
   if exists("w:netrw_explore_line")   |let b:netrw_explore_line    = w:netrw_explore_line   |endif
   if exists("w:netrw_explore_list")   |let b:netrw_explore_list    = w:netrw_explore_list   |endif
-"  call Dret("BufWinVars")
+"  call Dret("SetBufWinVars")
 endfun
 
 " ---------------------------------------------------------------------
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 39a6f40..3400094 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Sep 25
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Sep 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3649,8 +3649,11 @@
 	value is for C programs.  This option is used for the commands "[i",
 	"]I", "[d", etc.
 	Normally the 'isfname' option is used to recognize the file name that
-	comes after the matched pattern.  But if both "\zs" and "\ze" appear
-	in the pattern then the text spanned by them is used as the file name.
+	comes after the matched pattern.  But if "\zs" appears in the pattern
+	then the text matched from "\zs" to the end, or until "\ze" if it
+	appears, is used as the file name.  Use this to include characters
+	that are not in 'isfname', such as a space.  You can then use
+	'includeexpr' to process the matched text.
 	See |option-backslash| about including spaces and backslashes.
 
 						*'includeexpr'* *'inex'*
@@ -3699,7 +3702,7 @@
 	'smartindent' indenting.
 	When 'paste' is set this option is not used for indenting.
 	The expression is evaluated with |v:lnum| set to the line number for
-	which the indent is to be computed.  The cursor is also as this line
+	which the indent is to be computed.  The cursor is also in this line
 	when the expression is evaluated (but it may be moved around).
 	The expression must return the number of spaces worth of indent.  It
 	can return "-1" to keep the current indent (this means 'autoindent' is
@@ -5662,13 +5665,13 @@
 			global
 			{not in Vi}
 	The minimal number of screen columns to keep to the left and to the
-	right of the cursor if 'nowrap' is set.  Setting this option to a value
-	greater than 0 while having |'sidescroll'| also at a non-zero value
-	makes some context visible in the line you are scrolling in
-	horizontally (except at the end and beginning of the line).  Setting
-	this option to a large value (like 999) has the effect of keeping the
-	cursor horizontally centered in the window, as long as one does not
-	come too close to the beginning or end of the line.
+	right of the cursor if 'nowrap' is set.  Setting this option to a
+	value greater than 0 while having |'sidescroll'| also at a non-zero
+	value makes some context visible in the line you are scrolling in
+	horizontally (except at beginning of the line).  Setting this option
+	to a large value (like 999) has the effect of keeping the cursor
+	horizontally centered in the window, as long as one does not come too
+	close to the beginning of the line.
 	NOTE: This option is set to 0 when 'compatible' is set.
 
 	Example: Try this together with 'sidescroll' and 'listchars' as
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index d1ca623..0ec61fc 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,8 +1,8 @@
-*pi_netrw.txt*  For Vim version 7.0.  Last change: Aug 25, 2005
-
+*pi_netrw.txt*  For Vim version 7.0.  Last change: Sep 29, 2005
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
+
 *dav*           *http*          *network*       *rcp*           *scp*
 *fetch*         *netrw*         *Nread*         *rsync*         *sftp*
 *ftp*           *netrw.vim*     *Nwrite*        *netrw-file*
@@ -25,7 +25,7 @@
 4.  Transparent File Transfer............................|netrw-transparent|
 5.  Ex Commands..........................................|netrw-ex|
 6.  Variables and Options................................|netrw-var|
-7.  Directory Browser....................................|netrw-browse| {{{1
+7.  Directory Browsing...................................|netrw-browse| {{{1
       Maps...............................................|netrw-maps|
       Exploring..........................................|netrw-explore-cmds|
       Quick Reference Commands Table.....................|netrw-browse-cmds|
@@ -40,7 +40,7 @@
       Making A New Directory.............................|netrw-d|
       Deleting Files Or Directories......................|netrw-delete|
       Renaming Files Or Directories......................|netrw-move|
-      Hiding Files Or Directories........................|g:netrw-a|
+      Hiding Files Or Directories........................|netrw-a|
       Edit File Or Directory Hiding List.................|netrw-h|
       Browsing With A Horizontally Split Window..........|netrw-o|
       Preview Window.....................................|netrw-p|
@@ -194,8 +194,8 @@
 2. Network-Oriented File Transfer				*netrw-xfer*
 
 Network-oriented file transfer under Vim is implemented by a VimL-based script
-(<netrw.vim>) using plugin techniques.  It currently supports both reading
-and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
+(<netrw.vim>) using plugin techniques.  It currently supports both reading and
+writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
 dav/cadaver, rsync, or sftp.
 
 http is currently supported read-only via use of wget or fetch.
@@ -206,24 +206,23 @@
 
 	ex. vim ftp://hostname/path/to/file
 <
-The characters preceding the colon specify the protocol to use;
-in the example, its ftp.  The <netrw.vim> script then formulates
-a command or a series of commands (typically ftp) which it issues
-to an external program (ftp, scp, etc) which does the actual file
-transfer/protocol.  Files are read from/written to a temporary file
-(under Unix/Linux, /tmp/...) which the <netrw.vim> script will
-clean up.
+The characters preceding the colon specify the protocol to use; in the
+example, its ftp.  The <netrw.vim> script then formulates a command or a
+series of commands (typically ftp) which it issues to an external program
+(ftp, scp, etc) which does the actual file transfer/protocol.  Files are read
+from/written to a temporary file (under Unix/Linux, /tmp/...) which the
+<netrw.vim> script will clean up.
 
-One may modify any protocol's implementing external application
-by setting a variable (ex. scp uses the variable g:netrw_scp_cmd,
-which is defaulted to "scp -q").
+One may modify any protocol's implementing external application by setting a
+variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
+"scp -q").
 
 Ftp, an old protocol, seems to be blessed by numerous implementations.
-Unfortunately, some implementations are noisy (ie., add junk to the end
-of the file).  Thus, concerned users may decide to write a NetReadFixup()
-function that will clean up after reading with their ftp.  Some Unix systems
-(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
-but is not noisy and more convenient, actually, for <netrw.vim> to use.
+Unfortunately, some implementations are noisy (ie., add junk to the end of the
+file).  Thus, concerned users may decide to write a NetReadFixup() function
+that will clean up after reading with their ftp.  Some Unix systems (ie.,
+FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is
+not noisy and more convenient, actually, for <netrw.vim> to use.
 Consequently, if "fetch" is executable, it will be used to do reads for
 ftp://... (and http://...) .  See |netrw-var| for more about this.
 
@@ -332,8 +331,9 @@
 a built-in Vim function.  See |netrw-uidpass| for how to change the password
 after one has set it.
 
-Unfortunately there doesn't appear to be a way for netrw to feed a password
-to scp.  Thus every transfer via scp will require re-entry of the password.
+Unfortunately there doesn't appear to be a way for netrw to feed a password to
+scp.  Thus every transfer via scp will require re-entry of the password.
+However, |netrw-listhack| can help with this problem.
 
 
 ==============================================================================
@@ -341,21 +341,28 @@
 
 Network-oriented file transfers are available by default whenever
 |'nocompatible'| mode is enabled.  The <netrw.vim> file resides in your
-system's vim-plugin directory and is sourced automatically whenever you
-bring up vim.
-
+system's vim-plugin directory and is sourced automatically whenever you bring
+up vim.  I suggest that, at a minimum, you have at least the following in your
+<.vimrc> customization file: >
+	set nocp
+	if version >= 600
+	  filetype plugin indent on
+	endif
+<
 
 ==============================================================================
 4. Transparent File Transfer				*netrw-transparent*
 
 Transparent file transfers occur whenever a regular file read or write
 (invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made.
-Thus one may use files across networks as if they were local. >
+Thus one may use files across networks just as simply as if they were local. >
 
 	vim ftp://[user@]machine/path
 	...
 	:wq
 
+See |netrw-activate| for more on how to encourage your vim to use plugins
+such as netrw.
 
 ==============================================================================
 5. Ex Commands						*netrw-ex*
@@ -369,15 +376,14 @@
 :[range]Nw {netfile} [{netfile}]...
 		Write the specified lines to the {netfile}.
 
-:Nread
-		Read the specified lines into the current
+:Nread		Read the specified lines into the current
 		buffer from the file specified in
 		b:netrw_lastfile.
 
 :Nread {netfile} {netfile}...
 		Read the {netfile} after the current line.
 
-									*netrw-uidpass*
+								*netrw-uidpass*
 :call NetUserPass()
 		If b:netrw_uid and b:netrw_passwd don't exist,
 		this function query the user for them.
@@ -401,10 +407,11 @@
 
 The script <netrw.vim> uses several variables which can affect <netrw.vim>'s
 behavior.  These variables typically may be set in the user's <.vimrc> file:
->
-                                -------------
-                           	Netrw Options
-                                -------------
+(also see |netrw-settings|) >
+
+                        -------------
+                        Netrw Options
+                        -------------
 	Option			Meaning
 	--------------		-----------------------------------------------
 <
@@ -427,7 +434,7 @@
 	g:netrw_silent          =0 transfers done normally
 	                        =1 transfers done silently
         g:netrw_uid             Holds current user-id for ftp.
-                                =1 use alternate ftp          (user uid password)
+                                =1 use alternate ftp         (user uid password)
                                 (see |netrw-options|)
         g:netrw_use_nt_rcp      =0 don't use WinNT/2K/XP's rcp (default)
                                 =1 use WinNT/2K/XP's rcp, binary mode
@@ -481,12 +488,12 @@
     -------------------------------------------------------------------------
 <
 								*netrw-ftp*
-The first two options both help with certain ftp's that give trouble otherwise.
-In order to best understand how to use these options if ftp is giving you
-troubles, a bit of discussion follows on how netrw does ftp reads.
+The first two options both help with certain ftp's that give trouble
+otherwise.  In order to best understand how to use these options if ftp is
+giving you troubles, a bit of discussion follows on how netrw does ftp reads.
 
-The g:netrw_..._cmd variables specify the external program to use handle
-the associated protocol (rcp, ftp, etc), plus any options.
+The g:netrw_..._cmd variables specify the external program to use handle the
+associated protocol (rcp, ftp, etc), plus any options.
 
 The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with
 whatever the current request is for a hostname.
@@ -519,8 +526,8 @@
 The temporary file is then read into the main editing session window that
 requested it and the temporary file deleted.
 
-If your ftp doesn't accept the "user" command and immediately just demands
-a userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
+If your ftp doesn't accept the "user" command and immediately just demands a
+userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
 
 								*netrw-cadaver*
 To handle the SSL certificate dialog for untrusted servers, one may pull
@@ -547,12 +554,12 @@
       endif
     endfunction
 >
-The NetReadFixup() function will be called if it exists and thus allows
-you to customize your reading process.  As a further example, <netrw.vim>
-contains just such a function to handle Windows 95 ftp.  For whatever
-reason, Windows 95's ftp dumps four blank lines at the end of a transfer,
-and so it is desirable to automate their removal.  Here's some code taken
-from <netrw.vim> itself:
+The NetReadFixup() function will be called if it exists and thus allows you to
+customize your reading process.  As a further example, <netrw.vim> contains
+just such a function to handle Windows 95 ftp.  For whatever reason, Windows
+95's ftp dumps four blank lines at the end of a transfer, and so it is
+desirable to automate their removal.  Here's some code taken from <netrw.vim>
+itself:
 >
     if has("win95") && g:netrw_win95ftp
      fun! NetReadFixup(method, line1, line2)
@@ -565,7 +572,7 @@
 >
 
 ==============================================================================
-7. Directory Browser	*netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
+7. Directory Browsing	*netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
 
 MAPS   								*netrw-maps*
      ?................Help.......................................|netrw-help|
@@ -732,7 +739,7 @@
 INTRODUCTION TO DIRECTORY BROWSING			*netrw-browse-intro*
 
 Netrw supports the browsing of directories on the local system and on remote
-hosts, including generating listing directories, entering directories, editing
+hosts, including listing files and directories, entering directories, editing
 files therein, deleting files/directories, making new directories, and moving
 (renaming) files and directories.  The Netrw browser generally implements the
 previous explorer maps and commands for remote directories, although details
@@ -743,13 +750,15 @@
 in its remote browsing.  Any other protocol will be used for file transfers,
 but otherwise the ssh protocol will be used to do remote directory browsing.
 
-To enter the netrw directory browser, simply attempt to read a "file" with a
+To use Netrw's remote directory browser, simply attempt to read a "file" with a
 trailing slash and it will be interpreted as a request to list a directory:
 
 	vim [protocol]://[user@]hostname/path/
 
-If you'd like to avoid entering the password in for directory listings, scp,
-ssh interaction, etc, see |netrw-listhack|.
+For local directories, the trailing slash is not required.
+
+If you'd like to avoid entering the password in for remote directory listings
+with ssh or scp, see |netrw-listhack|.
 
 				*netrw-explore*  *netrw-pexplore*
 				*netrw-hexplore* *netrw-sexplore*
@@ -783,7 +792,8 @@
 may explicitly provide a directory (path) to use.
 
 (Following needs v7.0 or later)			*netrw-starstar*
-When Explore, Sexplore, Hexplore, or Vexplore are used like
+When Explore, Sexplore, Hexplore, or Vexplore are used with a **,
+such as:
 >
 	:Explore **/filename_pattern
 <
@@ -797,7 +807,8 @@
 matching file.  One may then proceed to the next (or previous) matching files'
 directories by using Nexplore or Pexplore, respectively.  If your console or
 gui produces recognizable shift-up or shift-down sequences, then you'll likely
-find the following mappings convenient:
+find using shift-downarrow and shift-uparrow convenient.  They're mapped by
+netrw:
 
 	<s-down>  == Nexplore, and
 	<s-up>    == Pexplore.
@@ -822,11 +833,12 @@
 
 GOING UP						*netrw--*
 
-To go up a directory, press - or his the <cr> when atop the ../ directory
+To go up a directory, press - or press the <cr> when atop the ../ directory
 entry in the listing.
 
-Netrw will modify the command in |g:netrw_list_cmd| to perform the directory
-listing operation.  By default the command is:
+Netrw will use the command in |g:netrw_list_cmd| to perform the directory
+listing operation after changing HOSTNAME to the host specified by the
+user-provided url.  By default netrw provides the command as:
 
 	ssh HOSTNAME ls -FLa
 
@@ -841,7 +853,13 @@
 Browsing is simple: move the cursor onto a file or directory of interest.
 Hitting the <cr> (the return key) will select the file or directory.
 Directories will themselves be listed, and files will be opened using the
-protocol given in the original read request.
+protocol given in the original read request.  
+
+  CAVEAT: There are three forms of listing (see |netrw-i|).  Netrw assumes
+  that two or more spaces delimit filenames and directory names for the long
+  and wide listing formats.  Thus, if your filename or directory name has two
+  or more spaces embedded in it, or any trailing spaces, then you'll need to
+  use the "thin" format to select it.
 
 
 OBTAINING A FILE						*netrw-O*
@@ -849,7 +867,21 @@
 When browsing a remote directory, one may obtain a file under the cursor (ie.
 get a copy on your local machine, but not edit it) by pressing the O key.
 Only ftp and scp are supported for this operation (but since these two are
-available for browsing, that shouldn't be a problem).
+available for browsing, that shouldn't be a problem).  The status bar
+will then show, on its right hand side, a message like "Obtaining filename".
+The statusline will be restored after the transfer is complete.
+
+Netrw can also "obtain" a file using the local browser.  Netrw's display
+of a directory is not necessarily the same as Vim's "current directory",
+unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>.  One may select
+a file using the local browser (by putting the cursor on it) and pressing
+"O" will then "obtain" the file; ie. copy it to Vim's current directory.
+
+Related topics:
+ * To see what the current directory is, use |:pwd|
+ * To make the currently browsed directory the current directory, see |netrw-c|
+ * To automatically make the currently browsed directory the current
+   directory, see |g:netrw_keepdir|.
 
 
 THIN, LONG, AND WIDE LISTINGS					*netrw-i*
@@ -859,21 +891,27 @@
 The short listing format gives just the files' and directories' names.
 
 The long listing is either based on the "ls" command via ssh for remote
-directories or displays the filename, file size (in bytes), and the
-time and date of last modification for local directories.
+directories or displays the filename, file size (in bytes), and the time and
+date of last modification for local directories.  With the long listing
+format, netrw is not able to recognize filenames which have trailing spaces.
+Use the thin listing format for such files.
 
-The wide listing format has a multi-column display of the various
-files in the netrw current directory, rather like the Unix "ls" presents.
-In this mode the "b" and "B" maps are not available; instead, use
-Nb (|netrw-Nb|) and NB (|netrw-NB|).
+The wide listing format has a multi-column display of the various files in the
+netrw current directory, rather like the Unix "ls" presents.  In this mode the
+"b" and "B" maps are not available; instead, use Nb (|netrw-Nb|) and NB
+(|netrw-NB|).  The wide listing format uses two or more contiguous spaces to
+delineate filenames; when using that format, netrw won't be able to recognize
+or use filenames which have two or more contiguous spaces embedded in the name
+or any trailing spaces.  The thin listing format will, however, work with such
+files.
 
 
 MAKING A NEW DIRECTORY						*netrw-d*
 
-With the "d" map one may make a new directory either remotely (which
-depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on
-the global variable g:netrw_local_mkdir).  Netrw will issue a request for the
-new directory's name.  A bare <CR> at that point will abort the making of the
+With the "d" map one may make a new directory either remotely (which depends
+on the global variable g:netrw_mkdir_cmd) or locally (which depends on the
+global variable g:netrw_local_mkdir).  Netrw will issue a request for the new
+directory's name.  A bare <CR> at that point will abort the making of the
 directory.  Attempts to make a local directory that already exists (as either
 a file or a directory) will be detected, reported on, and ignored.
 
@@ -881,12 +919,12 @@
 DELETING FILES OR DIRECTORIES			*netrw-delete* *netrw-D*
 
 Deleting/removing files and directories involves moving the cursor to the
-file/directory to be deleted and pressing "D".  Directories must be empty first
-before they can be successfully removed.  If the directory is a softlink to a
-directory, then netrw will make two requests to remove the directory before
-succeeding.  Netrw will ask for confirmation before doing the removal(s).
-You may select a range of lines with the "V" command (visual selection),
-and then pressing "D".
+file/directory to be deleted and pressing "D".  Directories must be empty
+first before they can be successfully removed.  If the directory is a softlink
+to a directory, then netrw will make two requests to remove the directory
+before succeeding.  Netrw will ask for confirmation before doing the
+removal(s).  You may select a range of lines with the "V" command (visual
+selection), and then pressing "D".
 
 The g:netrw_rm_cmd, g:netrw_rmf_cmd, and g:netrw_rmdir_cmd variables are used
 to control the attempts to remove files and directories.  The g:netrw_rm_cmd
@@ -921,19 +959,19 @@
 the V (|linewise-visual|).
 
 
-HIDING FILES OR DIRECTORIES				*g:netrw-a*
+HIDING FILES OR DIRECTORIES				*netrw-a*
 
-Netrw's browsing facility allows one to use the hiding list in one of
-three ways: ignore it, hide files which match, and show only those files
-which match.  The "a" map allows the user to cycle about these three ways.
+Netrw's browsing facility allows one to use the hiding list in one of three
+ways: ignore it, hide files which match, and show only those files which
+match.  The "a" map allows the user to cycle about these three ways.
 
-The g:netrw_list_hide variable holds a comma delimited list of patterns
-(ex. \.obj) which specify the hiding list. (also see |netrw-h|)  To
-set the hiding list, use the <c-h> map.  As an example, to hide files
-which begin with a ".", one may use the <c-h> map to set the hiding
-list to '^\..*' (or one may put  let g:netrw_list_hide= '^\..*' in
-one's <.vimrc>).  One may then use the "a" key to show all files,
-hide matching files, or to show only the matching files.
+The g:netrw_list_hide variable holds a comma delimited list of patterns (ex.
+\.obj) which specify the hiding list. (also see |netrw-h|)  To set the hiding
+list, use the <c-h> map.  As an example, to hide files which begin with a ".",
+one may use the <c-h> map to set the hiding list to '^\..*' (or one may put
+let g:netrw_list_hide= '^\..*' in one's <.vimrc>).  One may then use the "a"
+key to show all files, hide matching files, or to show only the matching
+files.
 
 
 EDIT FILE OR DIRECTORY HIDING LIST		*netrw-h* *netrw-edithide*
@@ -941,7 +979,8 @@
 The "<ctrl-h>" map brings up a requestor allowing the user to change the
 file/directory hiding list.  The hiding list consists of one or more patterns
 delimited by commas.  Files and/or directories satisfying these patterns will
-either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
+either be hidden (ie. not shown) or be the only ones displayed (see
+|netrw-a|).
 
 
 BROWSING WITH A HORIZONTALLY SPLIT WINDOW		*netrw-o* *netrw-horiz*
@@ -950,9 +989,9 @@
 allows one to open a new window to hold the new directory listing or file.  A
 horizontal split is used.  (for vertical splitting, see |netrw-v|)
 
-Normally, the o key splits the window horizontally with the new window
-and cursor at the top.  To change to splitting the window horizontally
-with the new window and cursor at the bottom, have
+Normally, the o key splits the window horizontally with the new window and
+cursor at the top.  To change to splitting the window horizontally with the
+new window and cursor at the bottom, have
 
 	let g:netrw_alto = 1
 
@@ -961,30 +1000,30 @@
 
 PREVIEW WINDOW					*netrw-p* *netrw-preview*
 
-One may use a preview window (currently only for local browsing) by using
-the "p" key when the cursor is atop the desired filename to be previewed.
+One may use a preview window (currently only for local browsing) by using the
+"p" key when the cursor is atop the desired filename to be previewed.
 
 
 SELECTING SORTING STYLE				*netrw-s* *netrw-sort*
 
-One may select the sorting style by name, time, or (file) size.  The
-"s" map allows one to circulate amongst the three choices; the directory
-listing will automatically be refreshed to reflect the selected style.
+One may select the sorting style by name, time, or (file) size.  The "s" map
+allows one to circulate amongst the three choices; the directory listing will
+automatically be refreshed to reflect the selected style.
 
 
 EDITING THE SORTING SEQUENCE		*netrw-S* *netrw-sortsequence*
 
-When "Sorted by" is name, one may specify priority via the sorting
-sequence (g:netrw_sort_sequence).  The sorting sequence typically
-prioritizes the name-listing by suffix, although any pattern will do.
-Patterns are delimited by commas.  The default sorting sequence is:
+When "Sorted by" is name, one may specify priority via the sorting sequence
+(g:netrw_sort_sequence).  The sorting sequence typically prioritizes the
+name-listing by suffix, although any pattern will do.  Patterns are delimited
+by commas.  The default sorting sequence is:
 >
 	[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$
 <
-The lone * is where all filenames not covered by one of the other
-patterns will end up.  One may change the sorting sequence by modifying
-the g:netrw_sort_sequence variable (either manually or in your <.vimrc>)
-or by using the "S" map.
+The lone * is where all filenames not covered by one of the other patterns
+will end up.  One may change the sorting sequence by modifying the
+g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by
+using the "S" map.
 
 
 REVERSING SORTING ORDER			*netrw-r* *netrw-reverse*
@@ -1011,20 +1050,20 @@
 
 BROWSING WITH A VERTICALLY SPLIT WINDOW				*netrw-v*
 
-Normally one enters a file or directory using the <cr>.  However, the "v"
-map allows one to open a new window to hold the new directory listing or
-file.  A vertical split is used.  (for horizontal splitting, see |netrw-o|)
+Normally one enters a file or directory using the <cr>.  However, the "v" map
+allows one to open a new window to hold the new directory listing or file.  A
+vertical split is used.  (for horizontal splitting, see |netrw-o|)
 
-Normally, the v key splits the window vertically with the new window
-and cursor at the left.  To change to splitting the window vertically
-with the new window and cursor at the right, have
+Normally, the v key splits the window vertically with the new window and
+cursor at the left.  To change to splitting the window vertically with the new
+window and cursor at the right, have
 
 	let g:netrw_altv = 1
 
 in your <.vimrc>.
 
 
-CUSTOMIZING BROWSING WITH A USER FUNCTION		*netrw-x* *netrw-handler*
+CUSTOMIZING BROWSING WITH A USER FUNCTION	*netrw-x* *netrw-handler*
 
 One may "enter" a file with a special handler, thereby firing up a browser or
 other application, for example, on a file by hitting the "x" key.  The special
@@ -1036,9 +1075,9 @@
   * otherwise the NetrwFileHandler plugin is used.
 
 The file's suffix is used by these various approaches to determine an
-appropriate application to use to "handle" these files.  Such things
-as OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript
-(*.ps, *.eps) can be handled.
+appropriate application to use to "handle" these files.  Such things as
+OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
+*.eps) can be handled.
 
 The NetrwFileHandler applies a user-defined function to a file, based on its
 extension.  Of course, the handler function must exist for it to be called!
@@ -1063,8 +1102,8 @@
 currently browsed directory be the current directory.
 
 With the default setting for g:netrw_keepdir, in order to make the two
-directories the same, use the "c" map (just type c).  That map will set
-the current directory to the current browsing directory.
+directories the same, use the "c" map (just type c).  That map will set the
+current directory to the current browsing directory.
 
 
 BOOKMARKING A DIRECTORY		*netrw-b* *netrw-bookmark* *netrw-bookmarks*
@@ -1087,8 +1126,8 @@
 
 	{cnt}B
 
-Any count may be used to reference any of the bookmarks.  See |netrw-b|
-for how to bookmark a directory and |netrw-q| for how to list them.
+Any count may be used to reference any of the bookmarks.  See |netrw-b| on
+how to bookmark a directory and |netrw-q| on how to list bookmarks.
 
 When wide listing is in use (see |netrw-i|), then the B map is not available;
 instead, use {cnt}NB.
@@ -1118,9 +1157,9 @@
 With the NetrwSettings.vim plugin, >
 	:NetrwSettings
 will bring up a window with the many variables that netrw uses for its
-settings.  You may change any of their values; when you save the file,
-the settings therein will be used.  One may also press "?" on any of
-the lines for help on what each of the variables do.
+settings.  You may change any of their values; when you save the file, the
+settings therein will be used.  One may also press "?" on any of the lines for
+help on what each of the variables do.
 
 
 ==============================================================================
@@ -1201,10 +1240,10 @@
 
 	1. Get the <Decho.vim> script, available as:
 
-		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
-		as "Decho, a vimL debugging aid"
+	     http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
+	     as "Decho, a vimL debugging aid"
 	   or
-		http://vim.sourceforge.net/scripts/script.php?script_id=120
+	     http://vim.sourceforge.net/scripts/script.php?script_id=120
 
 	   and put it into your local plugin directory.
 
@@ -1240,6 +1279,29 @@
 ==============================================================================
 10. History						*netrw-history*
 
+	v72: * bugfix -- formerly, one could prevent the loading of netrw
+	       by "let g:loaded_netrw=1"; when autoloading became supported,
+	       this feature was lost.  It is now restored.
+	v71: * bugfix -- made some "set nomodifiable"s into setlocal variants
+	       (allows :e somenewfile  to be modifiable as usual)
+	     * NetrwSettings calls a netrw function, thereby assuring that
+	       netrw has loaded.  However, if netrw does not load for whatever
+	       reason, then NetrwSettings will now issue a warning message.
+	     * For what reason I don't recall, when wget and fetch are both
+	       not present, and an attempt to read a http://... url is made,
+	       netrw exited.  It now only returns.
+	     * When ch=1, on the second and subsequent uses of browsing Netrw
+	       would issue a blank line to clear the echo'd messages.  This
+	       caused an annoying "Hit-Enter" prompt; now a blank line message
+	       is echo'd only if &ch>1.
+	v70: * when using |netrw-O|, the "Obtaining filename" message is now
+	       shown using |hl-User9|.  If User9 has not been defined, netrw
+	       will define it.
+	v69: * Bugfix: win95/98 machines were experiencing a
+	       "E121: Undefined variable: g:netrw_win95ftp" message
+	v68: * double-click-leftmouse selects word under mouse
+	v67: * Passwords which contain blanks will now be surrounded by
+	       double-quotes automatically (Yongwei)
 	v66: * Netrw now seems to work with a few more Windows situations
 	     * O now obtains a file: remote browsing file -> local copy,
 	       locally browsing file -> current directory (see :pwd)
@@ -1396,7 +1458,7 @@
 	Vim editor	by Bram Moolenaar (Thanks, Bram!)
 	dav		support by C Campbell
 	fetch		support by Bram Moolenaar and C Campbell
-	ftp		support by C Campbell <NdrOchip@ScampbellPfamily.AbizM> - NOSPAM
+	ftp		support by C Campbell <NdrOchip@ScampbellPfamily.AbizM>
 	http		support by Bram Moolenaar <bram@moolenaar.net>
 	rcp
 	rsync		support by C Campbell (suggested by Erik Warendorph)
@@ -1406,11 +1468,13 @@
 	inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
 
 	Jérôme Augé		-- also using new buffer method with ftp+.netrc
-	Bram Moolenaar		-- obviously vim itself, :e and v:cmdarg use, fetch,...
+	Bram Moolenaar		-- obviously vim itself, :e and v:cmdarg use,
+	                           fetch,...
 	Yasuhiro Matsumoto	-- pointing out undo+0r problem and a solution
 	Erik Warendorph		-- for several suggestions (g:netrw_..._cmd
 				   variables, rsync etc)
-	Doug Claar		-- modifications to test for success with ftp operation
+	Doug Claar		-- modifications to test for success with ftp
+	                           operation
 
 ==============================================================================
  vim:tw=78:ts=8:ft=help:norl:fdm=marker
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 2a148bd..0049a54 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 31
+*quickfix.txt*  For Vim version 7.0aa.  Last change: 2005 Sep 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -635,7 +635,7 @@
 expanded to the home directory and environment variables are expanded.
 
 The "%f" and "%m" conversions have to detect the end of the string.  This
-normally happens by matching following characters and items.  When nohting is
+normally happens by matching following characters and items.  When nothing is
 following the rest of the line is matched.  If "%f" is followed by a '%' or a
 backslash, it will look for a sequence of 'isfname' characters.
 
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 2a12894..021a158 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Sep 13
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Sep 27
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3562,7 +3562,7 @@
 ==============================================================================
 11. Listing syntax items		*:syntax* *:sy* *:syn* *:syn-list*
 
-This commands lists all the syntax items: >
+This command lists all the syntax items: >
 
     :sy[ntax] [list]
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 36d9b22..44e189a 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5083,7 +5083,6 @@
 g,	motion.txt	/*g,*
 g0	motion.txt	/*g0*
 g8	various.txt	/*g8*
-g:netrw-a	pi_netrw.txt	/*g:netrw-a*
 g:netrw_alto	pi_netrw.txt	/*g:netrw_alto*
 g:netrw_altv	pi_netrw.txt	/*g:netrw_altv*
 g:netrw_cygwin	pi_netrw.txt	/*g:netrw_cygwin*
@@ -5856,6 +5855,7 @@
 netrw-R	pi_netrw.txt	/*netrw-R*
 netrw-S	pi_netrw.txt	/*netrw-S*
 netrw-U	pi_netrw.txt	/*netrw-U*
+netrw-a	pi_netrw.txt	/*netrw-a*
 netrw-activate	pi_netrw.txt	/*netrw-activate*
 netrw-b	pi_netrw.txt	/*netrw-b*
 netrw-bookmark	pi_netrw.txt	/*netrw-bookmark*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 88ea517..c62fb05 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Sep 25
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Sep 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -31,16 +31,20 @@
 -------------------- Known bugs and current work -----------------------
 
 Spelling:
-- Suggestions for "the the" includes "thee the" but not "the thee"?
 - CTRL-X s doesn't consider 'spellcapcheck'.
-- Spellbadword() returns a list with bad word and reason it's bad.
-  This doesn't work when highlighting is the same for some mistakes.
 - spellsuggest() needs a way to require a capital.  A flag or context?
+- Use more phonet.dat files from Aspell.  en and de are done.
+    ftp.gnu.org/gnu/aspell/dict
 
 Win32: Composing char appears on next position. (Tony Mechelynck)
 
+Include check in set_num_option() for 'columns' and 'lines' in Vim 6.3?
+
 Support subdirectories in plugin directory?  (Nikolai Weibull)
 
+When scrolling starts, remember what script/line caused this, so that we know
+what caused the hit-enter prompt?  (Charles Campbell)
+
 Change 'include' so that it can match the file name when \zs and \ze are
 included. (docs already done tentatively).
 
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index b77530a..782171f 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Sep 23
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -747,7 +747,7 @@
 been added to |:substitute|.  See |count-items|.
 
 The "screen.linux" $TERM name is recognized to set the default for
-'background' to "dark". (Ciaran McCreesh)  Also for "cygwin".
+'background' to "dark". (Ciaran McCreesh)  Also for "cygwin" and "putty".
 
 The |FileChangedShell| autocommand event can now use the |v:fcs_reason|
 variable that specifies what triggered the event.  |v:fcs_choice| can be used
@@ -1375,4 +1375,8 @@
 "dFxd;" deleted the character under the cursor, "d;" didn't remember the
 exclusiveness of the motion.
 
+Limit the values of 'columns' and 'lines' to avoid an overflow in Rows *
+Columns.  Fixed bad effects when running out of memory (command line would be
+reversed, ":qa!" resulted in ":!aq").
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim
new file mode 100644
index 0000000..bcdfa2f
--- /dev/null
+++ b/runtime/plugin/netrwPlugin.vim
@@ -0,0 +1,147 @@
+" netrwPlugin.vim: Handles file transfer and remote directory listing across a network
+"            PLUGIN PORTION
+" Date:		Sep 08, 2005
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" License:	Vim License  (see vim's :help license)
+" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
+" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
+"               *as is* and comes with no warranty of any kind, either
+"               expressed or implied. By using this plugin, you agree that
+"               in no event will the copyright holder be liable for any damages
+"               resulting from the use of this software.
+"
+"  But be doers of the Word, and not only hearers, deluding your own selves {{{1
+"  (James 1:22 RSV)
+" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if exists("g:loaded_netrw")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+
+" Local Browsing: {{{2
+augroup FileExplorer
+ au!
+ au BufEnter * call s:LocalBrowse(expand("<amatch>"))
+augroup END
+
+" Network Browsing Reading Writing: {{{2
+augroup Network
+ au!
+ if has("win32") || has("win95") || has("win64") || has("win16")
+  au BufReadCmd  file://*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+ else
+  au BufReadCmd  file:///*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+ endif
+ au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
+ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread "   .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
+ au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
+ au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
+augroup END
+
+" Commands: :Nread, :Nwrite, :NetUserPass {{{2
+com! -nargs=*		Nread		call netrw#NetSavePosn()<bar>call netrw#NetRead(<f-args>)<bar>call netrw#NetRestorePosn()
+com! -range=% -nargs=*	Nwrite		call netrw#NetSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetRestorePosn()
+com! -nargs=*		NetUserPass	call NetUserPass(<f-args>)
+
+" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2
+com! -nargs=? -bar -bang -count=0  	Explore		call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Sexplore	call netrw#Explore(<count>,1,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Hexplore	call netrw#Explore(<count>,1,2+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Vexplore	call netrw#Explore(<count>,1,4+<bang>0,<q-args>)
+com! -nargs=? -bar -bang   		Nexplore	call netrw#Explore(-1,0,0,<q-args>)
+com! -nargs=? -bar -bang   		Pexplore	call netrw#Explore(-2,0,0,<q-args>)
+
+" Commands: NetrwSettings {{{2
+com! -nargs=0 NetrwSettings :call netrwSettings#NetrwSettings()
+
+" ---------------------------------------------------------------------
+" LocalBrowse: {{{2
+fun! s:LocalBrowse(dirname)
+  " unfortunate interaction -- debugging calls can't be used here;
+  " the BufEnter event causes triggering when attempts to write to
+  " the DBG buffer are made.
+  if isdirectory(a:dirname)
+   call netrw#DirBrowse(a:dirname)
+  endif
+  " not a directory, ignore it
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwStatusLine: {{{1
+fun! NetrwStatusLine()
+"  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
+  if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
+   let &stl= s:netrw_explore_stl
+   if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
+   if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
+   return ""
+  else
+   return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
+  endif
+endfun
+
+" ------------------------------------------------------------------------
+" NetUserPass: set username and password for subsequent ftp transfer {{{1
+"   Usage:  :call NetUserPass()			-- will prompt for userid and password
+"	    :call NetUserPass("uid")		-- will prompt for password
+"	    :call NetUserPass("uid","password") -- sets global userid and password
+fun! NetUserPass(...)
+
+ " get/set userid
+ if a:0 == 0
+"  call Dfunc("NetUserPass(a:0<".a:0.">)")
+  if !exists("g:netrw_uid") || g:netrw_uid == ""
+   " via prompt
+   let g:netrw_uid= input('Enter username: ')
+  endif
+ else	" from command line
+"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
+  let g:netrw_uid= a:1
+ endif
+
+ " get password
+ if a:0 <= 1 " via prompt
+"  call Decho("a:0=".a:0." case <=1:")
+  let g:netrw_passwd= inputsecret("Enter Password: ")
+ else " from command line
+"  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
+  let g:netrw_passwd=a:2
+ endif
+"  call Dret("NetUserPass")
+endfun
+
+" ------------------------------------------------------------------------
+" NetReadFixup: this sort of function is typically written by the user {{{1
+"               to handle extra junk that their system's ftp dumps
+"               into the transfer.  This function is provided as an
+"               example and as a fix for a Windows 95 problem: in my
+"               experience, win95's ftp always dumped four blank lines
+"               at the end of the transfer.
+if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+ fun! NetReadFixup(method, line1, line2)
+"   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
+   if method == 3   " ftp (no <.netrc>)
+    let fourblanklines= line2 - 3
+    silent fourblanklines.",".line2."g/^\s*/d"
+   endif
+"   call Dret("NetReadFixup")
+ endfun
+endif
+
+" ------------------------------------------------------------------------
+" Modelines And Restoration: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim:ts=8 fdm=marker
diff --git a/runtime/plugin/netrwSettings.vim b/runtime/plugin/netrwSettings.vim
new file mode 100644
index 0000000..f490940
--- /dev/null
+++ b/runtime/plugin/netrwSettings.vim
@@ -0,0 +1,161 @@
+" NetrwSettings.vim: makes netrw settings simpler
+" Date:		Sep 19, 2005
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Version:	4a	NOT RELEASED
+" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               netrwSettings.vim is provided *as is* and comes with no
+"               warranty of any kind, either expressed or implied. By using
+"               this plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
+"                synagogues, preaching the gospel of the kingdom, and healing
+"                every disease and every sickness among the people.
+" Load Once: {{{1
+if exists("g:loaded_netrwSettings") || &cp
+  finish
+endif
+let g:loaded_netrwSettings  = "v4a"
+
+" ---------------------------------------------------------------------
+" NetrwSettings: {{{1
+fun! netrwSettings#NetrwSettings()
+  " this call is here largely just to insure that netrw has been loaded
+  call netrw#NetSavePosn()
+  if !exists("g:loaded_netrw")
+   echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None
+   return
+  endif
+
+  above wincmd s
+  enew
+  setlocal noswapfile bh=wipe
+  set ft=vim
+  file Netrw\ Settings
+
+  " these variables have the following default effects when they don't
+  " exist (ie. have not been set by the user in his/her .vimrc)
+  if !exists("g:netrw_longlist")
+   let g:netrw_longlist= 0
+   let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
+  endif
+  if !exists("g:netrw_silent")
+   let g:netrw_silent= 0
+  endif
+  if !exists("g:netrw_use_nt_rcp")
+   let g:netrw_use_nt_rcp= 0
+  endif
+  if !exists("g:netrw_ftp")
+   let g:netrw_ftp= 0
+  endif
+  if !exists("g:netrw_ignorenetrc")
+   let g:netrw_ignorenetrc= 0
+  endif
+
+  put ='+ ---------------------------------------------'
+  put ='+ NetrwSettings:  (by Charles E. Campbell, Jr.)'
+  put ='+  Press ? with cursor atop any line for help  '
+  put ='+ ---------------------------------------------'
+  let s:netrw_settings_stop= line(".")
+
+  put =''
+  put ='+ Netrw Protocol Commands'
+  put = 'let g:netrw_dav_cmd           = '.g:netrw_dav_cmd
+  put = 'let g:netrw_fetch_cmd         = '.g:netrw_fetch_cmd
+  put = 'let g:netrw_ftp_cmd           = '.g:netrw_ftp_cmd
+  put = 'let g:netrw_http_cmd          = '.g:netrw_http_cmd
+  put = 'let g:netrw_rcp_cmd           = '.g:netrw_rcp_cmd
+  put = 'let g:netrw_rsync_cmd         = '.g:netrw_rsync_cmd
+  put = 'let g:netrw_scp_cmd           = '.g:netrw_scp_cmd
+  put = 'let g:netrw_sftp_cmd          = '.g:netrw_sftp_cmd
+  let s:netrw_protocol_stop= line(".")
+  put = ''
+
+  put ='+Netrw Transfer Control'
+  put = 'let g:netrw_cygwin            = '.g:netrw_cygwin
+  put = 'let g:netrw_ftp               = '.g:netrw_ftp
+  put = 'let g:netrw_ftpmode           = '.g:netrw_ftpmode
+  put = 'let g:netrw_ignorenetrc       = '.g:netrw_ignorenetrc
+  put = 'let g:netrw_use_nt_rcp        = '.g:netrw_use_nt_rcp
+  put = 'let g:netrw_win95ftp          = '.g:netrw_win95ftp
+  let s:netrw_xfer_stop= line(".")
+
+  put = ''
+  put ='+ Netrw Browser Control'
+  put = 'let g:netrw_alto              = '.g:netrw_alto
+  put = 'let g:netrw_altv              = '.g:netrw_altv
+  put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
+  put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
+  put = 'let g:netrw_ftp_list_cmd      = '.g:netrw_ftp_list_cmd
+  put = 'let g:netrw_hide              = '.g:netrw_hide
+  put = 'let g:netrw_keepdir           = '.g:netrw_keepdir
+  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
+  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
+  put = 'let g:netrw_list_hide         = '.g:netrw_list_hide
+  put = 'let g:netrw_local_mkdir       = '.g:netrw_local_mkdir
+  put = 'let g:netrw_local_rmdir       = '.g:netrw_local_rmdir
+  put = 'let g:netrw_longlist          = '.g:netrw_longlist
+  put = 'let g:netrw_maxfilenamelen    = '.g:netrw_maxfilenamelen
+  put = 'let g:netrw_mkdir_cmd         = '.g:netrw_mkdir_cmd
+  put = 'let g:netrw_rename_cmd        = '.g:netrw_rename_cmd
+  put = 'let g:netrw_rm_cmd            = '.g:netrw_rm_cmd
+  put = 'let g:netrw_rmdir_cmd         = '.g:netrw_rmdir_cmd
+  put = 'let g:netrw_rmf_cmd           = '.g:netrw_rmf_cmd
+  put = 'let g:netrw_silent            = '.g:netrw_silent
+  put = 'let g:netrw_sort_by           = '.g:netrw_sort_by
+  put = 'let g:netrw_sort_direction    = '.g:netrw_sort_direction
+  put = 'let g:netrw_sort_sequence     = '.g:netrw_sort_sequence
+  put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
+  put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
+  put = 'let g:netrw_winsize           = '.g:netrw_winsize
+
+  put =''
+  put ='+ For help, place cursor on line and press ?'
+
+  1d
+  silent %s/^+/"/e
+  res 99
+  silent %s/= \([^0-9].*\)$/= '\1'/e
+  silent %s/= $/= ''/e
+  1
+
+  set nomod
+
+  map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
+  let tmpfile= tempname()
+  exe 'au BufWriteCmd	Netrw\ Settings	silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwSettingHelp: {{{2
+fun! NetrwSettingHelp()
+"  call Dfunc("NetrwSettingHelp()")
+  let curline = getline(".")
+  if curline =~ '='
+   let varhelp = substitute(curline,'^\s*let ','','e')
+   let varhelp = substitute(varhelp,'\s*=.*$','','e')
+"   call Decho("trying help ".varhelp)
+   try
+    exe "he ".varhelp
+   catch /^Vim\%((\a\+)\)\=:E149/
+   	echo "***sorry*** no help available for <".varhelp.">"
+   endtry
+  elseif line(".") < s:netrw_settings_stop
+   he netrw-settings
+  elseif line(".") < s:netrw_protocol_stop
+   he netrw-externapp
+  elseif line(".") < s:netrw_xfer_stop
+   he netrw-variables
+  else
+   he netrw-browse-var
+  endif
+"  call Dret("NetrwSettingHelp")
+endfun
+
+" ---------------------------------------------------------------------
+" Modelines: {{{1
+" vim:ts=8 fdm=marker
diff --git a/runtime/spell/bg/bg_BG.diff b/runtime/spell/bg/bg_BG.diff
index da0a4f3..3d9bb98 100644
--- a/runtime/spell/bg/bg_BG.diff
+++ b/runtime/spell/bg/bg_BG.diff
@@ -1,5 +1,5 @@
-*** bg_BG.orig.aff	Sun Aug 14 18:12:44 2005
---- bg_BG.aff	Sun Aug 14 18:13:12 2005
+*** bg_BG.orig.aff	Sun Aug 28 21:34:44 2005
+--- bg_BG.aff	Sun Aug 28 21:34:44 2005
 ***************
 *** 1,2 ****
 ! SET microsoft-cp1251
diff --git a/runtime/spell/cy/cy_GB.diff b/runtime/spell/cy/cy_GB.diff
index 511e718..75f3f42 100644
--- a/runtime/spell/cy/cy_GB.diff
+++ b/runtime/spell/cy/cy_GB.diff
@@ -1,5 +1,5 @@
-*** cy_GB.orig.aff	Wed Aug 31 21:42:03 2005
---- cy_GB.aff	Wed Aug 31 21:43:10 2005
+*** cy_GB.orig.aff	Wed Aug 31 21:44:01 2005
+--- cy_GB.aff	Wed Aug 31 21:44:01 2005
 ***************
 *** 81,82 ****
 --- 81,84 ----
diff --git a/runtime/spell/de/de_19.diff b/runtime/spell/de/de_19.diff
index 447bb2f..434598b 100644
--- a/runtime/spell/de/de_19.diff
+++ b/runtime/spell/de/de_19.diff
@@ -1,16 +1,13 @@
 *** de_19.orig.aff	Thu Aug 25 11:22:08 2005
---- de_19.aff	Thu Aug 25 11:25:21 2005
+--- de_19.aff	Thu Sep 29 11:43:46 2005
 ***************
 *** 3,4 ****
---- 3,24 ----
+--- 3,21 ----
   
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
 + MIDWORD	'
 + 
 + MAP 9
@@ -25,3 +22,482 @@
 + MAP sß
 + 
   # (c) copyright by Bjoern Jacke <bjoern@j3e.de>
+***************
+*** 560 ****
+--- 577,1052 ----
+  
++ #   German phonetic transformation rules from Aspell
++ #   Copyright (C) 2000 Björn Jacke, distributed under LGPL.
++ #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
++ #   Last changed 2000-01-07
++ 
++ SAL followup        1
++ SAL collapse_result 1
++ 
++ SAL ÄER-                 E
++ SAL ÄU<                  EU
++ SAL Ä<                   E
++ SAL É                    E
++ SAL ÖER-                 Ö
++ SAL Ö                    Ö
++ SAL ÜBER^^               IPA
++ SAL ÜER-                 I
++ SAL Ü                    I
++ SAL ß                    Z
++ SAL ABELLE$              APL
++ SAL ABELL$               APL
++ SAL ABIENNE$             APIN
++ SAL ACEY$                AZI
++ SAL AEU<                 EU
++ SAL AE2                  E
++ SAL AGNI-^               AKN
++ SAL AGNIE-               ANI
++ SAL AGN(AEOU)-$          ANI
++ SAL AIA2                 AIA
++ SAL AIE$                 E
++ SAL AILL(EOU)-           ALI
++ SAL AINE$                EN
++ SAL AIRE$                ER
++ SAL AIR-                 E
++ SAL AISE$                EZ
++ SAL AISSANCE$            EZANZ
++ SAL AISSE$               EZ
++ SAL AIX$                 EX
++ SAL AJ(AÄEIOÖUÜ)--       A
++ SAL AKTIE                AXIE
++ SAL ALO(IY)^             ALUI
++ SAL AMATEU(RS)-          ANATÖ
++ SAL ANIELLE$             ANIL
++ SAL ANTI^^               ANTI
++ SAL ANVER^^              ANFA
++ SAL ATIA$                ATIA
++ SAL ATIA(NS)--           ATI
++ SAL ATI(AÄOÖUÜ)-         AZI
++ SAL AUAU--               _
++ SAL AUER<                AUA
++ SAL AUF^^                AUF
++ SAL AULT$                U
++ SAL AUSSE$               UZ
++ SAL AUS(ST)-^            AUZ
++ SAL AUS^^                AUZ
++ SAL AUTO^^               AUTU
++ SAL AUX(IY)-             AUX
++ SAL AUX                  U
++ SAL AU                   AU
++ SAL AVIER$               AFIE
++ SAL AYER--<              EI
++ SAL AY(AÄEIOÖUÜ)--       A
++ SAL A(IJY)<              EI
++ SAL A                    A
++ SAL BEA(BCMNRU)-^        PEA
++ SAL BEAT(AEIMORU)-^      PEAT
++ SAL BEIGE^$              PEZ
++ SAL BE(LMNRST)-^         PE
++ SAL BETTE$               PET
++ SAL BIC$                 PIZ
++ SAL BOWL(EI)-            PUL
++ SAL BP(AÄEIOÖRUÜY)-      P
++ SAL BUDGET7              PIKE
++ SAL BUFFET7              PIFE
++ SAL BYLLE$               PILE
++ SAL BYLL$                PIL
++ SAL BYTE<                PEIT
++ SAL B                    P
++ SAL CÄ-                  Z
++ SAL CÜ$                  ZI
++ SAL CACH(EI)-^           KEZ
++ SAL CAE--                Z
++ SAL CA(IY)$              ZEI
++ SAL CCH                  Z
++ SAL CCE-                 X
++ SAL CE(EIJUY)--          Z
++ SAL CENT<                ZENT
++ SAL CERST(EI)----^       KE
++ SAL CER$                 ZA
++ SAL CE3                  ZE
++ SAL CHAO(ST)-            KAU
++ SAL CHAMPIO-^            ZENPI
++ SAL CHAR(AI)-^           KAR
++ SAL CHAU(CDFSVWXZ)-      ZU
++ SAL CHE(CF)-             ZE
++ SAL CHEM-^               KE
++ SAL CHEQUE<              ZEK
++ SAL CHI(CFGPVW)-         ZI
++ SAL CH(AEUY)-<^          Z
++ SAL CHK-                 _
++ SAL CH(LOR)-<^           K
++ SAL CHST-                X
++ SAL CH(SßXZ)3            X
++ SAL CH                   K
++ SAL CIER$                ZIE
++ SAL CYB-^                ZEI
++ SAL CY9^                 ZI
++ SAL C(IJY)-3             Z
++ SAL CKST                 XT
++ SAL CK(SßXZ)3            X
++ SAL C(CK)-               _
++ SAL CLAUDET---           KLU
++ SAL CLAUDINE^$           KLUTIN
++ SAL COLE$                KUL
++ SAL COUCH                KAUZ
++ SAL CQUES$               K
++ SAL CQUE                 K
++ SAL CREAT-^              KREA
++ SAL CST                  XT
++ SAL CS<^                 Z
++ SAL C(SßX)               X
++ SAL CT(SßXZ)             X
++ SAL CZ<                  Z
++ SAL C<                   K
++ SAL D'H^                 T
++ SAL D'S3$                Z
++ SAL DAVO(NR)-^$          TAFU
++ SAL DD(SZ)--<            _
++ SAL DEPOT7               TEPU
++ SAL DESIGN               TIZEIN
++ SAL DE(LMNRST)-3^        TE
++ SAL DETTE$               TET
++ SAL DIC$                 TIZ
++ SAL DJ(AEIOU)-^          I
++ SAL DS(CH)--<            T
++ SAL DST                  ZT
++ SAL DT-                  _
++ SAL DUIS-^               TI
++ SAL DURCH^^              TURK
++ SAL DZS(CH)--            T
++ SAL D(SßZ)               Z
++ SAL D                    T
++ SAL EAULT$               U
++ SAL EAUX$                U
++ SAL EAU                  U
++ SAL EAV                  IF
++ SAL EA(AÄEIOÖÜY)-3       EA
++ SAL EA3$                 EA
++ SAL EA3                  I
++ SAL EBEN^^               EPN
++ SAL EE9                  E
++ SAL EIEI--               _
++ SAL EIH--                E
++ SAL EILLE$               EI
++ SAL EI                   EI
++ SAL EJ$                  EI
++ SAL EL-^                 E
++ SAL EL(DKL)--1           E
++ SAL EL(MNT)--1$          E
++ SAL ELYNE$               ELINE
++ SAL ELYN$                ELIN
++ SAL EL(AÄEIOÖUÜY)-1      EL
++ SAL EL-1                 L
++ SAL EM-^                 E
++ SAL EM(DFKMPQT)--1       E
++ SAL EM(AÄEIOÖUÜY)--1     E
++ SAL EM-1                 N
++ SAL EN-^                 E
++ SAL EN(CDGKQT)--1        E
++ SAL ENZ(AEIOUY)--1       EN
++ SAL EN(AÄEINOÖUÜY)-1     EN
++ SAL EN-<1                N
++ SAL ERH(AÄEIOÖUÜ)-^      ER
++ SAL ER-^                 E
++ SAL ER(AÄEIOÖUÜY)-1      A
++ SAL ER1$                 A
++ SAL ER<1                 A
++ SAL ETI(AÄOÖÜU)-         EZI
++ SAL EUEU--               _
++ SAL EUILLE$              Ö
++ SAL EUR$                 ÖR
++ SAL EUX                  Ö
++ SAL EUYS$                EUZ
++ SAL EU                   EU
++ SAL EYER<                EIA
++ SAL EY<                  EI
++ SAL E                    E
++ SAL FANS--^$             FE
++ SAL FAN-^$               FE
++ SAL FAULT-               FUL
++ SAL FEE(DL)-             FI
++ SAL FEHLER               FELA
++ SAL FE(LMNRST)-3^        FE
++ SAL FOND7                FUN
++ SAL FRAIN$               FRA
++ SAL FRISEU(RS)-          FRIZÖ  # x
++ SAL F                    F
++ SAL G'S$                 X
++ SAL GAGS^$               KEX
++ SAL GAG^$                KEK
++ SAL GD                   KT
++ SAL GEGEN^^              KEKN
++ SAL GE(LMNRST)-3^        KE
++ SAL GETTE$               KET
++ SAL G(CK)-               _
++ SAL GG-                  _
++ SAL GI(AO)-^             I
++ SAL GION$                KIUN
++ SAL GIUS-^               IU
++ SAL GMBH^$               GMPH
++ SAL GNAC$                NIAK
++ SAL GNON$                NIUN
++ SAL GN$                  N
++ SAL GONCAL-^             KUNZA
++ SAL GS(CH)--             K
++ SAL GST                  XT
++ SAL G(SßXZ)              X
++ SAL GUCK-                KU
++ SAL GUI-^                K
++ SAL G                    K
++ SAL HEAD-                E
++ SAL HE(LMNRST)-3^        E
++ SAL HE(LMN)-1            E
++ SAL HEUR1$               ÖR
++ SAL H^                   _
++ SAL IEC$                 IZ
++ SAL IEI-3                _
++ SAL IELL3                IEL
++ SAL IENNE$               IN
++ SAL IERRE$               IER
++ SAL IETTE$               IT
++ SAL IEU                  IÖ
++ SAL IE<4                 I
++ SAL IGHT3$               EIT
++ SAL IGNI(EO)-            INI
++ SAL IGN(AEOU)-$          INI
++ SAL IJ(AOU)-             I
++ SAL IJ$                  I
++ SAL IJ<                  EI
++ SAL IKOLE$               IKUL
++ SAL ILLAN(STZ)--         ILIA
++ SAL ILLAR(DT)--          ILIA
++ SAL INVER-               INFE
++ SAL ITI(AÄOÖUÜ)-         IZI
++ SAL IVIER$               IFIE
++ SAL I                    I
++ SAL JAVIE---<^           ZA
++ SAL JEAN^$               IA
++ SAL JEAN-^               IA
++ SAL JER-^                IE
++ SAL JE(LMNST)-           IE
++ SAL JOR(GK)^$            IÖRK
++ SAL J                    I
++ SAL KC(ÄEIJ)-            X
++ SAL KE(LMNRST)-3^        KE
++ SAL KH<^                 K
++ SAL KIC$                 KIZ
++ SAL KLE(LMNRST)-3^       KLE
++ SAL KOTELE-^             KUTL
++ SAL KREAT-^              KREA
++ SAL KST                  XT
++ SAL K(SßXZ)              X
++ SAL KTI(AIOU)-3          XI
++ SAL KT(SßXZ)             X
++ SAL K                    K
++ SAL LARVE-               LARF
++ SAL LEAND-^              LEAN
++ SAL LEL-                 LE
++ SAL LE(MNRST)-3^         LE
++ SAL LETTE$               LET
++ SAL LFGNAG-              LFKAN
++ SAL LIC$                 LIZ
++ SAL LIVE^$               LEIF
++ SAL LUI(GS)--            LU
++ SAL L                    L
++ SAL MASSEU(RS)-          NAZÖ
++ SAL MAURICE              NURIZ
++ SAL MBH^$                MPH
++ SAL MB(SßZ)-             N
++ SAL MC9^                 NK
++ SAL MEMOIR-^             NENUA
++ SAL ME(LMNRST)-3^        NE
++ SAL MIGUEL               NIKL
++ SAL MIKE^$               NEIK
++ SAL MN                   N
++ SAL MPJUTE-              NPUT
++ SAL MP(SßZ)-             N
++ SAL MP(BDJLMNPQRTVW)-    NP
++ SAL M                    N
++ SAL NACH^^               NAK
++ SAL NADINE               NATIN
++ SAL NAIV--               NA
++ SAL NAISE$               NEZE
++ SAL NCOISE$              ZUA
++ SAL NCOIS$               ZUA
++ SAL NEBEN^^              NEPN
++ SAL NE(LMNRST)-3^        NE
++ SAL NEN-3                NE
++ SAL NETTE$               NET
++ SAL NG(BDFJLMNPQRTVW)-   NK
++ SAL NICHTS^^             NIX
++ SAL NICHT^^              NIKT
++ SAL NINE$                NIN
++ SAL NON^^                NUN
++ SAL NOT^^                NUT
++ SAL NTI(AIOU)-3          NZI
++ SAL NTIEL--3             NZI
++ SAL NYLON                NEILUN
++ SAL ND(SßZ)$             NZ
++ SAL NT(SßZ)$             NZ
++ SAL ND'S$                NZ
++ SAL NT'S$                NZ
++ SAL NSTS$                NZ
++ SAL N                    N
++ SAL OBER^^               UPA
++ SAL OE2                  Ö
++ SAL OGNIE-               UNI
++ SAL OGN(AEOU)-$          UNI
++ SAL OIE$                 Ö
++ SAL OIR$                 UAR
++ SAL OIX                  UA
++ SAL OI<3                 EU
++ SAL OJ(AÄEIOÖUÜ)--       U
++ SAL OKAY^$               UKE
++ SAL OLYN$                ULIN
++ SAL OTI(AÄOÖUÜ)-         UZI
++ SAL OUI^                 FI
++ SAL OUILLE$              ULIE
++ SAL OU(DT)-^             AU
++ SAL OUSE$                AUZ
++ SAL OUT-                 AU
++ SAL OU                   U
++ SAL OWS$                 UZ
++ SAL OY(AÄEIOÖUÜ)--       U
++ SAL O(JY)<               EU
++ SAL O                    U
++ SAL PATIEN--^            PAZI
++ SAL PENSIO-^             PANZI
++ SAL PE(LMNRST)-3^        PE
++ SAL PFER-^               FE
++ SAL P(FH)<               F
++ SAL POLY^^               PULI
++ SAL PORTRAIT7            PURTRE
++ SAL PP(FH)--<            P
++ SAL PP-                  _
++ SAL PRIX^$               PRI
++ SAL P(SßZ)^              Z
++ SAL PTI(AÄOÖUÜ)-3        PZI
++ SAL PIC^$                PIK
++ SAL P                    P
++ SAL QUE(LMNRST)-3        KFE
++ SAL QUE$                 K
++ SAL QUI(NS)$             KI
++ SAL QU                   KF
++ SAL Q<                   K
++ SAL RCH                  RK
++ SAL RECHERCH^            REZAZ
++ SAL RER$                 RA
++ SAL RE(MNR)-4            RE
++ SAL RETTE$               RET
++ SAL RH<^                 R
++ SAL RJA(MN)--            RI
++ SAL RTI(AÄOÖUÜ)-3        RZI
++ SAL RY(KN)-$             RI
++ SAL R                    R
++ SAL SAFE^$               ZEIF
++ SAL SAUCE-^              ZUZ
++ SAL SCHSCH---7           _
++ SAL SCHTSCH              Z
++ SAL SC(HZ)<              Z
++ SAL SC                   ZK
++ SAL SELBSTST--7^^        ZELP
++ SAL SELBST7^^            ZELPZT
++ SAL SERVICE7^            ZÖRFIZ
++ SAL SE(LMNRST)-3^        ZE
++ SAL SETTE$               ZET
++ SAL SHP-^                Z
++ SAL SHST                 ZT
++ SAL SHTSH                Z
++ SAL SHT                  Z
++ SAL SH3                  Z
++ SAL SIEGLI-^             ZIKL
++ SAL SIGLI-^              ZIKL
++ SAL SIGHT                ZEIT
++ SAL SIGN                 ZEIN
++ SAL SKI(NPZ)-            ZKI
++ SAL SKI<^                ZI
++ SAL SOUND-               ZAUN
++ SAL STAATS^^             ZTAZ
++ SAL STADT^^              ZTAT
++ SAL START^^              ZTART
++ SAL STAURANT7            ZTURAN
++ SAL STEAK-               ZTE
++ SAL STRAF^^              ZTRAF
++ SAL ST'S$                Z
++ SAL STST--               _
++ SAL STS(ACEHIOUÄÜÖ)--    ZT
++ SAL ST(SZ)               Z
++ SAL STYN(AE)-$           ZTIN
++ SAL ST                   ZT
++ SAL SZE(NPT)-^           ZE
++ SAL SZI(ELN)-^           ZI
++ SAL SZCZ<                Z
++ SAL SZT<                 ZT
++ SAL SZ<3                 Z
++ SAL S                    Z
++ SAL T'S3$                Z
++ SAL TCH                  Z
++ SAL TEAT-^               TEA
++ SAL TE(LMNRST)-3^        TE
++ SAL TH<                  T
++ SAL TIC$                 TIZ
++ SAL TOAS-^               TU
++ SAL TOILET-              TULE
++ SAL TOIN-                TUA
++ SAL TRAINI-              TREN
++ SAL TSCH                 Z
++ SAL TSH                  Z
++ SAL TST                  ZT
++ SAL T(Sß)                Z
++ SAL TT(SZ)--<            _
++ SAL TT9                  T
++ SAL TZ-                  _
++ SAL T                    T
++ SAL UEBER^^              IPA
++ SAL UE2                  I
++ SAL UIE$                 I
++ SAL UM^^                 UN
++ SAL UNTERE--             UNTE
++ SAL UNTER^^              UNTA
++ SAL UNVER^^              UNFA
++ SAL UN^^                 UN
++ SAL UTI(AÄOÖUÜ)-         UZI
++ SAL U                    U
++ SAL VACL-^               FAZ
++ SAL VAC$                 FAZ
++ SAL VEDD-^               FE
++ SAL VEREIN               FAEIN
++ SAL VERSEN^              FAZN
++ SAL VER^^                FA
++ SAL VER                  FA
++ SAL VET(HT)-^            FET
++ SAL VETTE$               FET
++ SAL VIC$                 FIZ
++ SAL VIEL                 FIL
++ SAL VIEW                 FIU
++ SAL VOR^^                FUR
++ SAL VY9^                 FI
++ SAL V<                   F
++ SAL WE(LMNRST)-3^        FE
++ SAL WIC$                 FIZ
++ SAL WIEDER^^             FITA
++ SAL WY9^                 FI
++ SAL W                    F
++ SAL XE(LMNRST)-3^        XE
++ SAL X<^                  Z
++ SAL X(CSZ)               X
++ SAL XTS(CH)--            XT
++ SAL XT(SZ)               Z
++ SAL X                    X
++ SAL YE(LMNRST)-3^        IE
++ SAL YE-3                 I
++ SAL YOR(GK)^$            IÖRK
++ SAL Y(AOU)-<7            I
++ SAL YVES^$               IF
++ SAL YVONNE^$             IFUN
++ SAL Y                    I
++ SAL ZC(AOU)-             ZK
++ SAL ZE(LMNRST)-3^        ZE
++ SAL ZH<                  Z
++ SAL ZS(CHT)--            _
++ SAL ZS                   Z
++ SAL ZUERST               ZUERZT
++ SAL ZURÜCK^^             ZURIK
++ SAL ZUVER^^              ZUFA    # x
++ SAL Z                    Z
diff --git a/runtime/spell/de/de_20.diff b/runtime/spell/de/de_20.diff
index dce6fe6..235d0fd 100644
--- a/runtime/spell/de/de_20.diff
+++ b/runtime/spell/de/de_20.diff
@@ -1,17 +1,14 @@
 *** de_20.orig.aff	Thu Aug 25 11:22:14 2005
---- de_20.aff	Thu Aug 25 11:22:14 2005
+--- de_20.aff	Thu Sep 29 11:44:41 2005
 ***************
 *** 2,3 ****
---- 2,24 ----
+--- 2,21 ----
   TRY esianrtolcdugmphbyfvkwäüößáéêàâñESIANRTOLCDUGMPHBYFVKWÄÜÖ
 + 
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
 + MIDWORD	'
 + 
 + MAP 9
@@ -26,3 +23,483 @@
 + MAP sß
 + 
   #
+***************
+*** 1225 ****
+--- 1243,1719 ----
+  REP ö öe
++ 
++ #   German phonetic transformation rules from Aspell
++ #   Copyright (C) 2000 Björn Jacke, distributed under LGPL.
++ #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
++ #   Last changed 2000-01-07
++ 
++ SAL followup        1
++ SAL collapse_result 1
++ 
++ SAL ÄER-                 E
++ SAL ÄU<                  EU
++ SAL Ä<                   E
++ SAL É                    E
++ SAL ÖER-                 Ö
++ SAL Ö                    Ö
++ SAL ÜBER^^               IPA
++ SAL ÜER-                 I
++ SAL Ü                    I
++ SAL ß                    Z
++ SAL ABELLE$              APL
++ SAL ABELL$               APL
++ SAL ABIENNE$             APIN
++ SAL ACEY$                AZI
++ SAL AEU<                 EU
++ SAL AE2                  E
++ SAL AGNI-^               AKN
++ SAL AGNIE-               ANI
++ SAL AGN(AEOU)-$          ANI
++ SAL AIA2                 AIA
++ SAL AIE$                 E
++ SAL AILL(EOU)-           ALI
++ SAL AINE$                EN
++ SAL AIRE$                ER
++ SAL AIR-                 E
++ SAL AISE$                EZ
++ SAL AISSANCE$            EZANZ
++ SAL AISSE$               EZ
++ SAL AIX$                 EX
++ SAL AJ(AÄEIOÖUÜ)--       A
++ SAL AKTIE                AXIE
++ SAL ALO(IY)^             ALUI
++ SAL AMATEU(RS)-          ANATÖ
++ SAL ANIELLE$             ANIL
++ SAL ANTI^^               ANTI
++ SAL ANVER^^              ANFA
++ SAL ATIA$                ATIA
++ SAL ATIA(NS)--           ATI
++ SAL ATI(AÄOÖUÜ)-         AZI
++ SAL AUAU--               _
++ SAL AUER<                AUA
++ SAL AUF^^                AUF
++ SAL AULT$                U
++ SAL AUSSE$               UZ
++ SAL AUS(ST)-^            AUZ
++ SAL AUS^^                AUZ
++ SAL AUTO^^               AUTU
++ SAL AUX(IY)-             AUX
++ SAL AUX                  U
++ SAL AU                   AU
++ SAL AVIER$               AFIE
++ SAL AYER--<              EI
++ SAL AY(AÄEIOÖUÜ)--       A
++ SAL A(IJY)<              EI
++ SAL A                    A
++ SAL BEA(BCMNRU)-^        PEA
++ SAL BEAT(AEIMORU)-^      PEAT
++ SAL BEIGE^$              PEZ
++ SAL BE(LMNRST)-^         PE
++ SAL BETTE$               PET
++ SAL BIC$                 PIZ
++ SAL BOWL(EI)-            PUL
++ SAL BP(AÄEIOÖRUÜY)-      P
++ SAL BUDGET7              PIKE
++ SAL BUFFET7              PIFE
++ SAL BYLLE$               PILE
++ SAL BYLL$                PIL
++ SAL BYTE<                PEIT
++ SAL B                    P
++ SAL CÄ-                  Z
++ SAL CÜ$                  ZI
++ SAL CACH(EI)-^           KEZ
++ SAL CAE--                Z
++ SAL CA(IY)$              ZEI
++ SAL CCH                  Z
++ SAL CCE-                 X
++ SAL CE(EIJUY)--          Z
++ SAL CENT<                ZENT
++ SAL CERST(EI)----^       KE
++ SAL CER$                 ZA
++ SAL CE3                  ZE
++ SAL CHAO(ST)-            KAU
++ SAL CHAMPIO-^            ZENPI
++ SAL CHAR(AI)-^           KAR
++ SAL CHAU(CDFSVWXZ)-      ZU
++ SAL CHE(CF)-             ZE
++ SAL CHEM-^               KE
++ SAL CHEQUE<              ZEK
++ SAL CHI(CFGPVW)-         ZI
++ SAL CH(AEUY)-<^          Z
++ SAL CHK-                 _
++ SAL CH(LOR)-<^           K
++ SAL CHST-                X
++ SAL CH(SßXZ)3            X
++ SAL CH                   K
++ SAL CIER$                ZIE
++ SAL CYB-^                ZEI
++ SAL CY9^                 ZI
++ SAL C(IJY)-3             Z
++ SAL CKST                 XT
++ SAL CK(SßXZ)3            X
++ SAL C(CK)-               _
++ SAL CLAUDET---           KLU
++ SAL CLAUDINE^$           KLUTIN
++ SAL COLE$                KUL
++ SAL COUCH                KAUZ
++ SAL CQUES$               K
++ SAL CQUE                 K
++ SAL CREAT-^              KREA
++ SAL CST                  XT
++ SAL CS<^                 Z
++ SAL C(SßX)               X
++ SAL CT(SßXZ)             X
++ SAL CZ<                  Z
++ SAL C<                   K
++ SAL D'H^                 T
++ SAL D'S3$                Z
++ SAL DAVO(NR)-^$          TAFU
++ SAL DD(SZ)--<            _
++ SAL DEPOT7               TEPU
++ SAL DESIGN               TIZEIN
++ SAL DE(LMNRST)-3^        TE
++ SAL DETTE$               TET
++ SAL DIC$                 TIZ
++ SAL DJ(AEIOU)-^          I
++ SAL DS(CH)--<            T
++ SAL DST                  ZT
++ SAL DT-                  _
++ SAL DUIS-^               TI
++ SAL DURCH^^              TURK
++ SAL DZS(CH)--            T
++ SAL D(SßZ)               Z
++ SAL D                    T
++ SAL EAULT$               U
++ SAL EAUX$                U
++ SAL EAU                  U
++ SAL EAV                  IF
++ SAL EA(AÄEIOÖÜY)-3       EA
++ SAL EA3$                 EA
++ SAL EA3                  I
++ SAL EBEN^^               EPN
++ SAL EE9                  E
++ SAL EIEI--               _
++ SAL EIH--                E
++ SAL EILLE$               EI
++ SAL EI                   EI
++ SAL EJ$                  EI
++ SAL EL-^                 E
++ SAL EL(DKL)--1           E
++ SAL EL(MNT)--1$          E
++ SAL ELYNE$               ELINE
++ SAL ELYN$                ELIN
++ SAL EL(AÄEIOÖUÜY)-1      EL
++ SAL EL-1                 L
++ SAL EM-^                 E
++ SAL EM(DFKMPQT)--1       E
++ SAL EM(AÄEIOÖUÜY)--1     E
++ SAL EM-1                 N
++ SAL EN-^                 E
++ SAL EN(CDGKQT)--1        E
++ SAL ENZ(AEIOUY)--1       EN
++ SAL EN(AÄEINOÖUÜY)-1     EN
++ SAL EN-<1                N
++ SAL ERH(AÄEIOÖUÜ)-^      ER
++ SAL ER-^                 E
++ SAL ER(AÄEIOÖUÜY)-1      A
++ SAL ER1$                 A
++ SAL ER<1                 A
++ SAL ETI(AÄOÖÜU)-         EZI
++ SAL EUEU--               _
++ SAL EUILLE$              Ö
++ SAL EUR$                 ÖR
++ SAL EUX                  Ö
++ SAL EUYS$                EUZ
++ SAL EU                   EU
++ SAL EYER<                EIA
++ SAL EY<                  EI
++ SAL E                    E
++ SAL FANS--^$             FE
++ SAL FAN-^$               FE
++ SAL FAULT-               FUL
++ SAL FEE(DL)-             FI
++ SAL FEHLER               FELA
++ SAL FE(LMNRST)-3^        FE
++ SAL FOND7                FUN
++ SAL FRAIN$               FRA
++ SAL FRISEU(RS)-          FRIZÖ  # x
++ SAL F                    F
++ SAL G'S$                 X
++ SAL GAGS^$               KEX
++ SAL GAG^$                KEK
++ SAL GD                   KT
++ SAL GEGEN^^              KEKN
++ SAL GE(LMNRST)-3^        KE
++ SAL GETTE$               KET
++ SAL G(CK)-               _
++ SAL GG-                  _
++ SAL GI(AO)-^             I
++ SAL GION$                KIUN
++ SAL GIUS-^               IU
++ SAL GMBH^$               GMPH
++ SAL GNAC$                NIAK
++ SAL GNON$                NIUN
++ SAL GN$                  N
++ SAL GONCAL-^             KUNZA
++ SAL GS(CH)--             K
++ SAL GST                  XT
++ SAL G(SßXZ)              X
++ SAL GUCK-                KU
++ SAL GUI-^                K
++ SAL G                    K
++ SAL HEAD-                E
++ SAL HE(LMNRST)-3^        E
++ SAL HE(LMN)-1            E
++ SAL HEUR1$               ÖR
++ SAL H^                   _
++ SAL IEC$                 IZ
++ SAL IEI-3                _
++ SAL IELL3                IEL
++ SAL IENNE$               IN
++ SAL IERRE$               IER
++ SAL IETTE$               IT
++ SAL IEU                  IÖ
++ SAL IE<4                 I
++ SAL IGHT3$               EIT
++ SAL IGNI(EO)-            INI
++ SAL IGN(AEOU)-$          INI
++ SAL IJ(AOU)-             I
++ SAL IJ$                  I
++ SAL IJ<                  EI
++ SAL IKOLE$               IKUL
++ SAL ILLAN(STZ)--         ILIA
++ SAL ILLAR(DT)--          ILIA
++ SAL INVER-               INFE
++ SAL ITI(AÄOÖUÜ)-         IZI
++ SAL IVIER$               IFIE
++ SAL I                    I
++ SAL JAVIE---<^           ZA
++ SAL JEAN^$               IA
++ SAL JEAN-^               IA
++ SAL JER-^                IE
++ SAL JE(LMNST)-           IE
++ SAL JOR(GK)^$            IÖRK
++ SAL J                    I
++ SAL KC(ÄEIJ)-            X
++ SAL KE(LMNRST)-3^        KE
++ SAL KH<^                 K
++ SAL KIC$                 KIZ
++ SAL KLE(LMNRST)-3^       KLE
++ SAL KOTELE-^             KUTL
++ SAL KREAT-^              KREA
++ SAL KST                  XT
++ SAL K(SßXZ)              X
++ SAL KTI(AIOU)-3          XI
++ SAL KT(SßXZ)             X
++ SAL K                    K
++ SAL LARVE-               LARF
++ SAL LEAND-^              LEAN
++ SAL LEL-                 LE
++ SAL LE(MNRST)-3^         LE
++ SAL LETTE$               LET
++ SAL LFGNAG-              LFKAN
++ SAL LIC$                 LIZ
++ SAL LIVE^$               LEIF
++ SAL LUI(GS)--            LU
++ SAL L                    L
++ SAL MASSEU(RS)-          NAZÖ
++ SAL MAURICE              NURIZ
++ SAL MBH^$                MPH
++ SAL MB(SßZ)-             N
++ SAL MC9^                 NK
++ SAL MEMOIR-^             NENUA
++ SAL ME(LMNRST)-3^        NE
++ SAL MIGUEL               NIKL
++ SAL MIKE^$               NEIK
++ SAL MN                   N
++ SAL MPJUTE-              NPUT
++ SAL MP(SßZ)-             N
++ SAL MP(BDJLMNPQRTVW)-    NP
++ SAL M                    N
++ SAL NACH^^               NAK
++ SAL NADINE               NATIN
++ SAL NAIV--               NA
++ SAL NAISE$               NEZE
++ SAL NCOISE$              ZUA
++ SAL NCOIS$               ZUA
++ SAL NEBEN^^              NEPN
++ SAL NE(LMNRST)-3^        NE
++ SAL NEN-3                NE
++ SAL NETTE$               NET
++ SAL NG(BDFJLMNPQRTVW)-   NK
++ SAL NICHTS^^             NIX
++ SAL NICHT^^              NIKT
++ SAL NINE$                NIN
++ SAL NON^^                NUN
++ SAL NOT^^                NUT
++ SAL NTI(AIOU)-3          NZI
++ SAL NTIEL--3             NZI
++ SAL NYLON                NEILUN
++ SAL ND(SßZ)$             NZ
++ SAL NT(SßZ)$             NZ
++ SAL ND'S$                NZ
++ SAL NT'S$                NZ
++ SAL NSTS$                NZ
++ SAL N                    N
++ SAL OBER^^               UPA
++ SAL OE2                  Ö
++ SAL OGNIE-               UNI
++ SAL OGN(AEOU)-$          UNI
++ SAL OIE$                 Ö
++ SAL OIR$                 UAR
++ SAL OIX                  UA
++ SAL OI<3                 EU
++ SAL OJ(AÄEIOÖUÜ)--       U
++ SAL OKAY^$               UKE
++ SAL OLYN$                ULIN
++ SAL OTI(AÄOÖUÜ)-         UZI
++ SAL OUI^                 FI
++ SAL OUILLE$              ULIE
++ SAL OU(DT)-^             AU
++ SAL OUSE$                AUZ
++ SAL OUT-                 AU
++ SAL OU                   U
++ SAL OWS$                 UZ
++ SAL OY(AÄEIOÖUÜ)--       U
++ SAL O(JY)<               EU
++ SAL O                    U
++ SAL PATIEN--^            PAZI
++ SAL PENSIO-^             PANZI
++ SAL PE(LMNRST)-3^        PE
++ SAL PFER-^               FE
++ SAL P(FH)<               F
++ SAL POLY^^               PULI
++ SAL PORTRAIT7            PURTRE
++ SAL PP(FH)--<            P
++ SAL PP-                  _
++ SAL PRIX^$               PRI
++ SAL P(SßZ)^              Z
++ SAL PTI(AÄOÖUÜ)-3        PZI
++ SAL PIC^$                PIK
++ SAL P                    P
++ SAL QUE(LMNRST)-3        KFE
++ SAL QUE$                 K
++ SAL QUI(NS)$             KI
++ SAL QU                   KF
++ SAL Q<                   K
++ SAL RCH                  RK
++ SAL RECHERCH^            REZAZ
++ SAL RER$                 RA
++ SAL RE(MNR)-4            RE
++ SAL RETTE$               RET
++ SAL RH<^                 R
++ SAL RJA(MN)--            RI
++ SAL RTI(AÄOÖUÜ)-3        RZI
++ SAL RY(KN)-$             RI
++ SAL R                    R
++ SAL SAFE^$               ZEIF
++ SAL SAUCE-^              ZUZ
++ SAL SCHSCH---7           _
++ SAL SCHTSCH              Z
++ SAL SC(HZ)<              Z
++ SAL SC                   ZK
++ SAL SELBSTST--7^^        ZELP
++ SAL SELBST7^^            ZELPZT
++ SAL SERVICE7^            ZÖRFIZ
++ SAL SE(LMNRST)-3^        ZE
++ SAL SETTE$               ZET
++ SAL SHP-^                Z
++ SAL SHST                 ZT
++ SAL SHTSH                Z
++ SAL SHT                  Z
++ SAL SH3                  Z
++ SAL SIEGLI-^             ZIKL
++ SAL SIGLI-^              ZIKL
++ SAL SIGHT                ZEIT
++ SAL SIGN                 ZEIN
++ SAL SKI(NPZ)-            ZKI
++ SAL SKI<^                ZI
++ SAL SOUND-               ZAUN
++ SAL STAATS^^             ZTAZ
++ SAL STADT^^              ZTAT
++ SAL START^^              ZTART
++ SAL STAURANT7            ZTURAN
++ SAL STEAK-               ZTE
++ SAL STRAF^^              ZTRAF
++ SAL ST'S$                Z
++ SAL STST--               _
++ SAL STS(ACEHIOUÄÜÖ)--    ZT
++ SAL ST(SZ)               Z
++ SAL STYN(AE)-$           ZTIN
++ SAL ST                   ZT
++ SAL SZE(NPT)-^           ZE
++ SAL SZI(ELN)-^           ZI
++ SAL SZCZ<                Z
++ SAL SZT<                 ZT
++ SAL SZ<3                 Z
++ SAL S                    Z
++ SAL T'S3$                Z
++ SAL TCH                  Z
++ SAL TEAT-^               TEA
++ SAL TE(LMNRST)-3^        TE
++ SAL TH<                  T
++ SAL TIC$                 TIZ
++ SAL TOAS-^               TU
++ SAL TOILET-              TULE
++ SAL TOIN-                TUA
++ SAL TRAINI-              TREN
++ SAL TSCH                 Z
++ SAL TSH                  Z
++ SAL TST                  ZT
++ SAL T(Sß)                Z
++ SAL TT(SZ)--<            _
++ SAL TT9                  T
++ SAL TZ-                  _
++ SAL T                    T
++ SAL UEBER^^              IPA
++ SAL UE2                  I
++ SAL UIE$                 I
++ SAL UM^^                 UN
++ SAL UNTERE--             UNTE
++ SAL UNTER^^              UNTA
++ SAL UNVER^^              UNFA
++ SAL UN^^                 UN
++ SAL UTI(AÄOÖUÜ)-         UZI
++ SAL U                    U
++ SAL VACL-^               FAZ
++ SAL VAC$                 FAZ
++ SAL VEDD-^               FE
++ SAL VEREIN               FAEIN
++ SAL VERSEN^              FAZN
++ SAL VER^^                FA
++ SAL VER                  FA
++ SAL VET(HT)-^            FET
++ SAL VETTE$               FET
++ SAL VIC$                 FIZ
++ SAL VIEL                 FIL
++ SAL VIEW                 FIU
++ SAL VOR^^                FUR
++ SAL VY9^                 FI
++ SAL V<                   F
++ SAL WE(LMNRST)-3^        FE
++ SAL WIC$                 FIZ
++ SAL WIEDER^^             FITA
++ SAL WY9^                 FI
++ SAL W                    F
++ SAL XE(LMNRST)-3^        XE
++ SAL X<^                  Z
++ SAL X(CSZ)               X
++ SAL XTS(CH)--            XT
++ SAL XT(SZ)               Z
++ SAL X                    X
++ SAL YE(LMNRST)-3^        IE
++ SAL YE-3                 I
++ SAL YOR(GK)^$            IÖRK
++ SAL Y(AOU)-<7            I
++ SAL YVES^$               IF
++ SAL YVONNE^$             IFUN
++ SAL Y                    I
++ SAL ZC(AOU)-             ZK
++ SAL ZE(LMNRST)-3^        ZE
++ SAL ZH<                  Z
++ SAL ZS(CHT)--            _
++ SAL ZS                   Z
++ SAL ZUERST               ZUERZT
++ SAL ZURÜCK^^             ZURIK
++ SAL ZUVER^^              ZUFA    # x
++ SAL Z                    Z
diff --git a/runtime/spell/de/de_AT.diff b/runtime/spell/de/de_AT.diff
index 5947a98..9f8c4d1 100644
--- a/runtime/spell/de/de_AT.diff
+++ b/runtime/spell/de/de_AT.diff
@@ -1,16 +1,13 @@
 *** de_AT.orig.aff	Thu Aug 25 11:22:16 2005
---- de_AT.aff	Thu Aug 25 11:22:16 2005
+--- de_AT.aff	Thu Sep 29 11:44:45 2005
 ***************
 *** 3,4 ****
---- 3,24 ----
+--- 3,21 ----
   
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
 + MIDWORD	'
 + 
 + MAP 9
@@ -25,6 +22,486 @@
 + MAP sß
 + 
   
+***************
+*** 504 ****
+--- 521,997 ----
+  
++ 
++ #   German phonetic transformation rules from Aspell
++ #   Copyright (C) 2000 Björn Jacke, distributed under LGPL.
++ #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
++ #   Last changed 2000-01-07
++ 
++ SAL followup        1
++ SAL collapse_result 1
++ 
++ SAL ÄER-                 E
++ SAL ÄU<                  EU
++ SAL Ä<                   E
++ SAL É                    E
++ SAL ÖER-                 Ö
++ SAL Ö                    Ö
++ SAL ÜBER^^               IPA
++ SAL ÜER-                 I
++ SAL Ü                    I
++ SAL ß                    Z
++ SAL ABELLE$              APL
++ SAL ABELL$               APL
++ SAL ABIENNE$             APIN
++ SAL ACEY$                AZI
++ SAL AEU<                 EU
++ SAL AE2                  E
++ SAL AGNI-^               AKN
++ SAL AGNIE-               ANI
++ SAL AGN(AEOU)-$          ANI
++ SAL AIA2                 AIA
++ SAL AIE$                 E
++ SAL AILL(EOU)-           ALI
++ SAL AINE$                EN
++ SAL AIRE$                ER
++ SAL AIR-                 E
++ SAL AISE$                EZ
++ SAL AISSANCE$            EZANZ
++ SAL AISSE$               EZ
++ SAL AIX$                 EX
++ SAL AJ(AÄEIOÖUÜ)--       A
++ SAL AKTIE                AXIE
++ SAL ALO(IY)^             ALUI
++ SAL AMATEU(RS)-          ANATÖ
++ SAL ANIELLE$             ANIL
++ SAL ANTI^^               ANTI
++ SAL ANVER^^              ANFA
++ SAL ATIA$                ATIA
++ SAL ATIA(NS)--           ATI
++ SAL ATI(AÄOÖUÜ)-         AZI
++ SAL AUAU--               _
++ SAL AUER<                AUA
++ SAL AUF^^                AUF
++ SAL AULT$                U
++ SAL AUSSE$               UZ
++ SAL AUS(ST)-^            AUZ
++ SAL AUS^^                AUZ
++ SAL AUTO^^               AUTU
++ SAL AUX(IY)-             AUX
++ SAL AUX                  U
++ SAL AU                   AU
++ SAL AVIER$               AFIE
++ SAL AYER--<              EI
++ SAL AY(AÄEIOÖUÜ)--       A
++ SAL A(IJY)<              EI
++ SAL A                    A
++ SAL BEA(BCMNRU)-^        PEA
++ SAL BEAT(AEIMORU)-^      PEAT
++ SAL BEIGE^$              PEZ
++ SAL BE(LMNRST)-^         PE
++ SAL BETTE$               PET
++ SAL BIC$                 PIZ
++ SAL BOWL(EI)-            PUL
++ SAL BP(AÄEIOÖRUÜY)-      P
++ SAL BUDGET7              PIKE
++ SAL BUFFET7              PIFE
++ SAL BYLLE$               PILE
++ SAL BYLL$                PIL
++ SAL BYTE<                PEIT
++ SAL B                    P
++ SAL CÄ-                  Z
++ SAL CÜ$                  ZI
++ SAL CACH(EI)-^           KEZ
++ SAL CAE--                Z
++ SAL CA(IY)$              ZEI
++ SAL CCH                  Z
++ SAL CCE-                 X
++ SAL CE(EIJUY)--          Z
++ SAL CENT<                ZENT
++ SAL CERST(EI)----^       KE
++ SAL CER$                 ZA
++ SAL CE3                  ZE
++ SAL CHAO(ST)-            KAU
++ SAL CHAMPIO-^            ZENPI
++ SAL CHAR(AI)-^           KAR
++ SAL CHAU(CDFSVWXZ)-      ZU
++ SAL CHE(CF)-             ZE
++ SAL CHEM-^               KE
++ SAL CHEQUE<              ZEK
++ SAL CHI(CFGPVW)-         ZI
++ SAL CH(AEUY)-<^          Z
++ SAL CHK-                 _
++ SAL CH(LOR)-<^           K
++ SAL CHST-                X
++ SAL CH(SßXZ)3            X
++ SAL CH                   K
++ SAL CIER$                ZIE
++ SAL CYB-^                ZEI
++ SAL CY9^                 ZI
++ SAL C(IJY)-3             Z
++ SAL CKST                 XT
++ SAL CK(SßXZ)3            X
++ SAL C(CK)-               _
++ SAL CLAUDET---           KLU
++ SAL CLAUDINE^$           KLUTIN
++ SAL COLE$                KUL
++ SAL COUCH                KAUZ
++ SAL CQUES$               K
++ SAL CQUE                 K
++ SAL CREAT-^              KREA
++ SAL CST                  XT
++ SAL CS<^                 Z
++ SAL C(SßX)               X
++ SAL CT(SßXZ)             X
++ SAL CZ<                  Z
++ SAL C<                   K
++ SAL D'H^                 T
++ SAL D'S3$                Z
++ SAL DAVO(NR)-^$          TAFU
++ SAL DD(SZ)--<            _
++ SAL DEPOT7               TEPU
++ SAL DESIGN               TIZEIN
++ SAL DE(LMNRST)-3^        TE
++ SAL DETTE$               TET
++ SAL DIC$                 TIZ
++ SAL DJ(AEIOU)-^          I
++ SAL DS(CH)--<            T
++ SAL DST                  ZT
++ SAL DT-                  _
++ SAL DUIS-^               TI
++ SAL DURCH^^              TURK
++ SAL DZS(CH)--            T
++ SAL D(SßZ)               Z
++ SAL D                    T
++ SAL EAULT$               U
++ SAL EAUX$                U
++ SAL EAU                  U
++ SAL EAV                  IF
++ SAL EA(AÄEIOÖÜY)-3       EA
++ SAL EA3$                 EA
++ SAL EA3                  I
++ SAL EBEN^^               EPN
++ SAL EE9                  E
++ SAL EIEI--               _
++ SAL EIH--                E
++ SAL EILLE$               EI
++ SAL EI                   EI
++ SAL EJ$                  EI
++ SAL EL-^                 E
++ SAL EL(DKL)--1           E
++ SAL EL(MNT)--1$          E
++ SAL ELYNE$               ELINE
++ SAL ELYN$                ELIN
++ SAL EL(AÄEIOÖUÜY)-1      EL
++ SAL EL-1                 L
++ SAL EM-^                 E
++ SAL EM(DFKMPQT)--1       E
++ SAL EM(AÄEIOÖUÜY)--1     E
++ SAL EM-1                 N
++ SAL EN-^                 E
++ SAL EN(CDGKQT)--1        E
++ SAL ENZ(AEIOUY)--1       EN
++ SAL EN(AÄEINOÖUÜY)-1     EN
++ SAL EN-<1                N
++ SAL ERH(AÄEIOÖUÜ)-^      ER
++ SAL ER-^                 E
++ SAL ER(AÄEIOÖUÜY)-1      A
++ SAL ER1$                 A
++ SAL ER<1                 A
++ SAL ETI(AÄOÖÜU)-         EZI
++ SAL EUEU--               _
++ SAL EUILLE$              Ö
++ SAL EUR$                 ÖR
++ SAL EUX                  Ö
++ SAL EUYS$                EUZ
++ SAL EU                   EU
++ SAL EYER<                EIA
++ SAL EY<                  EI
++ SAL E                    E
++ SAL FANS--^$             FE
++ SAL FAN-^$               FE
++ SAL FAULT-               FUL
++ SAL FEE(DL)-             FI
++ SAL FEHLER               FELA
++ SAL FE(LMNRST)-3^        FE
++ SAL FOND7                FUN
++ SAL FRAIN$               FRA
++ SAL FRISEU(RS)-          FRIZÖ  # x
++ SAL F                    F
++ SAL G'S$                 X
++ SAL GAGS^$               KEX
++ SAL GAG^$                KEK
++ SAL GD                   KT
++ SAL GEGEN^^              KEKN
++ SAL GE(LMNRST)-3^        KE
++ SAL GETTE$               KET
++ SAL G(CK)-               _
++ SAL GG-                  _
++ SAL GI(AO)-^             I
++ SAL GION$                KIUN
++ SAL GIUS-^               IU
++ SAL GMBH^$               GMPH
++ SAL GNAC$                NIAK
++ SAL GNON$                NIUN
++ SAL GN$                  N
++ SAL GONCAL-^             KUNZA
++ SAL GS(CH)--             K
++ SAL GST                  XT
++ SAL G(SßXZ)              X
++ SAL GUCK-                KU
++ SAL GUI-^                K
++ SAL G                    K
++ SAL HEAD-                E
++ SAL HE(LMNRST)-3^        E
++ SAL HE(LMN)-1            E
++ SAL HEUR1$               ÖR
++ SAL H^                   _
++ SAL IEC$                 IZ
++ SAL IEI-3                _
++ SAL IELL3                IEL
++ SAL IENNE$               IN
++ SAL IERRE$               IER
++ SAL IETTE$               IT
++ SAL IEU                  IÖ
++ SAL IE<4                 I
++ SAL IGHT3$               EIT
++ SAL IGNI(EO)-            INI
++ SAL IGN(AEOU)-$          INI
++ SAL IJ(AOU)-             I
++ SAL IJ$                  I
++ SAL IJ<                  EI
++ SAL IKOLE$               IKUL
++ SAL ILLAN(STZ)--         ILIA
++ SAL ILLAR(DT)--          ILIA
++ SAL INVER-               INFE
++ SAL ITI(AÄOÖUÜ)-         IZI
++ SAL IVIER$               IFIE
++ SAL I                    I
++ SAL JAVIE---<^           ZA
++ SAL JEAN^$               IA
++ SAL JEAN-^               IA
++ SAL JER-^                IE
++ SAL JE(LMNST)-           IE
++ SAL JOR(GK)^$            IÖRK
++ SAL J                    I
++ SAL KC(ÄEIJ)-            X
++ SAL KE(LMNRST)-3^        KE
++ SAL KH<^                 K
++ SAL KIC$                 KIZ
++ SAL KLE(LMNRST)-3^       KLE
++ SAL KOTELE-^             KUTL
++ SAL KREAT-^              KREA
++ SAL KST                  XT
++ SAL K(SßXZ)              X
++ SAL KTI(AIOU)-3          XI
++ SAL KT(SßXZ)             X
++ SAL K                    K
++ SAL LARVE-               LARF
++ SAL LEAND-^              LEAN
++ SAL LEL-                 LE
++ SAL LE(MNRST)-3^         LE
++ SAL LETTE$               LET
++ SAL LFGNAG-              LFKAN
++ SAL LIC$                 LIZ
++ SAL LIVE^$               LEIF
++ SAL LUI(GS)--            LU
++ SAL L                    L
++ SAL MASSEU(RS)-          NAZÖ
++ SAL MAURICE              NURIZ
++ SAL MBH^$                MPH
++ SAL MB(SßZ)-             N
++ SAL MC9^                 NK
++ SAL MEMOIR-^             NENUA
++ SAL ME(LMNRST)-3^        NE
++ SAL MIGUEL               NIKL
++ SAL MIKE^$               NEIK
++ SAL MN                   N
++ SAL MPJUTE-              NPUT
++ SAL MP(SßZ)-             N
++ SAL MP(BDJLMNPQRTVW)-    NP
++ SAL M                    N
++ SAL NACH^^               NAK
++ SAL NADINE               NATIN
++ SAL NAIV--               NA
++ SAL NAISE$               NEZE
++ SAL NCOISE$              ZUA
++ SAL NCOIS$               ZUA
++ SAL NEBEN^^              NEPN
++ SAL NE(LMNRST)-3^        NE
++ SAL NEN-3                NE
++ SAL NETTE$               NET
++ SAL NG(BDFJLMNPQRTVW)-   NK
++ SAL NICHTS^^             NIX
++ SAL NICHT^^              NIKT
++ SAL NINE$                NIN
++ SAL NON^^                NUN
++ SAL NOT^^                NUT
++ SAL NTI(AIOU)-3          NZI
++ SAL NTIEL--3             NZI
++ SAL NYLON                NEILUN
++ SAL ND(SßZ)$             NZ
++ SAL NT(SßZ)$             NZ
++ SAL ND'S$                NZ
++ SAL NT'S$                NZ
++ SAL NSTS$                NZ
++ SAL N                    N
++ SAL OBER^^               UPA
++ SAL OE2                  Ö
++ SAL OGNIE-               UNI
++ SAL OGN(AEOU)-$          UNI
++ SAL OIE$                 Ö
++ SAL OIR$                 UAR
++ SAL OIX                  UA
++ SAL OI<3                 EU
++ SAL OJ(AÄEIOÖUÜ)--       U
++ SAL OKAY^$               UKE
++ SAL OLYN$                ULIN
++ SAL OTI(AÄOÖUÜ)-         UZI
++ SAL OUI^                 FI
++ SAL OUILLE$              ULIE
++ SAL OU(DT)-^             AU
++ SAL OUSE$                AUZ
++ SAL OUT-                 AU
++ SAL OU                   U
++ SAL OWS$                 UZ
++ SAL OY(AÄEIOÖUÜ)--       U
++ SAL O(JY)<               EU
++ SAL O                    U
++ SAL PATIEN--^            PAZI
++ SAL PENSIO-^             PANZI
++ SAL PE(LMNRST)-3^        PE
++ SAL PFER-^               FE
++ SAL P(FH)<               F
++ SAL POLY^^               PULI
++ SAL PORTRAIT7            PURTRE
++ SAL PP(FH)--<            P
++ SAL PP-                  _
++ SAL PRIX^$               PRI
++ SAL P(SßZ)^              Z
++ SAL PTI(AÄOÖUÜ)-3        PZI
++ SAL PIC^$                PIK
++ SAL P                    P
++ SAL QUE(LMNRST)-3        KFE
++ SAL QUE$                 K
++ SAL QUI(NS)$             KI
++ SAL QU                   KF
++ SAL Q<                   K
++ SAL RCH                  RK
++ SAL RECHERCH^            REZAZ
++ SAL RER$                 RA
++ SAL RE(MNR)-4            RE
++ SAL RETTE$               RET
++ SAL RH<^                 R
++ SAL RJA(MN)--            RI
++ SAL RTI(AÄOÖUÜ)-3        RZI
++ SAL RY(KN)-$             RI
++ SAL R                    R
++ SAL SAFE^$               ZEIF
++ SAL SAUCE-^              ZUZ
++ SAL SCHSCH---7           _
++ SAL SCHTSCH              Z
++ SAL SC(HZ)<              Z
++ SAL SC                   ZK
++ SAL SELBSTST--7^^        ZELP
++ SAL SELBST7^^            ZELPZT
++ SAL SERVICE7^            ZÖRFIZ
++ SAL SE(LMNRST)-3^        ZE
++ SAL SETTE$               ZET
++ SAL SHP-^                Z
++ SAL SHST                 ZT
++ SAL SHTSH                Z
++ SAL SHT                  Z
++ SAL SH3                  Z
++ SAL SIEGLI-^             ZIKL
++ SAL SIGLI-^              ZIKL
++ SAL SIGHT                ZEIT
++ SAL SIGN                 ZEIN
++ SAL SKI(NPZ)-            ZKI
++ SAL SKI<^                ZI
++ SAL SOUND-               ZAUN
++ SAL STAATS^^             ZTAZ
++ SAL STADT^^              ZTAT
++ SAL START^^              ZTART
++ SAL STAURANT7            ZTURAN
++ SAL STEAK-               ZTE
++ SAL STRAF^^              ZTRAF
++ SAL ST'S$                Z
++ SAL STST--               _
++ SAL STS(ACEHIOUÄÜÖ)--    ZT
++ SAL ST(SZ)               Z
++ SAL STYN(AE)-$           ZTIN
++ SAL ST                   ZT
++ SAL SZE(NPT)-^           ZE
++ SAL SZI(ELN)-^           ZI
++ SAL SZCZ<                Z
++ SAL SZT<                 ZT
++ SAL SZ<3                 Z
++ SAL S                    Z
++ SAL T'S3$                Z
++ SAL TCH                  Z
++ SAL TEAT-^               TEA
++ SAL TE(LMNRST)-3^        TE
++ SAL TH<                  T
++ SAL TIC$                 TIZ
++ SAL TOAS-^               TU
++ SAL TOILET-              TULE
++ SAL TOIN-                TUA
++ SAL TRAINI-              TREN
++ SAL TSCH                 Z
++ SAL TSH                  Z
++ SAL TST                  ZT
++ SAL T(Sß)                Z
++ SAL TT(SZ)--<            _
++ SAL TT9                  T
++ SAL TZ-                  _
++ SAL T                    T
++ SAL UEBER^^              IPA
++ SAL UE2                  I
++ SAL UIE$                 I
++ SAL UM^^                 UN
++ SAL UNTERE--             UNTE
++ SAL UNTER^^              UNTA
++ SAL UNVER^^              UNFA
++ SAL UN^^                 UN
++ SAL UTI(AÄOÖUÜ)-         UZI
++ SAL U                    U
++ SAL VACL-^               FAZ
++ SAL VAC$                 FAZ
++ SAL VEDD-^               FE
++ SAL VEREIN               FAEIN
++ SAL VERSEN^              FAZN
++ SAL VER^^                FA
++ SAL VER                  FA
++ SAL VET(HT)-^            FET
++ SAL VETTE$               FET
++ SAL VIC$                 FIZ
++ SAL VIEL                 FIL
++ SAL VIEW                 FIU
++ SAL VOR^^                FUR
++ SAL VY9^                 FI
++ SAL V<                   F
++ SAL WE(LMNRST)-3^        FE
++ SAL WIC$                 FIZ
++ SAL WIEDER^^             FITA
++ SAL WY9^                 FI
++ SAL W                    F
++ SAL XE(LMNRST)-3^        XE
++ SAL X<^                  Z
++ SAL X(CSZ)               X
++ SAL XTS(CH)--            XT
++ SAL XT(SZ)               Z
++ SAL X                    X
++ SAL YE(LMNRST)-3^        IE
++ SAL YE-3                 I
++ SAL YOR(GK)^$            IÖRK
++ SAL Y(AOU)-<7            I
++ SAL YVES^$               IF
++ SAL YVONNE^$             IFUN
++ SAL Y                    I
++ SAL ZC(AOU)-             ZK
++ SAL ZE(LMNRST)-3^        ZE
++ SAL ZH<                  Z
++ SAL ZS(CHT)--            _
++ SAL ZS                   Z
++ SAL ZUERST               ZUERZT
++ SAL ZURÜCK^^             ZURIK
++ SAL ZUVER^^              ZUFA    # x
++ SAL Z                    Z
 *** de_AT.orig.dic	Thu Aug 25 11:22:16 2005
 --- de_AT.dic	Thu Aug 25 11:24:01 2005
 ***************
diff --git a/runtime/spell/de/de_CH.diff b/runtime/spell/de/de_CH.diff
index ec44e8c..0467338 100644
--- a/runtime/spell/de/de_CH.diff
+++ b/runtime/spell/de/de_CH.diff
@@ -1,16 +1,13 @@
 *** de_CH.orig.aff	Thu Aug 25 11:22:18 2005
---- de_CH.aff	Thu Aug 25 11:22:18 2005
+--- de_CH.aff	Thu Sep 29 11:44:50 2005
 ***************
 *** 3,4 ****
---- 3,24 ----
+--- 3,21 ----
   
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
 + MIDWORD	'
 + 
 + MAP 9
@@ -25,3 +22,483 @@
 + MAP sß
 + 
   
+***************
+*** 501 ****
+--- 518,994 ----
+  REP eh e
++ 
++ #   German phonetic transformation rules from Aspell
++ #   Copyright (C) 2000 Björn Jacke, distributed under LGPL.
++ #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
++ #   Last changed 2000-01-07
++ 
++ SAL followup        1
++ SAL collapse_result 1
++ 
++ SAL ÄER-                 E
++ SAL ÄU<                  EU
++ SAL Ä<                   E
++ SAL É                    E
++ SAL ÖER-                 Ö
++ SAL Ö                    Ö
++ SAL ÜBER^^               IPA
++ SAL ÜER-                 I
++ SAL Ü                    I
++ SAL ß                    Z
++ SAL ABELLE$              APL
++ SAL ABELL$               APL
++ SAL ABIENNE$             APIN
++ SAL ACEY$                AZI
++ SAL AEU<                 EU
++ SAL AE2                  E
++ SAL AGNI-^               AKN
++ SAL AGNIE-               ANI
++ SAL AGN(AEOU)-$          ANI
++ SAL AIA2                 AIA
++ SAL AIE$                 E
++ SAL AILL(EOU)-           ALI
++ SAL AINE$                EN
++ SAL AIRE$                ER
++ SAL AIR-                 E
++ SAL AISE$                EZ
++ SAL AISSANCE$            EZANZ
++ SAL AISSE$               EZ
++ SAL AIX$                 EX
++ SAL AJ(AÄEIOÖUÜ)--       A
++ SAL AKTIE                AXIE
++ SAL ALO(IY)^             ALUI
++ SAL AMATEU(RS)-          ANATÖ
++ SAL ANIELLE$             ANIL
++ SAL ANTI^^               ANTI
++ SAL ANVER^^              ANFA
++ SAL ATIA$                ATIA
++ SAL ATIA(NS)--           ATI
++ SAL ATI(AÄOÖUÜ)-         AZI
++ SAL AUAU--               _
++ SAL AUER<                AUA
++ SAL AUF^^                AUF
++ SAL AULT$                U
++ SAL AUSSE$               UZ
++ SAL AUS(ST)-^            AUZ
++ SAL AUS^^                AUZ
++ SAL AUTO^^               AUTU
++ SAL AUX(IY)-             AUX
++ SAL AUX                  U
++ SAL AU                   AU
++ SAL AVIER$               AFIE
++ SAL AYER--<              EI
++ SAL AY(AÄEIOÖUÜ)--       A
++ SAL A(IJY)<              EI
++ SAL A                    A
++ SAL BEA(BCMNRU)-^        PEA
++ SAL BEAT(AEIMORU)-^      PEAT
++ SAL BEIGE^$              PEZ
++ SAL BE(LMNRST)-^         PE
++ SAL BETTE$               PET
++ SAL BIC$                 PIZ
++ SAL BOWL(EI)-            PUL
++ SAL BP(AÄEIOÖRUÜY)-      P
++ SAL BUDGET7              PIKE
++ SAL BUFFET7              PIFE
++ SAL BYLLE$               PILE
++ SAL BYLL$                PIL
++ SAL BYTE<                PEIT
++ SAL B                    P
++ SAL CÄ-                  Z
++ SAL CÜ$                  ZI
++ SAL CACH(EI)-^           KEZ
++ SAL CAE--                Z
++ SAL CA(IY)$              ZEI
++ SAL CCH                  Z
++ SAL CCE-                 X
++ SAL CE(EIJUY)--          Z
++ SAL CENT<                ZENT
++ SAL CERST(EI)----^       KE
++ SAL CER$                 ZA
++ SAL CE3                  ZE
++ SAL CHAO(ST)-            KAU
++ SAL CHAMPIO-^            ZENPI
++ SAL CHAR(AI)-^           KAR
++ SAL CHAU(CDFSVWXZ)-      ZU
++ SAL CHE(CF)-             ZE
++ SAL CHEM-^               KE
++ SAL CHEQUE<              ZEK
++ SAL CHI(CFGPVW)-         ZI
++ SAL CH(AEUY)-<^          Z
++ SAL CHK-                 _
++ SAL CH(LOR)-<^           K
++ SAL CHST-                X
++ SAL CH(SßXZ)3            X
++ SAL CH                   K
++ SAL CIER$                ZIE
++ SAL CYB-^                ZEI
++ SAL CY9^                 ZI
++ SAL C(IJY)-3             Z
++ SAL CKST                 XT
++ SAL CK(SßXZ)3            X
++ SAL C(CK)-               _
++ SAL CLAUDET---           KLU
++ SAL CLAUDINE^$           KLUTIN
++ SAL COLE$                KUL
++ SAL COUCH                KAUZ
++ SAL CQUES$               K
++ SAL CQUE                 K
++ SAL CREAT-^              KREA
++ SAL CST                  XT
++ SAL CS<^                 Z
++ SAL C(SßX)               X
++ SAL CT(SßXZ)             X
++ SAL CZ<                  Z
++ SAL C<                   K
++ SAL D'H^                 T
++ SAL D'S3$                Z
++ SAL DAVO(NR)-^$          TAFU
++ SAL DD(SZ)--<            _
++ SAL DEPOT7               TEPU
++ SAL DESIGN               TIZEIN
++ SAL DE(LMNRST)-3^        TE
++ SAL DETTE$               TET
++ SAL DIC$                 TIZ
++ SAL DJ(AEIOU)-^          I
++ SAL DS(CH)--<            T
++ SAL DST                  ZT
++ SAL DT-                  _
++ SAL DUIS-^               TI
++ SAL DURCH^^              TURK
++ SAL DZS(CH)--            T
++ SAL D(SßZ)               Z
++ SAL D                    T
++ SAL EAULT$               U
++ SAL EAUX$                U
++ SAL EAU                  U
++ SAL EAV                  IF
++ SAL EA(AÄEIOÖÜY)-3       EA
++ SAL EA3$                 EA
++ SAL EA3                  I
++ SAL EBEN^^               EPN
++ SAL EE9                  E
++ SAL EIEI--               _
++ SAL EIH--                E
++ SAL EILLE$               EI
++ SAL EI                   EI
++ SAL EJ$                  EI
++ SAL EL-^                 E
++ SAL EL(DKL)--1           E
++ SAL EL(MNT)--1$          E
++ SAL ELYNE$               ELINE
++ SAL ELYN$                ELIN
++ SAL EL(AÄEIOÖUÜY)-1      EL
++ SAL EL-1                 L
++ SAL EM-^                 E
++ SAL EM(DFKMPQT)--1       E
++ SAL EM(AÄEIOÖUÜY)--1     E
++ SAL EM-1                 N
++ SAL EN-^                 E
++ SAL EN(CDGKQT)--1        E
++ SAL ENZ(AEIOUY)--1       EN
++ SAL EN(AÄEINOÖUÜY)-1     EN
++ SAL EN-<1                N
++ SAL ERH(AÄEIOÖUÜ)-^      ER
++ SAL ER-^                 E
++ SAL ER(AÄEIOÖUÜY)-1      A
++ SAL ER1$                 A
++ SAL ER<1                 A
++ SAL ETI(AÄOÖÜU)-         EZI
++ SAL EUEU--               _
++ SAL EUILLE$              Ö
++ SAL EUR$                 ÖR
++ SAL EUX                  Ö
++ SAL EUYS$                EUZ
++ SAL EU                   EU
++ SAL EYER<                EIA
++ SAL EY<                  EI
++ SAL E                    E
++ SAL FANS--^$             FE
++ SAL FAN-^$               FE
++ SAL FAULT-               FUL
++ SAL FEE(DL)-             FI
++ SAL FEHLER               FELA
++ SAL FE(LMNRST)-3^        FE
++ SAL FOND7                FUN
++ SAL FRAIN$               FRA
++ SAL FRISEU(RS)-          FRIZÖ  # x
++ SAL F                    F
++ SAL G'S$                 X
++ SAL GAGS^$               KEX
++ SAL GAG^$                KEK
++ SAL GD                   KT
++ SAL GEGEN^^              KEKN
++ SAL GE(LMNRST)-3^        KE
++ SAL GETTE$               KET
++ SAL G(CK)-               _
++ SAL GG-                  _
++ SAL GI(AO)-^             I
++ SAL GION$                KIUN
++ SAL GIUS-^               IU
++ SAL GMBH^$               GMPH
++ SAL GNAC$                NIAK
++ SAL GNON$                NIUN
++ SAL GN$                  N
++ SAL GONCAL-^             KUNZA
++ SAL GS(CH)--             K
++ SAL GST                  XT
++ SAL G(SßXZ)              X
++ SAL GUCK-                KU
++ SAL GUI-^                K
++ SAL G                    K
++ SAL HEAD-                E
++ SAL HE(LMNRST)-3^        E
++ SAL HE(LMN)-1            E
++ SAL HEUR1$               ÖR
++ SAL H^                   _
++ SAL IEC$                 IZ
++ SAL IEI-3                _
++ SAL IELL3                IEL
++ SAL IENNE$               IN
++ SAL IERRE$               IER
++ SAL IETTE$               IT
++ SAL IEU                  IÖ
++ SAL IE<4                 I
++ SAL IGHT3$               EIT
++ SAL IGNI(EO)-            INI
++ SAL IGN(AEOU)-$          INI
++ SAL IJ(AOU)-             I
++ SAL IJ$                  I
++ SAL IJ<                  EI
++ SAL IKOLE$               IKUL
++ SAL ILLAN(STZ)--         ILIA
++ SAL ILLAR(DT)--          ILIA
++ SAL INVER-               INFE
++ SAL ITI(AÄOÖUÜ)-         IZI
++ SAL IVIER$               IFIE
++ SAL I                    I
++ SAL JAVIE---<^           ZA
++ SAL JEAN^$               IA
++ SAL JEAN-^               IA
++ SAL JER-^                IE
++ SAL JE(LMNST)-           IE
++ SAL JOR(GK)^$            IÖRK
++ SAL J                    I
++ SAL KC(ÄEIJ)-            X
++ SAL KE(LMNRST)-3^        KE
++ SAL KH<^                 K
++ SAL KIC$                 KIZ
++ SAL KLE(LMNRST)-3^       KLE
++ SAL KOTELE-^             KUTL
++ SAL KREAT-^              KREA
++ SAL KST                  XT
++ SAL K(SßXZ)              X
++ SAL KTI(AIOU)-3          XI
++ SAL KT(SßXZ)             X
++ SAL K                    K
++ SAL LARVE-               LARF
++ SAL LEAND-^              LEAN
++ SAL LEL-                 LE
++ SAL LE(MNRST)-3^         LE
++ SAL LETTE$               LET
++ SAL LFGNAG-              LFKAN
++ SAL LIC$                 LIZ
++ SAL LIVE^$               LEIF
++ SAL LUI(GS)--            LU
++ SAL L                    L
++ SAL MASSEU(RS)-          NAZÖ
++ SAL MAURICE              NURIZ
++ SAL MBH^$                MPH
++ SAL MB(SßZ)-             N
++ SAL MC9^                 NK
++ SAL MEMOIR-^             NENUA
++ SAL ME(LMNRST)-3^        NE
++ SAL MIGUEL               NIKL
++ SAL MIKE^$               NEIK
++ SAL MN                   N
++ SAL MPJUTE-              NPUT
++ SAL MP(SßZ)-             N
++ SAL MP(BDJLMNPQRTVW)-    NP
++ SAL M                    N
++ SAL NACH^^               NAK
++ SAL NADINE               NATIN
++ SAL NAIV--               NA
++ SAL NAISE$               NEZE
++ SAL NCOISE$              ZUA
++ SAL NCOIS$               ZUA
++ SAL NEBEN^^              NEPN
++ SAL NE(LMNRST)-3^        NE
++ SAL NEN-3                NE
++ SAL NETTE$               NET
++ SAL NG(BDFJLMNPQRTVW)-   NK
++ SAL NICHTS^^             NIX
++ SAL NICHT^^              NIKT
++ SAL NINE$                NIN
++ SAL NON^^                NUN
++ SAL NOT^^                NUT
++ SAL NTI(AIOU)-3          NZI
++ SAL NTIEL--3             NZI
++ SAL NYLON                NEILUN
++ SAL ND(SßZ)$             NZ
++ SAL NT(SßZ)$             NZ
++ SAL ND'S$                NZ
++ SAL NT'S$                NZ
++ SAL NSTS$                NZ
++ SAL N                    N
++ SAL OBER^^               UPA
++ SAL OE2                  Ö
++ SAL OGNIE-               UNI
++ SAL OGN(AEOU)-$          UNI
++ SAL OIE$                 Ö
++ SAL OIR$                 UAR
++ SAL OIX                  UA
++ SAL OI<3                 EU
++ SAL OJ(AÄEIOÖUÜ)--       U
++ SAL OKAY^$               UKE
++ SAL OLYN$                ULIN
++ SAL OTI(AÄOÖUÜ)-         UZI
++ SAL OUI^                 FI
++ SAL OUILLE$              ULIE
++ SAL OU(DT)-^             AU
++ SAL OUSE$                AUZ
++ SAL OUT-                 AU
++ SAL OU                   U
++ SAL OWS$                 UZ
++ SAL OY(AÄEIOÖUÜ)--       U
++ SAL O(JY)<               EU
++ SAL O                    U
++ SAL PATIEN--^            PAZI
++ SAL PENSIO-^             PANZI
++ SAL PE(LMNRST)-3^        PE
++ SAL PFER-^               FE
++ SAL P(FH)<               F
++ SAL POLY^^               PULI
++ SAL PORTRAIT7            PURTRE
++ SAL PP(FH)--<            P
++ SAL PP-                  _
++ SAL PRIX^$               PRI
++ SAL P(SßZ)^              Z
++ SAL PTI(AÄOÖUÜ)-3        PZI
++ SAL PIC^$                PIK
++ SAL P                    P
++ SAL QUE(LMNRST)-3        KFE
++ SAL QUE$                 K
++ SAL QUI(NS)$             KI
++ SAL QU                   KF
++ SAL Q<                   K
++ SAL RCH                  RK
++ SAL RECHERCH^            REZAZ
++ SAL RER$                 RA
++ SAL RE(MNR)-4            RE
++ SAL RETTE$               RET
++ SAL RH<^                 R
++ SAL RJA(MN)--            RI
++ SAL RTI(AÄOÖUÜ)-3        RZI
++ SAL RY(KN)-$             RI
++ SAL R                    R
++ SAL SAFE^$               ZEIF
++ SAL SAUCE-^              ZUZ
++ SAL SCHSCH---7           _
++ SAL SCHTSCH              Z
++ SAL SC(HZ)<              Z
++ SAL SC                   ZK
++ SAL SELBSTST--7^^        ZELP
++ SAL SELBST7^^            ZELPZT
++ SAL SERVICE7^            ZÖRFIZ
++ SAL SE(LMNRST)-3^        ZE
++ SAL SETTE$               ZET
++ SAL SHP-^                Z
++ SAL SHST                 ZT
++ SAL SHTSH                Z
++ SAL SHT                  Z
++ SAL SH3                  Z
++ SAL SIEGLI-^             ZIKL
++ SAL SIGLI-^              ZIKL
++ SAL SIGHT                ZEIT
++ SAL SIGN                 ZEIN
++ SAL SKI(NPZ)-            ZKI
++ SAL SKI<^                ZI
++ SAL SOUND-               ZAUN
++ SAL STAATS^^             ZTAZ
++ SAL STADT^^              ZTAT
++ SAL START^^              ZTART
++ SAL STAURANT7            ZTURAN
++ SAL STEAK-               ZTE
++ SAL STRAF^^              ZTRAF
++ SAL ST'S$                Z
++ SAL STST--               _
++ SAL STS(ACEHIOUÄÜÖ)--    ZT
++ SAL ST(SZ)               Z
++ SAL STYN(AE)-$           ZTIN
++ SAL ST                   ZT
++ SAL SZE(NPT)-^           ZE
++ SAL SZI(ELN)-^           ZI
++ SAL SZCZ<                Z
++ SAL SZT<                 ZT
++ SAL SZ<3                 Z
++ SAL S                    Z
++ SAL T'S3$                Z
++ SAL TCH                  Z
++ SAL TEAT-^               TEA
++ SAL TE(LMNRST)-3^        TE
++ SAL TH<                  T
++ SAL TIC$                 TIZ
++ SAL TOAS-^               TU
++ SAL TOILET-              TULE
++ SAL TOIN-                TUA
++ SAL TRAINI-              TREN
++ SAL TSCH                 Z
++ SAL TSH                  Z
++ SAL TST                  ZT
++ SAL T(Sß)                Z
++ SAL TT(SZ)--<            _
++ SAL TT9                  T
++ SAL TZ-                  _
++ SAL T                    T
++ SAL UEBER^^              IPA
++ SAL UE2                  I
++ SAL UIE$                 I
++ SAL UM^^                 UN
++ SAL UNTERE--             UNTE
++ SAL UNTER^^              UNTA
++ SAL UNVER^^              UNFA
++ SAL UN^^                 UN
++ SAL UTI(AÄOÖUÜ)-         UZI
++ SAL U                    U
++ SAL VACL-^               FAZ
++ SAL VAC$                 FAZ
++ SAL VEDD-^               FE
++ SAL VEREIN               FAEIN
++ SAL VERSEN^              FAZN
++ SAL VER^^                FA
++ SAL VER                  FA
++ SAL VET(HT)-^            FET
++ SAL VETTE$               FET
++ SAL VIC$                 FIZ
++ SAL VIEL                 FIL
++ SAL VIEW                 FIU
++ SAL VOR^^                FUR
++ SAL VY9^                 FI
++ SAL V<                   F
++ SAL WE(LMNRST)-3^        FE
++ SAL WIC$                 FIZ
++ SAL WIEDER^^             FITA
++ SAL WY9^                 FI
++ SAL W                    F
++ SAL XE(LMNRST)-3^        XE
++ SAL X<^                  Z
++ SAL X(CSZ)               X
++ SAL XTS(CH)--            XT
++ SAL XT(SZ)               Z
++ SAL X                    X
++ SAL YE(LMNRST)-3^        IE
++ SAL YE-3                 I
++ SAL YOR(GK)^$            IÖRK
++ SAL Y(AOU)-<7            I
++ SAL YVES^$               IF
++ SAL YVONNE^$             IFUN
++ SAL Y                    I
++ SAL ZC(AOU)-             ZK
++ SAL ZE(LMNRST)-3^        ZE
++ SAL ZH<                  Z
++ SAL ZS(CHT)--            _
++ SAL ZS                   Z
++ SAL ZUERST               ZUERZT
++ SAL ZURÜCK^^             ZURIK
++ SAL ZUVER^^              ZUFA    # x
++ SAL Z                    Z
diff --git a/runtime/spell/de/de_DE.diff b/runtime/spell/de/de_DE.diff
index 89f0a33..3d44c60 100644
--- a/runtime/spell/de/de_DE.diff
+++ b/runtime/spell/de/de_DE.diff
@@ -1,17 +1,14 @@
 *** de_DE.orig.aff	Thu Aug 25 11:22:06 2005
---- de_DE.aff	Thu Aug 25 11:22:06 2005
+--- de_DE.aff	Thu Sep 29 11:44:57 2005
 ***************
 *** 2,3 ****
---- 2,24 ----
+--- 2,21 ----
   TRY esianrtolcdugmphbyfvkwäüößáéêàâñESIANRTOLCDUGMPHBYFVKWÄÜÖ
 + 
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
 + MIDWORD	'
 + 
 + MAP 9
@@ -26,3 +23,483 @@
 + MAP sß
 + 
   #
+***************
+*** 1225 ****
+--- 1243,1719 ----
+  REP ö öe
++ 
++ #   German phonetic transformation rules from Aspell
++ #   Copyright (C) 2000 Björn Jacke, distributed under LGPL.
++ #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
++ #   Last changed 2000-01-07
++ 
++ SAL followup        1
++ SAL collapse_result 1
++ 
++ SAL ÄER-                 E
++ SAL ÄU<                  EU
++ SAL Ä<                   E
++ SAL É                    E
++ SAL ÖER-                 Ö
++ SAL Ö                    Ö
++ SAL ÜBER^^               IPA
++ SAL ÜER-                 I
++ SAL Ü                    I
++ SAL ß                    Z
++ SAL ABELLE$              APL
++ SAL ABELL$               APL
++ SAL ABIENNE$             APIN
++ SAL ACEY$                AZI
++ SAL AEU<                 EU
++ SAL AE2                  E
++ SAL AGNI-^               AKN
++ SAL AGNIE-               ANI
++ SAL AGN(AEOU)-$          ANI
++ SAL AIA2                 AIA
++ SAL AIE$                 E
++ SAL AILL(EOU)-           ALI
++ SAL AINE$                EN
++ SAL AIRE$                ER
++ SAL AIR-                 E
++ SAL AISE$                EZ
++ SAL AISSANCE$            EZANZ
++ SAL AISSE$               EZ
++ SAL AIX$                 EX
++ SAL AJ(AÄEIOÖUÜ)--       A
++ SAL AKTIE                AXIE
++ SAL ALO(IY)^             ALUI
++ SAL AMATEU(RS)-          ANATÖ
++ SAL ANIELLE$             ANIL
++ SAL ANTI^^               ANTI
++ SAL ANVER^^              ANFA
++ SAL ATIA$                ATIA
++ SAL ATIA(NS)--           ATI
++ SAL ATI(AÄOÖUÜ)-         AZI
++ SAL AUAU--               _
++ SAL AUER<                AUA
++ SAL AUF^^                AUF
++ SAL AULT$                U
++ SAL AUSSE$               UZ
++ SAL AUS(ST)-^            AUZ
++ SAL AUS^^                AUZ
++ SAL AUTO^^               AUTU
++ SAL AUX(IY)-             AUX
++ SAL AUX                  U
++ SAL AU                   AU
++ SAL AVIER$               AFIE
++ SAL AYER--<              EI
++ SAL AY(AÄEIOÖUÜ)--       A
++ SAL A(IJY)<              EI
++ SAL A                    A
++ SAL BEA(BCMNRU)-^        PEA
++ SAL BEAT(AEIMORU)-^      PEAT
++ SAL BEIGE^$              PEZ
++ SAL BE(LMNRST)-^         PE
++ SAL BETTE$               PET
++ SAL BIC$                 PIZ
++ SAL BOWL(EI)-            PUL
++ SAL BP(AÄEIOÖRUÜY)-      P
++ SAL BUDGET7              PIKE
++ SAL BUFFET7              PIFE
++ SAL BYLLE$               PILE
++ SAL BYLL$                PIL
++ SAL BYTE<                PEIT
++ SAL B                    P
++ SAL CÄ-                  Z
++ SAL CÜ$                  ZI
++ SAL CACH(EI)-^           KEZ
++ SAL CAE--                Z
++ SAL CA(IY)$              ZEI
++ SAL CCH                  Z
++ SAL CCE-                 X
++ SAL CE(EIJUY)--          Z
++ SAL CENT<                ZENT
++ SAL CERST(EI)----^       KE
++ SAL CER$                 ZA
++ SAL CE3                  ZE
++ SAL CHAO(ST)-            KAU
++ SAL CHAMPIO-^            ZENPI
++ SAL CHAR(AI)-^           KAR
++ SAL CHAU(CDFSVWXZ)-      ZU
++ SAL CHE(CF)-             ZE
++ SAL CHEM-^               KE
++ SAL CHEQUE<              ZEK
++ SAL CHI(CFGPVW)-         ZI
++ SAL CH(AEUY)-<^          Z
++ SAL CHK-                 _
++ SAL CH(LOR)-<^           K
++ SAL CHST-                X
++ SAL CH(SßXZ)3            X
++ SAL CH                   K
++ SAL CIER$                ZIE
++ SAL CYB-^                ZEI
++ SAL CY9^                 ZI
++ SAL C(IJY)-3             Z
++ SAL CKST                 XT
++ SAL CK(SßXZ)3            X
++ SAL C(CK)-               _
++ SAL CLAUDET---           KLU
++ SAL CLAUDINE^$           KLUTIN
++ SAL COLE$                KUL
++ SAL COUCH                KAUZ
++ SAL CQUES$               K
++ SAL CQUE                 K
++ SAL CREAT-^              KREA
++ SAL CST                  XT
++ SAL CS<^                 Z
++ SAL C(SßX)               X
++ SAL CT(SßXZ)             X
++ SAL CZ<                  Z
++ SAL C<                   K
++ SAL D'H^                 T
++ SAL D'S3$                Z
++ SAL DAVO(NR)-^$          TAFU
++ SAL DD(SZ)--<            _
++ SAL DEPOT7               TEPU
++ SAL DESIGN               TIZEIN
++ SAL DE(LMNRST)-3^        TE
++ SAL DETTE$               TET
++ SAL DIC$                 TIZ
++ SAL DJ(AEIOU)-^          I
++ SAL DS(CH)--<            T
++ SAL DST                  ZT
++ SAL DT-                  _
++ SAL DUIS-^               TI
++ SAL DURCH^^              TURK
++ SAL DZS(CH)--            T
++ SAL D(SßZ)               Z
++ SAL D                    T
++ SAL EAULT$               U
++ SAL EAUX$                U
++ SAL EAU                  U
++ SAL EAV                  IF
++ SAL EA(AÄEIOÖÜY)-3       EA
++ SAL EA3$                 EA
++ SAL EA3                  I
++ SAL EBEN^^               EPN
++ SAL EE9                  E
++ SAL EIEI--               _
++ SAL EIH--                E
++ SAL EILLE$               EI
++ SAL EI                   EI
++ SAL EJ$                  EI
++ SAL EL-^                 E
++ SAL EL(DKL)--1           E
++ SAL EL(MNT)--1$          E
++ SAL ELYNE$               ELINE
++ SAL ELYN$                ELIN
++ SAL EL(AÄEIOÖUÜY)-1      EL
++ SAL EL-1                 L
++ SAL EM-^                 E
++ SAL EM(DFKMPQT)--1       E
++ SAL EM(AÄEIOÖUÜY)--1     E
++ SAL EM-1                 N
++ SAL EN-^                 E
++ SAL EN(CDGKQT)--1        E
++ SAL ENZ(AEIOUY)--1       EN
++ SAL EN(AÄEINOÖUÜY)-1     EN
++ SAL EN-<1                N
++ SAL ERH(AÄEIOÖUÜ)-^      ER
++ SAL ER-^                 E
++ SAL ER(AÄEIOÖUÜY)-1      A
++ SAL ER1$                 A
++ SAL ER<1                 A
++ SAL ETI(AÄOÖÜU)-         EZI
++ SAL EUEU--               _
++ SAL EUILLE$              Ö
++ SAL EUR$                 ÖR
++ SAL EUX                  Ö
++ SAL EUYS$                EUZ
++ SAL EU                   EU
++ SAL EYER<                EIA
++ SAL EY<                  EI
++ SAL E                    E
++ SAL FANS--^$             FE
++ SAL FAN-^$               FE
++ SAL FAULT-               FUL
++ SAL FEE(DL)-             FI
++ SAL FEHLER               FELA
++ SAL FE(LMNRST)-3^        FE
++ SAL FOND7                FUN
++ SAL FRAIN$               FRA
++ SAL FRISEU(RS)-          FRIZÖ  # x
++ SAL F                    F
++ SAL G'S$                 X
++ SAL GAGS^$               KEX
++ SAL GAG^$                KEK
++ SAL GD                   KT
++ SAL GEGEN^^              KEKN
++ SAL GE(LMNRST)-3^        KE
++ SAL GETTE$               KET
++ SAL G(CK)-               _
++ SAL GG-                  _
++ SAL GI(AO)-^             I
++ SAL GION$                KIUN
++ SAL GIUS-^               IU
++ SAL GMBH^$               GMPH
++ SAL GNAC$                NIAK
++ SAL GNON$                NIUN
++ SAL GN$                  N
++ SAL GONCAL-^             KUNZA
++ SAL GS(CH)--             K
++ SAL GST                  XT
++ SAL G(SßXZ)              X
++ SAL GUCK-                KU
++ SAL GUI-^                K
++ SAL G                    K
++ SAL HEAD-                E
++ SAL HE(LMNRST)-3^        E
++ SAL HE(LMN)-1            E
++ SAL HEUR1$               ÖR
++ SAL H^                   _
++ SAL IEC$                 IZ
++ SAL IEI-3                _
++ SAL IELL3                IEL
++ SAL IENNE$               IN
++ SAL IERRE$               IER
++ SAL IETTE$               IT
++ SAL IEU                  IÖ
++ SAL IE<4                 I
++ SAL IGHT3$               EIT
++ SAL IGNI(EO)-            INI
++ SAL IGN(AEOU)-$          INI
++ SAL IJ(AOU)-             I
++ SAL IJ$                  I
++ SAL IJ<                  EI
++ SAL IKOLE$               IKUL
++ SAL ILLAN(STZ)--         ILIA
++ SAL ILLAR(DT)--          ILIA
++ SAL INVER-               INFE
++ SAL ITI(AÄOÖUÜ)-         IZI
++ SAL IVIER$               IFIE
++ SAL I                    I
++ SAL JAVIE---<^           ZA
++ SAL JEAN^$               IA
++ SAL JEAN-^               IA
++ SAL JER-^                IE
++ SAL JE(LMNST)-           IE
++ SAL JOR(GK)^$            IÖRK
++ SAL J                    I
++ SAL KC(ÄEIJ)-            X
++ SAL KE(LMNRST)-3^        KE
++ SAL KH<^                 K
++ SAL KIC$                 KIZ
++ SAL KLE(LMNRST)-3^       KLE
++ SAL KOTELE-^             KUTL
++ SAL KREAT-^              KREA
++ SAL KST                  XT
++ SAL K(SßXZ)              X
++ SAL KTI(AIOU)-3          XI
++ SAL KT(SßXZ)             X
++ SAL K                    K
++ SAL LARVE-               LARF
++ SAL LEAND-^              LEAN
++ SAL LEL-                 LE
++ SAL LE(MNRST)-3^         LE
++ SAL LETTE$               LET
++ SAL LFGNAG-              LFKAN
++ SAL LIC$                 LIZ
++ SAL LIVE^$               LEIF
++ SAL LUI(GS)--            LU
++ SAL L                    L
++ SAL MASSEU(RS)-          NAZÖ
++ SAL MAURICE              NURIZ
++ SAL MBH^$                MPH
++ SAL MB(SßZ)-             N
++ SAL MC9^                 NK
++ SAL MEMOIR-^             NENUA
++ SAL ME(LMNRST)-3^        NE
++ SAL MIGUEL               NIKL
++ SAL MIKE^$               NEIK
++ SAL MN                   N
++ SAL MPJUTE-              NPUT
++ SAL MP(SßZ)-             N
++ SAL MP(BDJLMNPQRTVW)-    NP
++ SAL M                    N
++ SAL NACH^^               NAK
++ SAL NADINE               NATIN
++ SAL NAIV--               NA
++ SAL NAISE$               NEZE
++ SAL NCOISE$              ZUA
++ SAL NCOIS$               ZUA
++ SAL NEBEN^^              NEPN
++ SAL NE(LMNRST)-3^        NE
++ SAL NEN-3                NE
++ SAL NETTE$               NET
++ SAL NG(BDFJLMNPQRTVW)-   NK
++ SAL NICHTS^^             NIX
++ SAL NICHT^^              NIKT
++ SAL NINE$                NIN
++ SAL NON^^                NUN
++ SAL NOT^^                NUT
++ SAL NTI(AIOU)-3          NZI
++ SAL NTIEL--3             NZI
++ SAL NYLON                NEILUN
++ SAL ND(SßZ)$             NZ
++ SAL NT(SßZ)$             NZ
++ SAL ND'S$                NZ
++ SAL NT'S$                NZ
++ SAL NSTS$                NZ
++ SAL N                    N
++ SAL OBER^^               UPA
++ SAL OE2                  Ö
++ SAL OGNIE-               UNI
++ SAL OGN(AEOU)-$          UNI
++ SAL OIE$                 Ö
++ SAL OIR$                 UAR
++ SAL OIX                  UA
++ SAL OI<3                 EU
++ SAL OJ(AÄEIOÖUÜ)--       U
++ SAL OKAY^$               UKE
++ SAL OLYN$                ULIN
++ SAL OTI(AÄOÖUÜ)-         UZI
++ SAL OUI^                 FI
++ SAL OUILLE$              ULIE
++ SAL OU(DT)-^             AU
++ SAL OUSE$                AUZ
++ SAL OUT-                 AU
++ SAL OU                   U
++ SAL OWS$                 UZ
++ SAL OY(AÄEIOÖUÜ)--       U
++ SAL O(JY)<               EU
++ SAL O                    U
++ SAL PATIEN--^            PAZI
++ SAL PENSIO-^             PANZI
++ SAL PE(LMNRST)-3^        PE
++ SAL PFER-^               FE
++ SAL P(FH)<               F
++ SAL POLY^^               PULI
++ SAL PORTRAIT7            PURTRE
++ SAL PP(FH)--<            P
++ SAL PP-                  _
++ SAL PRIX^$               PRI
++ SAL P(SßZ)^              Z
++ SAL PTI(AÄOÖUÜ)-3        PZI
++ SAL PIC^$                PIK
++ SAL P                    P
++ SAL QUE(LMNRST)-3        KFE
++ SAL QUE$                 K
++ SAL QUI(NS)$             KI
++ SAL QU                   KF
++ SAL Q<                   K
++ SAL RCH                  RK
++ SAL RECHERCH^            REZAZ
++ SAL RER$                 RA
++ SAL RE(MNR)-4            RE
++ SAL RETTE$               RET
++ SAL RH<^                 R
++ SAL RJA(MN)--            RI
++ SAL RTI(AÄOÖUÜ)-3        RZI
++ SAL RY(KN)-$             RI
++ SAL R                    R
++ SAL SAFE^$               ZEIF
++ SAL SAUCE-^              ZUZ
++ SAL SCHSCH---7           _
++ SAL SCHTSCH              Z
++ SAL SC(HZ)<              Z
++ SAL SC                   ZK
++ SAL SELBSTST--7^^        ZELP
++ SAL SELBST7^^            ZELPZT
++ SAL SERVICE7^            ZÖRFIZ
++ SAL SE(LMNRST)-3^        ZE
++ SAL SETTE$               ZET
++ SAL SHP-^                Z
++ SAL SHST                 ZT
++ SAL SHTSH                Z
++ SAL SHT                  Z
++ SAL SH3                  Z
++ SAL SIEGLI-^             ZIKL
++ SAL SIGLI-^              ZIKL
++ SAL SIGHT                ZEIT
++ SAL SIGN                 ZEIN
++ SAL SKI(NPZ)-            ZKI
++ SAL SKI<^                ZI
++ SAL SOUND-               ZAUN
++ SAL STAATS^^             ZTAZ
++ SAL STADT^^              ZTAT
++ SAL START^^              ZTART
++ SAL STAURANT7            ZTURAN
++ SAL STEAK-               ZTE
++ SAL STRAF^^              ZTRAF
++ SAL ST'S$                Z
++ SAL STST--               _
++ SAL STS(ACEHIOUÄÜÖ)--    ZT
++ SAL ST(SZ)               Z
++ SAL STYN(AE)-$           ZTIN
++ SAL ST                   ZT
++ SAL SZE(NPT)-^           ZE
++ SAL SZI(ELN)-^           ZI
++ SAL SZCZ<                Z
++ SAL SZT<                 ZT
++ SAL SZ<3                 Z
++ SAL S                    Z
++ SAL T'S3$                Z
++ SAL TCH                  Z
++ SAL TEAT-^               TEA
++ SAL TE(LMNRST)-3^        TE
++ SAL TH<                  T
++ SAL TIC$                 TIZ
++ SAL TOAS-^               TU
++ SAL TOILET-              TULE
++ SAL TOIN-                TUA
++ SAL TRAINI-              TREN
++ SAL TSCH                 Z
++ SAL TSH                  Z
++ SAL TST                  ZT
++ SAL T(Sß)                Z
++ SAL TT(SZ)--<            _
++ SAL TT9                  T
++ SAL TZ-                  _
++ SAL T                    T
++ SAL UEBER^^              IPA
++ SAL UE2                  I
++ SAL UIE$                 I
++ SAL UM^^                 UN
++ SAL UNTERE--             UNTE
++ SAL UNTER^^              UNTA
++ SAL UNVER^^              UNFA
++ SAL UN^^                 UN
++ SAL UTI(AÄOÖUÜ)-         UZI
++ SAL U                    U
++ SAL VACL-^               FAZ
++ SAL VAC$                 FAZ
++ SAL VEDD-^               FE
++ SAL VEREIN               FAEIN
++ SAL VERSEN^              FAZN
++ SAL VER^^                FA
++ SAL VER                  FA
++ SAL VET(HT)-^            FET
++ SAL VETTE$               FET
++ SAL VIC$                 FIZ
++ SAL VIEL                 FIL
++ SAL VIEW                 FIU
++ SAL VOR^^                FUR
++ SAL VY9^                 FI
++ SAL V<                   F
++ SAL WE(LMNRST)-3^        FE
++ SAL WIC$                 FIZ
++ SAL WIEDER^^             FITA
++ SAL WY9^                 FI
++ SAL W                    F
++ SAL XE(LMNRST)-3^        XE
++ SAL X<^                  Z
++ SAL X(CSZ)               X
++ SAL XTS(CH)--            XT
++ SAL XT(SZ)               Z
++ SAL X                    X
++ SAL YE(LMNRST)-3^        IE
++ SAL YE-3                 I
++ SAL YOR(GK)^$            IÖRK
++ SAL Y(AOU)-<7            I
++ SAL YVES^$               IF
++ SAL YVONNE^$             IFUN
++ SAL Y                    I
++ SAL ZC(AOU)-             ZK
++ SAL ZE(LMNRST)-3^        ZE
++ SAL ZH<                  Z
++ SAL ZS(CHT)--            _
++ SAL ZS                   Z
++ SAL ZUERST               ZUERZT
++ SAL ZURÜCK^^             ZURIK
++ SAL ZUVER^^              ZUFA    # x
++ SAL Z                    Z
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index 0715e55..d783145 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 6d4fe5f..6a8438f 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index d3cd823..becbd6c 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/spell/en/en_GB.diff b/runtime/spell/en/en_GB.diff
index 714077d..980502d 100644
--- a/runtime/spell/en/en_GB.diff
+++ b/runtime/spell/en/en_GB.diff
@@ -2356,7 +2356,7 @@
 ! SFX 3 o ist's o
 ! SFX 3 0 ist's [^eoy]
 *** en_GB.orig.dic	Sun Jul  3 18:05:07 2005
---- en_GB.dic	Tue Aug 16 17:05:18 2005
+--- en_GB.dic	Wed Sep 28 23:07:50 2005
 ***************
 *** 630,632 ****
   Byrne/M
@@ -2519,26 +2519,32 @@
 ! singly
   Sabine/M
 ***************
+*** 41153,41155 ****
+  zymurgy/S
+- à
+  Aachen/M
+--- 41136,41137 ----
+***************
 *** 41473,41475 ****
   azalea/MS
 - b/pb
   Baal/M
---- 41456,41457 ----
+--- 41455,41456 ----
 ***************
 *** 43612,43614 ****
   justnesses
 - k/k
   kabob's
---- 43594,43595 ----
+--- 43593,43594 ----
 ***************
 *** 45690,45692 ****
   syringe/SMGD
 - t/7k
   Tabasco/M
---- 45671,45672 ----
+--- 45670,45671 ----
 ***************
 *** 46281 ****
---- 46261,46276 ----
+--- 46260,46275 ----
   Zurich/M
 + conj.
 + pompon
diff --git a/runtime/spell/en/en_NZ.diff b/runtime/spell/en/en_NZ.diff
index 3eee718..5250a8e 100644
--- a/runtime/spell/en/en_NZ.diff
+++ b/runtime/spell/en/en_NZ.diff
@@ -2353,7 +2353,7 @@
 ! SFX 3 o ist's o
 ! SFX 3 0 ist's [^eoy]
 *** en_NZ.orig.dic	Fri Apr 15 13:20:36 2005
---- en_NZ.dic	Tue Aug 16 17:05:28 2005
+--- en_NZ.dic	Wed Sep 28 23:08:01 2005
 ***************
 *** 4,6 ****
   2ZB
@@ -2603,71 +2603,77 @@
   yacht/M5SmGD
 --- 45886,45887 ----
 ***************
+*** 46152,46154 ****
+  zymurgy/S
+- à
+  font/SM
+--- 46131,46132 ----
+***************
 *** 46198,46200 ****
   rata/M
 - kaka/M
   waka/M
---- 46177,46178 ----
+--- 46176,46177 ----
 ***************
 *** 46216,46218 ****
   jandal/MS
 - Swanndri/M
   hoon/MS
---- 46194,46195 ----
+--- 46193,46194 ----
 ***************
 *** 46242,46244 ****
   Invercargill/M
 - Te
   Alexandra/M
---- 46219,46220 ----
+--- 46218,46219 ----
 ***************
 *** 46261,46263 ****
   Kawerau/M
 - Kerikeri/M
   Lyttelton/M
---- 46237,46238 ----
+--- 46236,46237 ----
 ***************
 *** 46491,46493 ****
   Waianakarua
 - Hakatere
   Swin
---- 46466,46467 ----
+--- 46465,46466 ----
 ***************
 *** 46690,46692 ****
   Omarama/M
 - Wairarapa/M
   Kilda/M
---- 46664,46665 ----
+--- 46663,46664 ----
 ***************
 *** 46711,46713 ****
   Wellsford/M
 - Akaroa/M
   Avonhead/M
---- 46684,46685 ----
+--- 46683,46684 ----
 ***************
 *** 46838,46840 ****
   Ballantyne's
 - DB
   Monteith's
---- 46810,46811 ----
+--- 46809,46810 ----
 ***************
 *** 46920,46922 ****
   Egmont/M
 - Waitaki/M
   katipo/M
---- 46891,46892 ----
+--- 46890,46891 ----
 ***************
 *** 46956,46958 ****
   Sunnyside/M
 - Wairau/M
   Waikoropupu
---- 46926,46927 ----
+--- 46925,46926 ----
 ***************
 *** 47141,47142 ****
   Burkina
 ! Faso/M
 \ No newline at end of file
---- 47110,47118 ----
+--- 47109,47117 ----
   Burkina
 ! Faso/M
 ! nd
diff --git a/runtime/spell/en/en_US.diff b/runtime/spell/en/en_US.diff
index f42dc03..12de732 100644
--- a/runtime/spell/en/en_US.diff
+++ b/runtime/spell/en/en_US.diff
@@ -1,5 +1,5 @@
 *** en_US.orig.aff	Fri Apr 15 13:20:36 2005
---- en_US.aff	Tue Sep 20 19:41:00 2005
+--- en_US.aff	Wed Sep 28 22:06:01 2005
 ***************
 *** 3,4 ****
 --- 3,134 ----
@@ -190,9 +190,9 @@
 *** 188 ****
 --- 321,325 ----
   REP shun cion
-+ REP the_the the
-+ REP an_an an
 + REP an_a a
++ REP an_a an
++ REP a_an a
 + REP a_an an
 *** en_US.orig.dic	Fri Apr 15 13:20:36 2005
 --- en_US.dic	Wed Sep 21 11:36:06 2005
diff --git a/runtime/spell/es/es_ES.diff b/runtime/spell/es/es_ES.diff
index 2fabe28..f52228f 100644
--- a/runtime/spell/es/es_ES.diff
+++ b/runtime/spell/es/es_ES.diff
@@ -1,5 +1,5 @@
-*** es_ES.orig.aff	Thu Aug 25 19:11:20 2005
---- es_ES.aff	Thu Aug 25 19:12:47 2005
+*** es_ES.orig.aff	Thu Aug 25 19:19:44 2005
+--- es_ES.aff	Thu Aug 25 19:19:44 2005
 ***************
 *** 3,4 ****
 --- 3,22 ----
@@ -23,3 +23,59 @@
 + MAP sß
 + 
   SFX J Y 12
+*** es_ES.orig.dic	Thu Aug 25 19:19:44 2005
+--- es_ES.dic	Thu Aug 25 20:18:55 2005
+***************
+*** 485,487 ****
+  acercóse
+- acercóse
+  acería/S
+--- 485,486 ----
+***************
+*** 708,710 ****
+  acríticamente
+- acrítico
+  acrítico/PS
+--- 707,708 ----
+***************
+*** 948,950 ****
+  adónde
+- adónde
+  adondequiera
+--- 946,947 ----
+***************
+*** 1435,1437 ****
+  ah
+- ah
+  ahajar/PSTVWX
+--- 1432,1433 ----
+***************
+*** 3887,3889 ****
+  apostolado
+- apostolado
+  apostolados
+--- 3883,3884 ----
+***************
+*** 12926,12928 ****
+  dame
+- dame
+  dámelo
+--- 12921,12922 ----
+***************
+*** 15561,15563 ****
+  dime
+- dime
+  dímelo
+--- 15555,15556 ----
+***************
+*** 25133,25135 ****
+  inadaptado/PS
+- inadecuación
+  inadecuación/S
+--- 25126,25127 ----
+***************
+*** 28007,28009 ****
+  librancista/S
+- líbranos
+  líbranos
+--- 27999,28000 ----
diff --git a/runtime/spell/es/es_MX.diff b/runtime/spell/es/es_MX.diff
index 3e4e7c9..59d8312 100644
--- a/runtime/spell/es/es_MX.diff
+++ b/runtime/spell/es/es_MX.diff
@@ -1,5 +1,5 @@
-*** es_MX.orig.aff	Thu Aug 25 19:11:21 2005
---- es_MX.aff	Thu Aug 25 19:13:08 2005
+*** es_MX.orig.aff	Thu Aug 25 19:19:45 2005
+--- es_MX.aff	Thu Aug 25 19:19:45 2005
 ***************
 *** 1,4 ****
 ! SET ISO8859-1

@@ -6959,3 +6959,17 @@
 ! SFX Z eguir iguiéndonoslas eguir
 ! SFX Z eguir iguiéndonosle eguir
 ! SFX Z eguir iguiéndonosles eguir
+*** es_MX.orig.dic	Thu Aug 25 19:19:45 2005
+--- es_MX.dic	Thu Aug 25 20:15:59 2005
+***************
+*** 1218,1220 ****
+  Internet
+- intraocular
+  Irapuato
+--- 1218,1219 ----
+***************
+*** 33345,33347 ****
+  nanear/PSVWX
+- nanche/S
+  nanjea/S
+--- 33344,33345 ----
diff --git a/runtime/spell/fo/fo_FO.diff b/runtime/spell/fo/fo_FO.diff
index 212befe..12d0420 100644
--- a/runtime/spell/fo/fo_FO.diff
+++ b/runtime/spell/fo/fo_FO.diff
@@ -1,5 +1,5 @@
-*** fo_FO.orig.aff	Tue Aug 16 17:39:22 2005
---- fo_FO.aff	Tue Aug 16 17:41:00 2005
+*** fo_FO.orig.aff	Wed Aug 31 22:02:11 2005
+--- fo_FO.aff	Wed Aug 31 22:02:11 2005
 ***************
 *** 6 ****
 --- 6,14 ----
diff --git a/runtime/spell/ku/ku_TR.diff b/runtime/spell/ku/ku_TR.diff
index e69de29..4d6e875 100644
--- a/runtime/spell/ku/ku_TR.diff
+++ b/runtime/spell/ku/ku_TR.diff
@@ -0,0 +1,104 @@
+*** ku_TR.orig.dic	Wed Aug 31 22:13:17 2005
+--- ku_TR.dic	Wed Aug 31 22:19:22 2005
+***************
+*** 492,494 ****
+  bergan
+- bergeh
+  bergeh/m
+--- 492,493 ----
+***************
+*** 1144,1146 ****
+  digevize
+- digihîje
+  digihîje/Dd
+--- 1143,1144 ----
+***************
+*** 1150,1152 ****
+  digihîþtin
+- digire/D
+  digire/Dd
+--- 1148,1149 ----
+***************
+*** 1361,1363 ****
+  diþubin
+- diþîne
+  diþîne/Dd
+--- 1358,1359 ----
+***************
+*** 1372,1374 ****
+  dom
+- domand
+  domand/Ee
+--- 1368,1369 ----
+***************
+*** 1489,1491 ****
+  Erbaþ
+- erd
+  erd/n
+--- 1484,1485 ----
+***************
+*** 1893,1895 ****
+  Heso
+- hesp
+  hesp/n
+--- 1887,1888 ----
+***************
+*** 2139,2141 ****
+  jiyîn
+- jor
+  jor/r
+--- 2132,2133 ----
+***************
+*** 2382,2384 ****
+  kund
+- kur
+  kur/n
+--- 2374,2375 ----
+***************
+*** 2414,2416 ****
+  kuxiyane
+- kuçe
+  kuçe/m
+--- 2405,2406 ----
+***************
+*** 2576,2578 ****
+  medyayê
+- meh
+  meh/m
+--- 2566,2567 ----
+***************
+*** 3050,3052 ****
+  nivîsîbû
+- nivîsîn
+  nivîsîn/m
+--- 3039,3040 ----
+***************
+*** 3443,3445 ****
+  qonax/m
+- Qoser
+  Qoser/m
+--- 3431,3432 ----
+***************
+*** 3467,3469 ****
+  radibe/Dd
+- radigihîne
+  radigihîne/Dd
+--- 3454,3455 ----
+***************
+*** 3671,3673 ****
+  sakoyekî
+- sal/m
+  sal/mn
+--- 3657,3658 ----
+***************
+*** 3881,3883 ****
+  tar
+- tarî
+  tarî/m
+--- 3866,3867 ----
+***************
+*** 4303,4305 ****
+  xeratiyê
+- xerîb
+  xerîb/m
+--- 4287,4288 ----
diff --git a/runtime/spell/lv/lv_LV.diff b/runtime/spell/lv/lv_LV.diff
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/runtime/spell/lv/lv_LV.diff
diff --git a/runtime/spell/ms/ms_MY.diff b/runtime/spell/ms/ms_MY.diff
index 8bde595..a6c9916 100644
--- a/runtime/spell/ms/ms_MY.diff
+++ b/runtime/spell/ms/ms_MY.diff
@@ -1,5 +1,5 @@
-*** ms_MY.orig.aff	Wed Aug 31 18:09:58 2005
---- ms_MY.aff	Wed Aug 31 18:12:51 2005
+*** ms_MY.orig.aff	Wed Aug 31 18:14:01 2005
+--- ms_MY.aff	Wed Aug 31 18:14:01 2005
 ***************
 *** 25,26 ****
 --- 25,35 ----
@@ -14,8 +14,8 @@
 + MIDWORD -
 + 
   PFX B Y 2 
-*** ms_MY.orig.dic	Wed Aug 31 18:09:58 2005
---- ms_MY.dic	Wed Aug 31 18:12:48 2005
+*** ms_MY.orig.dic	Wed Aug 31 18:14:01 2005
+--- ms_MY.dic	Wed Aug 31 18:14:01 2005
 ***************
 *** 4939,4941 ****
   datin
diff --git a/runtime/spell/yi/yi.diff b/runtime/spell/yi/yi.diff
index d14a592..099488a 100644
--- a/runtime/spell/yi/yi.diff
+++ b/runtime/spell/yi/yi.diff
@@ -6,7 +6,7 @@
 + 999999
   גרונטעלעמענט
   דזשאָבענדיקס
-*** /dev/null	Tue Aug 23 22:51:11 2005
+*** /dev/null	Thu Sep 29 20:06:57 2005
 --- yi.aff	Mon Aug 15 23:06:00 2005
 ***************
 *** 0 ****
diff --git a/runtime/spell/yi/yi_tr.diff b/runtime/spell/yi/yi_tr.diff
index 1616f30..c39e0fe 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 23 22:51:11 2005
+*** /dev/null	Thu Sep 29 20:06:57 2005
 --- yi_tr.aff	Tue Aug 16 10:48:01 2005
 ***************
 *** 0 ****
diff --git a/src/eval.c b/src/eval.c
index 206bbfb..e521211 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5571,8 +5571,8 @@
     list_append(l, li);
     li->li_tv.v_type = VAR_STRING;
     li->li_tv.v_lock = 0;
-    if ((li->li_tv.vval.v_string = len >= 0 ? vim_strnsave(str, len)
-						  : vim_strsave(str)) == NULL)
+    if ((li->li_tv.vval.v_string = (len >= 0 ? vim_strnsave(str, len)
+						 : vim_strsave(str))) == NULL)
 	return FAIL;
     return OK;
 }
@@ -8271,7 +8271,7 @@
     static int		fnum = 0;
     static int		change_start = 0;
     static int		change_end = 0;
-    static enum hlf_value hlID = 0;
+    static hlf_T	hlID = 0;
     int			filler_lines;
     int			col;
 
@@ -8298,7 +8298,7 @@
 		hlID = HLF_ADD;	/* added line */
 	}
 	else
-	    hlID = (enum hlf_value)0;
+	    hlID = (hlf_T)0;
 	prev_lnum = lnum;
 	changedtick = curbuf->b_changedtick;
 	fnum = curbuf->b_fnum;
@@ -8312,7 +8312,7 @@
 	else
 	    hlID = HLF_CHD;			/* changed line */
     }
-    rettv->vval.v_number = hlID == (enum hlf_value)0 ? 0 : (int)hlID;
+    rettv->vval.v_number = hlID == (hlf_T)0 ? 0 : (int)hlID;
 #endif
 }
 
@@ -13902,8 +13902,8 @@
 {
     char_u	*word = (char_u *)"";
 #ifdef FEAT_SYN_HL
-    int		len;
-    int		attr = 0;
+    int		len = 0;
+    hlf_T	attr = HLF_COUNT;
     list_T	*l;
 #endif
 
@@ -13933,7 +13933,7 @@
 	    while (*str != NUL)
 	    {
 		len = spell_check(curwin, str, &attr, &capcol);
-		if (attr != 0)
+		if (attr != HLF_COUNT)
 		{
 		    word = str;
 		    break;
@@ -13946,11 +13946,11 @@
 
     list_append_string(l, word, len);
     list_append_string(l, (char_u *)(
-		    attr == highlight_attr[HLF_SPB] ? "bad" :
-		    attr == highlight_attr[HLF_SPR] ? "rare" :
-		    attr == highlight_attr[HLF_SPL] ? "local" :
-		    attr == highlight_attr[HLF_SPC] ? "caps" :
-		    ""), -1);
+			attr == HLF_SPB ? "bad" :
+			attr == HLF_SPR ? "rare" :
+			attr == HLF_SPL ? "local" :
+			attr == HLF_SPC ? "caps" :
+			""), -1);
 }
 
 /*
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index c635bfc..449b66c 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3901,7 +3901,15 @@
 		 * FEAT_GETTEXT isn't defined, so that shell commands use this
 		 * value. */
 		if (what == LC_ALL)
+		{
 		    vim_setenv((char_u *)"LANG", name);
+# ifdef WIN32
+		    /* Apparently MS-Windows printf() may cause a crash when
+		     * we give it 8-bit text while it's expecting text in the
+		     * current locale.  This call avoids that. */
+		    setlocale(LC_CTYPE, "C");
+# endif
+		}
 		if (what != LC_CTYPE)
 		{
 		    char_u	*mname;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index f88fbf8..7242381 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5900,7 +5900,7 @@
 
     for (i = 0; command_complete[i].expand != 0; ++i)
     {
-	if (STRLEN(command_complete[i].name) == valend
+	if ((int)STRLEN(command_complete[i].name) == valend
 		&& STRNCMP(value, command_complete[i].name, valend) == 0)
 	{
 	    *complp = command_complete[i].expand;
@@ -9179,15 +9179,21 @@
      */
     if (ssop_flags & SSOP_SESDIR)
     {
-	if (put_line(fd, "exe \"cd \" . expand(\"<sfile>:p:h\")") == FAIL)
+	if (put_line(fd, "exe \"cd \" . escape(expand(\"<sfile>:p:h\"), ' ')")
+								      == FAIL)
 	    return FAIL;
     }
     else if (ssop_flags & SSOP_CURDIR)
     {
 	sname = home_replace_save(NULL, globaldir != NULL ? globaldir : dirnow);
 	if (sname == NULL
-		|| fprintf(fd, "cd %s", sname) < 0 || put_eol(fd) == FAIL)
+		|| fputs("cd ", fd) < 0
+		|| ses_put_fname(fd, sname, &ssop_flags) == FAIL
+		|| put_eol(fd) == FAIL)
+	{
+	    vim_free(sname);
 	    return FAIL;
+	}
 	vim_free(sname);
     }
 
diff --git a/src/ex_getln.c b/src/ex_getln.c
index a3fac10..2748915 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1700,7 +1700,7 @@
 #ifdef FEAT_RIGHTLEFT
 	if (cmdmsg_rl
 # ifdef FEAT_ARABIC
-		|| p_arshape
+		|| (p_arshape && !p_tbidi && enc_utf8)
 # endif
 		)
 	    /* Always redraw the whole command line to fix shaping and
@@ -1873,7 +1873,11 @@
 
     set_cmdspos();
     if (KeyTyped)
+    {
 	m = Columns * Rows;
+	if (m < 0)	/* overflow, Columns or Rows at weird value */
+	    m = MAXCOL;
+    }
     else
 	m = MAXCOL;
     for (i = 0; i < ccline.cmdlen && i < ccline.cmdpos; ++i)
@@ -2641,7 +2645,11 @@
 #endif
 	{
 	    if (KeyTyped)
+	    {
 		m = Columns * Rows;
+		if (m < 0)	/* overflow, Columns or Rows at weird value */
+		    m = MAXCOL;
+	    }
 	    else
 		m = MAXCOL;
 	    for (i = 0; i < len; ++i)
diff --git a/src/globals.h b/src/globals.h
index 4b916ef..3731f06 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -35,6 +35,9 @@
  *
  * "LineOffset[n]" is the offset from ScreenLines[] for the start of line 'n'.
  * The same value is used for ScreenLinesUC[] and ScreenAttrs[].
+ *
+ * Note: before the screen is initialized and when out of memory these can be
+ * NULL.
  */
 EXTERN schar_T	*ScreenLines INIT(= NULL);
 EXTERN sattr_T	*ScreenAttrs INIT(= NULL);
@@ -818,7 +821,7 @@
 EXTERN char_u	*edit_submode INIT(= NULL); /* msg for CTRL-X submode */
 EXTERN char_u	*edit_submode_pre INIT(= NULL); /* prepended to edit_submode */
 EXTERN char_u	*edit_submode_extra INIT(= NULL);/* appended to edit_submode */
-EXTERN enum hlf_value	edit_submode_highl; /* highl. method for extra info */
+EXTERN hlf_T	edit_submode_highl;	/* highl. method for extra info */
 EXTERN int	ctrl_x_mode INIT(= 0);	/* Which Ctrl-X mode are we in? */
 #endif
 
diff --git a/src/main.c b/src/main.c
index 898205e..f7e2b1b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1236,6 +1236,12 @@
 init_locale()
 {
     setlocale(LC_ALL, "");
+# ifdef WIN32
+    /* Apparently MS-Windows printf() may cause a crash when we give it 8-bit
+     * text while it's expecting text in the current locale.  This call avoids
+     * that. */
+    setlocale(LC_CTYPE, "C");
+# endif
 
 # ifdef FEAT_GETTEXT
     {
diff --git a/src/normal.c b/src/normal.c
index 84de270..1e645e4 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -4750,10 +4750,9 @@
 		    if (ptr == NULL)
 		    {
 			pos_T	pos = curwin->w_cursor;
-			int	attr;
 
 			/* Find bad word under the cursor. */
-			len = spell_move_to(curwin, FORWARD, TRUE, TRUE, &attr);
+			len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL);
 			if (len != 0 && curwin->w_cursor.col <= pos.col)
 			    ptr = ml_get_pos(&curwin->w_cursor);
 			curwin->w_cursor = pos;
diff --git a/src/option.c b/src/option.c
index d547edc..b3c80d6 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3277,6 +3277,7 @@
 	 * "linux"	    Linux console
 	 * "screen.linux"   Linux console with screen
 	 * "cygwin"	    Cygwin shell
+	 * "putty"	    Putty program
 	 * We also check the COLORFGBG environment variable, which is set by
 	 * rxvt and derivatives. This variable contains either two or three
 	 * values separated by semicolons; we want the last value in either
@@ -3287,6 +3288,7 @@
 		&& (STRCMP(T_NAME, "linux") == 0
 		    || STRCMP(T_NAME, "screen.linux") == 0
 		    || STRCMP(T_NAME, "cygwin") == 0
+		    || STRCMP(T_NAME, "putty") == 0
 		    || ((p = mch_getenv((char_u *)"COLORFGBG")) != NULL
 			&& (p = vim_strrchr(p, ';')) != NULL
 			&& ((p[1] >= '0' && p[1] <= '6') || p[1] == '8')
@@ -7343,6 +7345,11 @@
 	}
 	Columns = MIN_COLUMNS;
     }
+    /* Limit the values to avoid an overflow in Rows * Columns. */
+    if (Columns > 10000)
+	Columns = 10000;
+    if (Rows > 1000)
+	Rows = 1000;
 
 #ifdef DJGPP
     /* avoid a crash by checking for a too large value of 'columns' */
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 2adc137..facbfbc 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -1,6 +1,6 @@
 /* spell.c */
-int spell_check __ARGS((win_T *wp, char_u *ptr, int *attrp, int *capcol));
-int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, int *attrp));
+int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol));
+int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
 void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
 char_u *did_set_spelllang __ARGS((buf_T *buf));
 void spell_free_all __ARGS((void));
diff --git a/src/screen.c b/src/screen.c
index f497f37..fa13904 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -128,7 +128,7 @@
 static schar_T	*current_ScreenLine;
 
 static void win_update __ARGS((win_T *wp));
-static void win_draw_end __ARGS((win_T *wp, int c1, int c2, int row, int endrow, enum hlf_value hl));
+static void win_draw_end __ARGS((win_T *wp, int c1, int c2, int row, int endrow, hlf_T hl));
 #ifdef FEAT_FOLDING
 static void fold_line __ARGS((win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T lnum, int row));
 static void fill_foldcolumn __ARGS((char_u *p, win_T *wp, int closed, linenr_T lnum));
@@ -1904,7 +1904,7 @@
     int		c2;
     int		row;
     int		endrow;
-    enum hlf_value hl;
+    hlf_T	hl;
 {
 #if defined(FEAT_FOLDING) || defined(FEAT_SIGNS) || defined(FEAT_CMDWIN)
     int		n = 0;
@@ -2531,7 +2531,7 @@
 #ifdef FEAT_DIFF
     int		filler_lines;		/* nr of filler lines to be drawn */
     int		filler_todo;		/* nr of filler lines still to do + 1 */
-    enum hlf_value diff_hlf = (enum hlf_value)0; /* type of diff highlighting */
+    hlf_T	diff_hlf = (hlf_T)0;	/* type of diff highlighting */
     int		change_start = MAXCOL;	/* first col of changed area */
     int		change_end = -1;	/* last col of changed area */
 #endif
@@ -2926,22 +2926,28 @@
 	if (has_spell)
 	{
 	    int		len;
+	    hlf_T	spell_hlf = HLF_COUNT;
 
 	    pos = wp->w_cursor;
 	    wp->w_cursor.lnum = lnum;
 	    wp->w_cursor.col = ptr - line;
-	    len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_attr);
+	    len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_hlf);
 	    if (len == 0 || (int)wp->w_cursor.col > ptr - line)
 	    {
 		/* no bad word found at line start, don't check until end of a
 		 * word */
-		spell_attr = 0;
+		spell_hlf = HLF_COUNT;
 		word_end = spell_to_word_end(ptr, wp->w_buffer) - line + 1;
 	    }
 	    else
+	    {
 		/* bad word found, use attributes until end of word */
 		word_end = wp->w_cursor.col + len + 1;
 
+		/* Turn index into actual attributes. */
+		if (spell_hlf != HLF_COUNT)
+		    spell_attr = highlight_attr[spell_hlf];
+	    }
 	    wp->w_cursor = pos;
 
 	    /* Need to restart syntax highlighting for this line. */
@@ -3353,7 +3359,7 @@
 		char_attr = search_attr;
 
 #ifdef FEAT_DIFF
-	    if (diff_hlf != (enum hlf_value)0 && n_extra == 0)
+	    if (diff_hlf != (hlf_T)0 && n_extra == 0)
 	    {
 		if (diff_hlf == HLF_CHD && ptr - line >= change_start)
 		    diff_hlf = HLF_TXD;		/* changed text */
@@ -3719,6 +3725,7 @@
 		    {
 			char_u	*prev_ptr, *p;
 			int	len;
+			hlf_T	spell_hlf = HLF_COUNT;
 # ifdef FEAT_MBYTE
 			if (has_mbyte)
 			{
@@ -3736,23 +3743,23 @@
 			else
 			    p = prev_ptr;
 			cap_col -= (prev_ptr - line);
-			len = spell_check(wp, p, &spell_attr, &cap_col);
+			len = spell_check(wp, p, &spell_hlf, &cap_col);
 			word_end = v + len;
 
 			/* In Insert mode only highlight a word that
 			 * doesn't touch the cursor. */
-			if (spell_attr != 0
+			if (spell_hlf != HLF_COUNT
 				&& (State & INSERT) != 0
 				&& wp->w_cursor.lnum == lnum
 				&& wp->w_cursor.col >=
 						    (colnr_T)(prev_ptr - line)
 				&& wp->w_cursor.col < (colnr_T)word_end)
 			{
-			    spell_attr = 0;
+			    spell_hlf = HLF_COUNT;
 			    spell_redraw_lnum = lnum;
 			}
 
-			if (spell_attr == 0 && p != prev_ptr
+			if (spell_hlf == HLF_COUNT && p != prev_ptr
 				       && (p - nextline) + len > nextline_idx)
 			{
 			    /* Remember that the good word continues at the
@@ -3761,6 +3768,10 @@
 			    checked_col = (p - nextline) + len - nextline_idx;
 			}
 
+			/* Turn index into actual attributes. */
+			if (spell_hlf != HLF_COUNT)
+			    spell_attr = highlight_attr[spell_hlf];
+
 			if (cap_col > 0)
 			{
 			    if (p != prev_ptr
@@ -3889,7 +3900,7 @@
 		     * "$". */
 		    if (
 # ifdef FEAT_DIFF
-			    diff_hlf == (enum hlf_value)0
+			    diff_hlf == (hlf_T)0
 #  ifdef LINE_ATTR
 			    &&
 #  endif
@@ -3976,7 +3987,7 @@
 #if defined(FEAT_DIFF) || defined(LINE_ATTR)
 		else if ((
 # ifdef FEAT_DIFF
-			    diff_hlf != (enum hlf_value)0
+			    diff_hlf != (hlf_T)0
 #  ifdef LINE_ATTR
 			    ||
 #  endif
@@ -6398,6 +6409,10 @@
     int		r, c;
     int		off;
 
+    /* Can't use ScreenLines unless initialized */
+    if (ScreenLines == NULL)
+	return;
+
     if (invert)
 	screen_char_attr = HL_INVERSE;
     for (r = row; r < row + height; ++r)
@@ -6696,6 +6711,7 @@
     unsigned	    *new_LineOffset;
     char_u	    *new_LineWraps;
     static int	    entered = FALSE;		/* avoid recursiveness */
+    static int	    did_outofmem_msg = FALSE;	/* did outofmem message */
 
     /*
      * Allocation of the screen buffers is done only when the size changes and
@@ -6790,7 +6806,15 @@
 	    || new_LineWraps == NULL
 	    || outofmem)
     {
-	do_outofmem_msg((long_u)((Rows + 1) * Columns));    /* guess the size */
+	if (ScreenLines != NULL || !did_outofmem_msg)
+	{
+	    /* guess the size */
+	    do_outofmem_msg((long_u)((Rows + 1) * Columns));
+
+	    /* Remember we did this to avoid getting outofmem messages over
+	     * and over again. */
+	    did_outofmem_msg = TRUE;
+	}
 	vim_free(new_ScreenLines);
 	new_ScreenLines = NULL;
 #ifdef FEAT_MBYTE
@@ -6812,6 +6836,8 @@
     }
     else
     {
+	did_outofmem_msg = FALSE;
+
 	for (new_row = 0; new_row < Rows; ++new_row)
 	{
 	    new_LineOffset[new_row] = new_row * Columns;
@@ -6844,7 +6870,7 @@
 		(void)vim_memset(new_ScreenAttrs + new_row * Columns,
 					0, (size_t)Columns * sizeof(sattr_T));
 		old_row = new_row + (screen_Rows - Rows);
-		if (old_row >= 0)
+		if (old_row >= 0 && ScreenLines != NULL)
 		{
 		    if (screen_Columns < Columns)
 			len = screen_Columns;
diff --git a/src/search.c b/src/search.c
index 2ed15df..f4e8f61 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4410,6 +4410,7 @@
     int		i;
     char_u	*already = NULL;
     char_u	*startp = NULL;
+    char_u	*inc_opt = NULL;
 #ifdef RISCOS
     int		previous_munging = __riscosify_control;
 #endif
@@ -4449,10 +4450,10 @@
 	if (regmatch.regprog == NULL)
 	    goto fpip_end;
     }
-    if (*curbuf->b_p_inc != NUL || *p_inc != NUL)
+    inc_opt = (*curbuf->b_p_inc == NUL) ? p_inc : curbuf->b_p_inc;
+    if (*inc_opt != NUL)
     {
-	incl_regmatch.regprog = vim_regcomp(*curbuf->b_p_inc == NUL
-			   ? p_inc : curbuf->b_p_inc, p_magic ? RE_MAGIC : 0);
+	incl_regmatch.regprog = vim_regcomp(inc_opt, p_magic ? RE_MAGIC : 0);
 	if (incl_regmatch.regprog == NULL)
 	    goto fpip_end;
 	incl_regmatch.rm_ic = FALSE;	/* don't ignore case in incl. pat. */
@@ -4484,10 +4485,18 @@
 	if (incl_regmatch.regprog != NULL
 		&& vim_regexec(&incl_regmatch, line, (colnr_T)0))
 	{
-	    new_fname = file_name_in_line(incl_regmatch.endp[0],
-		    0, FNAME_EXP|FNAME_INCL|FNAME_REL, 1L,
-		    curr_fname == curbuf->b_fname
-					     ? curbuf->b_ffname : curr_fname);
+	    char_u *p_fname = (curr_fname == curbuf->b_fname)
+					      ? curbuf->b_ffname : curr_fname;
+
+	    if (inc_opt != NULL && strstr((char *)inc_opt, "\\zs") != NULL)
+		/* Use text from '\zs' to '\ze' (or end) of 'include'. */
+		new_fname = find_file_name_in_path(incl_regmatch.startp[0],
+			      incl_regmatch.endp[0] - incl_regmatch.startp[0],
+				 FNAME_EXP|FNAME_INCL|FNAME_REL, 1L, p_fname);
+	    else
+		/* Use text after match with 'include'. */
+		new_fname = file_name_in_line(incl_regmatch.endp[0], 0,
+				 FNAME_EXP|FNAME_INCL|FNAME_REL, 1L, p_fname);
 	    already_searched = FALSE;
 	    if (new_fname != NULL)
 	    {
diff --git a/src/spell.c b/src/spell.c
index 53447af..6076dfc 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -477,6 +477,8 @@
     int		su_badflags;	    /* caps flags for bad word */
     char_u	su_badword[MAXWLEN]; /* bad word truncated at su_badlen */
     char_u	su_fbadword[MAXWLEN]; /* su_badword case-folded */
+    char_u	su_sal_badword[MAXWLEN]; /* su_badword soundfolded */
+    slang_T	*su_slang_first;    /* slang_T used for su_sal_badword */
     hashtab_T	su_banned;	    /* table with banned words */
     slang_T	*su_sallang;	    /* default language for sound folding */
 } suginfo_T;
@@ -749,6 +751,7 @@
 static int was_banned __ARGS((suginfo_T *su, char_u *word));
 static void free_banned __ARGS((suginfo_T *su));
 static void rescore_suggestions __ARGS((suginfo_T *su));
+static void rescore_one __ARGS((suginfo_T *su, suggest_T *stp));
 static int cleanup_suggestions __ARGS((garray_T *gap, int maxscore, int keep));
 static void spell_soundfold __ARGS((slang_T *slang, char_u *inword, int folded, char_u *res));
 static void spell_soundfold_sofo __ARGS((slang_T *slang, char_u *inword, char_u *res));
@@ -815,8 +818,8 @@
 /*
  * Main spell-checking function.
  * "ptr" points to a character that could be the start of a word.
- * "*attrp" is set to the attributes for a badly spelled word.  For a non-word
- * or when it's OK it remains unchanged.
+ * "*attrp" is set to the highlight index for a badly spelled word.  For a
+ * non-word or when it's OK it remains unchanged.
  * This must only be called when 'spelllang' is not empty.
  *
  * "capcol" is used to check for a Capitalised word after the end of a
@@ -831,7 +834,7 @@
 spell_check(wp, ptr, attrp, capcol)
     win_T	*wp;		/* current window */
     char_u	*ptr;
-    int		*attrp;
+    hlf_T	*attrp;
     int		*capcol;	/* column to check for Capital */
 {
     matchinf_T	mi;		/* Most things are put in "mi" so that it can
@@ -1008,17 +1011,17 @@
 	}
 
 	if (mi.mi_result == SP_BAD || mi.mi_result == SP_BANNED)
-	    *attrp = highlight_attr[HLF_SPB];
+	    *attrp = HLF_SPB;
 	else if (mi.mi_result == SP_RARE)
-	    *attrp = highlight_attr[HLF_SPR];
+	    *attrp = HLF_SPR;
 	else
-	    *attrp = highlight_attr[HLF_SPL];
+	    *attrp = HLF_SPL;
     }
 
     if (wrongcaplen > 0 && (mi.mi_result == SP_OK || mi.mi_result == SP_RARE))
     {
 	/* Report SpellCap only when the word isn't badly spelled. */
-	*attrp = highlight_attr[HLF_SPC];
+	*attrp = HLF_SPC;
 	return wrongcaplen;
     }
 
@@ -1822,7 +1825,8 @@
     int		dir;		/* FORWARD or BACKWARD */
     int		allwords;	/* TRUE for "[s"/"]s", FALSE for "[S"/"]S" */
     int		curline;
-    int		*attrp;		/* return: attributes of bad word or NULL */
+    hlf_T	*attrp;		/* return: attributes of bad word or NULL
+				   (only when "dir" is FORWARD) */
 {
     linenr_T	lnum;
     pos_T	found_pos;
@@ -1830,7 +1834,7 @@
     char_u	*line;
     char_u	*p;
     char_u	*endp;
-    int		attr;
+    hlf_T	attr;
     int		len;
     int		has_syntax = syntax_present(wp->w_buffer);
     int		col;
@@ -1900,13 +1904,13 @@
 		break;
 
 	    /* start of word */
-	    attr = 0;
+	    attr = HLF_COUNT;
 	    len = spell_check(wp, p, &attr, &capcol);
 
-	    if (attr != 0)
+	    if (attr != HLF_COUNT)
 	    {
 		/* We found a bad word.  Check the attribute. */
-		if (allwords || attr == highlight_attr[HLF_SPB])
+		if (allwords || attr == HLF_SPB)
 		{
 		    found_one = TRUE;
 
@@ -2017,7 +2021,7 @@
 
 	    /* Skip the characters at the start of the next line that were
 	     * included in a match crossing line boundaries. */
-	    if (attr == 0)
+	    if (attr == HLF_COUNT)
 		skip = p - endp;
 	    else
 		skip = 0;
@@ -5098,7 +5102,9 @@
 		    ga_append(&spin->si_map, '/');
 		}
 	    }
-	    else if (STRCMP(items[0], "SAL") == 0 && itemcnt == 3)
+	    /* Accept "SAL from to" and "SAL from to # comment". */
+	    else if (STRCMP(items[0], "SAL") == 0
+		    && (itemcnt == 3 || (itemcnt > 3 && items[3][0] == '#')))
 	    {
 		if (do_sal)
 		{
@@ -8769,7 +8775,7 @@
     int		banbadword;	/* don't include badword in suggestions */
     int		need_cap;	/* word should start with capital */
 {
-    int		attr = 0;
+    hlf_T	attr = HLF_COUNT;
     char_u	buf[MAXPATHL];
     char_u	*p;
     int		do_combine = FALSE;
@@ -8821,11 +8827,17 @@
 	}
     }
 
+    /* Soundfold the bad word with the default sound folding, so that we don't
+     * have to do this many times. */
+    if (su->su_sallang != NULL)
+	spell_soundfold(su->su_sallang, su->su_fbadword, TRUE,
+							  su->su_sal_badword);
+
     /* If the word is not capitalised and spell_check() doesn't consider the
      * word to be bad then it might need to be capitalised.  Add a suggestion
      * for that. */
     c = PTR2CHAR(su->su_badptr);
-    if (!SPELL_ISUPPER(c) && attr == 0)
+    if (!SPELL_ISUPPER(c) && attr == HLF_COUNT)
     {
 	make_case_word(su->su_badword, buf, WF_ONECAP);
 	add_suggestion(su, &su->su_ga, buf, su->su_badlen, SCORE_ICASE,
@@ -9173,8 +9185,11 @@
 	su->su_fbadword[len] = NUL;
 	make_case_word(su->su_fbadword, word, su->su_badflags);
 	su->su_fbadword[len] = c;
-	add_suggestion(su, &su->su_ga, word, su->su_badlen, SCORE_DEL,
-						     0, TRUE, su->su_sallang);
+
+	/* Give a soundalike score of 0, compute the score as if deleting one
+	 * character. */
+	add_suggestion(su, &su->su_ga, word, su->su_badlen,
+			      RESCORE(SCORE_REP, 0), 0, TRUE, su->su_sallang);
     }
 }
 
@@ -9226,6 +9241,8 @@
     slang_T	*slang;
     int		fword_ends;
     int		lpi;
+    int		maysplit;
+    int		goodword_ends;
 
     /* We make a copy of the case-folded bad word, so that we can modify it
      * to find matches (esp. REP items).  Append some more text, changing
@@ -9401,10 +9418,13 @@
 		    }
 		}
 
-		/* Check NEEDCOMPOUND: can't use word without compounding. */
+		/* Check NEEDCOMPOUND: can't use word without compounding.  Do
+		 * try appending another compound word below. */
 		if (sp->ts_complen == sp->ts_compsplit && fword_ends
 						     && (flags & WF_NEEDCOMP))
-		    break;
+		    goodword_ends = FALSE;
+		else
+		    goodword_ends = TRUE;
 
 		if (sp->ts_complen > sp->ts_compsplit)
 		{
@@ -9508,9 +9528,15 @@
 		    add_banned(su, preword + sp->ts_prewordlen);
 		    break;
 		}
-		if (was_banned(su, preword + sp->ts_prewordlen)
+		if ((sp->ts_complen == sp->ts_compsplit
+			    && was_banned(su, preword + sp->ts_prewordlen))
 						   || was_banned(su, preword))
-		    break;
+		{
+		    if (slang->sl_compprog == NULL)
+			break;
+		    /* the word so far was banned but we may try compounding */
+		    goodword_ends = FALSE;
+		}
 
 		newscore = 0;
 		if ((flags & WF_REGION)
@@ -9523,7 +9549,9 @@
 				  captype(preword + sp->ts_prewordlen, NULL)))
 		    newscore += SCORE_ICASE;
 
-		if (fword_ends && sp->ts_fidx >= sp->ts_fidxtry)
+		maysplit = TRUE;
+		if (fword_ends && goodword_ends
+					     && sp->ts_fidx >= sp->ts_fidxtry)
 		{
 		    /* The badword also ends: add suggestions.  Give a penalty
 		     * when changing non-word char to word char, e.g., "thes,"
@@ -9549,11 +9577,20 @@
 		    }
 
 		    add_suggestion(su, &su->su_ga, preword,
-			    sp->ts_fidx - repextra,
-				     sp->ts_score + newscore, 0, FALSE,
-				     lp->lp_sallang);
+					sp->ts_fidx - repextra,
+					sp->ts_score + newscore, 0, FALSE,
+					lp->lp_sallang);
+
+		    /* When the bad word doesn't end yet, try changing the
+		     * next word.  E.g., find suggestions for "the the" where
+		     * the second "the" is different.  It's done like a split.
+		     */
+		    if (sp->ts_fidx - repextra >= su->su_badlen)
+			maysplit = FALSE;
 		}
-		else if ((sp->ts_fidx >= sp->ts_fidxtry || fword_ends)
+
+		if (maysplit
+			&& (sp->ts_fidx >= sp->ts_fidxtry || fword_ends)
 #ifdef FEAT_MBYTE
 			/* Don't split halfway a character. */
 			&& (!has_mbyte || sp->ts_tcharlen == 0)
@@ -9574,7 +9611,7 @@
 		     *    the following word is valid.
 		     */
 		    try_compound = FALSE;
-		    if (!fword_ends
+		    if ((!fword_ends || !goodword_ends)
 			    && slang->sl_compprog != NULL
 			    && ((unsigned)flags >> 24) != 0
 			    && sp->ts_twordlen - sp->ts_splitoff
@@ -9618,7 +9655,7 @@
 		    else
 			sp->ts_flags &= ~TSF_DIDSPLIT;
 
-		    if (!try_compound && !fword_ends)
+		    if (!try_compound && (!fword_ends || !goodword_ends))
 		    {
 			/* If we're going to split need to check that the
 			 * words so far are valid for compounding.  If there
@@ -9656,10 +9693,12 @@
 			/* If the badword has a non-word character at this
 			 * position skip it.  That means replacing the
 			 * non-word character with a space.  Always skip a
-			 * character when the word ends. */
-			if ((!try_compound
-				   && !spell_iswordp_nmw(fword + sp->ts_fidx))
+			 * character when the word ends.  But only when the
+			 * good word can end. */
+			if (((!try_compound
+				    && !spell_iswordp_nmw(fword + sp->ts_fidx))
 				|| fword_ends)
+			    && goodword_ends)
 			{
 			    int	    l;
 
@@ -10726,12 +10765,17 @@
     char_u	*badsound;	/* sound-folded badword */
 {
     char_u	*p;
+    char_u	*pbad;
+    char_u	*pgood;
     char_u	badsound2[MAXWLEN];
     char_u	fword[MAXWLEN];
     char_u	goodsound[MAXWLEN];
+    char_u	goodword[MAXWLEN];
+    int		lendiff;
 
-    if (stp->st_orglen <= su->su_badlen)
-	p = badsound;
+    lendiff = (int)(su->su_badlen - stp->st_orglen);
+    if (lendiff >= 0)
+	pbad = badsound;
     else
     {
 	/* soundfold the bad word with more characters following */
@@ -10747,13 +10791,24 @@
 		mch_memmove(p, p + 1, STRLEN(p));
 
 	spell_soundfold(slang, fword, TRUE, badsound2);
-	p = badsound2;
+	pbad = badsound2;
     }
 
-    /* Sound-fold the word and compute the score for the difference. */
-    spell_soundfold(slang, stp->st_word, FALSE, goodsound);
+    if (lendiff > 0)
+    {
+	/* Add part of the bad word to the good word, so that we soundfold
+	 * what replaces the bad word. */
+	STRCPY(goodword, stp->st_word);
+	STRNCAT(goodword, su->su_badptr + su->su_badlen - lendiff, lendiff);
+	pgood = goodword;
+    }
+    else
+	pgood = stp->st_word;
 
-    return soundalike_score(goodsound, p);
+    /* Sound-fold the word and compute the score for the difference. */
+    spell_soundfold(slang, pgood, FALSE, goodsound);
+
+    return soundalike_score(goodsound, pbad);
 }
 
 /*
@@ -11081,23 +11136,24 @@
  * with spell_edit_score().
  */
     static void
-add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
+add_suggestion(su, gap, goodword, badlenarg, score, altscore, had_bonus, slang)
     suginfo_T	*su;
     garray_T	*gap;
     char_u	*goodword;
-    int		badlen;		/* length of bad word used */
+    int		badlenarg;	/* len of bad word replaced with "goodword" */
     int		score;
     int		altscore;
     int		had_bonus;	/* value for st_had_bonus */
     slang_T	*slang;		/* language for sound folding */
 {
-    int		goodlen = STRLEN(goodword);
+    int		goodlen = STRLEN(goodword); /* len of goodword changed */
+    int		badlen = badlenarg;	    /* len of bad word changed */
     suggest_T   *stp;
+    suggest_T   new_sug;
     int		i;
-    char_u	*p = NULL;
-    int		c = 0;
-    int		attr = 0;
+    hlf_T	attr = HLF_COUNT;
     char_u	longword[MAXWLEN + 1];
+    char_u	*pgood, *pbad;
 
     /* Check that the word really is valid.  Esp. for banned words and for
      * split words, such as "the the".  Need to append what follows to check
@@ -11105,36 +11161,34 @@
     STRCPY(longword, goodword);
     vim_strncpy(longword + goodlen, su->su_badptr + badlen, MAXWLEN - goodlen);
     (void)spell_check(curwin, longword, &attr, NULL);
-    if (attr != 0)
+    if (attr != HLF_COUNT)
 	return;
 
-    /* If past "su_badlen" and the rest is identical stop at "su_badlen".
-     * Remove the common part from "goodword". */
-    i = badlen - su->su_badlen;
-    if (i > 0)
+    /* Minimize "badlen" for consistency.  Avoids that changing "the the" to
+     * "thee the" is added next to changing the first "the" the "thee".  */
+    pgood = goodword + STRLEN(goodword);
+    pbad = su->su_badptr + badlen;
+    while (pgood > goodword && pbad > su->su_badptr)
     {
-	/* This assumes there was no case folding or it didn't change the
-	 * length... */
-	p = goodword + goodlen - i;
-	if (p > goodword && STRNICMP(su->su_badptr + su->su_badlen, p, i) == 0)
+	mb_ptr_back(goodword, pgood);
+	mb_ptr_back(su->su_badptr, pbad);
+#ifdef FEAT_MBYTE
+	if (has_mbyte)
 	{
-	    badlen = su->su_badlen;
-	    c = *p;
-	    *p = NUL;
+	    if (mb_ptr2char(pgood) != mb_ptr2char(pbad))
+		break;
 	}
 	else
-	    p = NULL;
+#endif
+	    if (*pgood != *pbad)
+		break;
+	badlen = pbad - su->su_badptr;
+	goodlen = pgood - goodword;
     }
-    else if (i < 0)
-    {
-	/* When replacing part of the word check that we actually change
-	 * something.  For "the the" a suggestion can be replacing the first
-	 * "the" with itself, since "the" wasn't banned. */
-	if (badlen == (int)goodlen
-			    && STRNCMP(su->su_badword, goodword, badlen) == 0)
-	    return;
-    }
-
+    if (badlen == 0 && goodlen == 0)
+	/* goodword doesn't change anything; may happen for "the the" changing
+	 * the first "the" to itself. */
+	return;
 
     if (score <= su->su_maxscore)
     {
@@ -11143,18 +11197,44 @@
 	 * "thes" -> "these". */
 	stp = &SUG(*gap, 0);
 	for (i = gap->ga_len - 1; i >= 0; --i)
-	    if (STRCMP(stp[i].st_word, goodword) == 0
+	    if (STRLEN(stp[i].st_word) == goodlen
+			&& STRNCMP(stp[i].st_word, goodword, goodlen) == 0
 						&& stp[i].st_orglen == badlen)
 	    {
-		/* Found it.  Remember the lowest score. */
-		if (stp[i].st_score > score)
-		{
-		    stp[i].st_score = score;
-		    stp[i].st_altscore = altscore;
-		    stp[i].st_had_bonus = had_bonus;
-		}
+		/*
+		 * Found it.  Remember the lowest score.
+		 */
 		if (stp[i].st_slang == NULL)
 		    stp[i].st_slang = slang;
+
+		new_sug.st_score = score;
+		new_sug.st_altscore = altscore;
+		new_sug.st_had_bonus = had_bonus;
+
+		if (stp[i].st_had_bonus != had_bonus)
+		{
+		    /* Only one of the two had the soundalike score computed.
+		     * Need to do that for the other one now, otherwise the
+		     * scores can't be compared.  This happens because
+		     * suggest_try_change() doesn't compute the soundalike
+		     * word to keep it fast. */
+		    if (had_bonus)
+			rescore_one(su, &stp[i]);
+		    else
+		    {
+			new_sug.st_word = goodword;
+			new_sug.st_slang = stp[i].st_slang;
+			new_sug.st_orglen = badlen;
+			rescore_one(su, &new_sug);
+		    }
+		}
+
+		if (stp[i].st_score > new_sug.st_score)
+		{
+		    stp[i].st_score = new_sug.st_score;
+		    stp[i].st_altscore = new_sug.st_altscore;
+		    stp[i].st_had_bonus = new_sug.st_had_bonus;
+		}
 		break;
 	    }
 
@@ -11162,7 +11242,7 @@
 	{
 	    /* Add a suggestion. */
 	    stp = &SUG(*gap, gap->ga_len);
-	    stp->st_word = vim_strsave(goodword);
+	    stp->st_word = vim_strnsave(goodword, goodlen);
 	    if (stp->st_word != NULL)
 	    {
 		stp->st_score = score;
@@ -11180,9 +11260,6 @@
 	    }
 	}
     }
-
-    if (p != NULL)
-	*p = c;		/* restore "goodword" */
 }
 
 /*
@@ -11244,62 +11321,47 @@
 }
 
 /*
- * Recompute the score if sound-folding is possible.  This is slow,
- * thus only done for the final results.
+ * Recompute the score for all suggestions if sound-folding is possible.  This
+ * is slow, thus only done for the final results.
  */
     static void
 rescore_suggestions(su)
     suginfo_T	*su;
 {
-    langp_T	*lp;
-    suggest_T	*stp;
-    char_u	sal_badword[MAXWLEN];
-    char_u	sal_badword2[MAXWLEN];
     int		i;
-    int		lpi;
-    slang_T	*slang_first = NULL;
-    slang_T	*slang;
 
-    for (lpi = 0; lpi < curbuf->b_langp.ga_len; ++lpi)
-    {
-	lp = LANGP_ENTRY(curbuf->b_langp, lpi);
-	if (lp->lp_slang->sl_sal.ga_len > 0)
-	{
-	    /* soundfold the bad word */
-	    slang_first = lp->lp_slang;
-	    spell_soundfold(slang_first, su->su_fbadword, TRUE, sal_badword);
-	    break;
-	}
-    }
-
-    if (slang_first != NULL)
-    {
+    if (su->su_sallang != NULL)
 	for (i = 0; i < su->su_ga.ga_len; ++i)
+	    rescore_one(su, &SUG(su->su_ga, i));
+}
+
+/*
+ * Recompute the score for one suggestion if sound-folding is possible.
+ */
+    static void
+rescore_one(su, stp)
+    suginfo_T *su;
+    suggest_T *stp;
+{
+    slang_T	*slang = stp->st_slang;
+    char_u	sal_badword[MAXWLEN];
+
+    /* Only rescore suggestions that have no sal score yet and do have a
+     * language. */
+    if (slang != NULL && slang->sl_sal.ga_len > 0 && !stp->st_had_bonus)
+    {
+	if (slang == su->su_sallang)
+	    stp->st_altscore = stp_sal_score(stp, su,
+						   slang, su->su_sal_badword);
+	else
 	{
-	    /* Only rescore suggestions that have no sal score yet and do have
-	     * a language. */
-	    stp = &SUG(su->su_ga, i);
-	    if (!stp->st_had_bonus && stp->st_slang != NULL)
-	    {
-		slang = stp->st_slang;
-		if (slang->sl_sal.ga_len > 0)
-		{
-		    if (slang == slang_first)
-			stp->st_altscore = stp_sal_score(stp, su,
-							  slang, sal_badword);
-		    else
-		    {
-			spell_soundfold(slang, su->su_fbadword,
-							  TRUE, sal_badword2);
-			stp->st_altscore = stp_sal_score(stp, su,
-							 slang, sal_badword2);
-		    }
-		    if (stp->st_altscore == SCORE_MAXMAX)
-			stp->st_altscore = SCORE_BIG;
-		    stp->st_score = RESCORE(stp->st_score, stp->st_altscore);
-		}
-	    }
+	    spell_soundfold(slang, su->su_fbadword, TRUE, sal_badword);
+	    stp->st_altscore = stp_sal_score(stp, su, slang, sal_badword);
 	}
+	if (stp->st_altscore == SCORE_MAXMAX)
+	    stp->st_altscore = SCORE_BIG;
+	stp->st_score = RESCORE(stp->st_score, stp->st_altscore);
+	stp->st_had_bonus = TRUE;
     }
 }
 
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
index 736e992..75caa7e 100644
--- a/src/testdir/test58.ok
+++ b/src/testdir/test58.ok
@@ -30,7 +30,7 @@
 Ok
 ['OK', 'Uk', 'Put']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 end
@@ -87,7 +87,7 @@
 the
 ['put', 'uk', 'test']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 
@@ -99,13 +99,13 @@
 bad
 ['foo', 'mï']
 bar
-['foobar', 'foo', 'mï']
+['barfoo', 'foobar', 'foo']
 la
 ['mï', 'foo']
 foomï
 ['foo mï', 'foo', 'foofoo']
 barmï
-['barfoo', 'barbar', 'mï']
+['barfoo', 'mï', 'barbar']
 mïfoo
 ['mï foo', 'foo', 'foofoo']
 mïbar
diff --git a/src/testdir/test59.ok b/src/testdir/test59.ok
index 8f47667..9c49be4 100644
--- a/src/testdir/test59.ok
+++ b/src/testdir/test59.ok
@@ -30,7 +30,7 @@
 Ok
 ['OK', 'Uk', 'Put']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 end
@@ -87,7 +87,7 @@
 the
 ['put', 'uk', 'test']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 
@@ -99,13 +99,13 @@
 bad
 ['foo', 'mï']
 bar
-['foobar', 'foo', 'mï']
+['barfoo', 'foobar', 'foo']
 la
 ['mï', 'foo']
 foomï
 ['foo mï', 'foo', 'foofoo']
 barmï
-['barfoo', 'barbar', 'mï']
+['barfoo', 'mï', 'barbar']
 mïfoo
 ['mï foo', 'foo', 'foofoo']
 mïbar
diff --git a/src/ui.c b/src/ui.c
index 04e273a..4449bfd 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1142,6 +1142,10 @@
     int		row2 = clip_star.end.lnum;
     int		col2 = clip_star.end.col;
 
+    /* Can't use ScreenLines unless initialized */
+    if (ScreenLines == NULL)
+	return;
+
     /*
      * Make sure row1 <= row2, and if row1 == row2 that col1 <= col2.
      */
@@ -1312,7 +1316,7 @@
     int		mboff;
 #endif
 
-    if (row >= screen_Rows || col >= screen_Columns)
+    if (row >= screen_Rows || col >= screen_Columns || ScreenLines == NULL)
 	return;
 
     p = ScreenLines + LineOffset[row];
@@ -1367,7 +1371,7 @@
 {
     int	    i;
 
-    if (row >= screen_Rows)
+    if (row >= screen_Rows || ScreenLines == NULL)
 	return 0;
     for (i = screen_Columns; i > 0; i--)
 	if (ScreenLines[LineOffset[row] + i - 1] != ' ')
@@ -2432,7 +2436,8 @@
 #ifdef FEAT_FOLDING
     /* Remember the character under the mouse, it might be a '-' or '+' in the
      * fold column. */
-    if (row >= 0 && row < Rows && col >= 0 && col <= Columns)
+    if (row >= 0 && row < Rows && col >= 0 && col <= Columns
+						       && ScreenLines != NULL)
 	mouse_char = ScreenLines[LineOffset[row] + col];
     else
 	mouse_char = ' ';
diff --git a/src/version.h b/src/version.h
index cf19c79..70e2f4d 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 25)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 25, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 29)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 29, compiled "
diff --git a/src/vim.h b/src/vim.h
index c20541c..9c420a0 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1116,7 +1116,7 @@
  * When making changes, also update HL_FLAGS below!  And update the default
  * value of 'highlight' in option.c.
  */
-enum hlf_value
+typedef enum
 {
     HLF_8 = 0	    /* Meta & special keys listed with ":map", text that is
 		       displayed different from what it is */
@@ -1151,7 +1151,7 @@
     , HLF_SPR	    /* SpellRare */
     , HLF_SPL	    /* SpellLocal */
     , HLF_COUNT	    /* MUST be the last one */
-};
+} hlf_T;
 
 /* the HL_FLAGS must be in the same order as the HLF_ enums! */
 #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \