summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/csscomplete.vim11
-rw-r--r--runtime/autoload/netrw.vim357
-rw-r--r--runtime/doc/options.txt25
-rw-r--r--runtime/doc/pi_netrw.txt320
-rw-r--r--runtime/doc/quickfix.txt4
-rw-r--r--runtime/doc/syntax.txt4
-rw-r--r--runtime/doc/tags2
-rw-r--r--runtime/doc/todo.txt12
-rw-r--r--runtime/doc/version7.txt8
-rw-r--r--runtime/plugin/netrwPlugin.vim147
-rw-r--r--runtime/plugin/netrwSettings.vim161
-rw-r--r--runtime/spell/bg/bg_BG.diff4
-rw-r--r--runtime/spell/cy/cy_GB.diff4
-rw-r--r--runtime/spell/de/de_19.diff486
-rw-r--r--runtime/spell/de/de_20.diff487
-rw-r--r--runtime/spell/de/de_AT.diff487
-rw-r--r--runtime/spell/de/de_CH.diff487
-rw-r--r--runtime/spell/de/de_DE.diff487
-rw-r--r--runtime/spell/en.ascii.splbin566695 -> 566674 bytes
-rw-r--r--runtime/spell/en.latin1.splbin568799 -> 568773 bytes
-rw-r--r--runtime/spell/en.utf-8.splbin569230 -> 569204 bytes
-rw-r--r--runtime/spell/en/en_GB.diff16
-rw-r--r--runtime/spell/en/en_NZ.diff30
-rw-r--r--runtime/spell/en/en_US.diff6
-rw-r--r--runtime/spell/es/es_ES.diff60
-rw-r--r--runtime/spell/es/es_MX.diff18
-rw-r--r--runtime/spell/fo/fo_FO.diff4
-rw-r--r--runtime/spell/ku/ku_TR.diff104
-rw-r--r--runtime/spell/lv/lv_LV.diff0
-rw-r--r--runtime/spell/ms/ms_MY.diff8
-rw-r--r--runtime/spell/yi/yi.diff2
-rw-r--r--runtime/spell/yi/yi_tr.diff2
-rw-r--r--src/eval.c26
-rw-r--r--src/ex_cmds2.c8
-rw-r--r--src/ex_docmd.c12
-rw-r--r--src/ex_getln.c10
-rw-r--r--src/globals.h5
-rw-r--r--src/main.c6
-rw-r--r--src/normal.c3
-rw-r--r--src/option.c7
-rw-r--r--src/proto/spell.pro4
-rw-r--r--src/screen.c54
-rw-r--r--src/search.c23
-rw-r--r--src/spell.c308
-rw-r--r--src/testdir/test58.ok8
-rw-r--r--src/testdir/test59.ok8
-rw-r--r--src/ui.c11
-rw-r--r--src/version.h4
-rw-r--r--src/vim.h4
49 files changed, 3715 insertions, 529 deletions
diff --git a/runtime/autoload/csscomplete.vim b/runtime/autoload/csscomplete.vim
index 9461f39b8..f67445439 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 10dd28542..efd528a15 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
@@ -3078,12 +3113,73 @@ fun! netrw#Explore(indx,dosplit,style,...)
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 39a6f40ce..34000948e 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 d1ca623d7..0ec61fcfe 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 2a148bd47..0049a5464 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 2a12894f8..021a158af 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 36d9b2271..44e189a3f 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 88ea51780..c62fb0500 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 b77530ac2..782171fcc 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 000000000..bcdfa2f9b
--- /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 000000000..f4909405e
--- /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 da0a4f349..3d9bb989e 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 511e7188b..75f3f4216 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 447bb2f0c..434598b4b 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 dce6fe6b9..235d0fda6 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 5947a9874..9f8c4d11d 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 ec44e8c22..046733868 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 89f0a33e4..3d44c60d1 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 0715e555b..d78314527 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 6d4fe5f81..6a8438f0a 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index d3cd823a1..becbd6cbd 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/spell/en/en_GB.diff b/runtime/spell/en/en_GB.diff
index 714077d4b..980502d11 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 3eee71851..5250a8eef 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 f42dc036e..12de7329e 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 2fabe285c..f52228fe5 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 3e4e7c982..59d831270 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 212befe8d..12d04209e 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 e69de29bb..4d6e875be 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 000000000..e69de29bb
--- /dev/null
+++ b/runtime/spell/lv/lv_LV.diff
diff --git a/runtime/spell/ms/ms_MY.diff b/runtime/spell/ms/ms_MY.diff
index 8bde595a9..a6c991601 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 d14a5926c..099488a83 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 1616f303c..c39e0fe0e 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 206bbfbfa..e5212111e 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 c635bfc4c..449b66c37 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 f88fbf815..724238179 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 a3fac10ac..2748915be 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 4b916efd8..3731f0673 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 898205e28..f7e2b1bb9 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 84de270ea..1e645e447 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 d547edc1e..b3c80d6a4 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 2adc137e9..facbfbc76 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 f497f370d..fa1390424 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 2ed15df2b..f4e8f611e 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 53447afb9..6076dfc86 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 736e9929c..75caa7e66 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 8f476677e..9c49be4cb 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 04e273a84..4449bfd81 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 cf19c79dd..70e2f4d3e 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 c20541c0e..9c420a0d2 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', \