]> git.lyx.org Git - lyx.git/blobdiff - src/SpellChecker.h
Fix bug #12772
[lyx.git] / src / SpellChecker.h
index 04b657cbd243cad5f99dec3fea788c8aa420d17d..58e5de6bd2acc66fefb723abcfd510da27d1cfb9 100644 (file)
@@ -14,6 +14,7 @@
 #define SPELL_BASE_H
 
 #include "support/strfwd.h"
+#include <vector>
 
 
 namespace lyx {
@@ -42,23 +43,35 @@ public:
                /// number of other ignored "word"
                IGNORED_WORD,
                /// number of personal dictionary "word"
-               LEARNED_WORD
+               LEARNED_WORD,
+               /// number of document dictionary "word"
+               DOCUMENT_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 != SpellChecker::WORD_OK
-                       && res != SpellChecker::IGNORED_WORD
-                       && res != SpellChecker::LEARNED_WORD; }
+               return res != WORD_OK
+                       && res != IGNORED_WORD
+                       && res != NO_DICTIONARY
+                       && res != LEARNED_WORD
+                       && res != DOCUMENT_LEARNED_WORD; }
 
        /// check the given word of the given lang code and return the result
-       virtual enum Result check(WordLangTuple const &) = 0;
+       virtual enum Result check(WordLangTuple const &,
+                                 std::vector<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;
 
@@ -71,6 +84,9 @@ public:
        /// 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; }
 
@@ -89,6 +105,16 @@ public:
 
        /// 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.