diff --git a/runtime/autoload/csscomplete.vim b/runtime/autoload/csscomplete.vim
index 9461f39b8fb289ae78cd072cb006a95fa7597225..f67445439e75734fc5fa586b7124babe9def82b6 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 @@ else
 		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 10dd28542d534ad694551668afa4bc063c9ac7c0..efd528a153d759fe5fd51607968905211d9b7262 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 @@ fun! netrw#NetRead(...)
    ".........................................
    " 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 @@ fun! netrw#NetRead(...)
     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 @@ fun! netrw#NetRead(...)
       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 @@ fun! netrw#NetRead(...)
       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 @@ fun! s:NetGetFile(readcmd, fname, method)
    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 @@ fun! s:NetGetFile(readcmd, fname, method)
    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 @@ fun! netrw#NetWrite(...) range
   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 @@ fun! netrw#NetWrite(...) range
     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 @@ fun! netrw#NetWrite(...) range
     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 @@ fun! netrw#NetWrite(...) range
     " -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 @@ fun! s:NetBrowse(dirname)
   " 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 @@ fun! s:NetBrowse(dirname)
 "   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 @@ fun! s:NetBrowse(dirname)
    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 @@ fun! s:NetBrowse(dirname)
    endif
   else
 "   call Decho("generate a new buffer")
-   enew!
+   keepjumps keepalt enew!
   endif
 
   " rename file to reflect where its from
@@ -1200,7 +1226,7 @@ fun! s:NetBrowse(dirname)
   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 @@ fun! s:NetBrowse(dirname)
     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 @@ fun! s:NetBrowse(dirname)
     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 @@ fun! s:NetBrowse(dirname)
     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 @@ fun! s:NetGetWord()
     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 @@ fun! s:NetBrowseX(fname,remote)
    " 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 @@ fun! s:NetBrowseFtpCmd(path,cmd)
   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 @@ fun! s:NetBrowseFtpCmd(path,cmd)
  
     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 @@ fun! s:NetBrowseFtpCmd(path,cmd)
 
   " 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 @@ fun! s:NetrwListHide()
    " 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 @@ fun! s:NetrwWideListing()
      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 @@ fun! s:NetBookmarkDir(chg,curdir)
   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
+   if &ch > 1
+    " "clear" the message
+    echo ""
    endif
-   echo ""
 "  call Dret("NetBookmarkDir - ignoring")
    return
   endif
@@ -2229,12 +2259,10 @@ endfun
 " ---------------------------------------------------------------------
 " 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 @@ fun! s:NetObtain()
  
     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 @@ fun! s:NetObtain()
     " 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 @@ fun! s:NetObtain()
   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 @@ fun! netrw#DirBrowse(dirname)
 
   " 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 @@ fun! netrw#DirBrowse(dirname)
   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 @@ fun! netrw#DirBrowse(dirname)
      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 @@ fun! netrw#DirBrowse(dirname)
 
   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 @@ fun! s:LocalBrowseList()
   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 @@ fun! netrw#Explore(indx,dosplit,style,...)
      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 @@ fun! netrw#Explore(indx,dosplit,style,...)
     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
@@ -3077,13 +3112,74 @@ fun! netrw#Explore(indx,dosplit,style,...)
 "  call Dret("Explore")
 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 @@ fun! s:NetMethod(choice)  " globals: method machine id passwd fname
   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 @@ fun! NetUserPass(...)
 "  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 @@ fun! s:NetOptionSave()
    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 @@ fun! s:NetOptionRestore()
   endif
   unlet w:netoptionsave
  
-  let &ai	= w:aikeep
-  if has("netbeans_intg") || has("sun_workshop")
-   let &acd     = 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:aikeep")| let &ai= w:aikeep|endif
+  if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
+   let &acd= w:acdkeep
+   unlet w:acdkeep
+  endif
+  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 @@ fun! s:NetOptionRestore()
    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 @@ endfun
 "               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 @@ fun! s:SetSort()
     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 @@ fun! s:CopyWinVars()
 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 @@ fun! s:BufWinVars()
   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 39a6f40ce617135c913c5723bb477889cee9987f..34000948e4af61a21ec4fcbf284fb4a04d35dab0 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 @@ A jump table for the options with a short description can be found at |Q_op|.
 	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 @@ A jump table for the options with a short description can be found at |Q_op|.
 	'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 @@ A jump table for the options with a short description can be found at |Q_op|.
 			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 d1ca623d70a3923fcd7871eacbb1296f51fb7580..0ec61fcfe443a9991c51b90346d42f23da7de2e4 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 @@ file using root-relative paths, use the full path:
 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 @@ FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. >
 
 	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.
