Home Explore Blog CI



neovim

14th chunk of `runtime/doc/spell.txt`
3eae52145f972460cd19871988cd270cf5c218f4039d77c80000000100000fa9
 word and for
other properties of the word.  Normally single-character flags are used.  This
limits the number of possible flags, especially for 8-bit encodings.  The FLAG
item can be used if more affixes are to be used.  Possible values:

	FLAG long	use two-character flags
	FLAG num	use numbers, from 1 up to 65000
	FLAG caplong	use one-character flags without A-Z and two-character
			flags that start with A-Z

With "FLAG num" the numbers in a list of affixes need to be separated with a
comma: "234,2143,1435".  This method is inefficient, but useful if the file is
generated with a program.

When using "caplong" the two-character flags all start with a capital: "Aa",
"B1", "BB", etc.  This is useful to use one-character flags for the most
common items and two-character flags for uncommon items.

Note: When using utf-8 only characters up to 65000 may be used for flags.

Note: even when using "num" or "long" the number of flags available to
compounding and prefixes is limited to about 250.


AFFIXES						*spell-PFX* *spell-SFX*

The usual PFX (prefix) and SFX (suffix) lines are supported (see the Myspell
documentation or the Aspell manual:
http://aspell.net/man-html/Affix-Compression.html).

Summary:
	SFX L Y 2 ~
	SFX L 0 re [^x] ~
	SFX L 0 ro x ~

The first line is a header and has four fields:
	SFX {flag} {combine} {count}

{flag}		The name used for the suffix.  Mostly it's a single letter,
		but other characters can be used, see |spell-FLAG|.

{combine}	Can be 'Y' or 'N'.  When 'Y' then the word plus suffix can
		also have a prefix.  When 'N' then a prefix is not allowed.

{count}		The number of lines following.  If this is wrong you will get
		an error message.

For PFX the fields are exactly the same.

The basic format for the following lines is:
	SFX {flag} {strip} {add} {condition} {extra}

{flag}		Must be the same as the {flag} used in the first line.

{strip}		Characters removed from the basic word.  There is no check if
		the characters are actually there, only the length is used (in
		bytes).  This better match the {condition}, otherwise strange
		things may happen.  If the {strip} length is equal to or
		longer than the basic word the suffix won't be used.
		When {strip} is 0 (zero) then nothing is stripped.

{add}		Characters added to the basic word, after removing {strip}.
		Optionally there is a '/' followed by flags.  The flags apply
		to the word plus affix.  See |spell-affix-flags|

{condition}	A simplistic pattern.  Only when this matches with a basic
		word will the suffix be used for that word.  This is normally
		for using one suffix letter with different {add} and {strip}
		fields for words with different endings.
		When {condition} is a . (dot) there is no condition.
		The pattern may contain:
		- Literal characters.
		- A set of characters in []. [abc] matches a, b and c.
		  A dash is allowed for a range [a-c], but this is
		  Vim-specific.
		- A set of characters that starts with a ^, meaning the
		  complement of the specified characters. [^abc] matches any
		  character but a, b and c.

{extra}		Optional extra text:
		    # comment		Comment is ignored
		    -			Hunspell uses this, ignored

For PFX the fields are the same, but the {strip}, {add} and {condition} apply
to the start of the word.

Note: Myspell ignores any extra text after the relevant info.  Vim requires
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:

	SFX a Y 1 S ~
	SFX a 0 an . ~

	SFX a Y 2 S ~
	SFX a 0 en . ~
	SFX a 0 on . ~


AFFIX FLAGS						*spell-affix-flags*

This is a feature that comes from Hunspell:

Title: Affix Flags and Affixes (PFX and SFX)
Summary
This section details the usage of `FLAG` items in spell files, including `long`, `num`, and `caplong`, which allow for more complex flag systems than the single-character flags typically used. It then explains the structure of `PFX` (prefix) and `SFX` (suffix) lines, including the header format (`SFX {flag} {combine} {count}`) and the line format (`SFX {flag} {strip} {add} {condition} {extra}`). The purpose of each field (`flag`, `strip`, `add`, `condition`, `extra`) is explained. It also covers conditions for applying affixes, including character sets and complements, and mentions the IGNOREEXTRA flag. Finally it covers that Vim checks for an extra "S" when an affix name appears more than once.