From b4b43bb572ca4c6fab846515274913bdb5ee2aed Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 19 Sep 2014 16:04:11 +0200 Subject: updated for version 7.4.447 Problem: Spell files from Hunspell may generate a lot of errors. Solution: Add the IGNOREEXTRA flag. --- runtime/doc/spell.txt | 11 +++++++++++ src/spell.c | 13 ++++++++++--- src/version.c | 2 ++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index 3ffd8932e1..e1cc6a593c 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1058,6 +1058,9 @@ this text to start with a "#" so that mistakes don't go unnoticed. Example: SFX F 0 in [^i]n # Spion > Spionin ~ SFX F 0 nen in # Bauerin > Bauerinnen ~ +However, to avoid lots of errors in affix files written for Myspell, you can +add the IGNOREEXTRA flag. + Apparently Myspell allows an affix name to appear more than once. Since this might also be a mistake, Vim checks for an extra "S". The affix files for Myspell that use this feature apparently have this flag. Example: @@ -1111,6 +1114,14 @@ Specifically, the affix flags can be used for: - CIRCUMFIX, as explained just below. +IGNOREEXTRA *spell-IGNOREEXTRA* + +Normally Vim gives an error for an extra field that does not start with '#'. +This avoids errors going unnoticed. However, some files created for Myspell +or Hunspell may contain many entries with an extra field. Use the IGNOREEXTRA +flag to avoid lots of errors. + + CIRCUMFIX *spell-CIRCUMFIX* The CIRCUMFIX flag means a prefix and suffix must be added at the same time. diff --git a/src/spell.c b/src/spell.c index 50636421ea..1e52dfb26e 100644 --- a/src/spell.c +++ b/src/spell.c @@ -4841,6 +4841,7 @@ typedef struct afffile_S unsigned af_nosuggest; /* NOSUGGEST ID */ int af_pfxpostpone; /* postpone prefixes without chop string and without flags */ + int af_ignoreextra; /* IGNOREEXTRA present */ hashtab_T af_pref; /* hashtable for prefixes, affheader_T */ hashtab_T af_suff; /* hashtable for suffixes, affheader_T */ hashtab_T af_comp; /* hashtable for compound flags, compitem_T */ @@ -5605,6 +5606,10 @@ spell_read_aff(spin, fname) { aff->af_pfxpostpone = TRUE; } + else if (is_aff_rule(items, itemcnt, "IGNOREEXTRA", 1)) + { + aff->af_ignoreextra = TRUE; + } else if ((STRCMP(items[0], "PFX") == 0 || STRCMP(items[0], "SFX") == 0) && aff_todo == 0 @@ -5712,9 +5717,11 @@ spell_read_aff(spin, fname) int lasti = 5; /* Myspell allows extra text after the item, but that might - * mean mistakes go unnoticed. Require a comment-starter. - * Hunspell uses a "-" item. */ - if (itemcnt > lasti && *items[lasti] != '#' + * mean mistakes go unnoticed. Require a comment-starter, + * unless IGNOREEXTRA is used. Hunspell uses a "-" item. */ + if (itemcnt > lasti + && !aff->af_ignoreextra + && *items[lasti] != '#' && (STRCMP(items[lasti], "-") != 0 || itemcnt != lasti + 1)) smsg((char_u *)_(e_afftrailing), fname, lnum, items[lasti]); diff --git a/src/version.c b/src/version.c index 53fcc8f0df..4950539296 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 447, /**/ 446, /**/ -- cgit v1.2.3