X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fspellchecker.C;h=81153c61e0a01bbc0b1fef0ff59f4055e07f8c2a;hb=2b300d130c21037e9ae9cb547024be53111d2014;hp=b381cda727acf06b2f361c5619ac40c9183cc91c;hpb=783c043a7e2cde3dac318f819894d4e312fe30c1;p=lyx.git diff --git a/src/spellchecker.C b/src/spellchecker.C index b381cda727..81153c61e0 100644 --- a/src/spellchecker.C +++ b/src/spellchecker.C @@ -58,7 +58,9 @@ #include "lyx_gui_misc.h" #include "debug.h" #include "support/lstrings.h" +#include "language.h" #include "encoding.h" +#include "support/lstrings.h" //#define USE_PSPELL 1 @@ -486,7 +488,7 @@ bool sc_still_alive() { static void sc_clean_up_after_error() { - fclose(out); + ::fclose(out); } // Send word to ispell and get reply @@ -495,11 +497,11 @@ isp_result * sc_check_word(string const & word) { //Please rewrite to use string. - fputs(word.c_str(), out); - fputc('\n', out); + ::fputs(word.c_str(), out); + ::fputc('\n', out); char buf[1024]; - fgets(buf, 1024, in); + ::fgets(buf, 1024, in); /* I think we have to check if ispell is still alive here because the signal-handler could have disabled blocking on the fd */ @@ -563,28 +565,28 @@ void close_spell_checker() static inline void sc_insert_word(string const & word) { - fputc('*', out); // Insert word in personal dictionary - fputs(word.c_str(), out); - fputc('\n', out); + ::fputc('*', out); // Insert word in personal dictionary + ::fputs(word.c_str(), out); + ::fputc('\n', out); } static inline void sc_accept_word(string const & word) { - fputc('@', out); // Accept in this session - fputs(word.c_str(), out); - fputc('\n', out); + ::fputc('@', out); // Accept in this session + ::fputs(word.c_str(), out); + ::fputc('\n', out); } static inline void sc_store_replacement(string const & mis, string const & cor) { if(actual_spell_checker == ASC_ASPELL) { - fputs("$$ra ", out); - fputs(mis.c_str(), out); - fputc(',', out); - fputs(cor.c_str(), out); - fputc('\n', out); + ::fputs("$$ra ", out); + ::fputs(mis.c_str(), out); + ::fputc(',', out); + ::fputs(cor.c_str(), out); + ::fputc('\n', out); } } @@ -593,9 +595,12 @@ void sc_store_replacement(string const & mis, string const & cor) { PspellCanHaveError * spell_error_object; static -void init_spell_checker(BufferParams const &, string const & /* lang */) +void init_spell_checker(BufferParams const &, string const & lang) { PspellConfig * config = new_pspell_config(); + string code; + split(lang, code, '_'); + config->replace("language-tag", code.c_str()); spell_error_object = new_pspell_manager(config); if (pspell_error_number(spell_error_object) != 0) { spell_error = pspell_error_message(spell_error_object); @@ -624,6 +629,7 @@ static isp_result * sc_check_word(string const & word) { isp_result * result = new isp_result; +#warning Why isnt word_ok a bool? (Lgb) int word_ok = pspell_manager_check(sc, word.c_str()); Assert(word_ok != -1); @@ -721,12 +727,12 @@ void ShowSpellChecker(BufferView * bv) fl_set_object_lcol(fd_form_spell_check->input, FL_INACTIVE); fl_set_object_lcol(fd_form_spell_check->browser, FL_INACTIVE); - while (true){ + while (true) { obj = fl_do_forms(); - if (obj == fd_form_spell_check->options){ + if (obj == fd_form_spell_check->options) { SpellCheckerOptions(); } - if (obj == fd_form_spell_check->start){ + if (obj == fd_form_spell_check->start) { // activate insert, accept, and stop fl_activate_object(fd_form_spell_check->insert); fl_activate_object(fd_form_spell_check->accept); @@ -787,7 +793,7 @@ void ShowSpellChecker(BufferView * bv) } -// Perform an ispell session +// Perform a spell session static bool RunSpellChecker(BufferView * bv) { @@ -795,8 +801,22 @@ bool RunSpellChecker(BufferView * bv) int newvalue; FL_OBJECT * obj; - string tmp = (lyxrc.isp_use_alt_lang) ? lyxrc.isp_alt_lang : bv->buffer()->GetLanguage(); - bool rtl = tmp == "hebrew" || tmp == "arabic"; +#ifdef USE_PSPELL + string tmp = (lyxrc.isp_use_alt_lang) ? + lyxrc.isp_alt_lang : bv->buffer()->params.language_info->code(); +#else + string tmp = (lyxrc.isp_use_alt_lang) ? + lyxrc.isp_alt_lang : bv->buffer()->GetLanguage(); +#endif +#warning This is not good we should find a way to identify a rtl-language in a more general way. Please have a look Dekel! (Jug) +// For now I'll change this to a bit more general solution but +// Please comment on this if you don't like it. We probaly need +// anoter flag something like lyxrc.isp_use_alt_lang_rtl (true/false)! + bool rtl; + if (lyxrc.isp_use_alt_lang) + rtl = (tmp == "hebrew" || tmp == "arabic"); + else + rtl = bv->buffer()->params.language_info->RightToLeft(); int oldval = 0; /* used for updating slider only when needed */ float newval = 0.0;