X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fispell.C;h=ab7dfcb89cac694017d7e8c1f1b041f91fa76e28;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=65a51e3c18404b2cc22245b4099028aaa7b8b12d;hpb=4c6e0fe4226ce3b55d13726977f1e579f17c2ad1;p=lyx.git diff --git a/src/ispell.C b/src/ispell.C index 65a51e3c18..ab7dfcb89c 100644 --- a/src/ispell.C +++ b/src/ispell.C @@ -26,11 +26,16 @@ // 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 namespace lyx::support; +using boost::shared_ptr; #ifndef CXX_GLOBAL_CSTD using std::strcpy; @@ -40,19 +45,21 @@ using std::strpbrk; using std::endl; using std::max; +using std::string; namespace { -class LaunchIspell : public lyx::support::ForkedProcess { +class LaunchIspell : public support::ForkedProcess { + typedef support::ForkedProcess ForkedProcess; public: /// LaunchIspell(BufferParams const & p, string const & l, int * in, int * out, int * err) : params(p), lang(l), pipein(in), pipeout(out), pipeerr(err) {} /// - virtual lyx::support::ForkedProcess * clone() const { - return new LaunchIspell(*this); + virtual shared_ptr clone() const { + return shared_ptr(new LaunchIspell(*this)); } /// int start(); @@ -72,7 +79,7 @@ private: int LaunchIspell::start() { command_ = lyxrc.isp_command; - return runNonBlocking(); + return run(DontWait); } @@ -154,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'; @@ -240,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; } @@ -258,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]); @@ -370,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 '*': @@ -392,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; @@ -411,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); @@ -440,7 +447,10 @@ void ISpell::accept(WordLangTuple const & word) } -string const ISpell::error() +docstring const ISpell::error() { return error_; } + + +} // namespace lyx