From: Albert Krewinkel Date: Fri, 18 Jul 2014 08:19:26 +0000 (+0000) Subject: * gnus-msg.el (gnus-configure-posting-style): X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=7a4c0a6aa3b9ec91a93902f894fd47ded1deca52 * gnus-msg.el (gnus-configure-posting-style): Allow string replacements in values when matching against a header. * gnus.texi (Posting Styles): Document the possibility to perform string replacements when matching against headers. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0861557e6..408318da7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-07-17 Albert Krewinkel + + * gnus-msg.el (gnus-configure-posting-style): + Allow string replacements in values when matching against a header. + 2014-07-07 Katsumi Yamaoka * gnus-start.el (gnus-dribble-read-file): Don't stop the auto-saving of diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 1c8635c59..469b9d2cf 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -1826,7 +1826,7 @@ this is a reply." (with-current-buffer gnus-summary-buffer gnus-posting-styles) gnus-posting-styles)) - style match attribute value v results + style match attribute value v results matched-string filep name address element) ;; If the group has a posting-style parameter, add it at the end with a ;; regexp matching everything, to be sure it takes precedence over all @@ -1846,7 +1846,9 @@ this is a reply." (when (cond ((stringp match) ;; Regexp string match on the group name. - (string-match match group)) + (when (string-match match group) + (setq matched-string group) + t)) ((eq match 'header) ;; Obsolete format of header match. (and (gnus-buffer-live-p gnus-article-copy) @@ -1875,7 +1877,8 @@ this is a reply." (nnheader-narrow-to-headers) (let ((header (message-fetch-field (nth 1 match)))) (and header - (string-match (nth 2 match) header))))))) + (string-match (nth 2 match) header) + (setq matched-string header))))))) (t ;; This is a form to be evalled. (eval match))))) @@ -1896,10 +1899,11 @@ this is a reply." (setq v (cond ((stringp value) - (if (and (stringp match) + (if (and matched-string (gnus-string-match-p "\\\\[&[:digit:]]" value) (match-beginning 1)) - (gnus-match-substitute-replacement value nil nil group) + (gnus-match-substitute-replacement value nil nil + matched-string) value)) ((or (symbolp value) (functionp value)) diff --git a/texi/ChangeLog b/texi/ChangeLog index 530ff5878..0666dfdd8 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,8 @@ +2014-07-18 Albert Krewinkel + + * gnus.texi (Posting Styles): Document the possibility to perform + string replacements when matching against headers. + 2014-06-11 Katsumi Yamaoka * Makefile.in (.texi, makeinfo): Don't split info files. diff --git a/texi/gnus.texi b/texi/gnus.texi index 91651126e..9601a53ef 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -12813,10 +12813,12 @@ variable, which is a vector of the following headers: number subject from date id references chars lines xref extra. In the case of a string value, if the @code{match} is a regular -expression, a @samp{gnus-match-substitute-replacement} is proceed on -the value to replace the positional parameters @samp{\@var{n}} by the -corresponding parenthetical matches (see @xref{Replacing Match,, -Replacing the Text that Matched, elisp, The Emacs Lisp Reference Manual}.) +expression, or if it takes the form @code{(header @var{match} +@var{regexp})}, a @samp{gnus-match-substitute-replacement} is proceed +on the value to replace the positional parameters @samp{\@var{n}} by +the corresponding parenthetical matches (see @xref{Replacing Match,, +Replacing the Text that Matched, elisp, The Emacs Lisp Reference +Manual}.) @vindex message-reply-headers @@ -12848,6 +12850,10 @@ So here's a new example: ;; @r{If I'm replying to Larsi, set the Organization header.} ((header "from" "larsi.*org") (Organization "Somewhere, Inc.")) + ;; @r{Reply to a message from the same subaddress the message} + ;; @r{was sent to.} + ((header "x-original-to" "me\\(\\+.+\\)@@example.org") + (address "me\\1@@example.org")) ((posting-from-work-p) ;; @r{A user defined function} (signature-file "~/.work-signature") (address "user@@bar.foo")