Package-level Javadoc
Author: IBM

Provides facilities for spell-checking of comments and strings in Java source code.

## Package Specification

The content of this package extends the base functionality of the spell-checking engine.

It contains a spell-check engine specialized in Javadoc comments. Several dictionaries with Java specific content like Javadoc keywords, HTML tags and Task tags are provided. Additionally, the engine contributes correction proposals to the QuickFix processor. For non Java specific content the engine also contributes word completion proposals to the content assist processor.

### Spell-check engine

`SpellCheckEngine` is the default implementation of the interface `ISpellCheckEngine`. It provides a facade for dealing with the setup of a spell-checker. This class provides methods to retrieve the available dictionaries and is responsible for the registration of those with the spell-checker. `SpellCheckEngine` also has support for life-cycle management. Single dictionaries can be temporarily unloaded from memory or unregistered.
To contribute own dictionaries use the methods to register locale sensitive or insensitive dictionaries. A dictionary can be associated to a specified locale, but can also be available for spell-checking arbitrary text in arbitrary languages. The actual spell-checker for a specified language can then be obtained by calling `createSpellChecker(Locale)`. This is the central point to working with the spell-checker. When requesting a spell-checker for a specified locale, the engine looks up the corresponding dictionary and registers it with the spell-checker. Note that the dictionaries are lazily loaded and can be further optimized by prefiltering the queried words.

Note: Locale sensitive dictionaries must be located in the "dictionaries/" subdirectory of the JDT UI plugin install location. The dictionaries are newline-separated word lists having the filename "language_country.dictionary", where "language" and "country" are the lowercase ISO-3166 language and country codes, respectively. The default dictionary is "en_us.dictionary". For correct behavior of the spell-check engine, at least the default dictionary must be installed. The default dictionary corresponds to the default locale of the spell-check engine.

### Dictionaries

This implementation for a Javadoc comment spell-checker provides the following read-only dictionaries:

- A dictionary for Javadoc tags: This dictionary contains the most commonly used Javadoc tags. When spell-checking Javadoc comments, this dictionary contributes correction proposals to the QuickFix processor to correct misspelt Javadoc tags.
- A dictionary for HTML tags: This dictionary contains the most commonly used HTML tags for writing Javadoc comments. When spell-checking Javadoc- or multiline comments, this dictionary contributes correction proposals to the QuickFix processor as well as word completion proposals to the Content Assist processor.
- A dictionary for Task tags: This dictionary reflects the currently available Java Task tags. When spell-checking arbitrary text in Java files, this dictionary contributes proposals both to the QuickFix processor and the Content Assist processor.

### QuickFix processor

The comment spell-checker also contributes a quickfix processor as an extension. This implementation of a quickfix processor contributes the following correction proposals:

- Proposals for correct spelling: A number of words considered most similar to the incorrectly spelt word.
- The proposal to correct the sentence capitalization: This proposal is offered on incorrectly spelt words at the beginning of a sentence.
- The proposal to add the unrecognized word to the locale-insensitive dictionaries
- The proposal to ignore the word during the current editing session

### Content Assist processor

The last contribution of the spell-checker is the support for word completion. The spell-checker provides a custom content assist processor to produce word completion proposals.
Word completion works on all non Java code content types and delivers a number of proposals based on the current caret position.