#include "support/filetools.h"
#include "support/Package.h"
#include "support/FileName.h"
-#include "support/Path.h"
+#include "support/PathChanger.h"
#include <aspell.h>
typedef std::map<std::string, Speller> Spellers;
typedef map<std::string, PersonalWordList *> LangPersonalWordList;
-} // anon namespace
+} // namespace
struct AspellChecker::Private
{
{
return "/lib/aspell-0.60";
}
-
};
LangPersonalWordList::const_iterator pdit = personal_.begin();
LangPersonalWordList::const_iterator pdet = personal_.end();
-
+
for (; pdit != pdet; ++pdit) {
- if ( 0 == pdit->second)
+ if (0 == pdit->second)
continue;
PersonalWordList * pd = pdit->second;
pd->save();
string const & lang, string const & variety)
{
FileName base(basepath);
- bool have_dict = base.isDirectory() ;
+ bool have_dict = base.isDirectory();
if (have_dict) {
FileName data(addPath(base.absFileName(), datapath));
have_dict = isValidDictionary(config, lang, variety);
}
}
- return have_dict ;
+ return have_dict;
}
{
AspellConfig * config = new_aspell_config();
bool have_dict = false;
- string const sysdir = lyx::support::package().system_support().absFileName() ;
- string const userdir = lyx::support::package().user_support().absFileName() ;
+ string const sysdir = lyx::support::package().system_support().absFileName();
+ string const userdir = lyx::support::package().user_support().absFileName();
LYXERR(Debug::FILES, "aspell user dir: " << userdir);
have_dict = checkAspellData(config, userdir, dataDirectory(), dictDirectory(), lang, variety);
}
if (!have_dict) {
// check for package data of OS installation
- have_dict = checkAspellData(config, osPackageBase(), osPackageDataDirectory(), osPackageDictDirectory(), lang, variety);
+ checkAspellData(config, osPackageBase(), osPackageDataDirectory(), osPackageDictDirectory(), lang, variety);
}
- return config ;
+ return config;
}
void AspellChecker::Private::addToSession(AspellCanHaveError * speller, docstring const & word)
{
string const word_to_add = toAspellWord(word);
- if(1 != aspell_speller_add_to_session(to_aspell_speller(speller), word_to_add.c_str(), -1))
+ if (1 != aspell_speller_add_to_session(to_aspell_speller(speller), word_to_add.c_str(), -1))
LYXERR(Debug::GUI, "aspell add to session: " << aspell_error_message(speller));
}
personal_[lang->lang()] = pd;
initSessionDictionary(m, pd);
}
-
+
spellers_[lang->lang()] = m;
return m.e_speller ? to_aspell_speller(m.e_speller) : 0;
}
SpellChecker::Result AspellChecker::Private::check(
- AspellSpeller * m, WordLangTuple const & word)
+ AspellSpeller * m, WordLangTuple const & word)
const
{
SpellChecker::Result result = WORD_OK;
docstring w1;
+ LYXERR(Debug::GUI, "spellCheck: \"" <<
+ word.word() << "\", lang = " << word.lang()->lang()) ;
docstring rest = split(word.word(), w1, '-');
for (; result == WORD_OK;) {
string const word_str = toAspellWord(w1);
int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
- LASSERT(word_ok != -1, /**/);
+ LASSERT(word_ok != -1, return UNKNOWN_WORD);
result = (word_ok) ? WORD_OK : UNKNOWN_WORD;
if (rest.empty())
break;
- rest = split(rest,w1,'-');
+ rest = split(rest, w1, '-');
}
if (result == WORD_OK)
return result;
string const word_str = toAspellWord(word.word());
int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
- LASSERT(word_ok != -1, /**/);
+ LASSERT(word_ok != -1, return UNKNOWN_WORD);
return (word_ok) ? WORD_OK : UNKNOWN_WORD;
}
}
}
-
+
void AspellChecker::Private::insert(WordLangTuple const & word)
{
Spellers::iterator it = spellers_.find(word.lang()->lang());
SpellChecker::Result AspellChecker::check(WordLangTuple const & word)
{
-
AspellSpeller * m = d->speller(word.lang());
if (!m)
string const word = d->toAspellWord(wl.word());
AspellWordList const * sugs =
aspell_speller_suggest(m, word.c_str(), -1);
- LASSERT(sugs != 0, /**/);
+ LASSERT(sugs != 0, return);
AspellStringEnumeration * els = aspell_word_list_elements(sugs);
if (!els || aspell_word_list_empty(sugs))
return;
{
return d->numDictionaries();
}
-
-
+
+
docstring const AspellChecker::error()
{
Spellers::iterator it = d->spellers_.begin();