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;

Reply via email to