monnier pushed a commit to branch master
in repository elpa.

commit c265935cf89972d7df95ed7f3d4d910283409c9a
Author: Teemu Likonen <tliko...@iki.fi>
Date:   Mon Aug 2 12:18:24 2010 +0000

    Tallennetaan ja palautetaan säännöllisten lausekkeiden täsmäystiedot
    
    Laitetaan wcheck-moden sisäisten etsimistoimintojen ympärille
    (save-match-data ...), jolloin mahdolliset käyttäjän jäljiltä olevat
    täsmäystiedot säilyvät.
---
 wcheck-mode.el |   96 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 50 insertions(+), 46 deletions(-)

diff --git a/wcheck-mode.el b/wcheck-mode.el
index d507d2f..4fdee0e 100644
--- a/wcheck-mode.el
+++ b/wcheck-mode.el
@@ -863,28 +863,30 @@ elements between BEG and END; all hidden parts are 
omitted."
 
           (with-syntax-table syntax
             (goto-char beg)
-            (catch 'infinite
-              (while (re-search-forward regexp end t)
-                (cond ((= (point) old-point)
-                       ;; Make sure we don't end up in an infinite loop
-                       ;; when the regexp always matches with zero width
-                       ;; in the current point position.
-                       (throw 'infinite t))
-
-                      ((invisible-p (match-beginning 1))
-                       ;; This point is invisible. Let's jump forward to
-                       ;; next change of "invisible" property.
-                       (goto-char (next-single-char-property-change
-                                   (match-beginning 1) 'invisible buffer
-                                   end)))
-
-                      ((and (eval face-p)
-                            (or (equal discard "")
-                                (not (string-match
-                                      discard (match-string-no-properties 
1)))))
-                       ;; Add the match to the word list.
-                       (add-to-list 'words (match-string-no-properties 1))))
-                (setq old-point (point)))))
+            (save-match-data
+              (catch 'infinite
+                (while (re-search-forward regexp end t)
+                  (cond ((= (point) old-point)
+                         ;; Make sure we don't end up in an infinite
+                         ;; loop when the regexp always matches with
+                         ;; zero width in the current point position.
+                         (throw 'infinite t))
+
+                        ((invisible-p (match-beginning 1))
+                         ;; This point is invisible. Let's jump forward
+                         ;; to next change of "invisible" property.
+                         (goto-char (next-single-char-property-change
+                                     (match-beginning 1) 'invisible buffer
+                                     end)))
+
+                        ((and (eval face-p)
+                              (or (equal discard "")
+                                  (not (string-match
+                                        discard
+                                        (match-string-no-properties 1)))))
+                         ;; Add the match to the word list.
+                         (add-to-list 'words (match-string-no-properties 1))))
+                  (setq old-point (point))))))
           words)))))
 
 
@@ -922,30 +924,32 @@ visible in BUFFER within position range from BEG to END."
                regexp old-point)
 
           (with-syntax-table syntax
-            (dolist (word wordlist)
-              (setq regexp (concat r-start "\\("
-                                   (regexp-quote word) "\\)"
-                                   r-end)
-                    old-point 0)
-              (goto-char beg)
-
-              (catch 'infinite
-                (while (re-search-forward regexp end t)
-                  (cond ((= (point) old-point)
-                         ;; We didn't move forward so break the loop.
-                         ;; Otherwise we would loop endlessly.
-                         (throw 'infinite t))
-                        ((invisible-p (match-beginning 1))
-                         ;; The point is invisible so jump forward to
-                         ;; the next change of "invisible" text property.
-                         (goto-char (next-single-char-property-change
-                                     (match-beginning 1) 'invisible buffer
-                                     end)))
-                        ((eval face-p)
-                         ;; Make an overlay.
-                         (wcheck-make-overlay
-                          buffer face (match-beginning 1) (match-end 1))))
-                  (setq old-point (point)))))))))))
+            (save-match-data
+              (dolist (word wordlist)
+                (setq regexp (concat r-start "\\("
+                                     (regexp-quote word) "\\)"
+                                     r-end)
+                      old-point 0)
+                (goto-char beg)
+
+                (catch 'infinite
+                  (while (re-search-forward regexp end t)
+                    (cond ((= (point) old-point)
+                           ;; We didn't move forward so break the loop.
+                           ;; Otherwise we would loop endlessly.
+                           (throw 'infinite t))
+                          ((invisible-p (match-beginning 1))
+                           ;; The point is invisible so jump forward to
+                           ;; the next change of "invisible" text
+                           ;; property.
+                           (goto-char (next-single-char-property-change
+                                       (match-beginning 1) 'invisible buffer
+                                       end)))
+                          ((eval face-p)
+                           ;; Make an overlay.
+                           (wcheck-make-overlay
+                            buffer face (match-beginning 1) (match-end 1))))
+                    (setq old-point (point))))))))))))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Reply via email to