changeset 37006:2fa95954d8de

Backed out changes made by John Wiegley 2000-10-28.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 26 Mar 2001 13:59:00 +0000
parents 0dbe9e01a45d
children 4caced3e865e
files lisp/textmodes/flyspell.el
diffstat 1 files changed, 26 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/flyspell.el	Mon Mar 26 13:36:27 2001 +0000
+++ b/lisp/textmodes/flyspell.el	Mon Mar 26 13:59:00 2001 +0000
@@ -2018,7 +2018,7 @@
 		      menu))))
 
 ;*---------------------------------------------------------------------*/
-;*    Some example functions for real autocrrecting                   xb */
+;*    Some example functions for real autocrrecting                    */
 ;*---------------------------------------------------------------------*/
 (defun flyspell-maybe-correct-transposition (beg end poss)
   "Apply 'transpose-chars' to all points in the region BEG to END.
@@ -2026,24 +2026,17 @@
 in POSS.  Otherwise the change is undone.
 
 This function is meant to be added to 'flyspell-incorrect-hook'."
-  (when (consp poss)
+  (when (consp poss)    
     (catch 'done
-      (let ((str (buffer-substring beg end))
-	    (i 0) (len (- end beg)) tmp)
-	(while (< (1+ i) len)
-	  (setq tmp (aref str i))
-	  (aset str i (aref str (1+ i)))
-	  (aset str (1+ i) tmp)
-          (when (member str (nth 2 poss))
-	    (save-excursion
-	      (goto-char (+ beg i 1))
-	      (transpose-chars 1))
-	    (throw 'done t))
-	  (setq tmp (aref str i))
-	  (aset str i (aref str (1+ i)))
-	  (aset str (1+ i) tmp)
-	  (setq i (1+ i))))
-      nil)))
+      (save-excursion
+        (goto-char (1+ beg))
+        (while (< (point) end)
+          (transpose-chars 1)
+          (when (member (buffer-substring beg end) (nth 2 poss))
+            (throw 'done t))
+          (transpose-chars -1)
+          (forward-char))
+        nil))))
 
 (defun flyspell-maybe-correct-doubling (beg end poss)
   "For each doubled charachter in the region BEG to END, remove one.
@@ -2053,18 +2046,21 @@
 This function is meant to be added to 'flyspell-incorrect-hook'."
   (when (consp poss)
     (catch 'done
-      (let ((str (buffer-substring beg end))
-	    (i 0) (len (- end beg)))
-	(while (< (1+ i) len)
-	  (when (and (= (aref str i) (aref str (1+ i)))
-		     (member (concat (substring str 0 (1+ i))
-				     (substring str (+ i 2)))
-			     (nth 2 poss)))
-	    (goto-char (+ beg i))
-	    (delete-char 1)
-	    (throw 'done t))
-	  (setq i (1+ i))))
-      nil)))
+      (save-excursion
+        (let ((last (char-after beg))
+              this)
+          (goto-char (1+ beg))          
+          (while (< (point) end)
+            (setq this (char-after))
+            (if (not (char-equal this last))
+                (forward-char)
+              (delete-char 1)
+              (when (member (buffer-substring beg (1- end)) (nth 2 poss))
+                (throw 'done t))
+              ;; undo
+              (insert-char this 1))            
+            (setq last this))
+          nil)))))
 
 ;*---------------------------------------------------------------------*/
 ;*    flyspell-already-abbrevp ...                                     */