X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fispell.C;h=ab7dfcb89cac694017d7e8c1f1b041f91fa76e28;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=08de736d831aedb0491d357087913f720d84cebc;hpb=e942a15dd8284d6c756bf752d5d56d0f818f70f1;p=lyx.git diff --git a/src/ispell.C b/src/ispell.C index 08de736d83..ab7dfcb89c 100644 --- a/src/ispell.C +++ b/src/ispell.C @@ -26,9 +26,14 @@ // HP-UX 11.x doesn't have this header #ifdef HAVE_SYS_SELECT_H -#include +# include #endif -#include +#ifdef HAVE_SYS_TIME_H +# include +#endif + + +namespace lyx { using boost::shared_ptr; @@ -45,8 +50,8 @@ using std::string; namespace { -class LaunchIspell : public lyx::support::ForkedProcess { - typedef lyx::support::ForkedProcess ForkedProcess; +class LaunchIspell : public support::ForkedProcess { + typedef support::ForkedProcess ForkedProcess; public: /// LaunchIspell(BufferParams const & p, string const & l, @@ -74,7 +79,7 @@ private: int LaunchIspell::start() { command_ = lyxrc.isp_command; - return runNonBlocking(); + return run(DontWait); } @@ -156,9 +161,9 @@ int LaunchIspell::generateChild() if (lyxrc.isp_use_input_encoding && params.inputenc != "default") { string enc = (params.inputenc == "auto") - ? params.language->encoding()->LatexName() + ? params.language->encoding()->latexName() : params.inputenc; - string::size_type n = enc.length(); + size_t const n = enc.length(); tmp = new char[3]; string("-T").copy(tmp, 2); tmp[2] = '\0'; @@ -242,7 +247,7 @@ ISpell::ISpell(BufferParams const & params, string const & lang) child_.reset(li); if (li->start() == -1) { error_ = _("Could not create an ispell process.\nYou may not have " - "the right languages installed."); + "the right languages installed."); child_.reset(0); return; } @@ -260,11 +265,11 @@ ISpell::ISpell(BufferParams const & params, string const & lang) } /* must have read something from stderr */ - error_ = buf; + error_ =from_utf8(buf); } else { // select returned error - error_ = _("The spell process returned an error.\nPerhaps " - "it has been configured wrongly ?"); + error_ = _("The ispell process returned an error.\nPerhaps " + "it has been configured wrongly ?"); } close(pipein[0]); @@ -372,19 +377,19 @@ enum ISpell::Result ISpell::check(WordLangTuple const & word) bool error = select(err_read); if (error) { - error_ = _("Could not communicate with the spell-checker program."); - return UNKNOWN; + error_ = _("Could not communicate with the ispell spellchecker process."); + return UNKNOWN_WORD; } if (err_read) { - error_ = buf; - return UNKNOWN; + error_ = from_utf8(buf); + return UNKNOWN_WORD; } // I think we have to check if ispell is still alive here because // the signal-handler could have disabled blocking on the fd if (!alive()) - return UNKNOWN; + return UNKNOWN_WORD; switch (*buf) { case '*': @@ -394,18 +399,18 @@ enum ISpell::Result ISpell::check(WordLangTuple const & word) res = ROOT; break; case '-': - res = COMPOUNDWORD; + res = COMPOUND_WORD; break; case '\n': - res = IGNORE; + res = IGNORED_WORD; break; case '#': // Not found, no near misses and guesses - res = UNKNOWN; + res = UNKNOWN_WORD; break; case '?': // Not found, and no near misses, but guesses (guesses are ignored) case '&': // Not found, but we have near misses { - res = MISSED; + res = SUGGESTED_WORDS; char * p = strpbrk(buf, ":"); str = new char[strlen(p) + 1]; e = str; @@ -413,11 +418,11 @@ enum ISpell::Result ISpell::check(WordLangTuple const & word) break; } default: // This shouldn't happen, but you know Murphy - res = UNKNOWN; + res = UNKNOWN_WORD; } *buf = 0; - if (res != IGNORE) { + if (res != IGNORED_WORD) { /* wait for ispell to finish */ while (*buf!= '\n') fgets(buf, 255, in); @@ -442,7 +447,10 @@ void ISpell::accept(WordLangTuple const & word) } -string const ISpell::error() +docstring const ISpell::error() { return error_; } + + +} // namespace lyx