-
-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").
+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").
 
 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 @@ The script attempts to get passwords for ftp invisibly using |inputsecret()|,
 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 @@ to scp.  Thus every transfer via scp will require re-entry of the password.
 
 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 @@ additional commands available.
 :[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 @@ additional commands available.
 
 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 @@ behavior.  These variables typically may be set in the user's <.vimrc> file:
 	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 @@ variables listed below, and may be modified by the user.
     -------------------------------------------------------------------------
 <
 								*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 @@ userid and password.  The transferred file is put into a temporary file.
 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 @@ messages) you may write a NetReadFixup(tmpfile) function:
       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 @@ from <netrw.vim> itself:
 >
 
 ==============================================================================
-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 @@ NETRW BROWSER VARIABLES					*netrw-browse-var*
 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 @@ ftp.  The protocol in the url, if it is ftp, will cause netrw to use ftp
 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 @@ By default, these commands use the current file's directory.  However, one
 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 @@ The directory display is updated to show the subdirectory containing a
 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 @@ refresh a local directory by using ":e .".
 
 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 							*netrw-cr*
 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 @@ OBTAINING A FILE						*netrw-O*
 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 "i" map cycles between the thin, long, and wide listing formats.
 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 @@ a file or a directory) will be detected, reported on, and ignored.
 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 @@ One may rename a block of files and directories by selecting them with
 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 @@ EDIT FILE OR DIRECTORY HIDING LIST		*netrw-h* *netrw-edithide*
 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 @@ Normally one enters a file or directory using the <cr>.  However, the "o" map
 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 @@ in your <.vimrc>.
 
 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 @@ q map to list both the bookmarks and history. (see |netrw-q|)
 
 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 @@ handler varies:
   * 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 @@ g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to have the
 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 @@ To change directory back to a bookmarked directory, use
 
 	{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 @@ NETRW SETTINGS						*netrw-settings*
 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 @@ which is loaded automatically at startup (assuming :set nocp).
 
 	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 @@ which is loaded automatically at startup (assuming :set nocp).
 ==============================================================================
 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 @@ which is loaded automatically at startup (assuming :set nocp).
 	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 @@ which is loaded automatically at startup (assuming :set nocp).
 	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 2a148bd473dce559cd0f0155b40959ec7b5b4601..0049a5464fdf5f8d9330785ccbb2da72bb33e9d8 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 @@ The "%f" conversion may depend on the current 'isfname' setting.  "~/" is
 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 2a12894f8b264979542c9c4a7c75ca45a2eabec2..021a158af9edc841015b59c4034a2253cbca1eff 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 @@ You can clear specific sync patterns with: >
 ==============================================================================
 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 36d9b2271c5ae711422ae827d0f37ff7245285c3..44e189a3f81fa2ed3af99e3f26946ca382ff9b78 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5083,7 +5083,6 @@ g'a	motion.txt	/*g'a*
 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-O	pi_netrw.txt	/*netrw-O*
 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 88ea517803a4774798ef656c1bd8f47be8296497..c62fb050044b546ae38c04ec87588711036b1abf 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 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
 -------------------- 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 b77530ac2680e59fff9a401ff394ac90ad056293..782171fcc69d53a6057b59f6d7ab8c7a3d4c9ecb 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 @@ To count items (pattern matches) without changing the buffer the 'n' flag has
 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 @@ redrawing may fail.  Make sure w_skipcol is valid before redrawing.
 "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 0000000000000000000000000000000000000000..bcdfa2f9b773a00842da508ae4412159c823a89f
--- /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 0000000000000000000000000000000000000000..f4909405e967c21b6d0c28d0628d5859043a1368
--- /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 da0a4f3491fef78a2788ad192eea0ad9fc4f545b..3d9bb989eaad491ec735ae190eb6553295a9a6cd 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 511e7188b69d61d74a58138c1516e780ebfbe6e9..75f3f42162e5c0aaddf5c2b72f96531fae27e5bb 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 447bb2f0cec2e4c6baf3b47a71cc2769bca41b22..434598b4b8df287f6ddc990f734e408dcf28b695 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 dce6fe6b962480b49d5881499afe93930b195995..235d0fda6c5d3bd1e2492f4626a7a575c327acd7 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 5947a9874d9730afb3b2e307d3ac4fd8cf78fcce..9f8c4d11d379ec5a41807bff6042bb5c2cfae3ec 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 ec44e8c22fe82c20a42cc431f0861a85a6c31d4a..046733868b166b4797c2183b99c47f62698b5a41 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 89f0a33e4e66c9614ed6f70886f70e5084a87853..3d44c60d1eeb28a3234092ed7c78701af54d8b00 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 0715e555bfbdb9dbd5eeff2181989beba851653c..d78314527c37d3ea627b27ac72aaaa6ffc164e52 100644
Binary files a/runtime/spell/en.ascii.spl and b/runtime/spell/en.ascii.spl differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 6d4fe5f81f54fb1855f46d3421ab8a04d9622812..6a8438f0a3a49c72f303995fdd281008a67a6a82 100644
Binary files a/runtime/spell/en.latin1.spl and b/runtime/spell/en.latin1.spl differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index d3cd823a1113cbcc38ab5dda641b22916809c095..becbd6cbd43db61f84d38a546c795d467ecff2c6 100644
Binary files a/runtime/spell/en.utf-8.spl and b/runtime/spell/en.utf-8.spl differ
diff --git a/runtime/spell/en/en_GB.diff b/runtime/spell/en/en_GB.diff
index 714077d4b9191b515c8e9744c93dbaaa41c0902b..980502d11fa855981cc25b1603d693f916f61ef1 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 3eee7185156448679a62253033529d3f292479db..5250a8eef1bc162921a198425da35a31ac7a9135 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 f42dc036e2f0854c3b30ce47ae88bf4234b638f6..12de7329e85648f1380229f987dd970eb3e55010 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 2fabe285ceee05af2abcfa474d41bda1431decc2..f52228fe52c2b8320545e3a5a1a5e54d2a4022e7 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 3e4e7c982dbab91137f5e8cf77de1ea9a8a2abf6..59d8312701cc5199fae27bc61a7793099ab97233 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 212befe8d087141d4a5373e5a83c74e9bd416f70..12d04209e8f97a8d71dceaed6ecb998cb9e6b20d 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4d6e875bef16174705840a59fac1be848b3ec4c7 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/runtime/spell/ms/ms_MY.diff b/runtime/spell/ms/ms_MY.diff
index 8bde595a97cade321bdb84cc89d0adf6de5cd287..a6c99160158161cecbdb72328d19e2e5b0f3fc2f 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 d14a5926c8e0f91b9abeafffd146fe54482aa497..099488a835a4da4e125e3414dfb97ba5263a6cf9 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 1616f303c566e48161728d93a3a00cc5e968ce4c..c39e0fe0ed5bdc1a50f9cec38e1d27c703205dd8 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 206bbfbfaffeed09a1b98b5f8c1a74e7da81bcc0..e5212111edbe6dddc42ac2a12cfefb28836cbe95 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5571,8 +5571,8 @@ list_append_string(l, str, len)
     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 @@ f_diff_hlID(argvars, rettv)
     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 @@ f_diff_hlID(argvars, rettv)
 		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 @@ f_diff_hlID(argvars, rettv)
 	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 @@ f_spellbadword(argvars, rettv)
 {
     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 @@ f_spellbadword(argvars, rettv)
 	    while (*str != NUL)
 	    {
 		len = spell_check(curwin, str, &attr, &capcol);
-		if (attr != 0)
+		if (attr != HLF_COUNT)
 		{
 		    word = str;
 		    break;
@@ -13946,11 +13946,11 @@ f_spellbadword(argvars, rettv)
 
     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 c635bfc4ce7733ec6a70c5a660f4454d298987c8..449b66c374339220739cab6fe73c29f9ba839d67 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3901,7 +3901,15 @@ ex_language(eap)
 		 * 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 f88fbf815b2818db622fb314e265e5315638d1fe..7242381795415e738e38cdd755162e750b324427 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5900,7 +5900,7 @@ parse_compl_arg(value, vallen, complp, argt, compl_arg)
 
     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 @@ makeopens(fd, dirnow)
      */
     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 a3fac10ac73fb7674a9f24257ddff164827a54af..2748915be4f57b3de932643619a7475f77b5bc2a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1700,7 +1700,7 @@ cmdline_changed:
 #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_cursor()
 
     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 @@ put_on_cmdline(str, len, redraw)
 #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 4b916efd8a3b1fb96dbffba41c6f3e6ba54ed15f..3731f067316968099e9a47c5e0ec69e91adcaa43 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -35,6 +35,9 @@ EXTERN long	Columns INIT(= 80);	/* nr of columns in the screen */
  *
  * "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 int	ins_at_eol INIT(= FALSE); /* put cursor after eol when
 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 898205e28016bd07953f5da3f4c61fb638dbef70..f7e2b1bb9209e42bd1ead4eb9769ad1319a81b47 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1236,6 +1236,12 @@ get_number_arg(p, idx, def)
 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 84de270ea49f97cd66f7a03cb78921c3079c4fcf..1e645e447631282a119b58a62bd5b165e0674593 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -4750,10 +4750,9 @@ dozet:
 		    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 d547edc1e59d8e0f3919cfbab8f6fd2cf158d06b..b3c80d6a4f1e81050dffc4abdf989138dc40b2ae 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3277,6 +3277,7 @@ set_init_2()
 	 * "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 @@ set_init_2()
 		&& (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 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
 	}
 	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 2adc137e963675766fb7c88a43f9104c23f444c0..facbfbc76f6ce89a56d4b2c1f1d10f33df61858d 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 f497f370de55b08e714e040a4fd3b8361baa8e24..fa1390424962fb5042ad44ba0ea31a1fcc26c9b8 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -128,7 +128,7 @@ static foldinfo_T win_foldinfo;	/* info for 'foldcolumn' */
 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 @@ win_draw_end(wp, c1, c2, row, endrow, hl)
     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 @@ win_line(wp, lnum, startrow, endrow)
 #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 @@ win_line(wp, lnum, startrow, endrow)
 	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 @@ win_line(wp, lnum, startrow, endrow)
 		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 @@ win_line(wp, lnum, startrow, endrow)
 		    {
 			char_u	*prev_ptr, *p;
 			int	len;
+			hlf_T	spell_hlf = HLF_COUNT;
 # ifdef FEAT_MBYTE
 			if (has_mbyte)
 			{
@@ -3736,23 +3743,23 @@ win_line(wp, lnum, startrow, endrow)
 			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 @@ win_line(wp, lnum, startrow, endrow)
 			    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 @@ win_line(wp, lnum, startrow, endrow)
 		     * "$". */
 		    if (
 # ifdef FEAT_DIFF
-			    diff_hlf == (enum hlf_value)0
+			    diff_hlf == (hlf_T)0
 #  ifdef LINE_ATTR
 			    &&
 #  endif
@@ -3976,7 +3987,7 @@ win_line(wp, lnum, startrow, endrow)
 #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 @@ screen_draw_rectangle(row, col, height, width, invert)
     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 @@ screenalloc(clear)
     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 @@ screenalloc(clear)
 	    || 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 @@ screenalloc(clear)
     }
     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 @@ screenalloc(clear)
 		(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 2ed15df2b26e51a836da51ec478df33524a82aaa..f4e8f611e31b09afe61c475cfd2e70cf3cbd05d4 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4410,6 +4410,7 @@ find_pattern_in_path(ptr, dir, len, whole, skip_comments,
     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 @@ find_pattern_in_path(ptr, dir, len, whole, skip_comments,
 	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 @@ find_pattern_in_path(ptr, dir, len, whole, skip_comments,
 	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 53447afb9bb1364ea8478a2cee52e0ab321924d3..6076dfc86ca94cd812d7cf442ec2a9e2e4c66e80 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -477,6 +477,8 @@ typedef struct suginfo_S
     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 void add_banned __ARGS((suginfo_T *su, char_u *word));
 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 @@ static char *msg_compressing = N_("Compressing word tree...");
 /*
  * 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 @@ static char *msg_compressing = N_("Compressing word tree...");
 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 @@ spell_check(wp, ptr, attrp, capcol)
 	}
 
 	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 @@ spell_move_to(wp, dir, allwords, curline, attrp)
     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 @@ spell_move_to(wp, dir, allwords, curline, attrp)
     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 @@ spell_move_to(wp, dir, allwords, curline, attrp)
 		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 @@ spell_move_to(wp, dir, allwords, curline, attrp)
 
 	    /* 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 @@ spell_read_aff(spin, fname)
 		    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 @@ spell_find_suggest(badptr, su, maxcount, banbadword, need_cap)
     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 @@ spell_find_suggest(badptr, su, maxcount, banbadword, need_cap)
 	}
     }
 
+    /* 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 @@ suggest_try_special(su)
 	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 @@ suggest_try_change(su)
     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 @@ suggest_try_change(su)
 		    }
 		}
 
-		/* 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 @@ suggest_try_change(su)
 		    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 @@ suggest_try_change(su)
 				  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 @@ suggest_try_change(su)
 		    }
 
 		    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 @@ suggest_try_change(su)
 		     *    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 @@ suggest_try_change(su)
 		    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 @@ suggest_try_change(su)
 			/* 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 @@ stp_sal_score(stp, su, slang, badsound)
     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 @@ stp_sal_score(stp, su, slang, badsound)
 		mch_memmove(p, p + 1, STRLEN(p));
 
 	spell_soundfold(slang, fword, TRUE, badsound2);
-	p = badsound2;
+	pbad = badsound2;
     }
 
+    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;
+
     /* Sound-fold the word and compute the score for the difference. */
-    spell_soundfold(slang, stp->st_word, FALSE, goodsound);
+    spell_soundfold(slang, pgood, FALSE, goodsound);
 
-    return soundalike_score(goodsound, p);
+    return soundalike_score(goodsound, pbad);
 }
 
 /*
@@ -11081,23 +11136,24 @@ similar_chars(slang, c1, c2)
  * 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 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
     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;
-    }
-    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;
+#endif
+	    if (*pgood != *pbad)
+		break;
+	badlen = pbad - su->su_badptr;
+	goodlen = pgood - goodword;
     }
-
+    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 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
 	 * "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_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
 	{
 	    /* 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 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
 	    }
 	}
     }
-
-    if (p != NULL)
-	*p = c;		/* restore "goodword" */
 }
 
 /*
@@ -11244,62 +11321,47 @@ free_banned(su)
 }
 
 /*
- * 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 (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];
 
-    if (slang_first != NULL)
+    /* 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)
     {
-	for (i = 0; i < su->su_ga.ga_len; ++i)
+	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 736e9929cd0bc763c15dc5390b07194e6d06bcc6..75caa7e668e781c72be58fa8a78c0f8533661961 100644
--- a/src/testdir/test58.ok
+++ b/src/testdir/test58.ok
@@ -30,7 +30,7 @@ ok
 Ok
 ['OK', 'Uk', 'Put']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 end
@@ -87,7 +87,7 @@ end
 the
 ['put', 'uk', 'test']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 
@@ -99,13 +99,13 @@ m
 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 8f476677e20bfda3f01856bfdf39958b859abf1d..9c49be4cb4721e880609894d19620466f9c486ca 100644
--- a/src/testdir/test59.ok
+++ b/src/testdir/test59.ok
@@ -30,7 +30,7 @@ ok
 Ok
 ['OK', 'Uk', 'Put']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 end
@@ -87,7 +87,7 @@ end
 the
 ['put', 'uk', 'test']
 test
-['test', 'Test', 'testn']
+['Test', 'testn', 'testen']
 déôl
 ['deol', 'déôr', 'test']
 
@@ -99,13 +99,13 @@ mï
 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 04e273a849b9e5d9b1e6885bf48eeeb42f7c4615..4449bfd81cc67603c1ee2094a72c415f2606dd85 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1142,6 +1142,10 @@ clip_copy_modeless_selection(both)
     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 @@ clip_get_word_boundaries(cb, row, col)
     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 @@ clip_get_line_end(row)
 {
     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 @@ retnomove:
 #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 cf19c79ddbb8ac8f576dd6668d62d567824ca56e..70e2f4d3e4417496188cf47803df1199a6d8c0d8 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 c20541c0eeefdd08e9dd54b102d4f4d153c1900c..9c420a0d2e19676f04b17bf1031db555638fff9f 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1116,7 +1116,7 @@ typedef enum auto_event EVENT_T;
  * 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 @@ enum hlf_value
     , 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', \