mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 19:07:45 +00:00
#7660 with aspell backend split words on hard hyphens to check parts separately because hyphen is not allowed to be part of a word - neither in regular nor in personal dictionary
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39395 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
6cb62d3704
commit
e309590df8
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "support/lassert.h"
|
#include "support/lassert.h"
|
||||||
#include "support/debug.h"
|
#include "support/debug.h"
|
||||||
|
#include "support/lstrings.h"
|
||||||
#include "support/docstring_list.h"
|
#include "support/docstring_list.h"
|
||||||
|
|
||||||
#include "support/filetools.h"
|
#include "support/filetools.h"
|
||||||
@ -311,17 +312,36 @@ AspellSpeller * AspellChecker::Private::speller(Language const * lang)
|
|||||||
return addSpeller(lang);
|
return addSpeller(lang);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string AspellChecker::Private::toAspellWord(docstring const & word) const
|
string AspellChecker::Private::toAspellWord(docstring const & word) const
|
||||||
{
|
{
|
||||||
return to_utf8(word);
|
size_t mpos;
|
||||||
|
string word_str = to_utf8(word);
|
||||||
|
while ((mpos = word_str.find('-')) != word_str.npos) {
|
||||||
|
word_str.erase(mpos, 1);
|
||||||
|
}
|
||||||
|
return word_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SpellChecker::Result AspellChecker::Private::check(
|
SpellChecker::Result AspellChecker::Private::check(
|
||||||
AspellSpeller * m, WordLangTuple const & word)
|
AspellSpeller * m, WordLangTuple const & word)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
|
SpellChecker::Result result = WORD_OK;
|
||||||
|
docstring w1;
|
||||||
|
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, /**/);
|
||||||
|
result = (word_ok) ? WORD_OK : UNKNOWN_WORD;
|
||||||
|
if (rest.empty())
|
||||||
|
break;
|
||||||
|
rest = split(rest,w1,'-');
|
||||||
|
}
|
||||||
|
if (result == WORD_OK)
|
||||||
|
return result;
|
||||||
string const word_str = toAspellWord(word.word());
|
string const word_str = toAspellWord(word.word());
|
||||||
int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
|
int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
|
||||||
LASSERT(word_ok != -1, /**/);
|
LASSERT(word_ok != -1, /**/);
|
||||||
|
Loading…
Reference in New Issue
Block a user