From 69ba53f79228c78cfa735d56df666ba721edab1c Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 4 Jan 2005 14:59:47 +0000 Subject: [PATCH] (sendmail-pre-abbrev-expand-hook): Don't expand if the character is @, period, dash, etc. (define-mail-abbrev): Quote names that contain problem characters. --- lisp/ChangeLog | 6 ++++++ lisp/mail/mailabbrev.el | 24 ++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 12f0848a01a..28c6645506f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-01-04 Richard M. Stallman + + * 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 * progmodes/hideshow.el: No longer require `cl'; `dolist' is standard. diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el index 1b94f179f94..2f973cdfbb9 100644 --- a/lisp/mail/mailabbrev.el +++ b/lisp/mail/mailabbrev.el @@ -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 -- 2.39.5