>>>>> "Jean-Marc" == Jean-Marc Lasgouttes <[EMAIL PROTECTED]> writes:
Jean-Marc> After way too much time (this stuff takes long to get Jean-Marc> right), here is my version of your patch. It has to be good Jean-Marc> since diffstat says Jean-Marc> 14 files changed, 218 insertions(+), 80 deletions(-) Jean-Marc> whereas yours says Jean-Marc> 15 files changed, 255 insertions(+), 50 deletions(-) OK, I forgot SpellBase.C (which is the same as in your patch). Now, it becomes 15 files changed, 267 insertions(+), 80 deletions(-) Talk about interesting stats... JMarc
Index: configure.ac =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/configure.ac,v retrieving revision 1.47 diff -u -p -r1.47 configure.ac --- configure.ac 11 Mar 2005 10:49:09 -0000 1.47 +++ configure.ac 28 Apr 2005 16:14:27 -0000 @@ -132,12 +132,6 @@ AC_LIBTOOL_WIN32_DLL #AM_PROG_LIBTOOL LYX_PROG_LIBTOOL -### Check if we want spell libraries, prefer new aspell -CHECK_WITH_ASPELL -if test "$USING_ASPELL" != "yes"; then - CHECK_WITH_PSPELL -fi - ### Check for some Cygwin-specific details. CHECK_WITH_CYGWIN @@ -290,6 +284,37 @@ dnl possible with the compiler which wil AC_LANG_PUSH(C) AC_CHECK_FUNCS(mkfifo mkstemp mktemp lstat readlink) AC_LANG_POP(C) + +### Check if we want spell libraries, prefer new aspell +CHECK_WITH_ASPELL +if $lyx_use_aspell ; then : ; else + CHECK_WITH_PSPELL + if $lyx_use_pspell ; then : ; else + lyx_use_ispell=true + AC_LANG_PUSH(C) + AC_CHECK_FUNCS(select dup2,, [lyx_use_ispell=false]) + AC_LANG_POP(C) + AC_MSG_CHECKING([whether to use ispell]) + if $lyx_use_ispell ; then + AC_MSG_RESULT(yes) + AC_DEFINE(USE_ISPELL, 1, [Define as 1 to use an external ispell process for spell-checking]) + lyx_flags="$lyx_flags use-ispell" + else + AC_MSG_RESULT(no) + fi + fi +fi +AM_CONDITIONAL(USE_ASPELL, $lyx_use_aspell) +AM_CONDITIONAL(USE_PSPELL, $lyx_use_pspell) +AM_CONDITIONAL(USE_ISPELL, $lyx_use_ispell) + +lyx_client_subdir=true +AC_LANG_PUSH(C) +AC_CHECK_FUNCS(select socket,, [lyx_client_subdir=false]) +AM_CONDITIONAL(BUILD_CLIENT_SUBDIR, $lyx_client_subdir) + +AC_LANG_POP(C) + AC_FUNC_SELECT_ARGTYPES Index: config/aspell.m4 =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/config/aspell.m4,v retrieving revision 1.2 diff -u -p -r1.2 aspell.m4 --- config/aspell.m4 25 May 2004 14:42:08 -0000 1.2 +++ config/aspell.m4 28 Apr 2005 16:14:28 -0000 @@ -4,27 +4,23 @@ AC_DEFUN([CHECK_WITH_ASPELL], [ - AC_ARG_WITH(aspell, - AC_HELP_STRING([--with-aspell],[use ASpell libraries]), - [ - case "$withval" in - y*) USING_ASPELL="yes";; - *) USING_ASPELL="no";; - esac - ], - [ - USING_ASPELL="yes" - ]) + lyx_use_aspell=true + AC_ARG_WITH(aspell, AC_HELP_STRING([--with-aspell],[use ASpell libraries])) + test "$with_aspell" = "no" && lyx_use_aspell=false - if test "$USING_ASPELL" = "yes" ; then - AC_CHECK_HEADERS(aspell.h aspell/aspell.h, USING_ASPELL="yes", USING_ASPELL="no") - AC_CHECK_LIB(aspell, new_aspell_config, LIBS="-laspell $LIBS"; USING_ASPELL="yes", USING_ASPELL="no") + if $lyx_use_aspell ; then + AC_CHECK_HEADERS(aspell.h aspell/aspell.h, + [lyx_use_aspell=true; break;], + [lyx_use_aspell=false]) + AC_CHECK_LIB(aspell, new_aspell_config, LIBS="-laspell $LIBS", lyx_use_aspell=false) - if test "$USING_ASPELL" = "yes"; then + AC_MSG_CHECKING([whether to use aspell]) + if $lyx_use_aspell ; then + AC_MSG_RESULT(yes) AC_DEFINE(USE_ASPELL, 1, [Define as 1 to use the aspell library]) lyx_flags="$lyx_flags use-aspell" + else + AC_MSG_RESULT(no) fi fi - AC_MSG_CHECKING([whether to use aspell]) - AC_MSG_RESULT($USING_ASPELL) ]) Index: config/pspell.m4 =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/config/pspell.m4,v retrieving revision 1.10 diff -u -p -r1.10 pspell.m4 --- config/pspell.m4 25 May 2004 14:42:09 -0000 1.10 +++ config/pspell.m4 28 Apr 2005 16:14:28 -0000 @@ -3,27 +3,21 @@ AC_DEFUN([CHECK_WITH_PSPELL], [ - AC_ARG_WITH(pspell, - AC_HELP_STRING([--with-pspell],[use PSpell libraries]), - [ - case "$withval" in - y*) USING_PSPELL="yes";; - *) USING_PSPELL="no";; - esac - ], - [ - USING_PSPELL="yes" - ]) + lyx_use_pspell=true + AC_ARG_WITH(pspell, AC_HELP_STRING([--with-pspell],[use PSpell libraries])) + test "$with_pspell" = "no" && lyx_use_pspell=false - if test "$USING_PSPELL" = "yes" ; then - AC_CHECK_HEADERS(pspell/pspell.h, USING_PSPELL="yes", USING_PSPELL="no") - AC_CHECK_LIB(pspell, main, LIBS="-lpspell $LIBS"; USING_PSPELL="yes", USING_PSPELL="no") + if $lyx_use_pspell ; then + AC_CHECK_HEADERS(pspell/pspell.h,, lyx_use_pspell=false) + AC_CHECK_LIB(pspell, main, LIBS="-lpspell $LIBS", lyx_use_pspell=false) - if test "$USING_PSPELL" = "yes"; then + AC_MSG_CHECKING([whether to use pspell]) + if $lyx_use_pspell ; then + AC_MSG_RESULT(yes) AC_DEFINE(USE_PSPELL, 1, [Define as 1 to use the pspell library]) lyx_flags="$lyx_flags use-pspell" + else + AC_MSG_RESULT(no) fi fi - AC_MSG_CHECKING([whether to use pspell]) - AC_MSG_RESULT($USING_PSPELL) ]) Index: po/POTFILES.in =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/po/POTFILES.in,v retrieving revision 1.410 diff -u -p -r1.410 POTFILES.in --- po/POTFILES.in 25 Apr 2005 11:07:54 -0000 1.410 +++ po/POTFILES.in 28 Apr 2005 16:14:28 -0000 @@ -6,6 +6,7 @@ src/CutAndPaste.C src/LColor.C src/LaTeX.C src/MenuBackend.C +src/SpellBase.C src/buffer.C src/buffer_funcs.C src/bufferlist.C Index: src/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/Makefile.am,v retrieving revision 1.224 diff -u -p -r1.224 Makefile.am --- src/Makefile.am 31 Jan 2005 10:42:17 -0000 1.224 +++ src/Makefile.am 28 Apr 2005 16:14:28 -0000 @@ -4,7 +4,11 @@ DISTCLEANFILES += config.h libintl.h ver MAINTAINERCLEANFILES += $(srcdir)/config.h.in -SUBDIRS = mathed insets graphics support frontends . client tex2lyx +if BUILD_CLIENT_SUBDIR +CLIENT = client +endif + +SUBDIRS = mathed insets graphics support frontends . $(CLIENT) tex2lyx EXTRA_DIST = config.h.in stamp-h.in version.C.in \ Sectioning.h \ @@ -51,6 +55,18 @@ BUILT_SOURCES = version.C AM_CPPFLAGS = $(PCH_FLAGS) $(BOOST_INCLUDES) +if USE_ASPELL +ASPELL = aspell.C aspell_local.h +endif +if USE_PSPELL +PSPELL = pspell.C pspell.h +endif +if USE_ISPELL +ISPELL = ispell.C ispell.h +endif + + + lyx_SOURCES = \ Bidi.C \ Bidi.h \ @@ -101,8 +117,6 @@ lyx_SOURCES = \ ToolbarBackend.C \ ToolbarBackend.h \ WordLangTuple.h \ - aspell.C \ - aspell_local.h \ author.C \ author.h \ boost.C \ @@ -241,11 +255,8 @@ lyx_SOURCES = \ paragraph_pimpl.h \ pariterator.C \ pariterator.h \ + $(ASPELL) $(PSPELL) $(ISPELL) SpellBase.C \ SpellBase.h \ - ispell.C \ - ispell.h \ - pspell.C \ - pspell.h \ rowpainter.C \ rowpainter.h \ sgml.C \ Index: src/SpellBase.C =================================================================== RCS file: src/SpellBase.C diff -N src/SpellBase.C --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/SpellBase.C 28 Apr 2005 16:14:28 -0000 @@ -0,0 +1,49 @@ +/** + * \file SpellBase.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author unknown + * \author John Levon + * + * Full author contact details are available in file CREDITS. + */ + +#include <config.h> + +#include "SpellBase.h" +#include "gettext.h" + +using std::string; + + +bool SpellBase::alive() +{ + return false; +} + + +SpellBase::Result SpellBase::check(WordLangTuple const &) +{ + return UNKNOWN_WORD; +} + + +void SpellBase::insert(WordLangTuple const &) +{} + + +void SpellBase::accept(WordLangTuple const &) +{} + + +string const SpellBase::nextMiss() +{ + return string(); +} + + +string const SpellBase::error() +{ + return _("Native OS API not yet supported."); +} Index: src/SpellBase.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/SpellBase.h,v retrieving revision 1.9 diff -u -p -r1.9 SpellBase.h --- src/SpellBase.h 20 Jan 2005 16:17:35 -0000 1.9 +++ src/SpellBase.h 28 Apr 2005 16:14:28 -0000 @@ -20,6 +20,7 @@ class WordLangTuple; /** * Base class of all spell checker implementations. + * The class can be instantiated but will have no functionality. */ class SpellBase { public: @@ -43,23 +44,22 @@ public: virtual ~SpellBase() {} /// return true if the spellchecker instance still exists - virtual bool alive() = 0; + virtual bool alive(); /// check the given word of the given lang code and return the result - virtual enum Result check(WordLangTuple const &) = 0; + virtual enum Result check(WordLangTuple const &); /// insert the given word into the personal dictionary - virtual void insert(WordLangTuple const &) = 0; + virtual void insert(WordLangTuple const &); /// accept the given word temporarily - virtual void accept(WordLangTuple const &) = 0; + virtual void accept(WordLangTuple const &); /// return the next near miss after a SUGGESTED_WORDS result - virtual std::string const nextMiss() = 0; + virtual std::string const nextMiss(); /// give an error message on messy exit - virtual std::string const error() = 0; - + virtual std::string const error(); }; #endif // SPELL_BASE_H Index: src/aspell.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/aspell.C,v retrieving revision 1.12 diff -u -p -r1.12 aspell.C --- src/aspell.C 20 Jan 2005 16:17:35 -0000 1.12 +++ src/aspell.C 28 Apr 2005 16:14:28 -0000 @@ -11,8 +11,6 @@ #include <config.h> -#ifdef USE_ASPELL - #include "debug.h" #include <aspell.h> @@ -144,5 +142,3 @@ string const ASpell::error() return (err ? err : ""); } - -#endif // USE_ASPELL Index: src/aspell_local.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/aspell_local.h,v retrieving revision 1.5 diff -u -p -r1.5 aspell_local.h --- src/aspell_local.h 20 Jan 2005 16:17:35 -0000 1.5 +++ src/aspell_local.h 28 Apr 2005 16:14:28 -0000 @@ -75,4 +75,4 @@ private: AspellCanHaveError * spell_error_object; }; -#endif // ASPELL_H +#endif // LYX_ASPELL_H Index: src/lyxserver.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxserver.C,v retrieving revision 1.61 diff -u -p -r1.61 lyxserver.C --- src/lyxserver.C 26 Apr 2005 10:30:21 -0000 1.61 +++ src/lyxserver.C 28 Apr 2005 16:14:28 -0000 @@ -75,13 +75,39 @@ using std::endl; using std::string; -// provide an empty mkfifo() if we do not have one. This disables the -// lyxserver. -#ifndef HAVE_MKFIFO -int mkfifo(char const * __path, mode_t __mode) { - return 0; +#if !defined (HAVE_MKFIFO) +// We provide a stub class that disables the lyxserver. + +void LyXComm::openConnection() +{} + + +void LyXComm::closeConnection() +{} + + +int LyXComm::startPipe(string const & filename, bool write) +{ + return -1; } -#endif + + +void LyXComm::endPipe(int & fd, string const & filename, bool write) +{} + + +void LyXComm::emergencyCleanup() +{} + +void LyXComm::read_ready() +{} + + +void LyXComm::send(string const & msg) +{} + + +#else // defined (HAVE_MKFIFO) void LyXComm::openConnection() @@ -354,6 +380,8 @@ void LyXComm::send(string const & msg) } #endif } + +#endif // defined (HAVE_MKFIFO) string const LyXComm::inPipeName() const Index: src/lyxsocket.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxsocket.C,v retrieving revision 1.8 diff -u -p -r1.8 lyxsocket.C --- src/lyxsocket.C 26 Apr 2005 10:30:21 -0000 1.8 +++ src/lyxsocket.C 28 Apr 2005 16:14:28 -0000 @@ -14,8 +14,66 @@ #include <config.h> +#include <config.h> + #include "lyxsocket.h" + +#if !(defined(HAVE_READ) && defined(HAVE_WRITE) && defined(HAVE_CLOSE)) +// We provide stub classes to disables the sockets. + +LyXServerSocket::LyXServerSocket(LyXFunc *, std::string const &) +{} + + +LyXServerSocket::~LyXServerSocket() +{} + + +std::string const & LyXServerSocket::address() const +{ + return std::string(); +} + + +void LyXServerSocket::serverCallback() +{} + + +void LyXServerSocket::dataCallback(int) +{} + + +void LyXServerSocket::writeln(std::string const &) +{} + + +LyXDataSocket::LyXDataSocket(int) +{} + + +LyXDataSocket::~LyXDataSocket() +{} + + +bool LyXDataSocket::connected() const +{ + return false; +} + + +bool LyXDataSocket::readln(std::string &) +{ + return false; +} + + +void LyXDataSocket::writeln(std::string const &) +{} + +#else // defined(HAVE_READ) && defined(HAVE_WRITE) && defined(HAVE_CLOSE) + + #include "debug.h" #include "funcrequest.h" #include "LyXAction.h" @@ -270,3 +328,5 @@ void LyXDataSocket::writeln(string const connected_ = false; } } + +#endif // defined(HAVE_READ) && defined(HAVE_WRITE) && defined(HAVE_CLOSE) Index: src/pspell.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/pspell.C,v retrieving revision 1.15 diff -u -p -r1.15 pspell.C --- src/pspell.C 20 Jan 2005 16:17:36 -0000 1.15 +++ src/pspell.C 28 Apr 2005 16:14:28 -0000 @@ -11,8 +11,6 @@ #include <config.h> -#ifdef USE_PSPELL - #include "debug.h" #define USE_ORIGINAL_MANAGER_FUNCS 1 @@ -155,5 +153,3 @@ string const PSpell::error() return err; return ""; } - -#endif // USE_PSPELL Index: src/pspell.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/pspell.h,v retrieving revision 1.8 diff -u -p -r1.8 pspell.h --- src/pspell.h 20 Jan 2005 16:17:36 -0000 1.8 +++ src/pspell.h 28 Apr 2005 16:14:28 -0000 @@ -75,4 +75,4 @@ private: PspellCanHaveError * spell_error_object; }; -#endif // PSPELL_H +#endif // LYX_PSPELL_H Index: src/frontends/controllers/ControlSpellchecker.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSpellchecker.C,v retrieving revision 1.80 diff -u -p -r1.80 ControlSpellchecker.C --- src/frontends/controllers/ControlSpellchecker.C 8 Feb 2005 13:18:03 -0000 1.80 +++ src/frontends/controllers/ControlSpellchecker.C 28 Apr 2005 16:14:28 -0000 @@ -23,13 +23,14 @@ #include "lyxrc.h" #include "paragraph.h" -#include "ispell.h" -#ifdef USE_PSPELL +#if defined(USE_ASPELL) +# include "aspell_local.h" +#elif defined(USE_PSPELL) # include "pspell.h" +#elif defined(USE_ISPELL) +# include "ispell.h" #else -#ifdef USE_ASPELL -# include "aspell_local.h" -#endif +# include "SpellBase.h" #endif #include "support/textutils.h" @@ -68,19 +69,20 @@ SpellBase * getSpeller(BufferParams cons ? lyxrc.isp_alt_lang : bp.language->code(); -#ifdef USE_ASPELL +#if defined(USE_ASPELL) if (lyxrc.use_spell_lib) return new ASpell(bp, lang); -#endif -#ifdef USE_PSPELL +#elif defined(USE_PSPELL) if (lyxrc.use_spell_lib) return new PSpell(bp, lang); -#endif - +#elif defined(USE_ISPELL) lang = (lyxrc.isp_use_alt_lang) ? lyxrc.isp_alt_lang : bp.language->lang(); return new ISpell(bp, lang); +#else + return new SpellBase; +#endif } } // namespace anon @@ -91,6 +93,8 @@ bool ControlSpellchecker::initialisePara lyxerr[Debug::GUI] << "Spellchecker::initialiseParams" << endl; speller_.reset(getSpeller(kernel().buffer().params())); + if (!speller_.get()) + return false; // reset values to initial oldval_ = 0; Index: src/support/socktools.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/socktools.C,v retrieving revision 1.6 diff -u -p -r1.6 socktools.C --- src/support/socktools.C 20 Jan 2005 15:38:14 -0000 1.6 +++ src/support/socktools.C 28 Apr 2005 16:14:28 -0000 @@ -11,6 +11,31 @@ #include <config.h> #include "support/socktools.h" + +#if !defined (HAVE_SOCKET) +// We provide stubs because we don't (yet?) support the native OS API. + +namespace lyx { +namespace support { +namespace socktools { + +int listen(std::string const &, int) +{ + return -1; +} + + +int accept(int) +{ + return -1; +} + +} // namespace socktools +} // namespace support +} // namespace lyx + +#else // defined (HAVE_SOCKET) + #include "support/lyxlib.h" #include "debug.h" @@ -137,3 +162,5 @@ int accept(int sd) } // namespace socktools } // namespace support } // namespace lyx + +#endif // defined (HAVE_SOCKET)