care for a change of accept_compound and reconfigure the aspell backend accordingly

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39363 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Stephan Witt 2011-07-22 09:01:08 +00:00
parent 9b7b6ded7c
commit 1ffc210d0d

View File

@ -41,6 +41,7 @@ namespace {
struct Speller { struct Speller {
AspellConfig * config; AspellConfig * config;
AspellCanHaveError * e_speller; AspellCanHaveError * e_speller;
bool accept_compound;
docstring_list ignored_words_; docstring_list ignored_words_;
}; };
@ -264,6 +265,7 @@ AspellSpeller * AspellChecker::Private::addSpeller(Language const * lang)
// Report run-together words as errors // Report run-together words as errors
aspell_config_replace(m.config, "run-together", "false"); aspell_config_replace(m.config, "run-together", "false");
m.accept_compound = lyxrc.spellchecker_accept_compound;
m.e_speller = new_aspell_speller(m.config); m.e_speller = new_aspell_speller(m.config);
if (aspell_error_number(m.e_speller) != 0) { if (aspell_error_number(m.e_speller) != 0) {
// FIXME: We should indicate somehow that this language is not supported. // FIXME: We should indicate somehow that this language is not supported.
@ -287,8 +289,24 @@ AspellSpeller * AspellChecker::Private::addSpeller(Language const * lang)
AspellSpeller * AspellChecker::Private::speller(Language const * lang) AspellSpeller * AspellChecker::Private::speller(Language const * lang)
{ {
Spellers::iterator it = spellers_.find(lang->lang()); Spellers::iterator it = spellers_.find(lang->lang());
if (it != spellers_.end()) if (it != spellers_.end()) {
return to_aspell_speller(it->second.e_speller); Speller aspell = it->second;
if (lyxrc.spellchecker_accept_compound != aspell.accept_compound) {
// spell checker setting changed... adjust run-together
aspell.accept_compound = lyxrc.spellchecker_accept_compound;
if (aspell.accept_compound)
// Consider run-together words as legal compounds
aspell_config_replace(aspell.config, "run-together", "true");
else
// Report run-together words as errors
aspell_config_replace(aspell.config, "run-together", "false");
AspellCanHaveError * e_speller = aspell.e_speller;
aspell.e_speller = new_aspell_speller(aspell.config);
delete_aspell_speller(to_aspell_speller(e_speller));
spellers_[lang->lang()] = aspell;
}
return to_aspell_speller(aspell.e_speller);
}
return addSpeller(lang); return addSpeller(lang);
} }