]> git.eshelyaron.com Git - emacs.git/commitdiff
(sendmail-pre-abbrev-expand-hook):
authorRichard M. Stallman <rms@gnu.org>
Tue, 4 Jan 2005 14:59:47 +0000 (14:59 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 4 Jan 2005 14:59:47 +0000 (14:59 +0000)
Don't expand if the character is @, period, dash, etc.
(define-mail-abbrev): Quote names that contain problem characters.

lisp/ChangeLog
lisp/mail/mailabbrev.el

index 12f0848a01a9284fac791e119edc0d60b43fde64..28c6645506fe1405c4fa4a9ede4aed07a022937d 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
+       Don't expand if the character is @, period, dash, etc.
+       (define-mail-abbrev): Quote names that contain problem characters.
+
 2005-01-04  Thien-Thi Nguyen  <ttn@gnu.org>
 
        * progmodes/hideshow.el: No longer require `cl'; `dolist' is standard.
index 1b94f179f949624dda5be9214b1d05fd393fc174..2f973cdfbb99daeb76704bed1dc67cdf695e772b 100644 (file)
@@ -305,10 +305,19 @@ If DEFINITION contains multiple addresses, separate them with commas."
                    end (string-match "\"[ \t,]*" definition start))
            (setq end (string-match "[ \t,]+" definition start)))
        (setq end (string-match "[ \t\n,]*,[ \t\n,]*" definition start)))
-      (setq result (cons (substring definition start end) result))
-      (setq start (and end
-                      (/= (match-end 0) L)
-                      (match-end 0))))
+      (let ((tem (substring definition start end)))
+       ;; Advance the loop past this address.
+       (setq start (and end
+                        (/= (match-end 0) L)
+                        (match-end 0)))
+       ;; If the full name contains a problem character, quote it.
+       (when (string-match "\\(.+?\\)[ \t]*\\(<.*>\\)" tem)
+         (if (string-match "[^- !#$%&'*+/0-9=?A-Za-z^_`{|}~]"
+                           (match-string 1 tem))
+             (setq tem (replace-regexp-in-string
+                        "\\(.+?\\)[ \t]*\\(<.*>\\)" "\"\\1\" \\2"
+                        tem))))
+       (push tem result)))
     (setq definition (mapconcat (function identity)
                                (nreverse result)
                                mail-alias-separator-string)))
@@ -485,7 +494,9 @@ of a mail alias.  The value is set up, buffer-local, when first needed.")
             ;; the usual syntax table.
 
             (or (and (integerp last-command-char)
-                     (eq (char-syntax last-command-char) ?_))
+                     (or (eq (char-syntax last-command-char) ?_)
+                         ;; Don't expand on @.
+                         (memq last-command-char '(?@ ?. ?% ?! ?_ ?-))))
                 (let ((pre-abbrev-expand-hook nil)) ; That's us; don't loop.
                   ;; Use this table so that abbrevs can have hyphens in them.
                   (set-syntax-table mail-abbrev-syntax-table)
@@ -610,7 +621,8 @@ Don't use this command in Lisp programs!
   (interactive "P")
   (if (looking-at "[ \t]*\n") (expand-abbrev))
   (setq this-command 'end-of-buffer)
-  (end-of-buffer arg))
+  (with-no-warnings
+   (end-of-buffer arg)))
 
 (eval-after-load "sendmail"
   '(progn