Several dictionnaries may be defined for Spell checking feature. Patch from Semen Panevin 2:5025/121

This commit is contained in:
Stas Degteff
2011-03-14 02:56:12 +00:00
parent 16dc90cfd8
commit 39bccb92ba
6 changed files with 184 additions and 23 deletions

View File

@@ -402,7 +402,7 @@ public:
gstrarray robotname;
#if defined(GCFG_SPELL_INCLUDED)
int scheckerenabled;
char scheckerdeflang[100];
char scheckerdeflang[10240];
Path scheckeruserdic;
Path scheckerdicpath;
#endif

View File

@@ -2094,7 +2094,7 @@ void IEclass::SaveMsg() {
#if defined(GCFG_SPELL_INCLUDED)
void IEclass::SCheckerMenu()
{
if (!schecker.IsLoaded())
if (!schecker.IsInited())
return;
const char *txt = currline->txt.c_str();
@@ -2852,7 +2852,15 @@ int IEclass::Start(int __mode, uint* __position, GMsg* __msg) {
if (CFG->scheckerenabled)
{
schecker.Init(CFG->xlatlocalset, CFG->scheckerdicpath);
schecker.Load(AA->adat->scheckerdeflang, CFG->scheckeruserdic);
char str[sizeof(AA->adat->scheckerdeflang)];
strncpy(str, AA->adat->scheckerdeflang, sizeof(str));
char *token = strtok(str, " ");
while(token != NULL)
{
schecker.Load(token, CFG->scheckeruserdic);
/* Get next token: */
token = strtok(NULL, " ");
}
}
#endif

View File

@@ -1113,7 +1113,7 @@ int GMenuSChecker::Run(CSpellChecker &schecker, const char *word)
size_t numrows = 7;
CSpellLangV &langs = schecker.GetLangs();
const char *lcode = schecker.GetLangCode();
std::vector<const char*> lcodes = schecker.GetLangCodes();
std::vector<std::string> langstr;
size_t langcount = langs.size();
@@ -1126,7 +1126,19 @@ int GMenuSChecker::Run(CSpellChecker &schecker, const char *word)
const char *code = langs[idx]->GetLangCode();
std::string buff = " ";
buff += streql(lcode, code) ? '\x10' : ' ';
bool loaded = false;
std::vector<const char*>::iterator langit;
for (langit = lcodes.begin(); langit != lcodes.end(); langit++)
{
if (streql(*langit, code))
{
loaded = true;
break;
}
}
buff += loaded ? '\x10' : ' ';
#if !(defined(GCFG_NO_MSSPELL) || defined(GCFG_NO_MYSPELL))
if (type == SCHECKET_TYPE_MSSPELL)
@@ -1224,7 +1236,14 @@ int GMenuSChecker::Run(CSpellChecker &schecker, const char *word)
}
else if ((finaltag > TAG_LANG) && (finaltag < TAG_MORE))
{
schecker.Load(langs[finaltag-TAG_LANG-1]->GetLangCode(), CFG->scheckeruserdic);
if (!schecker.IsLoaded(langs[finaltag-TAG_LANG-1]->GetLangCode()))
{
schecker.Load(langs[finaltag-TAG_LANG-1]->GetLangCode(), CFG->scheckeruserdic);
}
else
{
schecker.UnLoad(langs[finaltag-TAG_LANG-1]->GetLangCode());
}
return -2;
}

View File

@@ -384,7 +384,7 @@ struct AreaData
GPlay play;
int replyre;
#if defined(GCFG_SPELL_INCLUDED)
char scheckerdeflang[100];
char scheckerdeflang[10240];
#endif
char tagline[76];
char taglinechar;