]> git.lyx.org Git - lyx.git/blobdiff - src/EnchantChecker.cpp
Natbib authoryear uses (Ref1; Ref2) by default.
[lyx.git] / src / EnchantChecker.cpp
index 3f3b138f58a0d36a7f27f36758b4b4ca515832e8..77c9e309ed1c79fbb60ec94f5e266e5741ddf971 100644 (file)
@@ -40,7 +40,8 @@ typedef map<string, Speller> Spellers;
 
 struct EnchantChecker::Private
 {
-       Private() {}
+       Private()
+       {}
 
        ~Private();
 
@@ -60,9 +61,8 @@ EnchantChecker::Private::~Private()
        Spellers::iterator it = spellers_.begin();
        Spellers::iterator end = spellers_.end();
 
-       for (; it != end; ++it) {
+       for (; it != end; ++it)
                delete it->second.speller;
-       }
 }
 
 
@@ -97,9 +97,9 @@ enchant::Dict * EnchantChecker::Private::speller(string const & lang)
 }
 
 
-EnchantChecker::EnchantChecker(): d(new Private)
-{
-}
+EnchantChecker::EnchantChecker()
+       : d(new Private)
+{}
 
 
 EnchantChecker::~EnchantChecker()
@@ -113,30 +113,53 @@ SpellChecker::Result EnchantChecker::check(WordLangTuple const & word)
        enchant::Dict * m = d->speller(word.lang()->code());
 
        if (!m)
-               return OK;
+               return NO_DICTIONARY;
+
+       if (word.word().empty())
+               return WORD_OK;
 
        string utf8word = to_utf8(word.word());
 
        if (m->check(utf8word))
-               return OK;
+               return WORD_OK;
 
        return UNKNOWN_WORD;
 }
 
 
+void EnchantChecker::advanceChangeNumber()
+{
+       nextChangeNumber();
+}
+
+
 void EnchantChecker::insert(WordLangTuple const & word)
 {
        Spellers::iterator it = d->spellers_.find(word.lang()->code());
-       if (it != d->spellers_.end())
+       if (it != d->spellers_.end()) {
                it->second.speller->add(to_utf8(word.word()));
+               advanceChangeNumber();
+       }
+}
+       
+       
+void EnchantChecker::remove(WordLangTuple const & word)
+{
+       Spellers::iterator it = d->spellers_.find(word.lang()->code());
+       if (it != d->spellers_.end()) {
+               it->second.speller->remove(to_utf8(word.word()));
+               advanceChangeNumber();
+       }
 }
 
 
 void EnchantChecker::accept(WordLangTuple const & word)
 {
        Spellers::iterator it = d->spellers_.find(word.lang()->code());
-       if (it != d->spellers_.end())
+       if (it != d->spellers_.end()) {
                it->second.speller->add_to_session(to_utf8(word.word()));
+               advanceChangeNumber();
+       }
 }
 
 
@@ -168,6 +191,12 @@ bool EnchantChecker::hasDictionary(Language const * lang) const
 }
 
 
+int EnchantChecker::numDictionaries() const
+{
+       return d->spellers_.size();
+}
+       
+
 docstring const EnchantChecker::error()
 {
        return docstring();