updated for version 7.0130
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index fc0b1c9..3476ab2 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.0aa. Last change: 2005 Jul 30
+*change.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1534,4 +1534,8 @@
guarantee that sorting is "stable" or obeys the current locale. You will have
to try it out.
+The sorting itself cannot be interrupted, because of using a system library
+function. You can interrupt the preparation (for undo) and putting the sorted
+lines into the buffer. In the last case you may end up with duplicated lines.
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index dc3d695..a640f5b 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -1,4 +1,4 @@
-*develop.txt* For Vim version 7.0aa. Last change: 2005 Jun 13
+*develop.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -123,7 +123,8 @@
- The source code should not become a mess. It should be reliable code.
- Use the same layout in all files to make it easy to read |coding-style|.
-- Use comments in a useful way!
+- Use comments in a useful way! Quoting the function name and argument names
+ is NOT useful. Do explain what they are for.
- Porting to another platform should be made easy, without having to change
too much platform-independent code.
- Use the object-oriented spirit: Put data and code together. Minimize the
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 19a9d53..de29f0f 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -273,6 +273,19 @@
Note: When using mappings for Visual mode, you can use the "'<" mark, which
is the start of the last selected Visual area in the current buffer |'<|.
+ *:map-verbose*
+When 'verbose' is non-zero, listing a key map will also display where it was
+last defined. Example: >
+
+ :verbose map <C-W>*
+ n <C-W>* * <C-W><C-S>*
+ Last set from /home/abcd/.vimrc
+
+When the map was defined by hand there is no "Last set" message. When the map
+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}
+
*map_backslash*
Note that only CTRL-V is mentioned here as a special character for mappings
and abbreviations. When 'cpoptions' does not contain 'B', a backslash can
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index b99b0d7..078d754 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 May 22
+*pattern.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -944,6 +944,9 @@
This makes it Vi compatible: Without the "\_" or "\n" the collection
does not match an end-of-line.
+ When the ']' is not there Vim will not give an error message but
+ assume no collection is used. Useful to search for '['.
+
If the sequence begins with "^", it matches any single character NOT
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
- If two characters in the sequence are separated by '-', this is
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 7d8a51a..0525291 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 12
+*spell.txt* For Vim version 7.0aa. Last change: 2005 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -195,6 +195,14 @@
'spellfile' are only used when all entries in "spelllang" specify the same
region (not counting files specified by their .spl name).
+Specific exception: For German these special regions are used:
+ de all German words accepted
+ de_de old and new spelling
+ de_19 old spelling
+ de_20 new spelling
+ de_at Austria
+ de_ch Switzerland
+
SPELL FILES *spell-load*
@@ -335,6 +343,27 @@
Note that the default scripts don't set 'spellcapcheck' if it was changed from
the default value. This assumes the user prefers another value then.
+
+DOUBLE SCORING *spell-double-scoring*
+
+The 'spellsuggest' option can be used to select "double" scoring. This
+mechanism is based on the principle that there are two kinds of spelling
+mistakes:
+
+1. You know how to spell the word, but mistype something. This results in a
+ small editing distance (character swapped/omitted/inserted) and possibly a
+ word that sounds completely different.
+
+2. You don't know how to spell the word and type something that sounds right.
+ The edit distance can be big but the word is similar after sound-folding.
+
+Since scores for these two mistakes will be very different we use a list
+for each and mix them.
+
+The sound-folding is slow and people that know the language won't make the
+second kind of mistakes. Therefore 'spellsuggest' can be set to select the
+preferred method for scoring the suggestions.
+
==============================================================================
3. Generating a spell file *spell-mkspell*
@@ -409,6 +438,11 @@
and producing an output file in the same directory
that has ".{enc}.spl" appended.
+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).
+
Since you might want to change a Myspell word list for use with Vim the
following procedure is recommended:
@@ -716,9 +750,27 @@
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.
-KEEP-CASE WORDS
- *spell-affix-KEP*
+
+WORDS WITH A SLASH *spell-affix-SLASH*
+
+The slash is used in the .dic file to separate the basic word from the affix
+letters that can be used. Unfortunately, this means you cannot use a slash in
+a word. Thus "TCP/IP" cannot be a word. To work around that you can define a
+replacement character for the slash. Example:
+
+ SLASH , ~
+
+Now you can use "TCP,IP" to add the word "TCP/IP".
+
+Of course, the letter used should itself not appear in any word! The letter
+must be ASCII, thus a single byte.
+
+
+KEEP-CASE WORDS *spell-affix-KEP*
+
In the affix file a KEP line can be used to define the affix name used for
keep-case words. Example:
@@ -727,8 +779,8 @@
See above for an example |spell-affix-vim|.
-RARE WORDS
- *spell-affix-RAR*
+RARE WORDS *spell-affix-RAR*
+
In the affix file a RAR line can be used to define the affix name used for
rare words. Example:
@@ -740,8 +792,8 @@
highlighted as rare.
-BAD WORDS
- *spell-affix-BAD*
+BAD WORDS *spell-affix-BAD*
+
In the affix file a BAD line can be used to define the affix name used for
bad words. Example:
@@ -756,6 +808,125 @@
word as good.
+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.
+
+ *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:
+ 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
+ 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".
+
+ *spell-COMPOUNDMIN*
+The minimal length of a word used for concatenation is specified with
+COMPOUNDMIN. Example:
+ COMPOUNDMIN 5 ~
+
+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} {strip} {add} {cond} {cond2}
+
+ {flag} the flag, as used in COMPOUNDFLAGS for the lead word
+ {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 exactly the same as what is used for SFX and PFX items, except there
+is an extra condition. Example:
+ CMP f 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*
In the affix file REP items can be used to define common mistakes. This is
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 3643f7a..04e76db 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 Aug 11
+*syntax.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2234,7 +2234,7 @@
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
-SH *sh.vim* *sh-syntax*
+SH *sh.vim* *sh-syntax* *bash-syntax* *ksh-syntax*
This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
@@ -3647,6 +3647,7 @@
result is like this single command has been used: >
:hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold
<
+ *:highlight-verbose*
When listing a highlight group and 'verbose' is non-zero, the listing will
also tell where it was last set. Example: >
:verbose hi Comment
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 13f3073..18f6088 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2014,6 +2014,7 @@
:highlight-default syntax.txt /*:highlight-default*
:highlight-link syntax.txt /*:highlight-link*
:highlight-normal syntax.txt /*:highlight-normal*
+:highlight-verbose syntax.txt /*:highlight-verbose*
:history cmdline.txt /*:history*
:history-indexing cmdline.txt /*:history-indexing*
:i insert.txt /*:i*
@@ -2124,6 +2125,7 @@
:map-silent map.txt /*:map-silent*
:map-special-keys map.txt /*:map-special-keys*
:map-undo map.txt /*:map-undo*
+:map-verbose map.txt /*:map-verbose*
:map_l map.txt /*:map_l*
:map_l! map.txt /*:map_l!*
:mapc map.txt /*:mapc*
@@ -4242,6 +4244,7 @@
bar motion.txt /*bar*
bars help.txt /*bars*
base_font_name_list mbyte.txt /*base_font_name_list*
+bash-syntax syntax.txt /*bash-syntax*
basic-syntax syntax.txt /*basic-syntax*
basic.vim syntax.txt /*basic.vim*
beep options.txt /*beep*
@@ -5205,7 +5208,6 @@
hebrew.txt hebrew.txt /*hebrew.txt*
help various.txt /*help*
help-context help.txt /*help-context*
-help-tags tags 1
help-translated various.txt /*help-translated*
help-xterm-window various.txt /*help-xterm-window*
help.txt help.txt /*help.txt*
@@ -5532,6 +5534,7 @@
keypad-point intro.txt /*keypad-point*
keys() eval.txt /*keys()*
known-bugs todo.txt /*known-bugs*
+ksh-syntax syntax.txt /*ksh-syntax*
l motion.txt /*l*
l:var eval.txt /*l:var*
lace-syntax syntax.txt /*lace-syntax*
@@ -6372,6 +6375,9 @@
special-buffers windows.txt /*special-buffers*
speed-up tips.txt /*speed-up*
spell spell.txt /*spell*
+spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG*
+spell-COMPOUNDFLAGS spell.txt /*spell-COMPOUNDFLAGS*
+spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN*
spell-affix-BAD spell.txt /*spell-affix-BAD*
spell-affix-FOL spell.txt /*spell-affix-FOL*
spell-affix-KEP spell.txt /*spell-affix-KEP*
@@ -6383,10 +6389,12 @@
spell-affix-REP spell.txt /*spell-affix-REP*
spell-affix-SAL spell.txt /*spell-affix-SAL*
spell-affix-SFX spell.txt /*spell-affix-SFX*
+spell-affix-SLASH spell.txt /*spell-affix-SLASH*
spell-affix-SOFOFROM spell.txt /*spell-affix-SOFOFROM*
spell-affix-SOFOTO spell.txt /*spell-affix-SOFOTO*
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-vim spell.txt /*spell-affix-vim*
spell-dic-format spell.txt /*spell-dic-format*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 8397b77..1f82ecc 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 12
+*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,6 +30,11 @@
*known-bugs*
-------------------- Known bugs and current work -----------------------
+Spelling:
+- suggestions for compound words.
+- Implement multiple flags for compound words. Await comments from other
+ spell checking authors.
+
Mac unicode patch (Da Woon Jung):
- selecting proportional font breaks display
- UTF-8 text causes display problems. Font replacement causes this.
@@ -77,12 +82,26 @@
Use something like 'completefunc'?
runtime/complete/{filetype}.vim files?
In function arguments suggest variables of expected type.
+ List of completions is a Dictionary with items:
+ complist[0]['text'] = completion text
+ complist[0]['type'] = type of completion (e.g. function, var, arg)
+ complist[0]['help'] = help text (e.g. function declaration)
+ complist[0]['helpfunc'] = function that shows help text
+ etc.
Ideas from others:
http://www.vim.org/scripts/script.php?script_id=747
+ http://sourceforge.net/projects/insenvim
+ of http://insenvim.sourceforge.net
+ Java, XML, HTML, C++, JSP, SQL, C#
+ MS-Windows only, lots of dependencies (e.g. Perl, Internet
+ explorer), uses .dll shared libraries.
+ for C++ uses $INCLUDE environment var
+ UI: popup menu with list of alternatives, icon to indicate type
+ optional popup window with info about selected alternative
+ Unrelated settings are changed (e.g. 'mousemodel').
+
www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
- http://sourceforge.net/projects/insenvim
- of http://insenvim.sourceforge.net
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
@@ -2571,16 +2590,12 @@
Mappings and Abbreviations:
-8 Let ":verbose map xx" report where the mapping was set, just like with
- ":verbose set".
8 When "0" is mapped (it is a movement command) this mapping should not be
used after typing another number, e.g. "20l". (Charles Campbell)
Is this possible without disabling the mapping of the following command?
8 Should mapping <C-A> and <C-S-A> both work?
7 ":abbr b byte", append "b " to an existing word still expands to "byte".
This is Vi compatible, but can we avoid it anyway?
-8 ":verbose map" could show the script where the mapping was defined.
- m_script_ID can be used.
8 To make a mapping work with a prepended "x to select a register, store the
last _typed_ register name and access it with "&.
8 Add ":amap", like ":amenu".
@@ -2592,8 +2607,6 @@
8 Allow mapping of CTRL-@ (anywhere in the LHS).
8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
(?) work.
-7 ":verbose map" should display where a mapping was defined, like ":verbose
- set".
8 Add a way to save a current mapping and restore it later. Use a function
that returns the mapping command to restore it: mapcmd()? mapcheck() is
not fool proof. How to handle ambiguous mappings?
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 12f5ddf..a1c537f 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 Aug 12
+*version7.txt* For Vim version 7.0aa. Last change: 2005 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -559,6 +559,11 @@
For xterm most combinations of modifiers with function keys are recognized.
|xterm-modifier-keys|
+When 'verbose' is set the output of ":highlight" will show where a highlight
+item was last set.
+When 'verbose' is set the output of ":map" will show where a key map was
+last defined. (Yegappan Lakshmanan)
+
==============================================================================
IMPROVEMENTS *improvements-7*
@@ -740,6 +745,7 @@
The table with encodings has been expanded with many MS-Windows codepages,
such as cp1250 and cp737, so that these can also be used on Unix without
prepending "8bit-".
+When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.
Added the "customlist" completion argument to a user-defined command. The
user-defined completion function should return the completion candidates as a
@@ -752,9 +758,6 @@
The 's' flag is added to the search() and searchpair() function to set the
' mark if the cursor is moved. (Yegappan Lakshmanan)
-When 'verbose' is set the output of ":highlight" will show where a highlight
-item was last set.
-
For 'errorformat' it was not possible to have a file name that contains the
character that follows after "%f". For example, in "%f:%l:%m" the file name
could not contain ":". Now include the first ":" where the rest of the
@@ -1283,4 +1286,10 @@
Win32: Could not use "**/" in 'path', it had to be "**\".
+The search pattern "\n" did not match at the end of the last line.
+
+Searching for a pattern backwards, starting on the NUL at the end of the line
+and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
+Affected searchpair('/\*', '', '\*/').
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index d8fd0af..560c479 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 Jul 13
+" Last Change: 2005 Aug 15
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -1700,6 +1700,9 @@
" Verilog HDL
au BufNewFile,BufRead *.v setf verilog
+" Verilog-AMS HDL
+au BufNewFile,BufRead *.va,*.vams setf verilogams
+
" VHDL
au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst setf vhdl
au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl')
diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim
index 32db5a7..59f601a 100644
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Debian Changelog
" Maintainer: Michael Piefel <piefel@informatik.hu-berlin.de>
-" Last Change: 23 March 2004
+" Last Change: 15 August 2005
if exists("g:did_changelog_ftplugin")
finish
@@ -30,7 +30,7 @@
elseif exists("$EMAIL")
return $EMAIL
elseif exists("g:debianemail")
- return g:debianfullemail
+ return g:debianemail
else
return "your@email.address"
endif
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 7f7aa56..3e7a990 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -2,7 +2,7 @@
" Language: PHP
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
" URL: http://www.2072productions.com/vim/indent/php.vim
-" Last Change: 2005 June 30th
+" Last Change: 2005 Aug 15
" Version: 1.17
"
" For a complete change log and lots of comments in the code, download the script on
diff --git a/runtime/spell/af/af_ZA.diff b/runtime/spell/af/af_ZA.diff
new file mode 100644
index 0000000..9c85804
--- /dev/null
+++ b/runtime/spell/af/af_ZA.diff
@@ -0,0 +1,36 @@
+*** af_ZA.orig.aff Sun Aug 14 17:37:01 2005
+--- af_ZA.aff Sun Aug 14 17:38:11 2005
+***************
+*** 23,24 ****
+--- 23,34 ----
+
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '-
++ SLASH ,
++
+ MAP 3
+*** af_ZA.orig.dic Sun Aug 14 17:37:01 2005
+--- af_ZA.dic Sun Aug 14 17:38:54 2005
+***************
+*** 1861,1864 ****
+ T-skyf
+! TCP/IP
+! TCP/IP-bondel
+ TLA
+--- 1861,1864 ----
+ T-skyf
+! TCP,IP
+! TCP,IP-bondel
+ TLA
+***************
+*** 124109,124111 ****
+ vrywilliglik
+- vt
+ vuile/R
+--- 124109,124110 ----
diff --git a/runtime/spell/af/main.aap b/runtime/spell/af/main.aap
new file mode 100644
index 0000000..d393c5f
--- /dev/null
+++ b/runtime/spell/af/main.aap
@@ -0,0 +1,79 @@
+# Aap recipe for Afrikaans Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = af_ZA.aff af_ZA.dic
+
+all: $SPELLDIR/af.latin1.spl $SPELLDIR/af.utf-8.spl ../README_af.txt
+
+$SPELLDIR/af.latin1.spl : $VIM $FILES
+ :sys env LANG=af_ZA.ISO8859-1
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q
+
+$SPELLDIR/af.utf-8.spl : $VIM $FILES
+ :sys env LANG=af_ZA.UTF-8
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q
+
+../README_af.txt : README_af_ZA.txt
+ :copy $source $target
+
+#
+# Fetching the file from SourceForge. The archive at OpenOffice is broken!
+#
+FILE = http://surfnet.dl.sourceforge.net/sourceforge/translate/myspell-af_ZA-20040727.zip
+
+:attr {fetch = $FILE} af_ZA.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+af_ZA.aff af_ZA.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch af_ZA.zip
+ :sys $UNZIP af_ZA.zip
+ :delete af_ZA.zip
+ @if not os.path.exists('af_ZA.orig.aff'):
+ :copy af_ZA.aff af_ZA.orig.aff
+ @if not os.path.exists('af_ZA.orig.dic'):
+ :copy af_ZA.dic af_ZA.orig.dic
+ @if os.path.exists('af_ZA.diff'):
+ :sys patch <af_ZA.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 af_ZA.orig.aff af_ZA.aff >af_ZA.diff
+ :sys {force} diff -a -C 1 af_ZA.orig.dic af_ZA.dic >>af_ZA.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch af_ZA.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../af_ZA.zip
+ :sys {force} diff ../af_ZA.orig.aff af_ZA.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy af_ZA.aff ../af_ZA.new.aff
+ :sys {force} diff ../af_ZA.orig.dic af_ZA.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy af_ZA.dic ../af_ZA.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete af_ZA.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/bg/bg_BG.diff b/runtime/spell/bg/bg_BG.diff
new file mode 100644
index 0000000..da0a4f3
--- /dev/null
+++ b/runtime/spell/bg/bg_BG.diff
@@ -0,0 +1,42 @@
+*** bg_BG.orig.aff Sun Aug 14 18:12:44 2005
+--- bg_BG.aff Sun Aug 14 18:13:12 2005
+***************
+*** 1,2 ****
+! SET microsoft-cp1251
+ TRY àåíîèðòâñëêìïçäÿóúá÷ãöæõøôéùþüÀÅÍÎÈÐÒÂÑËÊÌÏÇÄßÓÚÁ×ÃÖÆÕØÔÉÙÞÜ
+--- 1,2 ----
+! SET cp1251
+ TRY àåíîèðòâñëêìïçäÿóúá÷ãöæõøôéùþüÀÅÍÎÈÐÒÂÑËÊÌÏÇÄßÓÚÁ×ÃÖÆÕØÔÉÙÞÜ
+***************
+*** 1682,1684 ****
+
+! MAP 26
+ MAP àúüa
+--- 1682,1684 ----
+
+! MAP 25
+ MAP àúüa
+***************
+*** 1691,1695 ****
+ MAP æø
+! MAP çñ
+ MAP pð
+- MAP cñ
+ MAP xõ
+--- 1691,1694 ----
+ MAP æø
+! MAP cçñ
+ MAP pð
+ MAP xõ
+***************
+*** 1707,1709 ****
+ MAP PÐ
+- MAP YÓ
+ MAP XÕ
+--- 1706,1711 ----
+ MAP PÐ
+ MAP XÕ
++
++ REP 2
++ REP Y Ó
++ REP Ó Y
diff --git a/runtime/spell/bg/main.aap b/runtime/spell/bg/main.aap
new file mode 100644
index 0000000..7849526
--- /dev/null
+++ b/runtime/spell/bg/main.aap
@@ -0,0 +1,79 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = bg_BG.aff bg_BG.dic
+
+all: $SPELLDIR/bg.cp1251.spl $SPELLDIR/bg.utf-8.spl ../README_bg.txt
+
+$SPELLDIR/bg.cp1251.spl : $VIM $FILES
+ :sys env LANG=bg_BG.CP1251 $VIM -u NONE -e -c "mkspell! $SPELLDIR/bg bg_BG" -c q
+
+$SPELLDIR/bg.utf-8.spl : $VIM $FILES
+ :sys env LANG=bg_BG.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/bg bg_BG" -c q
+
+../README_bg.txt: README_bg_BG.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} bg_BG.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+bg_BG.aff bg_BG.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch bg_BG.zip
+ :sys $UNZIP bg_BG.zip
+ :delete bg_BG.zip
+ :sys $VIM bg_BG.aff -c "set ff=unix" -c "update" -c q
+ :sys $VIM bg_BG.dic -c "set ff=unix" -c "update" -c q
+ @if not os.path.exists('bg_BG.orig.aff'):
+ :copy bg_BG.aff bg_BG.orig.aff
+ @if not os.path.exists('bg_BG.orig.dic'):
+ :copy bg_BG.dic bg_BG.orig.dic
+ @if os.path.exists('bg_BG.diff'):
+ :sys patch <bg_BG.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 bg_BG.orig.aff bg_BG.aff >bg_BG.diff
+ :sys {force} diff -a -C 1 bg_BG.orig.dic bg_BG.dic >>bg_BG.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch bg_BG.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../bg_BG.zip
+ :sys {force} diff ../bg_BG.orig.aff bg_BG.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy bg_BG.aff ../bg_BG.new.aff
+ :sys {force} diff ../bg_BG.orig.dic bg_BG.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy bg_BG.dic ../bg_BG.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete bg_BG.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/ca/ca_ES.diff b/runtime/spell/ca/ca_ES.diff
new file mode 100644
index 0000000..dda3b0a
--- /dev/null
+++ b/runtime/spell/ca/ca_ES.diff
@@ -0,0 +1,76 @@
+*** ca_ES.orig.aff Sat Aug 13 18:01:36 2005
+--- ca_ES.aff Sat Aug 13 18:01:32 2005
+***************
+*** 44,48 ****
+
+! # substitucions preferides
+! FIRST a/à e/é/è é/è/e è/é/e i/í/ï í/i/ï o/ó/ò ó/ò/o ò/ó/o u/ú/ü ú/u/ü ü/u/ú
+! FIRST l/l·l l·l/l
+
+--- 44,65 ----
+
+! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+!
+! SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
+! SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+!
+! MIDWORD ·-'
+!
+! MAP 6
+! MAP aàáâãäå
+! MAP eèéêë
+! MAP iìíîï
+! MAP oòóôõö
+! MAP uùúûü
+! MAP cç
+!
+! REP 2
+! REP l l·l
+! REP l·l l
+
+*** ca_ES.orig.dic Sat Aug 13 18:01:55 2005
+--- ca_ES.dic Sat Aug 13 18:01:51 2005
+***************
+*** 25312,25314 ****
+ caos/E
+- cap
+ cap-rodo/E
+--- 25312,25313 ----
+***************
+*** 35103,35105 ****
+ corrasió/G
+- corre
+ corre-corrents
+--- 35102,35103 ----
+***************
+*** 99806,99808 ****
+ majúscul/F
+- mal
+ mal-llevat/E
+--- 99804,99805 ----
+***************
+*** 107517,107519 ****
+ notòriament
+- nou
+ nou-centes/E
+--- 107514,107515 ----
+***************
+*** 122687,122689 ****
+ ratània/E
+- rau
+ rau-rau/E
+--- 122683,122684 ----
+***************
+*** 139389,139391 ****
+ taüt/E
+- te
+ te'l
+--- 139384,139385 ----
+***************
+*** 147590,147592 ****
+ vitícola/E
+- viu
+ viu-viu/E
+--- 147584,147585 ----
diff --git a/runtime/spell/ca/main.aap b/runtime/spell/ca/main.aap
new file mode 100644
index 0000000..b2f7350
--- /dev/null
+++ b/runtime/spell/ca/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Catelan (Spain) Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = ca_ES.aff ca_ES.dic
+
+all: $SPELLDIR/ca.latin1.spl $SPELLDIR/ca.utf-8.spl ../README_ca.txt
+
+$SPELLDIR/ca.latin1.spl : $VIM $FILES
+ :sys env LANG=ca_ES.ISO8859-1
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q
+
+$SPELLDIR/ca.utf-8.spl : $VIM $FILES
+ :sys env LANG=ca_ES.UTF-8
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q
+
+../README_ca.txt : README_ca_ES.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} ca_ES.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# Make sure the files are in Unix fileformat
+ca_ES.aff ca_ES.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch ca_ES.zip
+ :sys $UNZIP ca_ES.zip
+ :delete ca_ES.zip
+ :sys $VIM ca_ES.aff -c "set ff=unix" -c "update" -c q
+ :sys $VIM ca_ES.dic -c "set ff=unix" -c "update" -c q
+ @if not os.path.exists('ca_ES.orig.aff'):
+ :copy ca_ES.aff ca_ES.orig.aff
+ @if not os.path.exists('ca_ES.orig.dic'):
+ :copy ca_ES.dic ca_ES.orig.dic
+ @if os.path.exists('ca_ES.diff'):
+ :sys patch <ca_ES.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 ca_ES.orig.aff ca_ES.aff >ca_ES.diff
+ :sys {force} diff -a -C 1 ca_ES.orig.dic ca_ES.dic >>ca_ES.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch ca_ES.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../ca_ES.zip
+ :sys {force} diff ../ca_ES.orig.aff ca_ES.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy ca_ES.aff ../ca_ES.new.aff
+ :sys {force} diff ../ca_ES.orig.dic ca_ES.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy ca_ES.dic ../ca_ES.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete ca_ES.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/cs/cs_CZ.diff b/runtime/spell/cs/cs_CZ.diff
new file mode 100644
index 0000000..40a84ef
--- /dev/null
+++ b/runtime/spell/cs/cs_CZ.diff
@@ -0,0 +1,783 @@
+*** cs_CZ.orig.aff Sat Aug 13 21:38:29 2005
+--- cs_CZ.aff Sat Aug 13 23:29:13 2005
+***************
+*** 3,4 ****
+--- 3,8 ----
+
++ FOL ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ¡¢£¥¦¨©ª«¬®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
+ PFX N Y 1
+***************
+*** 2118,2120 ****
+ SFX A nout ly [aeiouyáéíóúýùì]rnout
+! SFX A nout l [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl][^aeiouy
+ SFX A nout l [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl]nout
+--- 2122,2124 ----
+ SFX A nout ly [aeiouyáéíóúýùì]rnout
+! SFX A nout l [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl][^aeiouy]out
+ SFX A nout l [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl]nout
+*** cs_CZ.orig.dic Sat Aug 13 21:38:29 2005
+--- cs_CZ.dic Sun Aug 14 15:33:38 2005
+***************
+*** 2944,2946 ****
+ ar/H
+- arch
+ archaický/YCRN
+--- 2944,2945 ----
+***************
+*** 3098,3100 ****
+ arogantní/YKRN
+- aroma
+ aroma/K
+--- 3097,3098 ----
+***************
+*** 4753,4755 ****
+ banjo/MQ
+- bank
+ banka/ZQ
+--- 4751,4752 ----
+***************
+*** 5540,5542 ****
+ Bechyòákùv/Y
+- Bechynì
+ Bechynì/S
+--- 5537,5538 ----
+***************
+*** 5945,5947 ****
+ bermudský/YRN
+- Bermudy
+ Bermudy/ZQ
+--- 5941,5942 ----
+***************
+*** 6111,6113 ****
+ Beustùv/Y
+- bez
+ Bezáková/Y
+--- 6106,6107 ----
+***************
+*** 7294,7296 ****
+ blána/Z
+- Blanc
+ Blanc/PV
+--- 7288,7289 ----
+***************
+*** 9456,9458 ****
+ bøichovitý/YKR
+- bøímì
+ bøímì/M
+--- 9449,9450 ----
+***************
+*** 9667,9669 ****
+ budy¹ínský/Y
+- bufet
+ bufetáøèin/Y
+--- 9659,9660 ----
+***************
+*** 9677,9679 ****
+ bufferový/YRN
+- buffet
+ buffet/H
+--- 9668,9669 ----
+***************
+*** 11386,11388 ****
+ cop/H
+- copyright
+ copyright/H
+--- 11376,11377 ----
+***************
+*** 11446,11448 ****
+ cresc
+- crescendo
+ crescendo/MQ
+--- 11435,11436 ----
+***************
+*** 13810,13812 ****
+ daktylus/Q
+- dál
+ dalajláma/PV
+--- 13798,13799 ----
+***************
+*** 13816,13818 ****
+ dál/E
+- dále
+ Dalecký/Y
+--- 13803,13804 ----
+***************
+*** 13821,13823 ****
+ dále/E
+- daleko
+ dalekohled/H
+--- 13807,13808 ----
+***************
+*** 14082,14084 ****
+ datla
+- datle
+ datlech
+--- 14067,14068 ----
+***************
+*** 14756,14758 ****
+ dekuraèní/YRN
+- dìl
+ delaborace/Z
+--- 14740,14741 ----
+***************
+*** 15301,15303 ****
+ desaterákùv/Y
+- desatero
+ desatero/MQ
+--- 15284,15285 ----
+***************
+*** 15716,15718 ****
+ devaterník/H
+- devatero
+ devatero/MQ
+--- 15698,15699 ----
+***************
+*** 16152,16154 ****
+ DIK
+- dík
+ dikalciumfosfát/H
+--- 16133,16134 ----
+***************
+*** 16603,16605 ****
+ Diùv/Y
+- div
+ divácký/YKR
+--- 16583,16584 ----
+***************
+*** 19886,19888 ****
+ dopola
+- dopoledne
+ dopoledne/M
+--- 19865,19866 ----
+***************
+*** 19970,19972 ****
+ doprat/ATN
+- doprava
+ doprava/ZQ
+--- 19948,19949 ----
+***************
+*** 22912,22914 ****
+ døív/E
+- døíve
+ døíveèko/MQ
+--- 22889,22890 ----
+***************
+*** 26369,26371 ****
+ fakoemulsifikace/Z
+- faksimile
+ faksimile/Z
+--- 26345,26346 ----
+***************
+*** 27266,27268 ****
+ fimóza/ZQ
+- finále
+ finále/Z
+--- 27241,27242 ----
+***************
+*** 28101,28103 ****
+ foxtrotový/Y
+- foyer
+ foyer/H
+--- 28075,28076 ----
+***************
+*** 28759,28761 ****
+ Gajdùv/Y
+- Gal
+ gal
+--- 28732,28733 ----
+***************
+*** 29060,29062 ****
+ gemovat/ATN
+- gen
+ genciánový/YR
+--- 29032,29033 ----
+***************
+*** 29410,29412 ****
+ glejt/H
+- glissando
+ glissando/MQ
+--- 29381,29382 ----
+***************
+*** 31247,31249 ****
+ hefebrand/H
+- Hegel
+ Hegela
+--- 31217,31218 ----
+***************
+*** 31602,31604 ****
+ Herkulem
+- Herkules
+ Herkules/D
+--- 31571,31572 ----
+***************
+*** 32258,32260 ****
+ hloubìtínský/Y
+- hloubi
+ hloubicí/Y
+--- 32226,32227 ----
+***************
+*** 32612,32614 ****
+ Hocký/Y
+- hod
+ Hodìjice/C
+--- 32579,32580 ----
+***************
+*** 33069,33071 ****
+ homoisoflavonoid/H
+- Homola
+ Homola/PV
+--- 33035,33036 ----
+***************
+*** 34389,34391 ****
+ høebelec/S
+- høeben
+ høebenatka/ZQ
+--- 34354,34355 ----
+***************
+*** 34817,34819 ****
+ Huserkùv/Y
+- husí
+ husice/ZQ
+--- 34781,34782 ----
+***************
+*** 36441,36443 ****
+ chøupavý/YKRN
+- chtì
+ chtìje/XN
+--- 36404,36405 ----
+***************
+*** 38569,38571 ****
+ jajaj
+- jak
+ jakákoli
+--- 38531,38532 ----
+***************
+*** 39323,39325 ****
+ jedné/N
+- jedni
+ jednice/ZQ
+--- 39284,39285 ----
+***************
+*** 39534,39536 ****
+ jednotýdenní/YR
+- jednou
+ jednoúèelový/YRN
+--- 39494,39495 ----
+***************
+*** 39717,39719 ****
+ jemu¾
+- jen
+ Jena/ZQ
+--- 39676,39677 ----
+***************
+*** 39755,39757 ****
+ jen/N
+- jenom
+ jenom/N
+--- 39713,39714 ----
+***************
+*** 40149,40151 ****
+ jináè/S
+- jinak
+ jinak/N
+--- 40106,40107 ----
+***************
+*** 41317,41319 ****
+ Kalistùv/Y
+- Kali¹
+ kalí¹ek/Q
+--- 41273,41274 ----
+***************
+*** 42861,42863 ****
+ kde¾to
+- kdo
+ kdojíjak
+--- 42816,42817 ----
+***************
+*** 44048,44050 ****
+ Klsákùv/Y
+- klub
+ klubající/YN
+--- 44002,44003 ----
+***************
+*** 44235,44237 ****
+ Kneøùv/Y
+- knìz
+ knìze
+--- 44188,44189 ----
+***************
+*** 45007,45009 ****
+ kolik
+- kolika
+ kolikaciferný/YKRN
+--- 44959,44960 ----
+***************
+*** 46292,46294 ****
+ kontinuum/MQ
+- konto
+ kontokorent/H
+--- 46243,46244 ----
+***************
+*** 47152,47154 ****
+ kosmopolitùv/Y
+- kosmos
+ kosmos/Q
+--- 47102,47103 ----
+***************
+*** 51844,51846 ****
+ Leclancheùv/Y
+- leè
+ léèba/ZQ
+--- 51793,51794 ----
+***************
+*** 52449,52451 ****
+ le¹tivý/YKRN
+- let
+ létací/YN
+--- 52397,52398 ----
+***************
+*** 54351,54353 ****
+ lùj
+- luk
+ Lukáèová/Y
+--- 54298,54299 ----
+***************
+*** 55408,55410 ****
+ Mallorca/ZQ
+- málo
+ malobur¾oasie/Z
+--- 55354,55355 ----
+***************
+*** 55574,55576 ****
+ mamutùv/Y
+- Man
+ má/N
+--- 55519,55520 ----
+***************
+*** 55852,55854 ****
+ Maputo/MQ
+- marabu
+ marabu/PV
+--- 55796,55797 ----
+***************
+*** 57254,57256 ****
+ Mendlùv/Y
+- ménì
+ ménìcennìj¹í/YRW
+--- 57197,57198 ----
+***************
+*** 58358,58360 ****
+ milený/YN
+- milerád
+ milerád/O
+--- 58300,58301 ----
+***************
+*** 59426,59428 ****
+ mocím
+- mocipán
+ mocipána
+--- 59367,59368 ----
+***************
+*** 60833,60835 ****
+ Muchùv/Y
+- mùj
+ mùj/Y
+--- 60773,60774 ----
+***************
+*** 62308,62310 ****
+ nadplocha/ZQ
+- nadpoèet
+ nadpoèetnìj¹í/YRW
+--- 62247,62248 ----
+***************
+*** 66114,66116 ****
+ nava¾ující/YN
+- naveèer
+ naveèer/L
+--- 66052,66053 ----
+***************
+*** 66581,66583 ****
+ nebes
+- nebesa
+ nebesa/MQ
+--- 66518,66519 ----
+***************
+*** 68080,68082 ****
+ noblesní/YKR
+- noc
+ nocemi
+--- 68016,68017 ----
+***************
+*** 68562,68564 ****
+ novum/MQ
+- Nový
+ Nový/Y
+--- 68497,68498 ----
+***************
+*** 73018,73020 ****
+ odpojovávat/JTN
+- odpoledne
+ odpoledne/M
+--- 72952,72953 ----
+***************
+*** 73121,73123 ****
+ odpra¹ovat/ATN
+- odprava
+ odprava/ZQ
+--- 73054,73055 ----
+***************
+*** 76145,76147 ****
+ oosféra/ZQ
+- op
+ opáèení/SN
+--- 76077,76078 ----
+***************
+*** 78040,78042 ****
+ ostøihnout/ATN
+- Ostøihom
+ Ostøihom/K
+--- 77971,77972 ----
+***************
+*** 80117,80121 ****
+ pantheistický/YCR
+- pantofel
+ pantofel/Q
+- pantofle
+ pantoflemi
+--- 80047,80049 ----
+***************
+*** 80258,80260 ****
+ par
+- pár
+ paraamfibolit/H
+--- 80186,80187 ----
+***************
+*** 81414,81416 ****
+ PE
+- pec
+ pecaø/U
+--- 81341,81342 ----
+***************
+*** 82720,82722 ****
+ pianistùv/Y
+- piano
+ piáno/MQ
+--- 82646,82647 ----
+***************
+*** 83321,83323 ****
+ pizzerie/Z
+- pizzicato
+ pizzicato/MQ
+--- 83246,83247 ----
+***************
+*** 83731,83733 ****
+ plebiscit/H
+- plebs
+ plebse
+--- 83655,83656 ----
+***************
+*** 83833,83835 ****
+ Pleskotùv/Y
+- plesky
+ plesky/H
+--- 83756,83757 ----
+***************
+*** 85861,85863 ****
+ podøadìní/SN
+- podøadìný
+ podøadìný/YKRN
+--- 85783,85784 ----
+***************
+*** 89077,89079 ****
+ popøávat/JN
+- popøedí
+ popøedí/S
+--- 88998,88999 ----
+***************
+*** 91358,91360 ****
+ pozabíjet/JTN
+- pozadí
+ pozadí/S
+--- 91278,91279 ----
+***************
+*** 91783,91785 ****
+ práceschopný/YKR
+- prací
+ práci
+--- 91702,91703 ----
+***************
+*** 92176,92178 ****
+ pravìký/YKR
+- právem
+ právem/N
+--- 92094,92095 ----
+***************
+*** 95377,95379 ****
+ prospávat/JTN
+- prospìch
+ prospìchání/SN
+--- 95294,95295 ----
+***************
+*** 105195,105197 ****
+ pùldenní/YR
+- pùldne
+ pùldnech
+--- 105111,105112 ----
+***************
+*** 105216,105218 ****
+ pùldruhý/Y
+- pùle
+ pulec/U
+--- 105131,105132 ----
+***************
+*** 106257,106259 ****
+ rámcový/YR
+- rámì
+ rámec/S
+--- 106171,106172 ----
+***************
+*** 109304,109306 ****
+ rozdìlující/YN
+- rozdíl
+ rozdílení/SN
+--- 109217,109218 ----
+***************
+*** 113029,113031 ****
+ Rúr/H
+- Rus
+ rusalèí/Y
+--- 112941,112942 ----
+***************
+*** 113124,113126 ****
+ ru¹tina/ZQ
+- Rút
+ Rùta/PV
+--- 113035,113036 ----
+***************
+*** 115104,115106 ****
+ scezovat/ATN
+- science
+ science/Z
+--- 115014,115015 ----
+***************
+*** 115723,115725 ****
+ sedmerèe/K
+- sedmero
+ sedmero/MQ
+--- 115632,115633 ----
+***************
+*** 116249,116251 ****
+ Sémùv/Y
+- sen
+ senaø/PI
+--- 116157,116158 ----
+***************
+*** 116962,116964 ****
+ se¹vindlovat/ATN
+- set
+ setba/ZQ
+--- 116869,116870 ----
+***************
+*** 117786,117788 ****
+ Sikùv/Y
+- sil
+ silácký/YKRN
+--- 117692,117693 ----
+***************
+*** 121635,121637 ****
+ spatný/YKR
+- spatra
+ spatra/ZQ
+--- 121540,121541 ----
+***************
+*** 121887,121889 ****
+ spí¹
+- spí¹e
+ spí¹e/E
+--- 121791,121792 ----
+***************
+*** 122323,122325 ****
+ spolupráce/N
+- spolupráci
+ spolupracích/N
+--- 122226,122227 ----
+***************
+*** 122890,122892 ****
+ srovnanìj¹í/YRW
+- srovnání
+ srovnání/SN
+--- 122792,122793 ----
+***************
+*** 129987,129989 ****
+ ¹unt/H
+- ¹up
+ ¹upácký/YKR
+--- 129888,129889 ----
+***************
+*** 130427,130429 ****
+ takovouto
+- takový
+ takovýchto
+--- 130327,130328 ----
+***************
+*** 131190,131192 ****
+ tem¾ský/Y
+- ten
+ tenata/MQ
+--- 131089,131090 ----
+***************
+*** 131958,131960 ****
+ tichý/YKRO
+- tik
+ tikající/YN
+--- 131856,131857 ----
+***************
+*** 132541,132543 ****
+ Tomaschùv/Y
+- Tomá¹
+ Tomá¹ek/PV
+--- 132438,132439 ----
+***************
+*** 133890,133892 ****
+ Trubská/Y
+- truc
+ truc/H
+--- 133786,133787 ----
+***************
+*** 134057,134059 ****
+ tøást/IN
+- tøeba
+ tøeba/N
+--- 133952,133953 ----
+***************
+*** 135024,135026 ****
+ tvrz/Z
+- tvùj
+ tvùj/Y
+--- 134918,134919 ----
+***************
+*** 135532,135534 ****
+ úèesový/YR
+- úèet
+ úèetnický/YRN
+--- 135425,135426 ----
+***************
+*** 139620,139622 ****
+ uzamknutí/SN
+- uzamknutý
+ uzamknutý/YKRN
+--- 139512,139513 ----
+***************
+*** 141624,141626 ****
+ Verdolùv/Y
+- vìren
+ vìren/N
+--- 141515,141516 ----
+***************
+*** 141651,141653 ****
+ vìr/N
+- vìrna
+ vìrna/N
+--- 141541,141542 ----
+***************
+*** 141663,141665 ****
+ Verne/Y
+- vìrni
+ vìrni/N
+--- 141552,141553 ----
+***************
+*** 141667,141669 ****
+ vernisá¾/Z
+- vìrno
+ vìrno/N
+--- 141555,141556 ----
+***************
+*** 141671,141676 ****
+ vernovka/ZQ
+- vìrnu
+ vìrnu/N
+ Vernùv/Y
+- vìrny
+ vìrny/N
+--- 141558,141561 ----
+***************
+*** 141924,141926 ****
+ vetknutí/SN
+- vetknutý
+ vetknutý/YKRN
+--- 141809,141810 ----
+***************
+*** 142117,142119 ****
+ vhloubený/YKRN
+- vhloubit
+ vhloubit/ATN
+--- 142001,142002 ----
+***************
+*** 144104,144106 ****
+ Voldánùv/Y
+- vole
+ volební/YR
+--- 143987,143988 ----
+***************
+*** 144409,144411 ****
+ Votýpkùv/Y
+- vous
+ vousáè/U
+--- 144291,144292 ----
+***************
+*** 144952,144954 ****
+ vrtulový/YR
+- vrub
+ vrub/H
+--- 144833,144834 ----
+***************
+*** 144979,144981 ****
+ vrývavý/YR
+- vrz
+ Vrzáèek/PV
+--- 144859,144860 ----
+***************
+*** 151330,151332 ****
+ vytknutí/SN
+- vytknutý
+ vytknutý/YRN
+--- 151209,151210 ----
+***************
+*** 151927,151929 ****
+ vyvrhnutí/SN
+- vyvrhnutý
+ vyvrhnutý/YKRN
+--- 151805,151806 ----
+***************
+*** 152435,152437 ****
+ vzdìlávat/JTN
+- vzdor
+ vzdor/H
+--- 152312,152313 ----
+***************
+*** 156040,156042 ****
+ zamknutí/SN
+- zamknutý
+ zamknutý/YKRN
+--- 155916,155917 ----
+***************
+*** 157795,157797 ****
+ zastonejte/N
+- zastoupení
+ zastoupení/SN
+--- 157670,157671 ----
+***************
+*** 160364,160366 ****
+ zebøí/Y
+- zebu
+ zebu/BN
+--- 160238,160239 ----
+***************
+*** 166409,166411 ****
+ ®muï
+- ¾nec
+ ¾nec/U
+--- 166282,166283 ----
diff --git a/runtime/spell/cs/main.aap b/runtime/spell/cs/main.aap
new file mode 100644
index 0000000..5ead6d0
--- /dev/null
+++ b/runtime/spell/cs/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = cs_CZ.aff cs_CZ.dic
+
+all: $SPELLDIR/cs.iso-8859-2.spl $SPELLDIR/cs.utf-8.spl \
+ $SPELLDIR/cs.cp1250.spl ../README_cs.txt
+
+$SPELLDIR/cs.iso-8859-2.spl : $VIM $FILES
+ :sys env LANG=cs_CZ.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+$SPELLDIR/cs.utf-8.spl : $VIM $FILES
+ :sys env LANG=cs_CZ.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+$SPELLDIR/cs.cp1250.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+../README_cs.txt: README_cs_CZ.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} cs_CZ.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+cs_CZ.aff cs_CZ.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch cs_CZ.zip
+ :sys $UNZIP cs_CZ.zip
+ :delete cs_CZ.zip
+ @if not os.path.exists('cs_CZ.orig.aff'):
+ :copy cs_CZ.aff cs_CZ.orig.aff
+ @if not os.path.exists('cs_CZ.orig.dic'):
+ :copy cs_CZ.dic cs_CZ.orig.dic
+ @if os.path.exists('cs_CZ.diff'):
+ :sys patch <cs_CZ.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 cs_CZ.orig.aff cs_CZ.aff >cs_CZ.diff
+ :sys {force} diff -a -C 1 cs_CZ.orig.dic cs_CZ.dic >>cs_CZ.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch cs_CZ.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../cs_CZ.zip
+ :sys {force} diff ../cs_CZ.orig.aff cs_CZ.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy cs_CZ.aff ../cs_CZ.new.aff
+ :sys {force} diff ../cs_CZ.orig.dic cs_CZ.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy cs_CZ.dic ../cs_CZ.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete cs_CZ.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/da/main.aap b/runtime/spell/da/main.aap
new file mode 100644
index 0000000..53e3716
--- /dev/null
+++ b/runtime/spell/da/main.aap
@@ -0,0 +1,78 @@
+# Aap recipe for French Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = da_DK.aff da_DK.dic
+
+all: $SPELLDIR/da.latin1.spl $SPELLDIR/da.utf-8.spl ../README_da.txt
+
+$SPELLDIR/da.latin1.spl : $VIM $FILES
+ :sys env LANG=da_DK.ISO8859-1
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/da da_DK" -c q
+
+$SPELLDIR/da.utf-8.spl : $VIM $FILES
+ :sys env LANG=da_DK.UTF-8
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/da da_DK" -c q
+
+../README_da.txt : README Copyright
+ :cat $source >! $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} da_DK.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+da_DK.aff da_DK.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch da_DK.zip
+ :sys $UNZIP da_DK.zip
+ :delete da_DK.zip
+ @if not os.path.exists('da_DK.orig.aff'):
+ :copy da_DK.aff da_DK.orig.aff
+ @if not os.path.exists('da_DK.orig.dic'):
+ :copy da_DK.dic da_DK.orig.dic
+ @if os.path.exists('da_DK.diff'):
+ :sys patch <da_DK.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 da_DK.orig.aff da_DK.aff >da_DK.diff
+ :sys {force} diff -a -C 1 da_DK.orig.dic da_DK.dic >>da_DK.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch da_DK.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../da_DK.zip
+ :sys {force} diff ../da_DK.orig.aff da_DK.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy da_DK.aff ../da_DK.new.aff
+ :sys {force} diff ../da_DK.orig.dic da_DK.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy da_DK.dic ../da_DK.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete da_DK.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/de/de_19.diff b/runtime/spell/de/de_19.diff
new file mode 100644
index 0000000..a807a8b
--- /dev/null
+++ b/runtime/spell/de/de_19.diff
@@ -0,0 +1,27 @@
+*** de_19.orig.aff Mon Aug 15 22:45:35 2005
+--- de_19.aff Mon Aug 15 22:54:10 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '
++
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++
+
diff --git a/runtime/spell/de/de_20.diff b/runtime/spell/de/de_20.diff
new file mode 100644
index 0000000..432ad5f
--- /dev/null
+++ b/runtime/spell/de/de_20.diff
@@ -0,0 +1,28 @@
+*** de_20.orig.aff Mon Aug 15 22:45:41 2005
+--- de_20.aff Mon Aug 15 22:54:16 2005
+***************
+*** 2,3 ****
+--- 2,24 ----
+ TRY esianrtolcdugmphbyfvkwäüößáéêàâñESIANRTOLCDUGMPHBYFVKWÄÜÖ
++
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '
++
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++
+ #
diff --git a/runtime/spell/de/de_AT.diff b/runtime/spell/de/de_AT.diff
new file mode 100644
index 0000000..e13e4d5
--- /dev/null
+++ b/runtime/spell/de/de_AT.diff
@@ -0,0 +1,44 @@
+*** de_AT.orig.aff Mon Aug 15 22:59:43 2005
+--- de_AT.aff Mon Aug 15 23:00:25 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '
++
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++
+
+*** de_AT.orig.dic Mon Aug 15 22:59:43 2005
+--- de_AT.dic Mon Aug 15 23:03:19 2005
+***************
+*** 18,20 ****
+ Fleischbänke/N
+- Fleischbank
+ Fleischhauer/NS
+--- 18,19 ----
+***************
+*** 151,153 ****
+ zulieb
+! 77857
+ Äbte/N
+--- 150,152 ----
+ zulieb
+!
+ Äbte/N
diff --git a/runtime/spell/de/de_CH.diff b/runtime/spell/de/de_CH.diff
new file mode 100644
index 0000000..607f874
--- /dev/null
+++ b/runtime/spell/de/de_CH.diff
@@ -0,0 +1,27 @@
+*** de_CH.orig.aff Mon Aug 15 22:45:43 2005
+--- de_CH.aff Mon Aug 15 22:54:21 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '
++
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++
+
diff --git a/runtime/spell/de/de_DE.diff b/runtime/spell/de/de_DE.diff
index 0d395e8..fe33b41 100644
--- a/runtime/spell/de/de_DE.diff
+++ b/runtime/spell/de/de_DE.diff
@@ -1,5 +1,5 @@
-*** de_DE.orig.aff Fri Feb 25 12:50:10 2005
---- de_DE.aff Sun Jul 31 22:15:49 2005
+*** de_DE.orig.aff Mon Aug 15 22:45:33 2005
+--- de_DE.aff Mon Aug 15 22:45:33 2005
***************
*** 2,3 ****
--- 2,24 ----
diff --git a/runtime/spell/de/main.aap b/runtime/spell/de/main.aap
index 80bfcea..df608e1 100644
--- a/runtime/spell/de/main.aap
+++ b/runtime/spell/de/main.aap
@@ -1,4 +1,13 @@
# Aap recipe for German Vim spell files.
+#
+# Since there is a big discussion about whether to use the old or the new
+# spelling rules, both have been included.
+# "de": all possible words allowed
+# "de_de": old and new German spelling
+# "de_19": old German spelling
+# "de_20": new German spelling
+# "de_AT": Austrian spelling
+# "de_CH": Swiss spelling
# Use a freshly compiled Vim if it exists.
@if os.path.exists('../../../src/vim'):
@@ -6,66 +15,170 @@
@else:
:progsearch VIM vim
-SPELLDIR = ..
-FILES = de_DE.aff de_DE.dic
-ZIPFILE = de_DE_comb.zip
+REGIONS = DE 19 20 AT CH
+DE_REGIONS = de_$*REGIONS
-all: $(SPELLDIR)/de.latin1.spl $(SPELLDIR)/de.utf-8.spl ../README_de.txt
+SPELLDIR = ..
+FILES = de_$*(REGIONS).aff de_$*(REGIONS).dic
-$(SPELLDIR)/de.latin1.spl : $(VIM) $(FILES)
+ZIPFILE_DE = de_DE_comb.zip
+ZIPFILE_19 = de_DE.zip
+ZIPFILE_20 = de_DE_neu.zip
+ZIPFILE_AT = de_AT.zip
+ZIPFILE_CH = de_CH.zip
+ZIPFILES = $ZIPFILE_DE $ZIPFILE_19 $ZIPFILE_20 $ZIPFILE_AT $ZIPFILE_CH
+
+READMES = README_de_$*(REGIONS).txt
+
+all: $SPELLDIR/de.latin1.spl $SPELLDIR/de.utf-8.spl ../README_de.txt
+
+$SPELLDIR/de.latin1.spl : $VIM $FILES
:sys env LANG=de_DE.ISO8859-1
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q
-$(SPELLDIR)/de.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/de.utf-8.spl : $VIM $FILES
:sys env LANG=de_DE.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q
-../README_de.txt: README_de_DE_comb.txt
- :copy $source $target
+../README_de.txt: $READMES
+ :print de_DE (combined) >! $target
+ :cat README_de_DE.txt >> $target
+ :print =================================================== >>$target
+ :print de_19 (old) >> $target
+ :cat README_de_19.txt >> $target
+ :print =================================================== >>$target
+ :print de_20 (new) >> $target
+ :cat README_de_20.txt >> $target
+ :print =================================================== >>$target
+ :print de_AT (Austria) >> $target
+ :cat README_de_AT.txt >> $target
+ :print =================================================== >>$target
+ :print de_CH (Swiss) >> $target
+ :cat README_de_CH.txt >> $target
#
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} $(ZIPFILE)
+:attr {fetch = $OODIR/%file%} $ZIPFILES
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
de_DE.aff de_DE.dic: {buildcheck=}
:assertpkg unzip patch
- :fetch $(ZIPFILE)
- :sys $(UNZIP) $(ZIPFILE)
- :delete $(ZIPFILE)
+ :fetch $ZIPFILE_DE
+ :sys $UNZIP $ZIPFILE_DE
+ :delete $ZIPFILE_DE
:move de_DE_comb.aff de_DE.aff
:move de_DE_comb.dic de_DE.dic
+ :move README_de_DE_comb.txt README_de_DE.txt
@if not os.path.exists('de_DE.orig.aff'):
- :copy de_DE.aff de_DE.orig.aff
+ :copy de_DE.aff de_DE.orig.aff
@if not os.path.exists('de_DE.orig.dic'):
- :copy de_DE.dic de_DE.orig.dic
+ :copy de_DE.dic de_DE.orig.dic
@if os.path.exists('de_DE.diff'):
:sys patch <de_DE.diff
+de_19.aff de_19.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch $ZIPFILE_19
+ # Move the other files out of the way.
+ @if os.path.exists("de_DE.aff"):
+ :move de_DE.aff de_DE_comb.aff
+ :move de_DE.dic de_DE_comb.dic
+ :move README_de_DE.txt README_de_DE_comb.txt
+
+ :sys $UNZIP $ZIPFILE_19
+ :delete $ZIPFILE_19
+ :delete {f} de_AT.dic
+ :move de_DE.aff de_19.aff
+ :move de_DE.dic de_19.dic
+ :move README_de_DE.txt README_de_19.txt
+
+ @if os.path.exists("de_DE_comb.aff"):
+ :move de_DE_comb.aff de_DE.aff
+ :move de_DE_comb.dic de_DE.dic
+ :move README_de_DE_comb.txt README_de_DE.txt
+ @if not os.path.exists('de_19.orig.aff'):
+ :copy de_19.aff de_19.orig.aff
+ @if not os.path.exists('de_19.orig.dic'):
+ :copy de_19.dic de_19.orig.dic
+ @if os.path.exists('de_19.diff'):
+ :sys patch <de_19.diff
+
+de_20.aff de_20.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch $ZIPFILE_20
+ :sys $UNZIP $ZIPFILE_20
+ :delete $ZIPFILE_20
+ :move de_DE_neu.aff de_20.aff
+ :move de_DE_neu.dic de_20.dic
+ :move README_de_DE_neu.txt README_de_20.txt
+ @if not os.path.exists('de_20.orig.aff'):
+ :copy de_20.aff de_20.orig.aff
+ @if not os.path.exists('de_20.orig.dic'):
+ :copy de_20.dic de_20.orig.dic
+ @if os.path.exists('de_20.diff'):
+ :sys patch <de_20.diff
+
+# It appears de_AT.dic is only an additional file for another word list. We
+# guess it's the old spelling one and concatenate them. Complication is that
+# de_AT.dic is missing a newline at the end.
+de_AT.aff de_AT.dic: {buildcheck=} de_19.dic
+ :assertpkg unzip patch
+ :fetch $ZIPFILE_AT
+ :sys $UNZIP $ZIPFILE_AT
+ :delete $ZIPFILE_AT
+ :print >>de_AT.dic
+ :cat de_19.dic >>de_AT.dic
+ @if not os.path.exists('de_AT.orig.aff'):
+ :copy de_AT.aff de_AT.orig.aff
+ @if not os.path.exists('de_AT.orig.dic'):
+ :copy de_AT.dic de_AT.orig.dic
+ @if os.path.exists('de_AT.diff'):
+ :sys patch <de_AT.diff
+
+de_CH.aff de_CH.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch $ZIPFILE_CH
+ :sys $UNZIP $ZIPFILE_CH
+ :delete $ZIPFILE_CH
+ @if not os.path.exists('de_CH.orig.aff'):
+ :copy de_CH.aff de_CH.orig.aff
+ @if not os.path.exists('de_CH.orig.dic'):
+ :copy de_CH.dic de_CH.orig.dic
+ @if os.path.exists('de_CH.diff'):
+ :sys patch <de_CH.diff
+
# Generate diff files, so that others can get the OpenOffice files and apply
# the diffs to get the Vim versions.
-
diff:
:assertpkg diff
:sys {force} diff -a -C 1 de_DE.orig.aff de_DE.aff >de_DE.diff
:sys {force} diff -a -C 1 de_DE.orig.dic de_DE.dic >>de_DE.diff
+ :sys {force} diff -a -C 1 de_19.orig.aff de_19.aff >de_19.diff
+ :sys {force} diff -a -C 1 de_19.orig.dic de_19.dic >>de_19.diff
+ :sys {force} diff -a -C 1 de_20.orig.aff de_20.aff >de_20.diff
+ :sys {force} diff -a -C 1 de_20.orig.dic de_20.dic >>de_20.diff
+ :sys {force} diff -a -C 1 de_AT.orig.aff de_AT.aff >de_AT.diff
+ :sys {force} diff -a -C 1 de_AT.orig.dic de_AT.dic >>de_AT.diff
+ :sys {force} diff -a -C 1 de_CH.orig.aff de_CH.aff >de_CH.diff
+ :sys {force} diff -a -C 1 de_CH.orig.dic de_CH.dic >>de_CH.diff
# Check for updated OpenOffice spell files. When there are changes the
# ".new.aff" and ".new.dic" files are left behind for manual inspection.
check:
+ :print TODO!!!!
:assertpkg unzip diff
- :fetch $(ZIPFILE)
+ :fetch $ZIPFILE_DE
:mkdir tmp
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../$(ZIPFILE)
+ :sys $UNZIP ../$ZIPFILE_DE
:move de_DE_comb.aff de_DE.aff
:move de_DE_comb.dic de_DE.dic
:sys {force} diff ../de_DE.orig.aff de_DE.aff >d
@@ -77,7 +190,7 @@
@finally:
:cd ..
:delete {r}{f}{q} tmp
- :delete $(ZIPFILE)
+ :delete $ZIPFILE_DE
# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index 73c59c7..c77ef9a 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 ed645b8..851f714 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 bb2bdb5..d6b7836 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/spell/en/main.aap b/runtime/spell/en/main.aap
index d466830..37a9ed1 100644
--- a/runtime/spell/en/main.aap
+++ b/runtime/spell/en/main.aap
@@ -13,21 +13,21 @@
en_GB.aff en_GB.dic
en_NZ.aff en_NZ.dic
-all: $(SPELLDIR)/en.latin1.spl $(SPELLDIR)/en.utf-8.spl \
- $(SPELLDIR)/en.ascii.spl ../README_en.txt
+all: $SPELLDIR/en.latin1.spl $SPELLDIR/en.utf-8.spl \
+ $SPELLDIR/en.ascii.spl ../README_en.txt
-$(SPELLDIR)/en.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/en.latin1.spl : $VIM $FILES
:sys env LANG=en_US.ISO8859-1
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/en
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/en
en_US en_AU en_CA en_GB en_NZ" -c q
-$(SPELLDIR)/en.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/en.utf-8.spl : $VIM $FILES
:sys env LANG=en_US.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/en
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/en
en_US en_AU en_CA en_GB en_NZ" -c q
-$(SPELLDIR)/en.ascii.spl : $(VIM) $(FILES)
- :sys $(VIM) -u NONE -e -c "mkspell! -ascii $(SPELLDIR)/en
+$SPELLDIR/en.ascii.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "mkspell! -ascii $SPELLDIR/en
en_US en_AU en_CA en_GB en_NZ" -c q
../README_en.txt: README_en_US.txt README_en_AU.txt
@@ -50,7 +50,7 @@
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} en_US.zip en_CA.zip en_NZ.zip
+:attr {fetch = $OODIR/%file%} en_US.zip en_CA.zip en_NZ.zip
en_GB.zip en_AU.zip
# The files don't depend on the .zip file so that we can delete it.
@@ -58,61 +58,61 @@
en_US.aff en_US.dic: {buildcheck=}
:assertpkg unzip patch
:fetch en_US.zip
- :sys $(UNZIP) en_US.zip
+ :sys $UNZIP en_US.zip
:delete en_US.zip
@if not os.path.exists('en_US.orig.aff'):
- :copy en_US.aff en_US.orig.aff
+ :copy en_US.aff en_US.orig.aff
@if not os.path.exists('en_US.orig.dic'):
- :copy en_US.dic en_US.orig.dic
+ :copy en_US.dic en_US.orig.dic
@if os.path.exists('en_US.diff'):
:sys patch <en_US.diff
en_AU.aff en_AU.dic: {buildcheck=}
:assertpkg unzip patch
:fetch en_AU.zip
- :sys $(UNZIP) en_AU.zip
+ :sys $UNZIP en_AU.zip
:delete en_AU.zip
@if not os.path.exists('en_AU.orig.aff'):
- :copy en_AU.aff en_AU.orig.aff
+ :copy en_AU.aff en_AU.orig.aff
@if not os.path.exists('en_AU.orig.dic'):
- :copy en_AU.dic en_AU.orig.dic
+ :copy en_AU.dic en_AU.orig.dic
@if os.path.exists('en_AU.diff'):
:sys patch <en_AU.diff
en_CA.aff en_CA.dic: {buildcheck=}
:assertpkg unzip patch
:fetch en_CA.zip
- :sys $(UNZIP) en_CA.zip
+ :sys $UNZIP en_CA.zip
:delete en_CA.zip
@if not os.path.exists('en_CA.orig.aff'):
- :copy en_CA.aff en_CA.orig.aff
+ :copy en_CA.aff en_CA.orig.aff
@if not os.path.exists('en_CA.orig.dic'):
- :copy en_CA.dic en_CA.orig.dic
+ :copy en_CA.dic en_CA.orig.dic
@if os.path.exists('en_CA.diff'):
:sys patch <en_CA.diff
en_GB.aff en_GB.dic: {buildcheck=}
:assertpkg unzip patch
:fetch en_GB.zip
- :sys $(UNZIP) en_GB.zip
+ :sys $UNZIP en_GB.zip
:delete en_GB.zip
:delete dictionary.lst.example
@if not os.path.exists('en_GB.orig.aff'):
- :copy en_GB.aff en_GB.orig.aff
+ :copy en_GB.aff en_GB.orig.aff
@if not os.path.exists('en_GB.orig.dic'):
- :copy en_GB.dic en_GB.orig.dic
+ :copy en_GB.dic en_GB.orig.dic
@if os.path.exists('en_GB.diff'):
:sys patch <en_GB.diff
en_NZ.aff en_NZ.dic: {buildcheck=}
:assertpkg unzip patch
:fetch en_NZ.zip
- :sys $(UNZIP) en_NZ.zip
+ :sys $UNZIP en_NZ.zip
:delete en_NZ.zip
@if not os.path.exists('en_NZ.orig.aff'):
- :copy en_NZ.aff en_NZ.orig.aff
+ :copy en_NZ.aff en_NZ.orig.aff
@if not os.path.exists('en_NZ.orig.dic'):
- :copy en_NZ.dic en_NZ.orig.dic
+ :copy en_NZ.dic en_NZ.orig.dic
@if os.path.exists('en_NZ.diff'):
:sys patch <en_NZ.diff
@@ -146,7 +146,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../en_US.zip
+ :sys $UNZIP ../en_US.zip
:sys {force} diff ../en_US.orig.aff en_US.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy en_US.aff ../en_US.new.aff
@@ -165,7 +165,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../en_AU.zip
+ :sys $UNZIP ../en_AU.zip
:sys {force} diff ../en_AU.orig.aff en_AU.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy en_AU.aff ../en_AU.new.aff
@@ -184,7 +184,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../en_CA.zip
+ :sys $UNZIP ../en_CA.zip
:sys {force} diff ../en_CA.orig.aff en_CA.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy en_CA.aff ../en_CA.new.aff
@@ -203,7 +203,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../en_GB.zip
+ :sys $UNZIP ../en_GB.zip
:sys {force} diff ../en_GB.orig.aff en_GB.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy en_GB.aff ../en_GB.new.aff
@@ -222,7 +222,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../en_NZ.zip
+ :sys $UNZIP ../en_NZ.zip
:sys {force} diff ../en_NZ.orig.aff en_NZ.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy en_NZ.aff ../en_NZ.new.aff
diff --git a/runtime/spell/fr/main.aap b/runtime/spell/fr/main.aap
index 4580c9c..9e51039 100644
--- a/runtime/spell/fr/main.aap
+++ b/runtime/spell/fr/main.aap
@@ -9,15 +9,15 @@
SPELLDIR = ..
FILES = fr_FR.aff fr_FR.dic
-all: $(SPELLDIR)/fr.latin1.spl $(SPELLDIR)/fr.utf-8.spl ../README_fr.txt
+all: $SPELLDIR/fr.latin1.spl $SPELLDIR/fr.utf-8.spl ../README_fr.txt
-$(SPELLDIR)/fr.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/fr.latin1.spl : $VIM $FILES
:sys env LANG=fr_FR.ISO8859-1
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/fr fr_FR" -c q
-$(SPELLDIR)/fr.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/fr.utf-8.spl : $VIM $FILES
:sys env LANG=fr_FR.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/fr fr_FR" -c q
../README_fr.txt : README_fr_FR.txt
:copy $source $target
@@ -26,19 +26,19 @@
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} fr_FR.zip
+:attr {fetch = $OODIR/%file%} fr_FR.zip
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
fr_FR.aff fr_FR.dic: {buildcheck=}
:assertpkg unzip patch
:fetch fr_FR.zip
- :sys $(UNZIP) fr_FR.zip
+ :sys $UNZIP fr_FR.zip
:delete fr_FR.zip
@if not os.path.exists('fr_FR.orig.aff'):
- :copy fr_FR.aff fr_FR.orig.aff
+ :copy fr_FR.aff fr_FR.orig.aff
@if not os.path.exists('fr_FR.orig.dic'):
- :copy fr_FR.dic fr_FR.orig.dic
+ :copy fr_FR.dic fr_FR.orig.dic
@if os.path.exists('fr_FR.diff'):
:sys patch <fr_FR.diff
@@ -62,7 +62,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../fr_FR.zip
+ :sys $UNZIP ../fr_FR.zip
:sys {force} diff ../fr_FR.orig.aff fr_FR.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy fr_FR.aff ../fr_FR.new.aff
diff --git a/runtime/spell/he/main.aap b/runtime/spell/he/main.aap
index a002bc7..4db930b 100644
--- a/runtime/spell/he/main.aap
+++ b/runtime/spell/he/main.aap
@@ -9,15 +9,15 @@
SPELLDIR = ..
FILES = he_IL.aff he_IL.dic
-all: $(SPELLDIR)/he.utf-8.spl $(SPELLDIR)/he.iso-8859-8.spl ../README_he.txt
+all: $SPELLDIR/he.utf-8.spl $SPELLDIR/he.iso-8859-8.spl ../README_he.txt
-$(SPELLDIR)/he.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/he.utf-8.spl : $VIM $FILES
:sys env LANG=he_IL.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/he he_IL" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/he he_IL" -c q
-$(SPELLDIR)/he.iso-8859-8.spl : $(VIM) $(FILES)
- :sys $(VIM) -u NONE -e -c "set enc=iso-8859-8"
- -c "mkspell! $(SPELLDIR)/he he_IL" -c q
+$SPELLDIR/he.iso-8859-8.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=iso-8859-8"
+ -c "mkspell! $SPELLDIR/he he_IL" -c q
../README_he.txt : README_he_IL.txt
:copy $source $target
@@ -26,19 +26,19 @@
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} he_IL.zip
+:attr {fetch = $OODIR/%file%} he_IL.zip
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
he_IL.aff he_IL.dic: {buildcheck=}
:assertpkg unzip patch
:fetch he_IL.zip
- :sys $(UNZIP) he_IL.zip
+ :sys $UNZIP he_IL.zip
:delete he_IL.zip
@if not os.path.exists('he_IL.orig.aff'):
- :copy he_IL.aff he_IL.orig.aff
+ :copy he_IL.aff he_IL.orig.aff
@if not os.path.exists('he_IL.orig.dic'):
- :copy he_IL.dic he_IL.orig.dic
+ :copy he_IL.dic he_IL.orig.dic
@if os.path.exists('he_IL.diff'):
:sys patch <he_IL.diff
@@ -62,7 +62,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../he_IL.zip
+ :sys $UNZIP ../he_IL.zip
:sys {force} diff ../he_IL.orig.aff he_IL.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy he_IL.aff ../he_IL.new.aff
diff --git a/runtime/spell/hr/main.aap b/runtime/spell/hr/main.aap
new file mode 100644
index 0000000..f272b87
--- /dev/null
+++ b/runtime/spell/hr/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Polish Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = hr_HR.aff hr_HR.dic
+
+all: $SPELLDIR/hr.iso-8859-2.spl $SPELLDIR/pl.utf-8.spl \
+ $SPELLDIR/hr.cp1250.spl ../README_pl.txt
+
+$SPELLDIR/hr.iso-8859-2.spl : $VIM $FILES
+ :sys env LANG=hr_HR.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+$SPELLDIR/hr.utf-8.spl : $VIM $FILES
+ :sys env LANG=hr_HR.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+$SPELLDIR/hr.cp1250.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+../README_hr.txt: README_hr_HR.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} hr_HR.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+hr_HR.aff hr_HR.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch hr_HR.zip
+ :sys $UNZIP hr_HR.zip
+ :delete hr_HR.zip
+ @if not os.path.exists('hr_HR.orig.aff'):
+ :copy hr_HR.aff hr_HR.orig.aff
+ @if not os.path.exists('hr_HR.orig.dic'):
+ :copy hr_HR.dic hr_HR.orig.dic
+ @if os.path.exists('hr_HR.diff'):
+ :sys patch <hr_HR.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 hr_HR.orig.aff hr_HR.aff >hr_HR.diff
+ :sys {force} diff -a -C 1 hr_HR.orig.dic hr_HR.dic >>hr_HR.diff
+
+
+# Check for updated spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch hr_HR.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../hr_HR.zip
+ :sys {force} diff ../hr_HR.orig.aff hr_HR.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy hr_HR.aff ../hr_HR.new.aff
+ :sys {force} diff ../hr_HR.orig.dic hr_HR.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy hr_HR.dic ../hr_HR.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete hr_HR.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/it/main.aap b/runtime/spell/it/main.aap
index 04e116f..ef541c4 100644
--- a/runtime/spell/it/main.aap
+++ b/runtime/spell/it/main.aap
@@ -9,15 +9,15 @@
SPELLDIR = ..
FILES = it_IT.aff it_IT.dic
-all: $(SPELLDIR)/it.latin1.spl $(SPELLDIR)/it.utf-8.spl ../README_it.txt
+all: $SPELLDIR/it.latin1.spl $SPELLDIR/it.utf-8.spl ../README_it.txt
-$(SPELLDIR)/it.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/it.latin1.spl : $VIM $FILES
:sys env LANG=it_IT.ISO8859-1
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/it it_IT" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/it it_IT" -c q
-$(SPELLDIR)/it.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/it.utf-8.spl : $VIM $FILES
:sys env LANG=it_IT.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/it it_IT" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/it it_IT" -c q
../README_it.txt : README_it_IT.txt
:copy $source $target
@@ -26,14 +26,14 @@
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} it_IT.zip
+:attr {fetch = $OODIR/%file%} it_IT.zip
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
it_IT.aff it_IT.dic: {buildcheck=}
:assertpkg unzip patch
:fetch it_IT.zip
- :sys $(UNZIP) it_IT.zip
+ :sys $UNZIP it_IT.zip
:delete it_IT.zip
@if not os.path.exists('it_IT.orig.aff'):
:copy it_IT.aff it_IT.orig.aff
@@ -62,7 +62,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../it_IT.zip
+ :sys $UNZIP ../it_IT.zip
:sys {force} diff ../it_IT.orig.aff it_IT.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy it_IT.aff ../it_IT.new.aff
diff --git a/runtime/spell/main.aap b/runtime/spell/main.aap
index 44d1990..68864b8 100644
--- a/runtime/spell/main.aap
+++ b/runtime/spell/main.aap
@@ -1,7 +1,7 @@
# "aap": generate all the .spl files
# "aap diff" create all the diff files
-LANG = de en fr he it nl pl yi
+LANG = af bg ca cs da de en fr he hr it nl ny pl sk yi
diff: $*LANG/diff
:print done
diff --git a/runtime/spell/nl/main.aap b/runtime/spell/nl/main.aap
index b414161..02ae49d 100644
--- a/runtime/spell/nl/main.aap
+++ b/runtime/spell/nl/main.aap
@@ -9,15 +9,15 @@
SPELLDIR = ..
FILES = nl_NL.aff nl_NL.dic
-all: $(SPELLDIR)/nl.latin1.spl $(SPELLDIR)/nl.utf-8.spl ../README_nl.txt
+all: $SPELLDIR/nl.latin1.spl $SPELLDIR/nl.utf-8.spl ../README_nl.txt
-$(SPELLDIR)/nl.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/nl.latin1.spl : $VIM $FILES
:sys env LANG=nl_NL.ISO8859-1
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/nl nl_NL" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/nl nl_NL" -c q
-$(SPELLDIR)/nl.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/nl.utf-8.spl : $VIM $FILES
:sys env LANG=nl_NL.UTF-8
- $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/nl nl_NL" -c q
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/nl nl_NL" -c q
../README_nl.txt : README_nl_NL.txt
:copy $source $target
@@ -26,19 +26,19 @@
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} nl_NL.zip
+:attr {fetch = $OODIR/%file%} nl_NL.zip
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
nl_NL.aff nl_NL.dic: {buildcheck=}
:assertpkg unzip patch
:fetch nl_NL.zip
- :sys $(UNZIP) nl_NL.zip
+ :sys $UNZIP nl_NL.zip
:delete nl_NL.zip
@if not os.path.exists('nl_NL.orig.aff'):
- :copy nl_NL.aff nl_NL.orig.aff
+ :copy nl_NL.aff nl_NL.orig.aff
@if not os.path.exists('nl_NL.orig.dic'):
- :copy nl_NL.dic nl_NL.orig.dic
+ :copy nl_NL.dic nl_NL.orig.dic
@if os.path.exists('nl_NL.diff'):
:sys patch <nl_NL.diff
@@ -62,7 +62,7 @@
:cd tmp
@try:
@import stat
- :sys $(UNZIP) ../nl_NL.zip
+ :sys $UNZIP ../nl_NL.zip
:sys {force} diff ../nl_NL.orig.aff nl_NL.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy nl_NL.aff ../nl_NL.new.aff
diff --git a/runtime/spell/ny/main.aap b/runtime/spell/ny/main.aap
new file mode 100644
index 0000000..e7fcbf7
--- /dev/null
+++ b/runtime/spell/ny/main.aap
@@ -0,0 +1,82 @@
+# Aap recipe for Dutch Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = ny_MW.aff ny_MW.dic
+
+all: $SPELLDIR/ny.iso-8859-14.spl $SPELLDIR/ny.utf-8.spl \
+ $SPELLDIR/ny.ascii.spl ../README_ny.txt
+
+$SPELLDIR/ny.iso-8859-14.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=iso-8859-14"
+ -c "mkspell! $SPELLDIR/ny ny_MW" -c q
+
+$SPELLDIR/ny.utf-8.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=utf-8"
+ -c "mkspell! $SPELLDIR/ny ny_MW" -c q
+
+$SPELLDIR/ny.ascii.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "mkspell! -ascii $SPELLDIR/ny ny_MW" -c q
+
+../README_ny.txt : README_ny_MW.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} ny_MW.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+ny_MW.aff ny_MW.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch ny_MW.zip
+ :sys $UNZIP ny_MW.zip
+ :delete ny_MW.zip
+ @if not os.path.exists('ny_MW.orig.aff'):
+ :copy ny_MW.aff ny_MW.orig.aff
+ @if not os.path.exists('ny_MW.orig.dic'):
+ :copy ny_MW.dic ny_MW.orig.dic
+ @if os.path.exists('ny_MW.diff'):
+ :sys patch <ny_MW.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 ny_MW.orig.aff ny_MW.aff >ny_MW.diff
+ :sys {force} diff -a -C 1 ny_MW.orig.dic ny_MW.dic >>ny_MW.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch ny_MW.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../ny_MW.zip
+ :sys {force} diff ../ny_MW.orig.aff ny_MW.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy ny_MW.aff ../ny_MW.new.aff
+ :sys {force} diff ../ny_MW.orig.dic ny_MW.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy ny_MW.dic ../ny_MW.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete ny_MW.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/pl/main.aap b/runtime/spell/pl/main.aap
index 6916df3..e33acf8 100644
--- a/runtime/spell/pl/main.aap
+++ b/runtime/spell/pl/main.aap
@@ -9,17 +9,17 @@
SPELLDIR = ..
FILES = pl_PL.aff pl_PL.dic
-all: $(SPELLDIR)/pl.iso-8859-2.spl $(SPELLDIR)/pl.utf-8.spl \
- $(SPELLDIR)/pl.cp1250.spl ../README_pl.txt
+all: $SPELLDIR/pl.iso-8859-2.spl $SPELLDIR/pl.utf-8.spl \
+ $SPELLDIR/pl.cp1250.spl ../README_pl.txt
-$(SPELLDIR)/pl.iso-8859-2.spl : $(VIM) $(FILES)
- :sys env LANG=pl_PL.ISO8859-2 $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.iso-8859-2.spl : $VIM $FILES
+ :sys env LANG=pl_PL.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/pl pl_PL" -c q
-$(SPELLDIR)/pl.utf-8.spl : $(VIM) $(FILES)
- :sys env LANG=pl_PL.UTF-8 $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.utf-8.spl : $VIM $FILES
+ :sys env LANG=pl_PL.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/pl pl_PL" -c q
-$(SPELLDIR)/pl.cp1250.spl : $(VIM) $(FILES)
- :sys $(VIM) -u NONE -e -c "set enc=cp1250" -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.cp1250.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/pl pl_PL" -c q
../README_pl.txt: README_pl_PL.txt
:copy $source $target
@@ -28,7 +28,7 @@
# Fetching the files from OpenOffice.org.
#
#OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-#:attr {fetch = $(OODIR)/%file%} pl_PL.zip
+#:attr {fetch = $OODIR/%file%} pl_PL.zip
#
# Fetching the files from
@@ -43,24 +43,24 @@
@from time import strftime, gmtime, time
@for day in range(20):
date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
- base = alt-myspell-pl-$(date)
- fname = $(base).tar.bz2
- :attr {fetch = $(HTTPDIR)/%file%} $(fname)
+ base = alt-myspell-pl-$date
+ fname = $base.tar.bz2
+ :attr {fetch = $HTTPDIR/%file%} $fname
@try:
- :fetch $(fname)
+ :fetch $fname
ok = 1
@except:
ok = 0
@if ok:
@break
- :sys bunzip2 -c $(fname) | tar xf -
- :move $(base)/* .
- :deldir $(base)
- :delete $(fname)
+ :sys bunzip2 -c $fname | tar xf -
+ :move $base/* .
+ :deldir $base
+ :delete $fname
@if not os.path.exists('pl_PL.orig.aff'):
- :copy pl_PL.aff pl_PL.orig.aff
+ :copy pl_PL.aff pl_PL.orig.aff
@if not os.path.exists('pl_PL.orig.dic'):
- :copy pl_PL.dic pl_PL.orig.dic
+ :copy pl_PL.dic pl_PL.orig.dic
@if os.path.exists('pl_PL.diff'):
:sys patch <pl_PL.diff
@@ -74,17 +74,29 @@
:sys {force} diff -a -C 1 pl_PL.orig.dic pl_PL.dic >>pl_PL.diff
-# Check for updated OpenOffice spell files. When there are changes the
+# Check for updated spell files. When there are changes the
# ".new.aff" and ".new.dic" files are left behind for manual inspection.
check:
- :assertpkg unzip diff
- :fetch pl_PL.zip
- :mkdir tmp
- :cd tmp
+ :assertpkg tar bunzip2 diff
+ @from time import strftime, gmtime, time
+ @for day in range(20):
+ date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
+ base = alt-myspell-pl-$date
+ fname = $base.tar.bz2
+ :attr {fetch = $HTTPDIR/%file%} $fname
+ @try:
+ :fetch $fname
+ ok = 1
+ @except:
+ ok = 0
+ @if ok:
+ @break
+ :sys bunzip2 -c $fname | tar xf -
+ :cd $base
@try:
@import stat
- :sys $(UNZIP) ../pl_PL.zip
+ :sys $UNZIP ../pl_PL.zip
:sys {force} diff ../pl_PL.orig.aff pl_PL.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy pl_PL.aff ../pl_PL.new.aff
@@ -93,8 +105,8 @@
:copy pl_PL.dic ../pl_PL.new.dic
@finally:
:cd ..
- :delete {r}{f}{q} tmp
- :delete pl_PL.zip
+ :delete {r}{f}{q} $base
+ :delete $fname
# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/sk/main.aap b/runtime/spell/sk/main.aap
new file mode 100644
index 0000000..b18d195
--- /dev/null
+++ b/runtime/spell/sk/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = sk_SK.aff sk_SK.dic
+
+all: $SPELLDIR/sk.iso-8859-2.spl $SPELLDIR/sk.utf-8.spl \
+ $SPELLDIR/sk.cp1250.spl ../README_sk.txt
+
+$SPELLDIR/sk.iso-8859-2.spl : $VIM $FILES
+ :sys env LANG=sk_SK.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+$SPELLDIR/sk.utf-8.spl : $VIM $FILES
+ :sys env LANG=sk_SK.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+$SPELLDIR/sk.cp1250.spl : $VIM $FILES
+ :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+../README_sk.txt: README_sk_SK.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} sk_SK.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+sk_SK.aff sk_SK.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch sk_SK.zip
+ :sys $UNZIP sk_SK.zip
+ :delete sk_SK.zip
+ @if not os.path.exists('sk_SK.orig.aff'):
+ :copy sk_SK.aff sk_SK.orig.aff
+ @if not os.path.exists('sk_SK.orig.dic'):
+ :copy sk_SK.dic sk_SK.orig.dic
+ @if os.path.exists('sk_SK.diff'):
+ :sys patch <sk_SK.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 sk_SK.orig.aff sk_SK.aff >sk_SK.diff
+ :sys {force} diff -a -C 1 sk_SK.orig.dic sk_SK.dic >>sk_SK.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch sk_SK.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../sk_SK.zip
+ :sys {force} diff ../sk_SK.orig.aff sk_SK.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy sk_SK.aff ../sk_SK.new.aff
+ :sys {force} diff ../sk_SK.orig.dic sk_SK.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy sk_SK.dic ../sk_SK.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete sk_SK.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/sk/sk_SK.diff b/runtime/spell/sk/sk_SK.diff
new file mode 100644
index 0000000..d279fd3
--- /dev/null
+++ b/runtime/spell/sk/sk_SK.diff
@@ -0,0 +1,18 @@
+*** sk_SK.orig.aff Sun Aug 14 16:48:21 2005
+--- sk_SK.aff Sun Aug 14 16:50:08 2005
+***************
+*** 4,5 ****
+--- 4,9 ----
+
++ FOL ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ¡¢£¥¦¨©ª«¬®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
+ PFX N Y 1
+*** sk_SK.orig.dic Sun Aug 14 16:48:21 2005
+--- sk_SK.dic Sun Aug 14 16:52:23 2005
+***************
+*** 166567,166568 ****
+ ¾viaka»/NX
+- 166567
+--- 166567 ----
diff --git a/runtime/spell/yi/main.aap b/runtime/spell/yi/main.aap
index 8160e83..31d057e 100644
--- a/runtime/spell/yi/main.aap
+++ b/runtime/spell/yi/main.aap
@@ -14,7 +14,7 @@
$SPELLDIR/yi.utf-8.spl : $VIM $FILES
:sys $VIM -u NONE -e -c "set enc=utf-8"
- -c "mkspell! $(SPELLDIR)/yi yi" -c q
+ -c "mkspell! $SPELLDIR/yi yi" -c q
../README_yi.txt : README.txt
:copy $source $target
diff --git a/runtime/syntax/verilogams.vim b/runtime/syntax/verilogams.vim
new file mode 100644
index 0000000..7141eca
--- /dev/null
+++ b/runtime/syntax/verilogams.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language: Verilog-AMS
+" Maintainer: S. Myles Prather <smprather@gmail.com>
+" Last Update: Sun Aug 14 03:58:00 CST 2003
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Set the local value of the 'iskeyword' option
+if version >= 600
+ setlocal iskeyword=@,48-57,_,192-255
+else
+ set iskeyword=@,48-57,_,192-255
+endif
+
+" Annex B.1 'All keywords'
+syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim
+syn keyword verilogamsStatement always analog analysis and asin
+syn keyword verilogamsStatement asinh assign atan atan2 atanh branch
+syn keyword verilogamsStatement buf bufif1 ceil cmos
+syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign
+syn keyword verilogamsStatement defparam disable discipline
+syn keyword verilogamsStatement driver_update edge enddiscipline
+syn keyword verilogamsStatement endconnectrules endmodule endfunction
+syn keyword verilogamsStatement endnature endparamset endprimitive endspecify
+syn keyword verilogamsStatement endtable endtask event exp final_step
+syn keyword verilogamsStatement flicker_noise floor flow force fork
+syn keyword verilogamsStatement function generate genvar highz0
+syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone initial
+syn keyword verilogamsStatement initial_step inout input join
+syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp
+syn keyword verilogamsStatement large last_crossing limexp ln localparam log
+syn keyword verilogamsStatement macromodule max medium min module nand nature
+syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not
+syn keyword verilogamsStatement notif0 notif1 or output paramset pmos
+syn keyword verilogamsType parameter real integer electrical input output
+syn keyword verilogamsType inout reg tri tri0 tri1 triand trior trireg
+syn keyword verilogamsType string from exclude aliasparam ground
+syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1
+syn keyword verilogamsStatement pullup pulldown rcmos release
+syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1
+syn keyword verilogamsStatement scalared sin sinh slew small specify specparam
+syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1
+syn keyword verilogamsStatement table tan tanh task time timer tran tranif0
+syn keyword verilogamsStatement tranif1 transition
+syn keyword verilogamsStatement vectored wait wand weak0 weak1
+syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd
+syn keyword verilogamsStatement zi_np zi_zd
+syn keyword verilogamsRepeat forever repeat while for
+syn keyword verilogamsLabel begin end
+syn keyword verilogamsConditional if else case casex casez default endcase
+syn match verilogamsConstant ":inf"lc=1
+syn match verilogamsConstant "-inf"lc=1
+" Annex B.2 Discipline/nature
+syn keyword verilogamsStatement abstol access continuous ddt_nature discrete
+syn keyword verilogamsStatement domain idt_nature units
+" Annex B.3 Connect Rules
+syn keyword verilogamsStatement connect merged resolveto split
+
+syn match verilogamsOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
+syn match verilogamsOperator "<+"
+syn match verilogamsStatement "[vV]("me=e-1
+syn match verilogamsStatement "[iI]("me=e-1
+
+syn keyword verilogamsTodo contained TODO
+syn region verilogamsComment start="/\*" end="\*/" contains=verilogamsTodo
+syn match verilogamsComment "//.*" contains=verilogamsTodo
+
+syn match verilogamsGlobal "`celldefine"
+syn match verilogamsGlobal "`default_nettype"
+syn match verilogamsGlobal "`define"
+syn match verilogamsGlobal "`else"
+syn match verilogamsGlobal "`elsif"
+syn match verilogamsGlobal "`endcelldefine"
+syn match verilogamsGlobal "`endif"
+syn match verilogamsGlobal "`ifdef"
+syn match verilogamsGlobal "`ifndef"
+syn match verilogamsGlobal "`include"
+syn match verilogamsGlobal "`line"
+syn match verilogamsGlobal "`nounconnected_drive"
+syn match verilogamsGlobal "`resetall"
+syn match verilogamsGlobal "`timescale"
+syn match verilogamsGlobal "`unconnected_drive"
+syn match verilogamsGlobal "`undef"
+syn match verilogamsSystask "$[a-zA-Z0-9_]\+\>"
+
+syn match verilogamsConstant "\<[A-Z][A-Z0-9_]\+\>"
+
+syn match verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
+
+syn region verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape
+syn match verilogamsEscape +\\[nt"\\]+ contained
+syn match verilogamsEscape "\\\o\o\=\o\=" contained
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+syn sync lines=50
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_verilogams_syn_inits")
+ if version < 508
+ let did_verilogams_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " The default highlighting.
+ HiLink verilogamsCharacter Character
+ HiLink verilogamsConditional Conditional
+ HiLink verilogamsRepeat Repeat
+ HiLink verilogamsString String
+ HiLink verilogamsTodo Todo
+ HiLink verilogamsComment Comment
+ HiLink verilogamsConstant Constant
+ HiLink verilogamsLabel Label
+ HiLink verilogamsNumber Number
+ HiLink verilogamsOperator Special
+ HiLink verilogamsStatement Statement
+ HiLink verilogamsGlobal Define
+ HiLink verilogamsDirective SpecialComment
+ HiLink verilogamsEscape Special
+ HiLink verilogamsType Type
+ HiLink verilogamsSystask Function
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "verilogams"
+
+" vim: ts=8
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 4b7d6fd..52104f4 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -425,6 +425,11 @@
nrs[lnum - eap->line1].col_nr = col;
nrs[lnum - eap->line1].lnum = lnum;
+
+ if (regmatch.regprog != NULL)
+ fast_breakcheck();
+ if (got_int)
+ goto theend;
}
/* Allocate a buffer that can hold the longest line. */
@@ -432,7 +437,7 @@
if (sortbuf == NULL)
goto theend;
- /* sort the array of line numbers */
+ /* Sort the array of line numbers. Note: can't be interrupted! */
qsort((void *)nrs, count, sizeof(sorti_T), sort_compare);
/* Insert the lines in the sorted order below the last one. */
@@ -448,6 +453,9 @@
if (unique)
STRCPY(sortbuf, s);
}
+ fast_breakcheck();
+ if (got_int)
+ goto theend;
}
/* delete the original lines if appending worked */
@@ -472,6 +480,8 @@
vim_free(nrs);
vim_free(sortbuf);
vim_free(regmatch.regprog);
+ if (got_int)
+ EMSG(_(e_interr));
}
/*
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 5ba7d8b..cd40a68 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1647,16 +1647,21 @@
if (i != 0)
{
+ pos_T save_pos = curwin->w_cursor;
+
/*
* First move cursor to end of match, then to start. This
* moves the whole match onto the screen when 'nowrap' is set.
*/
- i = curwin->w_cursor.col;
curwin->w_cursor.lnum += search_match_lines;
curwin->w_cursor.col = search_match_endcol;
+ if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+ {
+ curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ coladvance((colnr_T)MAXCOL);
+ }
validate_cursor();
- curwin->w_cursor.lnum -= search_match_lines;
- curwin->w_cursor.col = i;
+ curwin->w_cursor = save_pos;
}
validate_cursor();
diff --git a/src/getchar.c b/src/getchar.c
index 085fc4d..69cebae 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3325,6 +3325,9 @@
mp->m_noremap = noremap;
mp->m_silent = silent;
mp->m_mode = mode;
+#ifdef FEAT_EVAL
+ mp->m_script_ID = current_SID;
+#endif
did_it = TRUE;
}
}
@@ -3407,6 +3410,9 @@
mp->m_noremap = noremap;
mp->m_silent = silent;
mp->m_mode = mode;
+#ifdef FEAT_EVAL
+ mp->m_script_ID = current_SID;
+#endif
/* add the new entry in front of the abbrlist or maphash[] list */
if (abbrev)
@@ -3676,6 +3682,10 @@
msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
else
msg_outtrans_special(mp->m_str, FALSE);
+#ifdef FEAT_EVAL
+ if (p_verbose > 0)
+ last_set_msg(mp->m_script_ID);
+#endif
out_flush(); /* show one line at a time */
}
diff --git a/src/mbyte.c b/src/mbyte.c
index 61fd698..5fb4556 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -2876,6 +2876,10 @@
/* Skip "2byte-" and "8bit-". */
p = enc_skip(r);
+ /* Change "microsoft-cp" to "cp". Used in some spell files. */
+ if (STRNCMP(p, "microsoft-cp", 12) == 0)
+ mch_memmove(p, p + 10, STRLEN(p + 10) + 1);
+
/* "iso8859" -> "iso-8859" */
if (STRNCMP(p, "iso8859", 7) == 0)
{
diff --git a/src/regexp.c b/src/regexp.c
index c111778..1ff5a06 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -606,6 +606,7 @@
static int reg_string; /* matching with a string instead of a buffer
line */
+static int reg_strict; /* "[abc" is illegal */
/*
* META contains all characters that may be magic, except '^' and '$'.
@@ -1132,6 +1133,7 @@
else
reg_magic = MAGIC_OFF;
reg_string = (re_flags & RE_STRING);
+ reg_strict = (re_flags & RE_STRICT);
num_complex_braces = 0;
regnpar = 1;
@@ -2253,6 +2255,9 @@
*flagp |= HASWIDTH | SIMPLE;
break;
}
+ else if (reg_strict)
+ EMSG_M_RET_NULL(_("E769: Missing ] after %s["),
+ reg_magic > MAGIC_OFF);
}
/* FALLTHROUGH */
@@ -3172,6 +3177,9 @@
* can't go before line 1 */
if (reg_firstlnum + lnum < 1)
return NULL;
+ if (reg_firstlnum + lnum > reg_buf->b_ml.ml_line_count)
+ /* Must have matched the "\n" in the last line. */
+ return (char_u *)"";
return ml_get_buf(reg_buf, reg_firstlnum + lnum, FALSE);
}
@@ -3455,8 +3463,8 @@
/* if not currently on the first line, get it again */
if (reglnum != 0)
{
- regline = reg_getline((linenr_T)0);
reglnum = 0;
+ regline = reg_getline((linenr_T)0);
}
if (regline[col] == NUL)
break;
@@ -3723,7 +3731,8 @@
op = OP(scan);
/* Check for character class with NL added. */
- if (WITH_NL(op) && *reginput == NUL && reglnum < reg_maxline)
+ if (!reg_line_lbr && WITH_NL(op) && *reginput == NUL
+ && reglnum <= reg_maxline)
{
reg_nextline();
}
@@ -4369,7 +4378,7 @@
}
if (clnum == reg_endpos[no].lnum)
break; /* match and at end! */
- if (reglnum == reg_maxline)
+ if (reglnum >= reg_maxline)
{
status = RA_NOMATCH; /* text too short */
break;
@@ -4672,7 +4681,7 @@
break;
case NEWL:
- if ((c != NUL || reglnum == reg_maxline)
+ if ((c != NUL || reglnum > reg_maxline || reg_line_lbr)
&& (c != '\n' || !reg_line_lbr))
status = RA_NOMATCH;
else if (reg_line_lbr)
@@ -5133,7 +5142,8 @@
++count;
mb_ptr_adv(scan);
}
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline || count == maxcount)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr
+ || count == maxcount)
break;
++count; /* count the line-break */
reg_nextline();
@@ -5157,7 +5167,7 @@
}
else if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5186,7 +5196,7 @@
}
else if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5215,7 +5225,7 @@
}
else if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5240,7 +5250,7 @@
{
if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5270,7 +5280,7 @@
#endif
if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5433,7 +5443,7 @@
#endif
if (*scan == NUL)
{
- if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
+ if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5462,7 +5472,7 @@
case NEWL:
while (count < maxcount
- && ((*scan == NUL && reglnum < reg_maxline)
+ && ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr)
|| (*scan == '\n' && reg_line_lbr)))
{
count++;
diff --git a/src/search.c b/src/search.c
index bc5da67..af3215b 100644
--- a/src/search.c
+++ b/src/search.c
@@ -544,8 +544,13 @@
/* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */
else if (has_mbyte && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count
&& pos->col < MAXCOL - 2)
- extra_col = (*mb_ptr2len)(ml_get_buf(buf, pos->lnum, FALSE)
- + pos->col);
+ {
+ ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col;
+ if (*ptr == NUL)
+ extra_col = 1;
+ else
+ extra_col = (*mb_ptr2len)(ptr);
+ }
#endif
else
extra_col = 1;
diff --git a/src/spell.c b/src/spell.c
index 10390ec..114e3f2 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -35,7 +35,7 @@
* original case. The second one is only used for keep-case words and is
* usually small.
*
- * There is one additional tree for when prefixes are not applied when
+ * There is one additional tree for when not all prefixes are applied when
* generating the .spl file. This tree stores all the possible prefixes, as
* if they were words. At each word (prefix) end the prefix nr is stored, the
* following word must support this prefix nr. And the condition nr is
@@ -72,21 +72,6 @@
#define RESCORE(word_score, sound_score) ((3 * word_score + sound_score) / 4)
/*
- * The double scoring mechanism is based on the principle that there are two
- * kinds of spelling mistakes:
- * 1. You know how to spell the word, but mistype something. This results in
- * a small editing distance (character swapped/omitted/inserted) and
- * possibly a word that sounds completely different.
- * 2. You don't know how to spell the word and type something that sounds
- * right. The edit distance can be big but the word is similar after
- * sound-folding.
- * Since scores for these two mistakes will be very different we use a list
- * for each.
- * The sound-folding is slow, only do double scoring when 'spellsuggest' is
- * "double".
- */
-
-/*
* Vim spell file format: <HEADER>
* <SUGGEST>
* <LWORDTREE>
@@ -98,9 +83,10 @@
* <charflagslen> <charflags>
* <fcharslen> <fchars>
* <midwordlen> <midword>
+ * <compoundlen> <compoundtype> <compoundinfo>
* <prefcondcnt> <prefcond> ...
*
- * <fileID> 10 bytes "VIMspell09"
+ * <fileID> 10 bytes "VIMspell10"
* <regioncnt> 1 byte number of regions following (8 supported)
* <regionname> 2 bytes Region name: ca, au, etc. Lower case.
* First <regionname> is region 1.
@@ -116,6 +102,17 @@
* <midword> N bytes Characters that are word characters only when used
* in the middle of a word.
*
+ * <compoundlen> 2 bytes Number of bytes following for compound info (can
+ * be used to skip it when it's not understood).
+ *
+ * <compoundtype 1 byte 1: compound words using <comp1minlen> and
+ * <comp1flags>
+ *
+ * <comp1minlen> 1 byte minimal word length for compounding
+ *
+ * <comp1flags> N bytes flags used for compounding words
+ *
+ *
* <prefcondcnt> 2 bytes Number of <prefcond> items following.
*
* <prefcond> : <condlen> <condstr>
@@ -182,16 +179,16 @@
* follow in sorted order.
*
* <sibling>: <byte> [ <nodeidx> <xbyte>
- * | <flags> [<flags2>] [<region>] [<prefixID>]
- * | [<pflags>] <prefixID> <prefcondnr> ]
+ * | <flags> [<flags2>] [<region>] [<affixID>]
+ * | [<pflags>] <affixID> <prefcondnr> ]
*
* <byte> 1 byte Byte value of the sibling. Special cases:
* BY_NOFLAGS: End of word without flags and for all
* regions.
- * For PREFIXTREE <prefixID> and
+ * For PREFIXTREE <affixID> and
* <prefcondnr> follow.
* BY_FLAGS: End of word, <flags> follow.
- * For PREFIXTREE <pflags>, <prefixID>
+ * For PREFIXTREE <pflags>, <affixID>
* and <prefcondnr> follow.
* BY_FLAGS2: End of word, <flags> and <flags2>
* follow. Not used in PREFIXTREE.
@@ -210,7 +207,7 @@
* WF_RARE rare word
* WF_BANNED bad word
* WF_REGION <region> follows
- * WF_PFX <prefixID> follows
+ * WF_AFX <affixID> follows
*
* <flags2> 1 byte Only used when there are postponed prefixes.
* Bitmask of:
@@ -225,7 +222,7 @@
* omitted it's valid in all regions.
* Lowest bit is for region 1.
*
- * <prefixID> 1 byte ID of prefix that can be used with this word. For
+ * <affixID> 1 byte ID of affix that can be used with this word. In
* PREFIXTREE used for the required prefix ID.
*
* <prefcondnr> 2 bytes Prefix condition number, index in <prefcond> list
@@ -265,7 +262,7 @@
#define WF_ALLCAP 0x04 /* word must be all capitals */
#define WF_RARE 0x08 /* rare word */
#define WF_BANNED 0x10 /* bad word */
-#define WF_PFX 0x20 /* prefix ID follows */
+#define WF_AFX 0x20 /* affix ID follows */
#define WF_FIXCAP 0x40 /* keep-case word, allcap not allowed */
#define WF_KEEPCAP 0x80 /* keep-case word */
@@ -279,7 +276,7 @@
#define WFP_NC 0x02 /* prefix is not combining */
#define WFP_UP 0x04 /* to-upper prefix */
-/* flags for postponed prefixes. Must be above prefixID (one byte)
+/* Flags for postponed prefixes. Must be above affixID (one byte)
* and prefcondnr (two bytes). */
#define WF_RAREPFX (WFP_RARE << 24) /* in sl_pidxs: flag for rare
* postponed prefix */
@@ -343,8 +340,8 @@
* The "idxs" array stores the index of the child node corresponding to the
* byte in "byts".
* Exception: when the byte is zero, the word may end here and "idxs" holds
- * the flags, region mask and prefixID for the word. There may be several
- * zeros in sequence for alternative flag/region combinations.
+ * the flags, region mask and affixID for the word. There may be several
+ * zeros in sequence for alternative flag/region/affixID combinations.
*/
typedef struct slang_S slang_T;
struct slang_S
@@ -365,6 +362,9 @@
char_u *sl_midword; /* MIDWORD string or NULL */
+ int sl_compminlen; /* COMPOUNDMIN */
+ char_u *sl_compflags; /* COMPOUNDFLAGS (NULL when no compounding) */
+
int sl_prefixcnt; /* number of items in "sl_prefprog" */
regprog_T **sl_prefprog; /* table with regprogs for prefixes */
@@ -419,7 +419,7 @@
#define SP_LOCAL 2
#define SP_BAD 3
-#define VIMSPELLMAGIC "VIMspell09" /* string at start of Vim spell file */
+#define VIMSPELLMAGIC "VIMspell10" /* string at start of Vim spell file */
#define VIMSPELLMAGICL 10
/* file used for "zG" and "zW" */
@@ -510,7 +510,7 @@
/* for when checking word after a prefix */
int mi_prefarridx; /* index in sl_pidxs with list of
- prefixID/condition */
+ affixID/condition */
int mi_prefcnt; /* number of entries at mi_prefarridx */
int mi_prefixlen; /* byte length of prefix */
#ifdef FEAT_MBYTE
@@ -520,6 +520,9 @@
# define mi_cprefixlen mi_prefixlen /* it's the same value */
#endif
+ /* for when checking a compound word */
+ int mi_compoff; /* start of following word offset */
+
/* others */
int mi_result; /* result so far: SP_BAD, SP_OK, etc. */
int mi_capflags; /* WF_ONECAP WF_ALLCAP WF_KEEPCAP */
@@ -614,9 +617,11 @@
#define NOPREFIX 0xff /* not using prefixes */
/* mode values for find_word */
-#define FIND_FOLDWORD 0 /* find word case-folded */
-#define FIND_KEEPWORD 1 /* find keep-case word */
-#define FIND_PREFIX 2 /* find word after prefix */
+#define FIND_FOLDWORD 0 /* find word case-folded */
+#define FIND_KEEPWORD 1 /* find keep-case word */
+#define FIND_PREFIX 2 /* find word after prefix */
+#define FIND_COMPOUND 3 /* find case-folded compound word */
+#define FIND_KEEPCOMPOUND 4 /* find keep-case compound word */
static slang_T *slang_alloc __ARGS((char_u *lang));
static void slang_free __ARGS((slang_T *lp));
@@ -928,14 +933,19 @@
unsigned flags;
char_u *byts;
idx_T *idxs;
+ int word_ends;
- if (mode == FIND_KEEPWORD)
+ if (mode == FIND_KEEPWORD || mode == FIND_KEEPCOMPOUND)
{
/* Check for word with matching case in keep-case tree. */
ptr = mip->mi_word;
flen = 9999; /* no case folding, always enough bytes */
byts = slang->sl_kbyts;
idxs = slang->sl_kidxs;
+
+ if (mode == FIND_KEEPCOMPOUND)
+ /* Skip over the previously found word(s). */
+ wlen += mip->mi_compoff;
}
else
{
@@ -951,6 +961,13 @@
wlen = mip->mi_prefixlen;
flen -= mip->mi_prefixlen;
}
+ else if (mode == FIND_COMPOUND)
+ {
+ /* Skip over the previously found word(s). */
+ wlen = mip->mi_compoff;
+ flen -= mip->mi_compoff;
+ }
+
}
if (byts == NULL)
@@ -1058,7 +1075,13 @@
continue; /* not at first byte of character */
#endif
if (spell_iswordp(ptr + wlen, mip->mi_buf))
- continue; /* next char is a word character */
+ {
+ if (slang->sl_compflags == NULL)
+ continue; /* next char is a word character */
+ word_ends = FALSE;
+ }
+ else
+ word_ends = TRUE;
#ifdef FEAT_MBYTE
if (mode != FIND_KEEPWORD && has_mbyte)
@@ -1108,9 +1131,8 @@
/* When mode is FIND_PREFIX the word must support the prefix:
* check the prefix ID and the condition. Do that for the list at
* mip->mi_prefarridx that find_prefix() filled. */
- if (mode == FIND_PREFIX)
+ else if (mode == FIND_PREFIX)
{
- /* The prefix ID is stored two bytes above the flags. */
c = valid_word_prefix(mip->mi_prefcnt, mip->mi_prefarridx,
flags,
mip->mi_word + mip->mi_cprefixlen, slang,
@@ -1123,6 +1145,58 @@
flags |= WF_RARE;
}
+ if (mode == FIND_COMPOUND || mode == FIND_KEEPCOMPOUND
+ || !word_ends)
+ {
+ /* Makes you wonder why someone puts a compound flag on a word
+ * that's too short... Myspell compatibility requires this
+ * anyway. */
+ if (wlen < slang->sl_compminlen)
+ continue;
+
+ /* The word doesn't end or it comes after another: it must
+ * have a compound flag. */
+ /* TODO: check more flags */
+ if (*slang->sl_compflags != ((unsigned)flags >> 24))
+ continue;
+ }
+
+ if (!word_ends)
+ {
+ /* Check that a valid word follows. If there is one, it will
+ * set "mi_result", thus we are always finished here.
+ * Recursive! */
+
+ /* Find following word in case-folded tree. */
+ mip->mi_compoff = endlen[endidxcnt];
+#ifdef FEAT_MBYTE
+ if (has_mbyte && mode == FIND_KEEPWORD)
+ {
+ /* Compute byte length in case-folded word from "wlen":
+ * byte length in keep-case word. Length may change when
+ * folding case. This can be slow, take a shortcut when
+ * the case-folded word is equal to the keep-case word. */
+ p = mip->mi_fword;
+ if (STRNCMP(ptr, p, wlen) != 0)
+ {
+ for (s = ptr; s < ptr + wlen; mb_ptr_adv(s))
+ mb_ptr_adv(p);
+ mip->mi_compoff = p - mip->mi_fword;
+ }
+ }
+#endif
+ find_word(mip, FIND_COMPOUND);
+ if (mip->mi_result == SP_OK)
+ break;
+
+ /* Find following word in keep-case tree. */
+ mip->mi_compoff = wlen;
+ find_word(mip, FIND_KEEPCOMPOUND);
+ if (mip->mi_result == SP_OK)
+ break;
+ continue;
+ }
+
if (flags & WF_BANNED)
res = SP_BANNED;
else if (flags & WF_REGION)
@@ -1758,6 +1832,9 @@
vim_free(lp->sl_midword);
lp->sl_midword = NULL;
+ vim_free(lp->sl_compflags);
+ lp->sl_compflags = NULL;
+
#ifdef FEAT_MBYTE
{
int todo = lp->sl_map_hash.ht_used;
@@ -1870,6 +1947,7 @@
* <charflagslen> <charflags>
* <fcharslen> <fchars>
* <midwordlen> <midword>
+ * <compoundlen> <compoundtype> <compoundinfo>
* <prefcondcnt> <prefcond> ...
*/
for (i = 0; i < VIMSPELLMAGICL; ++i)
@@ -1929,6 +2007,41 @@
if (cnt < 0)
goto endFAIL;
+ /* <compoundlen> <compoundtype> <compoundinfo> */
+ cnt = (getc(fd) << 8) + getc(fd); /* <compoundlen> */
+ if (cnt < 0)
+ goto endFAIL;
+ if (cnt > 0)
+ {
+ --cnt;
+ c = getc(fd); /* <compoundtype> */
+ if (c != 1)
+ {
+ /* Unknown kind of compound words, skip the info. */
+ while (cnt-- > 0)
+ getc(fd);
+ }
+ else if (cnt < 2)
+ goto formerr;
+ else
+ {
+ --cnt;
+ c = getc(fd); /* <comp1minlen> */
+ if (c < 1 || c > 50)
+ c = 3;
+ lp->sl_compminlen = c;
+
+ p = alloc(cnt + 1);
+ if (p == NULL)
+ goto endFAIL;
+ lp->sl_compflags = p;
+ while (cnt-- > 0)
+ *p++ = getc(fd); /* <comp1flags> */
+ *p = NUL;
+ }
+ }
+
+
/* <prefcondcnt> <prefcond> ... */
cnt = (getc(fd) << 8) + getc(fd); /* <prefcondcnt> */
if (cnt > 0)
@@ -1943,7 +2056,7 @@
{
/* <prefcond> : <condlen> <condstr> */
n = getc(fd); /* <condlen> */
- if (n < 0)
+ if (n < 0 || n >= MAXWLEN)
goto formerr;
/* When <condlen> is zero we have an empty condition. Otherwise
* compile the regexp program used to check for the condition. */
@@ -2518,7 +2631,7 @@
else
c = 0;
- c |= getc(fd); /* <prefixID> */
+ c |= getc(fd); /* <affixID> */
n = (getc(fd) << 8) + getc(fd); /* <prefcondnr> */
if (n >= maxprefcondnr)
@@ -2536,8 +2649,8 @@
c = (getc(fd) << 8) + c; /* <flags2> */
if (c & WF_REGION)
c = (getc(fd) << 16) + c; /* <region> */
- if (c & WF_PFX)
- c = (getc(fd) << 24) + c; /* <prefixID> */
+ if (c & WF_AFX)
+ c = (getc(fd) << 24) + c; /* <affixID> */
}
idxs[idx] = c;
@@ -3110,9 +3223,12 @@
typedef struct afffile_S
{
char_u *af_enc; /* "SET", normalized, alloc'ed string or NULL */
+ int af_slash; /* character used in word for slash */
int af_rar; /* RAR ID for rare word */
int af_kep; /* KEP ID for keep-case word */
int af_bad; /* BAD ID for banned word */
+ char_u *af_compflags; /* COMPOUNDFLAG or COMPOUNDFLAGS */
+ int af_compminlen; /* COMPOUNDMIN */
int af_pfxpostpone; /* postpone prefixes without chop string */
hashtab_T af_pref; /* hashtable for prefixes, affheader_T */
hashtab_T af_suff; /* hashtable for suffixes, affheader_T */
@@ -3187,7 +3303,7 @@
siblings, in following siblings it is
always one. */
char_u wn_byte; /* Byte for this node. NUL for word end */
- char_u wn_prefixID; /* when "wn_byte" is NUL: supported/required
+ char_u wn_affixID; /* when "wn_byte" is NUL: supported/required
prefix ID or 0 */
short_u wn_flags; /* when "wn_byte" is NUL: WF_ flags */
short wn_region; /* when "wn_byte" is NUL: region mask; for
@@ -3245,6 +3361,8 @@
int si_rem_accents; /* soundsalike: remove accents */
garray_T si_map; /* MAP info concatenated */
char_u *si_midword; /* MIDWORD chars, alloc'ed string or NULL */
+ int si_compminlen; /* minimal length for compounding */
+ char_u *si_compflags; /* flags used for compounding */
garray_T si_prefcond; /* table with conditions for postponed
* prefixes, each stored as a string */
int si_newID; /* current value for ah_newID */
@@ -3258,6 +3376,7 @@
static void spell_free_aff __ARGS((afffile_T *aff));
static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile));
static char_u *get_pfxlist __ARGS((spellinfo_T *spin, afffile_T *affile, char_u *afflist));
+static char_u *get_compflags __ARGS((spellinfo_T *spin, char_u *afflist));
static int store_aff_word __ARGS((spellinfo_T *spin, char_u *word, char_u *afflist, afffile_T *affile, hashtab_T *ht, hashtab_T *xht, int comb, int flags, char_u *pfxlist));
static int spell_read_wordfile __ARGS((spellinfo_T *spin, char_u *fname));
static void *getroom __ARGS((spellinfo_T *spin, size_t len, int align));
@@ -3265,7 +3384,7 @@
static void free_blocks __ARGS((sblock_T *bl));
static wordnode_T *wordtree_alloc __ARGS((spellinfo_T *spin));
static int store_word __ARGS((spellinfo_T *spin, char_u *word, int flags, int region, char_u *pfxlist));
-static int tree_add_word __ARGS((spellinfo_T *spin, char_u *word, wordnode_T *tree, int flags, int region, int prefixID));
+static int tree_add_word __ARGS((spellinfo_T *spin, char_u *word, wordnode_T *tree, int flags, int region, int affixID));
static wordnode_T *get_wordnode __ARGS((spellinfo_T *spin));
static void deref_wordnode __ARGS((spellinfo_T *spin, wordnode_T *node));
static void free_wordnode __ARGS((spellinfo_T *spin, wordnode_T *n));
@@ -3547,6 +3666,14 @@
{
/* ignored, we look in the tree for what chars may appear */
}
+ else if (STRCMP(items[0], "SLASH") == 0 && itemcnt == 2
+ && aff->af_slash == 0)
+ {
+ aff->af_slash = items[1][0];
+ if (items[1][1] != NUL)
+ smsg((char_u *)_("Character used for SLASH must be ASCII; in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
else if (STRCMP(items[0], "RAR") == 0 && itemcnt == 2
&& aff->af_rar == 0)
{
@@ -3568,6 +3695,26 @@
if (items[1][1] != NUL)
smsg((char_u *)_(e_affname), fname, lnum, items[1]);
}
+ else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
+ && aff->af_compflags == 0)
+ {
+ aff->af_compflags = getroom_save(spin, items[1]);
+ if (items[1][1] != NUL)
+ smsg((char_u *)_(e_affname), fname, lnum, items[1]);
+ }
+ else if (STRCMP(items[0], "COMPOUNDFLAGS") == 0 && itemcnt == 2
+ && aff->af_compflags == 0)
+ {
+ aff->af_compflags = getroom_save(spin, items[1]);
+ }
+ else if (STRCMP(items[0], "COMPOUNDMIN") == 0 && itemcnt == 2
+ && aff->af_compminlen == 0)
+ {
+ aff->af_compminlen = atoi((char *)items[1]);
+ if (aff->af_compminlen == 0)
+ smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
else if (STRCMP(items[0], "PFXPOSTPONE") == 0 && itemcnt == 1)
{
aff->af_pfxpostpone = TRUE;
@@ -3688,7 +3835,10 @@
else
sprintf((char *)buf, "%s$", items[4]);
aff_entry->ae_prog = vim_regcomp(buf,
- RE_MAGIC + RE_STRING);
+ RE_MAGIC + RE_STRING + RE_STRICT);
+ if (aff_entry->ae_prog == NULL)
+ smsg((char_u *)_("Broken condition in %s line %d: %s"),
+ fname, lnum, items[4]);
}
/* For postponed prefixes we need an entry in si_prefcond
@@ -3908,7 +4058,7 @@
spin->si_sofoto = vim_strsave(items[1]);
}
else
- smsg((char_u *)_("Unrecognized item in %s line %d: %s"),
+ smsg((char_u *)_("Unrecognized or duplicate item in %s line %d: %s"),
fname, lnum, items[0]);
}
}
@@ -3952,6 +4102,28 @@
vim_free(upp);
}
+ /* Use compound specifications of the .aff file for the spell info. */
+ if (aff->af_compminlen != 0)
+ {
+ if (spin->si_compminlen != 0
+ && spin->si_compminlen != aff->af_compminlen)
+ smsg((char_u *)_("COMPOUNDMIN value differs from what is used in another .aff file"));
+ else
+ spin->si_compminlen = aff->af_compminlen;
+ }
+
+ if (aff->af_compflags != NULL)
+ {
+ if (spin->si_compflags != NULL
+ && STRCMP(spin->si_compflags, aff->af_compflags) != 0)
+ smsg((char_u *)_("COMPOUNDFLAG(S) value differs from what is used in another .aff file"));
+ else
+ spin->si_compflags = aff->af_compflags;
+
+ if (aff->af_pfxpostpone)
+ smsg((char_u *)_("Cannot use both PFXPOSTPONE and COMPOUNDFLAG(S)"));
+ }
+
vim_free(pc);
fclose(fd);
return aff;
@@ -4072,8 +4244,9 @@
{
hashtab_T ht;
char_u line[MAXLINELEN];
+ char_u *p;
char_u *afflist;
- char_u *pfxlist;
+ char_u *store_afflist;
char_u *dw;
char_u *pc;
char_u *w;
@@ -4086,6 +4259,7 @@
int retval = OK;
char_u message[MAXLINELEN + MAXWLEN];
int flags;
+ int duplicate = 0;
/*
* Open the file.
@@ -4139,10 +4313,20 @@
continue; /* empty line */
line[l] = NUL;
- /* Find the optional affix names. */
- afflist = vim_strchr(line, '/');
- if (afflist != NULL)
- *afflist++ = NUL;
+ /* Find the optional affix names. Replace the SLASH character by a
+ * slash. */
+ afflist = NULL;
+ for (p = line; *p != NUL; mb_ptr_adv(p))
+ {
+ if (*p == affile->af_slash)
+ *p = '/';
+ else if (*p == '/')
+ {
+ *p = NUL;
+ afflist = p + 1;
+ break;
+ }
+ }
/* Skip non-ASCII words when "spin->si_ascii" is TRUE. */
if (spin->si_ascii && has_non_ascii(line))
@@ -4197,13 +4381,20 @@
hash = hash_hash(dw);
hi = hash_lookup(&ht, dw, hash);
if (!HASHITEM_EMPTY(hi))
- smsg((char_u *)_("Duplicate word in %s line %d: %s"),
+ {
+ if (p_verbose > 0)
+ smsg((char_u *)_("Duplicate word in %s line %d: %s"),
fname, lnum, dw);
+ else if (duplicate == 0)
+ smsg((char_u *)_("First duplicate word in %s line %d: %s"),
+ fname, lnum, dw);
+ ++duplicate;
+ }
else
hash_add_item(&ht, hi, dw, hash);
flags = 0;
- pfxlist = NULL;
+ store_afflist = NULL;
if (afflist != NULL)
{
/* Check for affix name that stands for keep-case word and stands
@@ -4220,11 +4411,15 @@
if (affile->af_pfxpostpone)
/* Need to store the list of prefix IDs with the word. */
- pfxlist = get_pfxlist(spin, affile, afflist);
+ store_afflist = get_pfxlist(spin, affile, afflist);
+ else if (spin->si_compflags)
+ /* Need to store the list of affix IDs for compounding with
+ * the word. */
+ store_afflist = get_compflags(spin, afflist);
}
/* Add the word to the word tree(s). */
- if (store_word(spin, dw, flags, spin->si_region, pfxlist) == FAIL)
+ if (store_word(spin, dw, flags, spin->si_region, store_afflist) == FAIL)
retval = FAIL;
if (afflist != NULL)
@@ -4233,20 +4428,22 @@
* Additionally do matching prefixes that combine. */
if (store_aff_word(spin, dw, afflist, affile,
&affile->af_suff, &affile->af_pref,
- FALSE, flags, pfxlist) == FAIL)
+ FALSE, flags, store_afflist) == FAIL)
retval = FAIL;
/* Find all matching prefixes and add the resulting words. */
if (store_aff_word(spin, dw, afflist, affile,
&affile->af_pref, NULL,
- FALSE, flags, pfxlist) == FAIL)
+ FALSE, flags, store_afflist) == FAIL)
retval = FAIL;
}
}
+ if (duplicate > 0)
+ smsg((char_u *)_("%d duplicate word(s) in %s"), duplicate, fname);
if (spin->si_ascii && non_ascii > 0)
- smsg((char_u *)_("Ignored %d words with non-ASCII characters"),
- non_ascii);
+ smsg((char_u *)_("Ignored %d word(s) with non-ASCII characters in %s"),
+ non_ascii, fname);
hash_clear(&ht);
fclose(fd);
@@ -4303,6 +4500,49 @@
}
/*
+ * Get the list of affix IDs from the affix list "afflist" that are used for
+ * compound words.
+ * Returns a string allocated with getroom(). NULL when there are no relevant
+ * affixes or when out of memory.
+ */
+ static char_u *
+get_compflags(spin, afflist)
+ spellinfo_T *spin;
+ char_u *afflist;
+{
+ char_u *p;
+ int cnt;
+ int round;
+ char_u *res = NULL;
+
+ /* round 1: count the number of affix IDs.
+ * round 2: move affix IDs to "res" */
+ for (round = 1; round <= 2; ++round)
+ {
+ cnt = 0;
+ for (p = afflist; *p != NUL; ++p)
+ {
+ if (*p != ',' && *p != '-'
+ && vim_strchr(spin->si_compflags, *p) != NULL)
+ {
+ /* This is a compount affix ID. */
+ if (round == 2)
+ res[cnt] = *p;
+ ++cnt;
+ }
+ }
+ if (round == 1 && cnt > 0)
+ res = getroom(spin, cnt + 1, FALSE);
+ if (res == NULL)
+ break;
+ }
+
+ if (res != NULL)
+ res[cnt] = NUL;
+ return res;
+}
+
+/*
* Apply affixes to a word and store the resulting words.
* "ht" is the hashtable with affentry_T that need to be applied, either
* prefixes or suffixes.
@@ -4335,6 +4575,7 @@
int use_flags;
char_u *use_pfxlist;
int c;
+ int wordlen = STRLEN(word);
todo = ht->ht_used;
for (hi = ht->ht_array; todo > 0 && retval == OK; ++hi)
@@ -4355,12 +4596,16 @@
/* Check the condition. It's not logical to match case
* here, but it is required for compatibility with
* Myspell.
+ * Another requirement from Myspell is that the chop
+ * string is shorter than the word itself.
* For prefixes, when "PFXPOSTPONE" was used, only do
* prefixes with a chop string. */
regmatch.regprog = ae->ae_prog;
regmatch.rm_ic = FALSE;
if ((xht != NULL || !affile->af_pfxpostpone
|| ae->ae_chop != NULL)
+ && (ae->ae_chop == NULL
+ || STRLEN(ae->ae_chop) < wordlen)
&& (ae->ae_prog == NULL
|| vim_regexec(®match, word, (colnr_T)0)))
{
@@ -4798,13 +5043,13 @@
* Returns FAIL when out of memory.
*/
static int
-tree_add_word(spin, word, root, flags, region, prefixID)
+tree_add_word(spin, word, root, flags, region, affixID)
spellinfo_T *spin;
char_u *word;
wordnode_T *root;
int flags;
int region;
- int prefixID;
+ int affixID;
{
wordnode_T *node = root;
wordnode_T *np;
@@ -4836,7 +5081,7 @@
{
np->wn_flags = copyp->wn_flags;
np->wn_region = copyp->wn_region;
- np->wn_prefixID = copyp->wn_prefixID;
+ np->wn_affixID = copyp->wn_affixID;
}
/* Link the new node in the list, there will be one ref. */
@@ -4853,15 +5098,15 @@
/* Look for the sibling that has the same character. They are sorted
* on byte value, thus stop searching when a sibling is found with a
* higher byte value. For zero bytes (end of word) the sorting is
- * done on flags and then on prefixID. */
+ * done on flags and then on affixID. */
while (node != NULL
&& (node->wn_byte < word[i]
|| (node->wn_byte == NUL
&& (flags < 0
- ? node->wn_prefixID < prefixID
+ ? node->wn_affixID < affixID
: node->wn_flags < (flags & WN_MASK)
|| (node->wn_flags == (flags & WN_MASK)
- && node->wn_prefixID < prefixID)))))
+ && node->wn_affixID < affixID)))))
{
prev = &node->wn_sibling;
node = *prev;
@@ -4871,7 +5116,7 @@
|| (word[i] == NUL
&& (flags < 0
|| node->wn_flags != (flags & WN_MASK)
- || node->wn_prefixID != prefixID)))
+ || node->wn_affixID != affixID)))
{
/* Allocate a new node. */
np = get_wordnode(spin);
@@ -4899,7 +5144,7 @@
{
node->wn_flags = flags;
node->wn_region |= region;
- node->wn_prefixID = prefixID;
+ node->wn_affixID = affixID;
break;
}
prev = &node->wn_child;
@@ -5134,8 +5379,8 @@
for (np = node; np != NULL; np = np->wn_sibling)
{
if (np->wn_byte == NUL)
- /* end node: use wn_flags, wn_region and wn_prefixID */
- n = np->wn_flags + (np->wn_region << 8) + (np->wn_prefixID << 16);
+ /* end node: use wn_flags, wn_region and wn_affixID */
+ n = np->wn_flags + (np->wn_region << 8) + (np->wn_affixID << 16);
else
/* byte node: use the byte value and the child pointer */
n = np->wn_byte + ((long_u)np->wn_child << 8);
@@ -5173,7 +5418,7 @@
|| (p1->wn_byte == NUL
? (p1->wn_flags != p2->wn_flags
|| p1->wn_region != p2->wn_region
- || p1->wn_prefixID != p2->wn_prefixID)
+ || p1->wn_affixID != p2->wn_affixID)
: (p1->wn_child != p2->wn_child)))
break;
@@ -5249,6 +5494,7 @@
* <charflagslen> <charflags>
* <fcharslen> <fchars>
* <midwordlen> <midword>
+ * <compoundlen> <compoundtype> <compoundinfo>
* <prefcondcnt> <prefcond> ... */
/* <fileID> */
@@ -5297,6 +5543,20 @@
}
+ /* Write the compound info. */
+ if (spin->si_compflags == NULL)
+ put_bytes(fd, 0L, 2); /* <compoundlen> */
+ else
+ {
+ l = STRLEN(spin->si_compflags);
+ put_bytes(fd, (long_u)(l + 2), 2); /* <compoundlen> */
+ putc(1, fd); /* <compoundtype> */
+ putc(spin->si_compminlen, fd); /* <comp1minlen> */
+ fwrite(spin->si_compflags, (size_t)l, (size_t)1, fd);
+ /* <comp1flags> */
+ }
+
+
/* Write the prefix conditions. */
write_spell_prefcond(fd, &spin->si_prefcond);
@@ -5472,7 +5732,7 @@
/* For a NUL byte (end of word) write the flags etc. */
if (prefixtree)
{
- /* In PREFIXTREE write the required prefixID and the
+ /* In PREFIXTREE write the required affixID and the
* associated condition nr (stored in wn_region). The
* byte value is misused to store the "rare" and "not
* combining" flags */
@@ -5483,7 +5743,7 @@
putc(BY_FLAGS, fd); /* <byte> */
putc(np->wn_flags, fd); /* <pflags> */
}
- putc(np->wn_prefixID, fd); /* <prefixID> */
+ putc(np->wn_affixID, fd); /* <affixID> */
put_bytes(fd, (long_u)np->wn_region, 2); /* <prefcondnr> */
}
else
@@ -5492,8 +5752,8 @@
flags = np->wn_flags;
if (regionmask != 0 && np->wn_region != regionmask)
flags |= WF_REGION;
- if (np->wn_prefixID != 0)
- flags |= WF_PFX;
+ if (np->wn_affixID != 0)
+ flags |= WF_AFX;
if (flags == 0)
{
/* word without flags or region */
@@ -5514,8 +5774,8 @@
}
if (flags & WF_REGION)
putc(np->wn_region, fd); /* <region> */
- if (flags & WF_PFX)
- putc(np->wn_prefixID, fd); /* <prefixID> */
+ if (flags & WF_AFX)
+ putc(np->wn_affixID, fd); /* <affixID> */
}
}
}
diff --git a/src/structs.h b/src/structs.h
index 4da6862..af859bf 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -901,9 +901,8 @@
int m_mode; /* valid mode */
int m_noremap; /* if non-zero no re-mapping for m_str */
char m_silent; /* <silent> used, don't echo commands */
-#if 0 /* Not used yet */
- scid_T m_script_ID; /* ID of script where map was defined,
- used for s: variables and functions */
+#ifdef FEAT_EVAL
+ scid_T m_script_ID; /* ID of script where map was defined */
#endif
};
diff --git a/src/undo.c b/src/undo.c
index 362b317..34e1f40 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -404,6 +404,12 @@
}
for (i = 0, lnum = top + 1; i < size; ++i)
{
+ fast_breakcheck();
+ if (got_int)
+ {
+ u_freeentry(uep, i);
+ return FAIL;
+ }
if ((uep->ue_array[i] = u_save_line(lnum++)) == NULL)
{
u_freeentry(uep, i);
diff --git a/src/version.h b/src/version.h
index d929fcc..4b69735 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 12)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 12, compiled "
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 15)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 15, compiled "
diff --git a/src/vim.h b/src/vim.h
index 812ef6f..2760330 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -837,6 +837,7 @@
/* Second argument for vim_regcomp(). */
#define RE_MAGIC 1 /* 'magic' option */
#define RE_STRING 2 /* match in string instead of buffer text */
+#define RE_STRICT 4 /* don't allow [abc] without ] */
#ifdef FEAT_SYN_HL
/* values for reg_do_extmatch */