X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fspellchecker.C;h=609aa93502e7406cf83ca63ca8df60e15f60a9ec;hb=c90c5e6386ce69c34c99b3594d6fa452e6a13161;hp=53492cefbe31d49a770155bf9d9a3b4d79463f23;hpb=adaef99e60e28eba8c413a3472cc71e234718af0;p=lyx.git diff --git a/src/spellchecker.C b/src/spellchecker.C index 53492cefbe..609aa93502 100644 --- a/src/spellchecker.C +++ b/src/spellchecker.C @@ -65,17 +65,15 @@ #include "encoding.h" #include "support/lstrings.h" -//#define USE_PSPELL 1 - #ifdef USE_PSPELL - -#include - +# include #endif using std::reverse; using std::endl; +namespace { + // Spellchecker status enum { ISP_OK = 1, @@ -86,19 +84,20 @@ enum { ISP_IGNORE }; -static bool RunSpellChecker(BufferView * bv); +bool RunSpellChecker(BufferView * bv); #ifndef USE_PSPELL -static FILE * in, * out; /* streams to communicate with ispell */ +FILE * in; +FILE * out; /* streams to communicate with ispell */ pid_t isp_pid = -1; // pid for the `ispell' process. Also used (RO) in // lyx_cb.C // the true spell checker program being used enum ActualSpellChecker {ASC_ISPELL, ASC_ASPELL}; -static ActualSpellChecker actual_spell_checker; +ActualSpellChecker actual_spell_checker; -static int isp_fd; +int isp_fd; #else @@ -106,13 +105,15 @@ PspellManager * sc; #endif -static FD_form_spell_options *fd_form_spell_options = 0; +} // namespace anon + + +// Non-static so that it can be redrawn if the xforms colors are re-mapped +FD_form_spell_options *fd_form_spell_options = 0; FD_form_spell_check *fd_form_spell_check = 0; -//void sigchldhandler(int sig); void sigchldhandler(pid_t pid, int *status); -//extern void sigchldchecker(int sig); extern void sigchldchecker(pid_t pid, int *status); #ifndef USE_PSPELL @@ -280,18 +281,19 @@ void SpellCheckerOptions() fl_raise_form(fd_form_spell_options->form_spell_options); } else { fl_show_form(fd_form_spell_options->form_spell_options, - FL_PLACE_MOUSE, FL_FULLBORDER, + FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT, _("Spellchecker Options")); } } +namespace { + #ifndef USE_PSPELL /***** Spellchecker *****/ // Could also use a clean up. (Asger Alstrup) -static void init_spell_checker(BufferParams const & params, string const & lang) { static char o_buf[BUFSIZ]; // jc: it could be smaller @@ -483,19 +485,19 @@ void init_spell_checker(BufferParams const & params, string const & lang) } } -static + bool sc_still_alive() { return isp_pid != -1; } -static + void sc_clean_up_after_error() { ::fclose(out); } + // Send word to ispell and get reply -static isp_result * sc_check_word(string const & word) { //Please rewrite to use string. @@ -550,7 +552,7 @@ isp_result * sc_check_word(string const & word) } -static inline +inline void close_spell_checker() { // Note: If you decide to optimize this out when it is not @@ -565,7 +567,7 @@ void close_spell_checker() } -static inline +inline void sc_insert_word(string const & word) { ::fputc('*', out); // Insert word in personal dictionary @@ -574,7 +576,7 @@ void sc_insert_word(string const & word) } -static inline +inline void sc_accept_word(string const & word) { ::fputc('@', out); // Accept in this session @@ -582,7 +584,8 @@ void sc_accept_word(string const & word) ::fputc('\n', out); } -static inline + +inline void sc_store_replacement(string const & mis, string const & cor) { if (actual_spell_checker == ASC_ASPELL) { ::fputs("$$ra ", out); @@ -597,7 +600,6 @@ void sc_store_replacement(string const & mis, string const & cor) { PspellCanHaveError * spell_error_object; -static void init_spell_checker(BufferParams const &, string const & lang) { PspellConfig * config = new_pspell_config(); @@ -614,12 +616,12 @@ void init_spell_checker(BufferParams const &, string const & lang) } } -static + bool sc_still_alive() { return true; } -static + void sc_clean_up_after_error() { delete_pspell_can_have_error(spell_error_object); @@ -627,8 +629,7 @@ void sc_clean_up_after_error() -// Send word to ispell and get reply -static +// Send word to pspell and get reply isp_result * sc_check_word(string const & word) { isp_result * result = new isp_result; @@ -652,28 +653,28 @@ isp_result * sc_check_word(string const & word) } -static inline +inline void close_spell_checker() { pspell_manager_save_all_word_lists(sc); } -static inline +inline void sc_insert_word(string const & word) { pspell_manager_add_to_personal(sc, word.c_str()); } -static inline +inline void sc_accept_word(string const & word) { pspell_manager_add_to_session(sc, word.c_str()); } -static inline +inline void sc_store_replacement(string const & mis, string const & cor) { pspell_manager_store_replacement(sc, mis.c_str(), cor.c_str()); @@ -681,6 +682,9 @@ void sc_store_replacement(string const & mis, string const & cor) #endif +} // namespace anon + + void ShowSpellChecker(BufferView * bv) { FL_OBJECT * obj; @@ -709,7 +713,7 @@ void ShowSpellChecker(BufferView * bv) fl_raise_form(fd_form_spell_check->form_spell_check); } else { fl_show_form(fd_form_spell_check->form_spell_check, - FL_PLACE_MOUSE, FL_FULLBORDER, + FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT, _("Spellchecker")); } fl_deactivate_object(fd_form_spell_check->slider); @@ -797,13 +801,20 @@ void ShowSpellChecker(BufferView * bv) // Perform a spell session -static +namespace { + bool RunSpellChecker(BufferView * bv) { isp_result * result; int newvalue; FL_OBJECT * obj; +#ifndef NEW_INSETS + // Open all floats + bv->allFloats(1, 0); + bv->allFloats(1, 1); +#endif + #ifdef USE_PSPELL string tmp = (lyxrc.isp_use_alt_lang) ? lyxrc.isp_alt_lang : bv->buffer()->params.language->code(); @@ -965,11 +976,14 @@ bool RunSpellChecker(BufferView * bv) } } +} // namespace anon -#ifndef USE_PSPELL - +#ifdef WITH_WARNINGS +#warning should go somewhere more sensible +#endif void sigchldhandler(pid_t pid, int * status) -{ +{ +#ifndef USE_PSPELL if (isp_pid > 0) if (pid == isp_pid) { isp_pid= -1; @@ -977,14 +991,8 @@ void sigchldhandler(pid_t pid, int * status) to nonblocking so we can continue */ } +#endif sigchldchecker(pid, status); } -#else -void sigchldhandler(pid_t, int *) -{ - // do nothing -} - -#endif