summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-08-19 20:40:30 +0000
committerBram Moolenaar <Bram@vim.org>2005-08-19 20:40:30 +0000
commit8aff23a13e69dd6290e9a6f2c3aeb4b486f28279 (patch)
tree361a4567d1f0459e4efbe2b5d05db96991679251
parent5195e45609b26b3d262a90822a2283a4adcf65c9 (diff)
downloadvim-git-8aff23a13e69dd6290e9a6f2c3aeb4b486f28279.tar.gz
updated for version 7.0132v7.0132
-rw-r--r--runtime/autoload/netrw.vim158
-rw-r--r--runtime/doc/eval.txt5
-rw-r--r--runtime/doc/options.txt49
-rw-r--r--runtime/doc/pattern.txt7
-rw-r--r--runtime/doc/pi_netrw.txt5
-rw-r--r--runtime/doc/spell.txt275
-rw-r--r--runtime/doc/syntax.txt5
-rw-r--r--runtime/doc/tags14
-rw-r--r--runtime/doc/todo.txt19
-rw-r--r--runtime/doc/various.txt8
-rw-r--r--runtime/filetype.vim17
-rw-r--r--runtime/plugin/NetrwPlugin.vim6
-rw-r--r--runtime/spell/en.latin1.splbin568698 -> 568720 bytes
-rw-r--r--runtime/syntax/bib.vim7
-rw-r--r--src/edit.c22
-rw-r--r--src/ex_cmds.c10
-rw-r--r--src/globals.h8
-rw-r--r--src/option.c16
-rw-r--r--src/option.h3
-rw-r--r--src/proto/ex_cmds.pro1
-rw-r--r--src/proto/spell.pro1
-rw-r--r--src/version.h4
22 files changed, 438 insertions, 202 deletions
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index e077e25e7..c797beca3 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,8 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" AUTOLOAD PORTION
-" Last Change: Aug 16, 2005
+" Last Change: Aug 19, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version: 63
+" Version: 65
" 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,
@@ -690,8 +690,6 @@ fun! s:NetGetFile(readcmd, fname, method)
exe a:readcmd." ".v:cmdarg." ".fname
let line1 = curline + 1
let line2 = line("$") - lastline + 1
- let s:netrw_line = s:netrw_line + 1
- let s:netrw_col = 1
else
" not readable
" call Dret("NetGetFile : fname<".fname."> not readable")
@@ -1025,6 +1023,8 @@ fun! s:NetBrowse(dirname)
return
endif
+ call s:NetOptionSave()
+
" sanity check
if exists("b:netrw_method") && b:netrw_method =~ '[235]'
" call Decho("b:netrw_method=".b:netrw_method)
@@ -1033,6 +1033,7 @@ fun! s:NetBrowse(dirname)
echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ftp" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
+ call s:NetOptionRestore()
" call Dret("NetBrowse")
return
endif
@@ -1042,6 +1043,7 @@ fun! s:NetBrowse(dirname)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
+ call s:NetOptionRestore()
" call Dret("NetBrowse")
return
endif
@@ -1061,6 +1063,7 @@ fun! s:NetBrowse(dirname)
echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
+ call s:NetOptionRestore()
" call Dret("NetBrowse : badly formatted dirname<".dirname.">")
return
endif
@@ -1109,6 +1112,7 @@ fun! s:NetBrowse(dirname)
" call Decho("attempt transfer of symlink as file")
call s:NetBrowse(substitute(dirname,'@$','','e'))
redraw!
+ call s:NetOptionRestore()
" call Dret("NetBrowse : symlink")
return
@@ -1119,7 +1123,7 @@ fun! s:NetBrowse(dirname)
" remove any filetype indicator from end of dirname, except for the
" "this is a directory" indicator (/). There shouldn't be one of those,
" anyway.
- let path= substitute(path,'[*=@|]$','','e')
+ let path= substitute(path,'[*=@|]\r\=$','','e')
" call Decho("new path<".path.">")
" remote-read the requested file into current buffer
@@ -1133,7 +1137,7 @@ fun! s:NetBrowse(dirname)
" save certain window-oriented variables into buffer-oriented variables
call s:BufWinVars()
-
+ call s:NetOptionRestore()
setlocal nonu nomod noma
" call Dret("NetBrowse : file<".fname.">")
@@ -1152,6 +1156,7 @@ fun! s:NetBrowse(dirname)
" call Decho("buffer already exists, switching to it")
exe "b ".bufnamenr
if line("$") >= 5
+ call s:NetOptionRestore()
" call Dret("NetBrowse")
return
endif
@@ -1166,7 +1171,7 @@ fun! s:NetBrowse(dirname)
" call Decho("exe file ".escape(bufname,s:netrw_cd_escape))
exe 'file '.escape(bufname,s:netrw_cd_escape)
" call Decho("renaming file to bufname<".bufname.">")
- setlocal bh=hide nobl nonu
+ setlocal bh=hide bt=nofile nobl nonu
" save current directory on directory history list
call <SID>NetBookmarkDir(3,expand("%"))
@@ -1281,7 +1286,6 @@ fun! s:NetBrowse(dirname)
exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
endif
endif
-
" set up syntax highlighting
if has("syntax")
@@ -1347,8 +1351,12 @@ fun! s:NetBrowse(dirname)
endif
endif
endif
+
+ " cleanup any windows mess at end-of-line
+ keepjumps silent! %s/\r$//e
exe "keepjumps ".w:netrw_bannercnt
+ call s:NetOptionRestore()
setlocal nomod noma nonu
" call Dret("NetBrowse")
@@ -1772,6 +1780,16 @@ fun! s:NetBrowseFtpCmd(path,cmd)
endif
endif
+ " ftp's ls doesn't seem to include ./ or ../
+ if !search('^\.\/$','wn')
+ exe 'keepjumps '.curline
+ if a:path !~ '^$'
+ put ='../'
+ endif
+ put ='./'
+ exe 'keepjumps '.curline
+ endif
+
" restore settings
let &ff= ffkeep
" call Dret("NetBrowseFtpCmd")
@@ -2128,22 +2146,18 @@ fun! netrw#DirBrowse(dirname)
" call Dret("DirBrowse")
return
endif
+ call s:NetOptionSave()
if v:version < 603
if !exists("g:netrw_quiet")
echohl Error | echo "***netrw*** vim version<".v:version."> too old for browsing with netrw" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
+ call s:NetOptionRestore()
" call Dret("DirBrowse : vim version<".v:version."> too old")
return
endif
- " record autochdir setting and then insure its unset (tnx to David Fishburn)
- if has("netbeans_intg") || has("sun_workshop")
- let keep_autochdir= &autochdir
- set noautochdir
- endif
-
" use buffer-oriented WinVars if buffer ones exist but window ones don't
call s:UseBufWinVars()
@@ -2166,7 +2180,7 @@ fun! netrw#DirBrowse(dirname)
endif
" get cleared buffer
- if bufnum < 0
+ if bufnum < 0 || !bufexists(bufnum)
if v:version < 700
enew!
else
@@ -2185,6 +2199,7 @@ fun! netrw#DirBrowse(dirname)
" call Decho("change directory: cd ".b:netrw_curdir)
exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
endif
+ call s:NetOptionRestore()
" call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">")
return
endif
@@ -2201,6 +2216,11 @@ fun! netrw#DirBrowse(dirname)
if b:netrw_curdir =~ '[/\\]$'
let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
endif
+ if b:netrw_curdir == ''
+ " under unix, when the root directory is encountered, the result
+ " from the preceding substitute is an empty string.
+ let b:netrw_curdir= '/'
+ endif
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
" make netrw's idea of the current directory vim's if the user wishes
@@ -2214,6 +2234,7 @@ fun! netrw#DirBrowse(dirname)
if exists("w:netrw_prvdir")
let b:netrw_curdir= w:netrw_prvdir
else
+ call s:NetOptionRestore()
" call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">")
return
endif
@@ -2223,8 +2244,8 @@ fun! netrw#DirBrowse(dirname)
" change the name of the buffer to reflect the b:netrw_curdir
exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape)
- " make this buffer modifiable and hidden
- setlocal ma hidden nonu bt=nofile
+ " make this buffer not-a-file, modifiable, not line-numbered, etc
+ setlocal bh=hide bt=nofile nobl ma nonu
if v:version < 700
silent! %d
else
@@ -2367,11 +2388,8 @@ fun! netrw#DirBrowse(dirname)
" save certain window-oriented variables into buffer-oriented variables
call s:BufWinVars()
-
+ call s:NetOptionRestore()
setlocal noma nomod nonu bh=hide nobl
- if has("netbeans_intg") || has("sun_workshop")
- let &autochdir= keep_autochdir
- endif
" call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
endfun
@@ -2470,6 +2488,9 @@ fun! s:LocalBrowseList()
keepjumps put=pfile
endif
endwhile
+
+ " cleanup any windows mess at end-of-line
+ keepjumps silent! %s/\r$//e
setlocal ts=32
" call Dret("LocalBrowseList")
@@ -3091,27 +3112,42 @@ endfun
" ------------------------------------------------------------------------
" NetOptionSave: save options and set to "standard" form {{{1
-fun!s:NetOptionSave()
+fun! s:NetOptionSave()
" call Dfunc("NetOptionSave()")
+ if !exists("w:netoptionsave")
+ let w:netoptionsave= 1
+ else
+" call Dret("NetOptionSave : netoptionsave=".w:netoptionsave)
+ return
+ endif
" Get Temporary Filename
- let s:aikeep = &ai
- let s:cinkeep = &cin
- let s:cinokeep = &cino
- let s:comkeep = &com
- let s:cpokeep = &cpo
- let s:dirkeep = getcwd()
- let s:gdkeep = &gd
- let s:twkeep = &tw
+ let w:aikeep = &ai
+ " record autochdir setting and then insure its unset (tnx to David Fishburn)
+ if has("netbeans_intg") || has("sun_workshop")
+ let w:acdkeep = &autochdir
+ set noautochdir
+ endif
+ let w:cinkeep = &cin
+ let w:cinokeep = &cino
+ let w:comkeep = &com
+ let w:cpokeep = &cpo
+ if !g:netrw_keepdir
+ let w:dirkeep = getcwd()
+ endif
+ let w:gdkeep = &gd
+ let w:repkeep = &report
+ let w:twkeep = &tw
setlocal cino =
setlocal com =
setlocal cpo -=aA
setlocal nocin noai
setlocal tw =0
+ setlocal report=10000
if has("win32") && !has("win95")
- let s:swfkeep= &swf
+ let w:swfkeep= &swf
setlocal noswf
-" call Decho("setting s:swfkeep to <".&swf.">")
+" call Decho("setting w:swfkeep to <".&swf.">")
endif
" call Dret("NetOptionSave")
@@ -3121,36 +3157,50 @@ endfun
" NetOptionRestore: restore options {{{1
fun! s:NetOptionRestore()
" call Dfunc("NetOptionRestore()")
+ if !exists("w:netoptionsave")
+" call Dret("NetOptionRestore : netoptionsave=".w:netoptionsave)
+ return
+ endif
+ unlet w:netoptionsave
- let &ai = s:aikeep
- let &cin = s:cinkeep
- let &cino = s:cinokeep
- let &com = s:comkeep
- let &cpo = s:cpokeep
- exe "lcd ".s:dirkeep
- let &gd = s:gdkeep
- let &tw = s:twkeep
- if exists("s:swfkeep")
+ 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:swfkeep")
if &directory == ""
" user hasn't specified a swapfile directory;
" netrw will temporarily make the swapfile
" directory the current local one.
let &directory = getcwd()
- silent! let &swf = s:swfkeep
+ silent! let &swf = w:swfkeep
set directory=
else
- let &swf= s:swfkeep
- endif
- unlet s:swfkeep
- endif
- unlet s:aikeep
- unlet s:cinkeep
- unlet s:cinokeep
- unlet s:comkeep
- unlet s:cpokeep
- unlet s:gdkeep
- unlet s:twkeep
- unlet s:dirkeep
+ let &swf= w:swfkeep
+ 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
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 61a22df73..c18959678 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4692,10 +4692,7 @@ last defined. Example: >
function SetFileTypeSH(name)
Last set from /usr/share/vim/vim-7.0/filetype.vim
<
-When the function was defined by hand there is no "Last set" message. When
-the function was defined while executing a function, user command or
-autocommand, the script in which it was defined is reported.
-{not available when compiled without the +eval feature}
+See |:verbose-cmd| for more information.
*E124* *E125*
:fu[nction][!] {name}([arguments]) [range] [abort] [dict]
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d15d454a6..56a91b6af 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 Aug 12
+*options.txt* For Vim version 7.0aa. Last change: 2005 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4284,6 +4284,45 @@ A jump table for the options with a short description can be found at |Q_op|.
generated from a list of items, e.g., the Buffers menu. Changing this
option has no direct effect, the menu must be refreshed first.
+ *'mkspellmem'* *'msm'*
+'mkspellmem' 'msm' string (default "460000,2000,500")
+ global
+ {not in Vi}
+ {not available when compiled without the |+syntax|
+ feature}
+ Parameters for |:mkspell|. This tunes when to start compressing the
+ word tree. Compression can be slow when there are many words, but
+ it's needed to avoid running out of memory. The amount of memory used
+ per word depends very much on how similar the words are, that's why
+ this tuning is complicated.
+
+ There are three numbers, separated by commas:
+ {start},{inc},{added}
+
+ For most languages the uncompressed word tree fits in memory. {start}
+ gives the amount of memory in Kbyte that can be used before any
+ compression is done. It should be a bit smaller than the amount of
+ memory that is available to Vim.
+
+ When going over the {start} limit the {inc} number specifies the
+ amount of memory in Kbyte that can be allocated before another
+ compression is done. A low number means compression is done after
+ less words are added, which is slow. A high number means more memory
+ will be allocated.
+
+ After doing compression, {added} times 1024 words can be added before
+ the {inc} limit is ignored and compression is done when any extra
+ amount of memory is needed. A low number means there is a smaller
+ chance of hitting the {inc} limit, less memory is used but it's
+ slower.
+
+ The languages for which these numbers are important are Italian and
+ Hungarian. The default works for when you have about 512 Mbyte. If
+ you have 1 Gbyte you could use: >
+ :set mkspellmem=900000,3000,800
+< If you have less than 512 Mbyte |:mkspell| may fail for some
+ languages, no matter what you set 'mkspellmem' to.
+
*'modeline'* *'ml'* *'nomodeline'* *'noml'*
'modeline' 'ml' boolean (Vim default: on, Vi default: off)
local to buffer
@@ -5696,7 +5735,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Pattern to locate the end of a sentence. The following word will be
checked to start with a capital letter. If not then it is highlighted
- with SpellCap |hl-SpellCap|.
+ with SpellCap |hl-SpellCap| (unless the word is also badly spelled).
When this check is not wanted make this option empty.
Only used when 'spell' is set.
Be careful with special characters, see |option-backslash| about
@@ -5749,6 +5788,7 @@ A jump table for the options with a short description can be found at |Q_op|.
region by listing them: "en_us,en_ca" supports both US and Canadian
English, but not words specific for Australia, New Zealand or Great
Britain.
+ *E757*
As a special case the name of a .spl file can be given as-is. The
first "_xx" in the name is removed and used as the region name
(_xx is an underscore, two letters and followed by a non-letter).
@@ -5789,6 +5829,11 @@ A jump table for the options with a short description can be found at |Q_op|.
character inserts/deletes/swaps. Works well for
simple typing mistakes.
+ {number} The maximum number of suggestions listed for |z?|.
+ Not used for |spellsuggest()|. The number of
+ suggestions is never more than the value of 'lines'
+ minus two.
+
file:{filename} Read file {filename}, which must have two columns,
separated by a slash. The first column contains the
bad word, the second column the suggested good word.
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 078d75420..84e9bf517 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
+*pattern.txt* For Vim version 7.0aa. Last change: 2005 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -943,9 +943,10 @@ x A single character, with no special meaning, matches itself
"\_[^ab]" matches the end-of-line and any character but "a" and "b".
This makes it Vi compatible: Without the "\_" or "\n" the collection
does not match an end-of-line.
-
+ *E769*
When the ']' is not there Vim will not give an error message but
- assume no collection is used. Useful to search for '['.
+ assume no collection is used. Useful to search for '['. However, you
+ do get E769 for internal searching.
If the sequence begins with "^", it matches any single character NOT
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 00718833f..48ee8806d 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1217,6 +1217,11 @@ which is loaded automatically at startup (assuming :set nocp).
==============================================================================
10. History *netrw-history*
+ v64: * Browser functions now use NetOptionSave/Restore; in particular,
+ netrw now works around the report setting
+ * Bugfix - browsing a "/" directory (Unix) yielded buffers
+ named "[Scratch]" instead of "/"
+ * Bugfix - remote browsing with ftp was omitting the ./ and ../
v63: * netrw now takes advantage of autoload (and requires 7.0)
* Bugfix - using r (to reverse sort) working again
v62: * Bugfix - spaces allowed again in directory names with
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 929c1060a..2ec2eba36 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt* For Vim version 7.0aa. Last change: 2005 Aug 16
+*spell.txt* For Vim version 7.0aa. Last change: 2005 Aug 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -433,8 +433,12 @@ then Vim will try to guess.
|spell-affix-SAL|
This command uses a lot of memory, required to find
- the optimal word tree (Polish requires a few hundred
- Mbyte). The final result will be much smaller.
+ the optimal word tree (Polish, Italian and Hungarian
+ require several hundred Mbyte). The final result will
+ be much smaller, because compression is used. To
+ avoid running out of memory compression will be done
+ now and then. This can be tuned with the 'mkspellmem'
+ option.
After the spell file was written and it was being used
in a buffer it will be reloaded automatically.
@@ -452,7 +456,8 @@ then Vim will try to guess.
Vim will report the number of duplicate words. This might be a mistake in the
list of words. But sometimes it is used to have different prefixes and
suffixes for the same basic word to avoid them combining (e.g. Czech uses
-this).
+this). If you want Vim to report all duplicate words set the 'verbose'
+option.
Since you might want to change a Myspell word list for use with Vim the
following procedure is recommended:
@@ -477,6 +482,25 @@ When the Myspell files are updated you can merge the differences:
4. Rename xx_YY.new.dic to xx_YY.orig.dic and xx_YY.new.aff to xx_YY.new.aff.
+SPELL FILE VERSIONS *E770* *E771* *E772*
+
+Spell checking is a relatively new feature in Vim, thus it's possible that the
+.spl file format will be changed to support more languages. Vim will check
+the validity of the spell file and report anything wrong.
+
+ E771: Old spell file, needs to be updated ~
+This spell file is older than your Vim. You need to update the .spl file.
+
+ E772: Spell file is for newer version of Vim ~
+This means the spell file was made for a later version of Vim. You need to
+update Vim.
+
+ E770: Unsupported section in spell file ~
+This means the spell file was made for a later version of Vim and contains a
+section that is required for the spell file to work. In this case it's
+probably a good idea to upgrade your Vim.
+
+
SPELL FILE DUMP
If for some reason you want to check what words are supported by the currently
@@ -736,6 +760,7 @@ Example:
SFX F 0 in [^i]n # Spion > Spionin ~
SFX F 0 nen in # Bauerin > Bauerinnen ~
+ *spell-affix-rare*
An extra item for Vim is the "rare" flag. It must come after the other
fields, before a comment. When used then all words that use the affix will be
marked as rare words. Example:
@@ -746,6 +771,22 @@ marked as rare words. Example:
However, if the word also appears as a good word in another way it won't be
marked as rare.
+ *spell-affix-nocomp*
+Another extra item for Vim is the "nocomp" flag. It must come after the other
+fields, before a comment. It can be either before or after "rare". When used
+then all words that use the affix will not be used for compound words.
+Example:
+ affix file:
+ COMPOUNDFLAG c ~
+ SFX a Y 2 ~
+ SFX a 0 s . ~
+ SFX a 0 ize . nocomp ~
+ dictionary:
+ word/c ~
+ util/ac ~
+
+This allows for "wordutil" and "wordutils" but not "wordutilize".
+
*spell-affix-PFXPOSTPONE*
When an affix file has very many prefixes that apply to many words it's not
possible to build the whole word list in memory. This applies to Hebrew (a
@@ -761,9 +802,6 @@ string is one character and equal to the last character of the added string,
but in lower case. Thus when the chop string is used to allow the following
word to start with an upper case letter.
-It is not possible to use PFXPOSTPONE together with COMPOUNDFLAG or
-COMPOUNDFLAGS.
-
WORDS WITH A SLASH *spell-affix-SLASH*
@@ -818,86 +856,73 @@ This can be used to exclude words that would otherwise be good. For example
Once a word has been marked as bad it won't be undone by encountering the same
word as good.
+ *spell-affix-NEEDAFFIX*
+The NEEDAFFIX flag is used to require that a word is used with an affix. The
+word itself is not a good word. Example:
+
+ NEEDAFFIX + ~
+
COMPOUND WORDS *spell-affix-compound*
-A compound word is a longer word made by concatenating words. To specify
-which words may be concatenated a character is used. This character is put in
-the list of affixes after the word. We will call this character a flag here.
-Obviously these flags must be different from any affix IDs used.
+A compound word is a longer word made by concatenating words that appear in
+the .dic file. To specify which words may be concatenated a character is
+used. This character is put in the list of affixes after the word. We will
+call this character a flag here. Obviously these flags must be different from
+any affix IDs used.
*spell-COMPOUNDFLAG*
The Myspell compatible method uses one flag, specified with COMPOUNDFLAG.
-All words with this flag combine in any order and without limit in length.
-This means there is no control over which word comes first. Example:
+All words with this flag combine in any order. This means there is no control
+over which word comes first. Example:
COMPOUNDFLAG c ~
*spell-COMPOUNDFLAGS*
-The method added by Vim allows specifying which words can be prepended to
-other words, and which words can be appended to other words. This is a list
-of comma separated items. Each item may contain zero or more dashes and plus
-signs.
-
-NOTE: At this moment COMPOUNDFLAGS has not been implemented yet!
-
-An item without dashes specifies words that combine in any order and as often
-as possible. Example:
- COMPOUNDFLAGS c,m ~
-
-This allows all words with the "c" flag to be combined and all words with the
-"m" flag to be combined, but a word with the "c" flag doesn't combine with a
-word with the "m" flag.
-
-Flags that are put together, without a separating comma, are considered
-interchangable. Example:
- COMPOUNDFLAGS cm ~
-
-This allows all words with the "c" and/or "m" flag to be combined.
-
-An item with one dash specifies flags for a leading word and flags for a
-trailing word. Thus only two-word combinations are made. Example:
- COMPOUNDFLAGS f-d ~
-
-Here the 'f' flag can be used for food and 'd' for dishes, such that you can
-use these words in the dictionary:
- tomato/f ~
- onion/f~
- soup/d~
- salat/d~
-
-Which makes the words:
- tomato
+A more advanced method to specify how compound words can be formed uses
+multiple items with multiple flags. This is not compatible with Myspell 3.0.
+Let's start with an example:
+ COMPOUNDFLAGS c+ ~
+ COMPOUNDFLAGS se ~
+
+The first line defines that words with the "c" flag can be concatenated in any
+order. The second line defines compound words that are made of one word with
+the "s" flag and one word with the "e" flag. With this dictionary:
+ bork/c ~
+ onion/s ~
+ soup/e ~
+
+You can make these words:
+ bork
+ borkbork
+ borkborkbork
+ (etc.)
onion
soup
- salat
- tomatosoup
- tomatosalat
onionsoup
- onionsalat
-
-Note that something like "souptomato" is not possible. And that it's actually
-easier to list all the words if you have only this few.
-
-More dashes can be used to allow more words to combine. For example:
- COMPOUNDFLAGS f-d,f-f-d ~
-
-Would allow "tomatoonionsoup" (OK, so this is a bad example, but you get the
-idea).
-
-When a word can be used an undetermined number of times use a plus instead of
-a dash. Example:
- COMPOUNDFLAGS f+d ~
-
-Then you can make tasty "oniononiontomatotomatosoup".
-
-The "+" may also appear at the end, which means that the last flags can be
-repeated many times. Example:
- COMPOUNDFLAGS f-d+ ~
-Which allows the use of "onionsoupsoupsoupsoupsoupsoup".
+The COMPOUNDFLAGS item may appear multiple times. The argument is made out of
+one or more groups, where each group can be:
+ one flag e.g., c
+ alternate flags inside [] e.g., [abc]
+Optionally this may be followed by:
+ * the group appears zero or more times, e.g., sm*e
+ + the group appears one or more times, e.g., c+
+
+This is similar to the regexp pattern syntax (but not the same!). A few
+examples with the sequence of word flags they require:
+ COMPOUNDFLAGS x+ x xx xxx etc.
+ COMPOUNDFLAGS yz yz
+ COMPOUNDFLAGS x+z xz xxz xxxz etc.
+ COMPOUNDFLAGS yx+ yx yxx yxxx etc.
+
+ COMPOUNDFLAGS [abc]z az bz cz
+ COMPOUNDFLAGS [abc]+z az aaz abaz bz baz bcbz cz caz cbaz etc.
+ COMPOUNDFLAGS a[xyz]+ ax axx axyz ay ayx ayzz az azy azxy etc.
+ COMPOUNDFLAGS sm*e se sme smme smmme etc.
+ COMPOUNDFLAGS s[xyz]*e se sxe sxye sxyxe sye syze sze szye szyxe etc.
*spell-COMPOUNDMIN*
-The minimal length of a word used for concatenation is specified with
+The minimal byte length of a word used for concatenation is specified with
COMPOUNDMIN. Example:
COMPOUNDMIN 5 ~
@@ -905,39 +930,79 @@ When omitted a minimal length of 3 bytes is used. Obviously you could just
leave out the compound flag from short words instead, this feature is present
for compatibility with Myspell.
- *spell-CMP*
-NOTE: At this moment CMP has not been implemented yet!
-
-Sometimes it is necessary to change a word when concatenating it to another,
-by removing a few letters, inserting something or both. It can also be useful
-to restrict concatenation to words that match a pattern. For this purpose CMP
-items can be used. They look like this:
- CMP {flag} {flags} {strip} {add} {cond} {cond2}
-
- {flag} the flag, as used in COMPOUNDFLAGS for the lead word
- {flags} accepted flags for the following word ('.' to accept
- all)
- {strip} text to remove from the end of the lead word (zero
- for no stripping)
- {add} text to insert between the words (zero for no
- addition)
- {cond} condition to match at the end of the lead word
- {cond2} condition to match at the start of the following word
-
-This is the same as what is used for SFX and PFX items, with the extra {flags}
-and {cond2} fields. Example:
- CMP f mrt 0 - . . ~
-
-When used with the food and dish word list above, this means that a dash is
-inserted after each food item. Thus you get "onion-soup" and
-"onion-tomato-salat".
-
-When there are CMP items for a compound flag the concatenation is only done
-when a CMP item matches.
-
-When there are no CMP items for a compound flag, then all words will be
-concatenated, as if there was an item:
- CMP {flag} . 0 0 . .
+ *spell-COMPOUNDMAX*
+The maximum number of words that can be concatenated into a compound word is
+specified with COMPOUNDMAX. Example:
+ COMPOUNDMAX 3 ~
+
+When omitted there is no maximum. It applies to all compound words.
+
+To set a limit for words with specific flags make sure the items in
+COMPOUNDFLAGS where they appear don't allow too many words.
+
+ *spell-COMPOUNDSYLMAX*
+The maximum number of syllables that a compound word may contain is specified
+with COMPOUNDSYLMAX. Example:
+ COMPOUNDSYLMAX 6 ~
+
+This has no effect if there is no SYLLABLE item. Without COMPOUNDSYLMAX there
+is no limit on the number of syllables.
+
+ *spell-SYLLABLE*
+The SYLLABLE item defines characters or character sequences that are used to
+count the number of syllables in a word. Example:
+ SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui ~
+
+Before the first slash is the set of characters that are counted for one
+syllable, also when repeated and mixed, until the next character that is not
+in this set. After the slash come sequences of characters that are counted
+for one syllable. These are preferred over using characters from the set.
+With the example "ideeen" has three syllables, counted by "i", "ee" and "e".
+
+Only case-folded letters need to be included.
+
+Above another way to restrict compounding was mentioned above: adding "nocomp"
+after an affix causes all words that are made with that affix not be be used
+for compounding. |spell-affix-nocomp|
+
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+NOTE: The following has not been implemented yet, because there are no word
+lists that support this.
+> *spell-CMP*
+> Sometimes it is necessary to change a word when concatenating it to another,
+> by removing a few letters, inserting something or both. It can also be useful
+> to restrict concatenation to words that match a pattern. For this purpose CMP
+> items can be used. They look like this:
+> CMP {flag} {flags} {strip} {strip2} {add} {cond} {cond2}
+>
+> {flag} the flag, as used in COMPOUNDFLAGS for the lead word
+> {flags} accepted flags for the following word ('.' to accept
+> all)
+> {strip} text to remove from the end of the lead word (zero
+> for no stripping)
+> {strip2} text to remove from the start of the following word
+> (zero for no stripping)
+> {add} text to insert between the words (zero for no
+> addition)
+> {cond} condition to match at the end of the lead word
+> {cond2} condition to match at the start of the following word
+>
+> This is the same as what is used for SFX and PFX items, with the extra {flags}
+> and {cond2} fields. Example:
+> CMP f mrt 0 - . . ~
+>
+> When used with the food and dish word list above, this means that a dash is
+> inserted after each food item. Thus you get "onion-soup" and
+> "onion-tomato-salat".
+>
+> When there are CMP items for a compound flag the concatenation is only done
+> when a CMP item matches.
+>
+> When there are no CMP items for a compound flag, then all words will be
+> concatenated, as if there was an item:
+> CMP {flag} . 0 0 . .
+>
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
REPLACEMENTS *spell-affix-REP*
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 04e76dbef..a6a03f52b 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -3654,9 +3654,8 @@ also tell where it was last set. Example: >
< Comment xxx term=bold ctermfg=4 guifg=Blue ~
Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~
-For details about when this message is given and when it's valid see
-|:set-verbose|. When ":hi clear" is used then the script where this command
-is used will be mentioned for the default values.
+When ":hi clear" is used then the script where this command is used will be
+mentioned for the default values. See |:verbose-cmd| for more information.
*highlight-args* *E416* *E417* *E423*
There are three types of terminals for highlighting:
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 118e324f3..d99650947 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -361,6 +361,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'mfd' options.txt /*'mfd'*
'mh' options.txt /*'mh'*
'mis' options.txt /*'mis'*
+'mkspellmem' options.txt /*'mkspellmem'*
'ml' options.txt /*'ml'*
'mls' options.txt /*'mls'*
'mm' options.txt /*'mm'*
@@ -385,6 +386,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'mousetime' options.txt /*'mousetime'*
'mp' options.txt /*'mp'*
'mps' options.txt /*'mps'*
+'msm' options.txt /*'msm'*
'mzq' options.txt /*'mzq'*
'mzquantum' options.txt /*'mzquantum'*
'nf' options.txt /*'nf'*
@@ -2589,6 +2591,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:ve various.txt /*:ve*
:verb various.txt /*:verb*
:verbose various.txt /*:verbose*
+:verbose-cmd various.txt /*:verbose-cmd*
:version various.txt /*:version*
:vert windows.txt /*:vert*
:vertical windows.txt /*:vertical*
@@ -3735,6 +3738,7 @@ E752 spell.txt /*E752*
E753 spell.txt /*E753*
E754 spell.txt /*E754*
E756 spell.txt /*E756*
+E757 options.txt /*E757*
E758 spell.txt /*E758*
E759 spell.txt /*E759*
E76 pattern.txt /*E76*
@@ -3747,7 +3751,11 @@ E765 options.txt /*E765*
E766 eval.txt /*E766*
E767 eval.txt /*E767*
E768 message.txt /*E768*
+E769 pattern.txt /*E769*
E77 message.txt /*E77*
+E770 spell.txt /*E770*
+E771 spell.txt /*E771*
+E772 spell.txt /*E772*
E78 motion.txt /*E78*
E79 message.txt /*E79*
E80 message.txt /*E80*
@@ -6385,12 +6393,16 @@ spell spell.txt /*spell*
spell-CMP spell.txt /*spell-CMP*
spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG*
spell-COMPOUNDFLAGS spell.txt /*spell-COMPOUNDFLAGS*
+spell-COMPOUNDMAX spell.txt /*spell-COMPOUNDMAX*
spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN*
+spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX*
+spell-SYLLABLE spell.txt /*spell-SYLLABLE*
spell-affix-BAD spell.txt /*spell-affix-BAD*
spell-affix-FOL spell.txt /*spell-affix-FOL*
spell-affix-KEP spell.txt /*spell-affix-KEP*
spell-affix-LOW spell.txt /*spell-affix-LOW*
spell-affix-MAP spell.txt /*spell-affix-MAP*
+spell-affix-NEEDAFFIX spell.txt /*spell-affix-NEEDAFFIX*
spell-affix-PFX spell.txt /*spell-affix-PFX*
spell-affix-PFXPOSTPONE spell.txt /*spell-affix-PFXPOSTPONE*
spell-affix-RAR spell.txt /*spell-affix-RAR*
@@ -6404,6 +6416,8 @@ spell-affix-UPP spell.txt /*spell-affix-UPP*
spell-affix-chars spell.txt /*spell-affix-chars*
spell-affix-compound spell.txt /*spell-affix-compound*
spell-affix-mbyte spell.txt /*spell-affix-mbyte*
+spell-affix-nocomp spell.txt /*spell-affix-nocomp*
+spell-affix-rare spell.txt /*spell-affix-rare*
spell-affix-vim spell.txt /*spell-affix-vim*
spell-dic-format spell.txt /*spell-dic-format*
spell-double-scoring spell.txt /*spell-double-scoring*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 24349231d..27dd9a750 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 Aug 16
+*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -31,12 +31,19 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
-------------------- Known bugs and current work -----------------------
Spelling:
-- Prefer SpellBad over SpellCap highlighting.
-- Add limit for number of suggestions to 'spellsuggest'?
-- CTRL-X s in Insert mode: move cursor back to after badly spelled word?
-- Implement multiple flags for compound words and CMP item.
+- Test counting syllables and comparing against the maximum.
+- Test nocomp flag for affixes.
+
+- When looking for following compound word, also do postponed prefixes.
+
+- Implement multiple flags for compound words and CMP item?
Await comments from other spell checking authors.
+Help tags: something to make it easy to find help about a certain filetype?
+ use ft-c-syntax ft-c-ftplugin etc.?
+
+Mac GUI: pasting lines results in ^M instead of line breaks. (Benjamin Esham)
+
Mac unicode patch (Da Woon Jung):
- selecting proportional font breaks display
- UTF-8 text causes display problems. Font replacement causes this.
@@ -44,7 +51,7 @@ Mac unicode patch (Da Woon Jung):
Win32: Use the free downloadable compiler 7.1. Figure out how to do debugging
(with Agide?) and describe it. (George Reilly)
-autoload:
+Autoload:
- Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
script names and a help file and produces a script that can be sourced to
install the scripts in the user's directories.
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index bcb88eb9f..d0ee58dff 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -485,6 +485,14 @@ N *+X11* Unix only: can restore window title |X11|
For logging verbose messages in a file use the
'verbosefile' option.
+ *:verbose-cmd*
+When 'verbose' is non-zero, listing the value of a Vim option or a key map or
+a user-defined function or a command or a highlight group will also display
+where it was last defined. If it was defined manually then there will be no
+"Last set" message. When it was defined while executing a function, user
+command or autocommand, the script in which it was defined is reported.
+{not available when compiled without the +eval feature}
+
*K*
K Run a program to lookup the keyword under the
cursor. The name of the program is given with the
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 96c06e4d8..5172322ce 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Aug 16
+" Last Change: 2005 Aug 17
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -823,7 +823,7 @@ au BufNewFile,BufRead *.m4
au BufNewFile,BufRead *.mgp setf mgp
" Mail (for Elm, trn, mutt, rn, slrn)
-au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
+au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
" Mailcap configuration file
au BufNewFile,BufRead .mailcap,mailcap setf mailcap
@@ -953,8 +953,8 @@ au BufRead,BufNewFile *.mu setf mupad
au BufNewFile,BufRead *.mush setf mush
" Mutt setup file
-au BufNewFile,BufRead Muttrc setf muttrc
-au BufNewFile,BufRead .muttrc*,*/.mutt/muttrc* call s:StarSetf('muttrc')
+au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
+au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc')
" Nano
au BufNewFile,BufRead /etc/nanorc,.nanorc setf nanorc
@@ -1832,7 +1832,12 @@ au BufNewFile,BufRead *.y call s:FTy()
fun! s:FTy()
let n = 1
- while n < 10 && n < line("$")
+ while n < 100 && n < line("$")
+ let line = getline(n)
+ if line =~ '^\s*%'
+ setf yacc
+ return
+ endif
if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
setf racc
return
@@ -1924,7 +1929,7 @@ au BufNewFile,BufRead /etc/modprobe.* call s:StarSetf('modconf')
au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby')
" Mutt setup file
-au BufNewFile,BufRead muttrc*,Muttrc* call s:StarSetf('muttrc')
+au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc')
" Nroff macros
au BufNewFile,BufRead tmac.* call s:StarSetf('nroff')
diff --git a/runtime/plugin/NetrwPlugin.vim b/runtime/plugin/NetrwPlugin.vim
index b1f5abd78..cb39b8476 100644
--- a/runtime/plugin/NetrwPlugin.vim
+++ b/runtime/plugin/NetrwPlugin.vim
@@ -1,8 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" PLUGIN PORTION
-" Last Change: Aug 16, 2005
+" Last Change: Aug 17, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version: 63
+" Version: 65a ASTRO-ONLY
" License: Vim License (see vim's :help license)
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -28,7 +28,7 @@ if v:version < 600
echoerr "***netrw*** doesn't support Vim version ".v:version
finish
endif
-let g:loaded_netrw = "v63"
+let g:loaded_netrw = "v65a"
if v:version < 700
let loaded_explorer = 1
endif
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 95b536394..60350426b 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/syntax/bib.vim b/runtime/syntax/bib.vim
index a98f281d3..0cd534d5a 100644
--- a/runtime/syntax/bib.vim
+++ b/runtime/syntax/bib.vim
@@ -2,8 +2,7 @@
" Language: BibTeX (bibliographic database format for (La)TeX)
" Maintainer: Bernd Feige <Bernd.Feige@gmx.net>
" Filenames: *.bib
-" Last Change: Apr 26, 2001
-" URL: http://home.t-online.de/home/Bernd.Feige/bib.vim
+" Last Change: Aug 02, 2005
" Thanks to those who pointed out problems with this file or supplied fixes!
@@ -47,7 +46,7 @@ syn cluster bibVarContents contains=bibUnescapedSpecial,bibBrace,bibParen
syn match bibUnescapedSpecial contained /[^\\][%&]/hs=s+1
syn match bibKey contained /\s*[^ \t}="]\+,/hs=s,he=e-1 nextgroup=bibField
syn match bibVariable contained /[^{}," \t=]/
-syn region bibComment start=/^/ end=/^\s*@/me=e-1 contains=@bibCommentContents nextgroup=bibEntry
+syn region bibComment start=/./ end=/^\s*@/me=e-1 contains=@bibCommentContents nextgroup=bibEntry
syn region bibQuote contained start=/"/ end=/"/ skip=/\(\\"\)/ contains=@bibVarContents
syn region bibBrace contained start=/{/ end=/}/ skip=/\(\\[{}]\)/ contains=@bibVarContents
syn region bibParen contained start=/(/ end=/)/ skip=/\(\\[()]\)/ contains=@bibVarContents
@@ -60,6 +59,7 @@ if version < 600
else
syn region bibEntry start=/@\S\+[{(]/ end=/^\s*[})]/ transparent fold contains=bibType,bibEntryData nextgroup=bibComment
endif
+syn region bibComment2 start=/@Comment[{(]/ end=/^\s*@/me=e-1 contains=@bibCommentContents nextgroup=bibEntry
" Synchronization
" ===============
@@ -86,6 +86,7 @@ if version >= 508 || !exists("did_bib_syn_inits")
HiLink bibVariable Constant
HiLink bibUnescapedSpecial Error
HiLink bibComment Comment
+ HiLink bibComment2 Comment
delcommand HiLink
endif
diff --git a/src/edit.c b/src/edit.c
index fe130e6ab..96ebe717d 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -136,6 +136,7 @@ static void redo_literal __ARGS((int c));
static void start_arrow __ARGS((pos_T *end_insert_pos));
#ifdef FEAT_SYN_HL
static void check_spell_redraw __ARGS((void));
+static void spell_back_to_badword __ARGS((void));
#endif
static void stop_insert __ARGS((pos_T *end_insert_pos, int esc));
static int echeck_abbr __ARGS((int));
@@ -2365,6 +2366,9 @@ ins_compl_prep(c)
case 's':
case Ctrl_S:
ctrl_x_mode = CTRL_X_SPELL;
+#ifdef FEAT_SYN_HL
+ spell_back_to_badword();
+#endif
break;
case Ctrl_RSB:
ctrl_x_mode = CTRL_X_TAGS;
@@ -3533,7 +3537,7 @@ ins_complete(c)
{
#ifdef FEAT_SYN_HL
compl_col = spell_word_start(startcol);
- if (compl_col == startcol)
+ if (compl_col == (colnr_T)startcol)
return FAIL;
compl_length = (int)curs_col - compl_col;
compl_pattern = vim_strnsave(line + compl_col, compl_length);
@@ -4759,7 +4763,7 @@ redo_literal(c)
/*
* start_arrow() is called when an arrow key is used in insert mode.
- * It resembles hitting the <ESC> key.
+ * For undo/redo it resembles hitting the <ESC> key.
*/
static void
start_arrow(end_insert_pos)
@@ -4792,6 +4796,20 @@ check_spell_redraw()
redrawWinline(lnum, FALSE);
}
}
+
+/*
+ * Called when starting CTRL_X_SPELL mode: Move backwards to a previous badly
+ * spelled word, if there is one.
+ */
+ static void
+spell_back_to_badword()
+{
+ pos_T tpos = curwin->w_cursor;
+
+ spell_move_to(BACKWARD, TRUE, TRUE);
+ if (curwin->w_cursor.col != tpos.col)
+ start_arrow(&tpos);
+}
#endif
/*
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 52104f41c..529baf7b3 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -30,7 +30,6 @@ static int check_readonly __ARGS((int *forceit, buf_T *buf));
#ifdef FEAT_AUTOCMD
static void delbuf_msg __ARGS((char_u *name));
#endif
-static int do_sub_msg __ARGS((int count_only));
static int
#ifdef __BORLANDC__
_RTLENTRYF
@@ -3940,13 +3939,6 @@ check_secure()
static char_u *old_sub = NULL; /* previous substitute pattern */
static int global_need_beginline; /* call beginline() after ":g" */
-/*
- * When ":global" is used to number of substitutions and changed lines is
- * accumulated until it's finished.
- */
-static long sub_nsubs; /* total number of substitutions */
-static linenr_T sub_nlines; /* total number of lines changed */
-
/* do_sub()
*
* Perform a substitution from line eap->line1 to line eap->line2 using the
@@ -4829,7 +4821,7 @@ outofmem:
* Can also be used after a ":global" command.
* Return TRUE if a message was given.
*/
- static int
+ int
do_sub_msg(count_only)
int count_only; /* used 'n' flag for ":s" */
{
diff --git a/src/globals.h b/src/globals.h
index 60eff1f3c..6bfc13dc7 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1057,6 +1057,14 @@ EXTERN int cmdwin_result INIT(= 0); /* result of cmdline window or 0 */
EXTERN char_u no_lines_msg[] INIT(= N_("--No lines in buffer--"));
+/*
+ * When ":global" is used to number of substitutions and changed lines is
+ * accumulated until it's finished.
+ * Also used for ":spellrepall".
+ */
+EXTERN long sub_nsubs; /* total number of substitutions */
+EXTERN linenr_T sub_nlines; /* total number of lines changed */
+
/* table to store parsed 'wildmode' */
EXTERN char_u wim_flags[4];
diff --git a/src/option.c b/src/option.c
index 67bcf5eee..9b0e6360e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1506,6 +1506,15 @@ static struct vimoption
{"mesg", NULL, P_BOOL|P_VI_DEF,
(char_u *)NULL, PV_NONE,
{(char_u *)FALSE, (char_u *)0L}},
+ {"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
+#ifdef FEAT_SYN_HL
+ (char_u *)&p_msm, PV_NONE,
+ {(char_u *)"460000,2000,500", (char_u *)0L}
+#else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+#endif
+ },
{"modeline", "ml", P_BOOL|P_VIM,
(char_u *)&p_ml, PV_ML,
{(char_u *)FALSE, (char_u *)TRUE}},
@@ -4621,6 +4630,7 @@ didset_options()
(void)opt_strings_flags(p_ttym, p_ttym_values, &ttym_flags, FALSE);
#endif
#ifdef FEAT_SYN_HL
+ (void)spell_check_msm();
(void)spell_check_sps();
(void)compile_cap_prog(curbuf);
#endif
@@ -5791,6 +5801,12 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
if (spell_check_sps() != OK)
errmsg = e_invarg;
}
+ /* 'mkspellmem' */
+ else if (varp == &p_msm)
+ {
+ if (spell_check_msm() != OK)
+ errmsg = e_invarg;
+ }
#endif
#ifdef FEAT_QUICKFIX
diff --git a/src/option.h b/src/option.h
index 9aa2aaa3a..3cfdd4fba 100644
--- a/src/option.h
+++ b/src/option.h
@@ -594,6 +594,9 @@ EXTERN long p_mmt; /* 'maxmemtot' */
#ifdef FEAT_MENU
EXTERN long p_mis; /* 'menuitems' */
#endif
+#ifdef FEAT_SYN_HL
+EXTERN char_u *p_msm; /* 'mkspellmem' */
+#endif
EXTERN long p_mls; /* 'modelines' */
EXTERN char_u *p_mouse; /* 'mouse' */
#ifdef FEAT_GUI
diff --git a/src/proto/ex_cmds.pro b/src/proto/ex_cmds.pro
index 6404cc8d6..87af03a0c 100644
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -34,6 +34,7 @@ void ex_z __ARGS((exarg_T *eap));
int check_restricted __ARGS((void));
int check_secure __ARGS((void));
void do_sub __ARGS((exarg_T *eap));
+int do_sub_msg __ARGS((int count_only));
void ex_global __ARGS((exarg_T *eap));
void global_exe __ARGS((char_u *cmd));
int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 212344016..46ac575d0 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -11,6 +11,7 @@ void ex_spell __ARGS((exarg_T *eap));
void spell_add_word __ARGS((char_u *word, int len, int bad, int index));
void init_spell_chartab __ARGS((void));
int spell_check_sps __ARGS((void));
+int spell_check_msm __ARGS((void));
void spell_suggest __ARGS((void));
void ex_spellrepall __ARGS((exarg_T *eap));
void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap));
diff --git a/src/version.h b/src/version.h
index 94726c6d0..7a328452e 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 Aug 16)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 16, compiled "
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 19)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 19, compiled "