summaryrefslogtreecommitdiff
path: root/lisp/gnus/gnus-util.el
diff options
context:
space:
mode:
authorKatsumi Yamaoka <yamaoka@jpl.org>2010-12-03 02:17:23 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2010-12-03 02:17:23 +0000
commitd6f6af81e8f7496f0569daa07745a1b5f01a6fa6 (patch)
tree2e4ca2449ce379fb5b357db9324fea73422c8b25 /lisp/gnus/gnus-util.el
parent3721e1246a7d23f47976b842c2dc56dc99a103fc (diff)
downloademacs-d6f6af81e8f7496f0569daa07745a1b5f01a6fa6.tar.gz
gnus-util.el (gnus-macroexpand-all): New function.
gnus-sum.el (gnus-summary-line-format-alist): Use gnus-macroexpand-all instead of macroexpand-all that is unavailable in XEmacs.
Diffstat (limited to 'lisp/gnus/gnus-util.el')
-rw-r--r--lisp/gnus/gnus-util.el18
1 files changed, 18 insertions, 0 deletions
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 9deedbeb010..d71035754a7 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -2034,6 +2034,24 @@ Same as `string-match' except this function does not change the match data."
(save-match-data
(string-match regexp string start))))
+(if (fboundp 'macroexpand-all)
+ (defalias 'gnus-macroexpand-all 'macroexpand-all)
+ (defun gnus-macroexpand-all (form)
+ "Return result of expanding macros at all levels in FORM.
+If no macros are expanded, FORM is returned unchanged."
+ (if (consp form)
+ (let ((idx 1)
+ (len (length form))
+ elem expanded)
+ (while (< idx len)
+ (when (consp (setq elem (nth idx form)))
+ (setcar (nthcdr idx form) (gnus-macroexpand-all elem)))
+ (setq idx (1+ idx)))
+ (if (eq (setq expanded (macroexpand form)) form)
+ form
+ (gnus-macroexpand-all expanded)))
+ form)))
+
(provide 'gnus-util)
;;; gnus-util.el ends here