Function: gnus-picon-transform-address
gnus-picon-transform-address is a byte-compiled function defined in
gnus-picon.el.gz.
Signature
(gnus-picon-transform-address HEADER CATEGORY)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-picon.el.gz
(defun gnus-picon-transform-address (header category)
(gnus-with-article-headers
(let ((addresses
(mail-header-parse-addresses
;; mail-header-parse-addresses does not work (reliably) on
;; decoded headers.
(or
(ignore-errors
(mail-encode-encoded-word-string
(or (mail-fetch-field header) "")))
(mail-fetch-field header))))
spec file point cache len)
(dolist (address addresses)
(setq address (car address))
(when (and (stringp address)
(setq spec (gnus-picon-split-address address)))
(if (setq cache (cdr (assoc address gnus-picon-cache)))
(setq spec cache)
(when (setq file (or (gnus-picon-find-face
address gnus-picon-user-directories)
(gnus-picon-find-face
(concat "unknown@"
(mapconcat
#'identity (cdr spec) "."))
gnus-picon-user-directories)))
(setcar spec (cons (gnus-picon-create-glyph file)
(car spec))))
(dotimes (i (- (length spec)
(if gnus-picon-inhibit-top-level-domains
2 1)))
(when (setq file (gnus-picon-find-face
(concat "unknown@"
(mapconcat
#'identity (nthcdr (1+ i) spec) "."))
gnus-picon-domain-directories t))
(setcar (nthcdr (1+ i) spec)
(cons (gnus-picon-create-glyph file)
(nth (1+ i) spec)))))
(setq spec (nreverse spec))
(push (cons address spec) gnus-picon-cache))
(gnus-article-goto-header header)
(mail-header-narrow-to-field)
(cl-case gnus-picon-style
(right
(when (= (length addresses) 1)
(setq len (apply #'+ (mapcar (lambda (x)
(condition-case nil
(car (image-size (car x)))
(error 0)))
spec)))
(when (> len 0)
(goto-char (point-at-eol))
(insert (propertize
" " 'display
(cons 'space
(list :align-to (- (window-width) 1 len))))))
(goto-char (point-at-eol))
(setq point (point-at-eol))
(dolist (image spec)
(unless (stringp image)
(goto-char point)
(gnus-picon-insert-glyph image category 'nostring)))))
(inline
(when (search-forward address nil t)
(delete-region (match-beginning 0) (match-end 0))
(setq point (point))
(while spec
(goto-char point)
(if (> (length spec) 2)
(insert ".")
(if (= (length spec) 2)
(insert "@")))
(gnus-picon-insert-glyph (pop spec) category))))))))))