Here is a simple fix. Instead of going forward to put the cursor at beginning of next word, we go backward to the beginning of current word.
Bennett, please test. JMarc
Index: src/frontends/controllers/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ChangeLog,v retrieving revision 1.498 diff -u -p -r1.498 ChangeLog --- src/frontends/controllers/ChangeLog 3 Oct 2005 10:37:28 -0000 1.498 +++ src/frontends/controllers/ChangeLog 3 Oct 2005 13:48:23 -0000 @@ -1,3 +1,8 @@ +2005-10-03 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * ControlSpellchecker.C (check): make sure that word at cursor + position is checked too. (bug 2063) + 2005-10-03 Jürgen Spitzmüller <[EMAIL PROTECTED]> * Dialog.C (checkStatus): update dialog after checkReadOnly has Index: src/frontends/controllers/ControlSpellchecker.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSpellchecker.C,v retrieving revision 1.85 diff -u -p -r1.85 ControlSpellchecker.C --- src/frontends/controllers/ControlSpellchecker.C 8 Sep 2005 09:20:14 -0000 1.85 +++ src/frontends/controllers/ControlSpellchecker.C 3 Oct 2005 13:48:23 -0000 @@ -190,6 +190,9 @@ void ControlSpellchecker::check() SpellBase::Result res = SpellBase::OK; DocIterator cur = kernel().bufferview()->cursor(); + while (cur && cur.pos() && isLetter(cur)) { + cur.backwardPos(); + } ptrdiff_t start = 0, total = 0; DocIterator it = DocIterator(kernel().buffer().inset()); @@ -198,9 +201,6 @@ void ControlSpellchecker::check() for (total = start; it; it.forwardPos()) ++total; - - for (; cur && cur.pos() && isLetter(cur); cur.forwardPos()) - ++start; BufferParams & bufferparams = kernel().buffer().params(); exitEarly_ = false;