]> git.eshelyaron.com Git - emacs.git/commitdiff
(rmail-dont-reply-to): Replace matched
authorGerd Moellmann <gerd@gnu.org>
Thu, 27 Jan 2000 16:53:17 +0000 (16:53 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 27 Jan 2000 16:53:17 +0000 (16:53 +0000)
userids differently.

lisp/ChangeLog
lisp/mail/mail-utils.el

index 7be61485f1beb82bfdb852c72fcbf0cb3276f93b..58cfe23909642fba5a84dd8947d8bd02ac2df069 100644 (file)
@@ -1,5 +1,8 @@
 2000-01-27  Gerd Moellmann  <gerd@gnu.org>
 
+       * mail/mail-utils.el (rmail-dont-reply-to): Replace matched
+       userids differently.
+
        * progmodes/ebnf2ps.el, progmodes/ebnf-bnf.el,
        progmodes/ebnf-iso.el, progmodes/ebnf-otz.el,
        progmodes/ebnf-yac.el: New files.
index f54095120684e884422de1afadf8a8870b442ea4..870f4ba10012eeefe6151755846864d9a39db021 100644 (file)
@@ -226,29 +226,23 @@ Usenet paths ending in an element that matches are removed also."
                             ;; Include the human name that precedes <foo@bar>.
                             "\\([^\,.<\"]\\|\"[^\"]*\"\\)*"
                             "<\\(" rmail-dont-reply-to-names "\\)"
-                      "\\)"))
+                      "\\)[^,]*"))
        (case-fold-search t)
        pos epos)
     (while (setq pos (string-match match userids pos))
-      (if (> pos 0) (setq pos (match-beginning 2)))
-      (setq epos
-           ;; Delete thru the next comma, plus whitespace after.
-           (if (string-match ",[ \t\n]*" userids (match-end 0))
-               (match-end 0)
-             (length userids)))
-      ;; Count the double-quotes since the beginning of the list.
-      ;; Reject this match if it is inside a pair of doublequotes.
-      (let (quote-pos inside-quotes)
-       (while (and (setq quote-pos (string-match "\"" userids quote-pos))
-                   (< quote-pos pos))
-         (setq quote-pos (1+ quote-pos))
-         (setq inside-quotes (not inside-quotes)))
+      ;; If there's a match, it starts at the beginning of the string,
+      ;; or with `,'.  We must delete from that position to the
+      ;; end of the user-id which starts at match-beginning 2.
+      (let (inside-quotes quote-pos)
+       (save-match-data
+         (while (and (setq quote-pos (string-match "\"" userids quote-pos))
+                     (< quote-pos pos))
+           (setq quote-pos (1+ quote-pos))
+           (setq inside-quotes (not inside-quotes))))
        (if inside-quotes
            ;; Advance to next even-parity quote, and scan from there.
            (setq pos (string-match "\"" userids pos))
-         (setq userids
-               (mail-string-delete
-                userids pos epos)))))
+         (setq userids (replace-match "" nil nil userids)))))
     ;; get rid of any trailing commas
     (if (setq pos (string-match "[ ,\t\n]*\\'" userids))
        (setq userids (substring userids 0 pos)))
@@ -256,6 +250,7 @@ Usenet paths ending in an element that matches are removed also."
     (if (string-match "\\s *" userids)
        (substring userids (match-end 0))
       userids)))
+
 \f
 ;;;###autoload
 (defun mail-fetch-field (field-name &optional last all list)