X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSpellChecker.h;h=f908ba2b471008e7f7f5b2d1f690dc5b4544f8e7;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=c6e3748c848ffb79058104f2dbd22fda6030a219;hpb=1f53de65928c5d09b343c2beed9f37060e82b611;p=lyx.git diff --git a/src/SpellChecker.h b/src/SpellChecker.h index c6e3748c84..f908ba2b47 100644 --- a/src/SpellChecker.h +++ b/src/SpellChecker.h @@ -19,6 +19,7 @@ namespace lyx { class BufferParams; +class Language; class WordLangTuple; class docstring_list; @@ -31,39 +32,94 @@ public: /// the result from checking a single word enum Result { /// word is correct - OK = 1, + WORD_OK = 1, /// root of given word was found - ROOT, + ROOT_FOUND, /// word found through compound formation COMPOUND_WORD, /// word not found UNKNOWN_WORD, /// number of other ignored "word" - IGNORED_WORD + IGNORED_WORD, + /// number of personal dictionary "word" + LEARNED_WORD, + /// missing dictionary for language + NO_DICTIONARY }; + SpellChecker() : change_number_(0) {} + virtual ~SpellChecker() {} + /// does the spell check failed + static bool misspelled(Result res) { + return res != WORD_OK + && res != IGNORED_WORD + && res != NO_DICTIONARY + && res != LEARNED_WORD; } + /// check the given word of the given lang code and return the result virtual enum Result check(WordLangTuple const &) = 0; - + /// Gives suggestions. virtual void suggest(WordLangTuple const &, docstring_list & suggestions) = 0; + /// Lemmatizing: return stem of word (used by Thesaurus). + virtual void stem(WordLangTuple const &, docstring_list & suggestions) = 0; + /// insert the given word into the personal dictionary virtual void insert(WordLangTuple const &) = 0; + /// remove the given word from the personal dictionary + virtual void remove(WordLangTuple const &) = 0; + /// accept the given word temporarily virtual void accept(WordLangTuple const &) = 0; + /// check if dictionary exists + virtual bool hasDictionary(Language const *) const = 0; + + /// how many valid dictionaries were found + virtual int numDictionaries() const = 0; + + /// if speller can spell check whole paragraph return true + virtual bool canCheckParagraph() const { return false; } + + /// count of misspelled words + virtual int numMisspelledWords() const { return 0; } + + /// start position and length of misspelled word at index + virtual void misspelledWord( + int /* index */, + int & start, int & length) const + { + /// index is used here to make the compiler happy + start = 0; + length = 0; + } + /// give an error message on messy exit virtual docstring const error() = 0; + + /// spell checker state versioning support + typedef unsigned long int ChangeNumber ; + ChangeNumber changeNumber() const { return change_number_; } + void changeNumber(ChangeNumber value) { change_number_ = value; } + void nextChangeNumber() { ++change_number_; } + virtual void advanceChangeNumber() = 0; + +private: + ChangeNumber change_number_; }; /// Access to the singleton SpellChecker. /// Implemented in LyX.cpp SpellChecker * theSpellChecker(); +/// Set the singleton SpellChecker engine. +/// Implemented in LyX.cpp +void setSpellChecker(); + } // namespace lyx #endif // SPELL_BASE_H