Several dictionnaries may be defined for Spell checking feature. Patch from Semen Panevin 2:5025/121
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user