+(defun wl-draft-preview-attributes-list ()
+ (if (listp (car wl-draft-preview-attributes-list))
+ (elmo-uniq-list
+ (append (and (wl-message-mail-p)
+ (cdr (assq 'mail wl-draft-preview-attributes-list)))
+ (and (wl-message-news-p)
+ (cdr (assq 'news wl-draft-preview-attributes-list)))))
+ wl-draft-preview-attributes-list))
+
+(defun wl-draft-show-attributes-buffer (attribute-values)
+ (let* ((cur-win (selected-window))
+ (size (min
+ (- (window-height cur-win)
+ window-min-height 1)
+ (- (window-height cur-win)
+ (max
+ window-min-height
+ (1+ wl-draft-preview-attributes-buffer-lines))))))
+ (split-window cur-win (if (> size 0) size window-min-height))
+ (select-window (next-window))
+ (let ((pop-up-windows nil))
+ (switch-to-buffer (get-buffer-create
+ wl-draft-preview-attributes-buffer-name)))
+ (with-current-buffer
+ (get-buffer wl-draft-preview-attributes-buffer-name)
+ (setq buffer-read-only t)
+ (let (buffer-read-only)
+ (erase-buffer)
+ (dolist (pair attribute-values)
+ (insert (capitalize (symbol-name (car pair))) ": "
+ (format "%s" (or (cdr pair) ""))
+ "\n"))
+ (goto-char (point-min))
+ (wl-highlight-headers)))
+ (select-window cur-win)))
+
+(defun wl-draft-hide-attributes-buffer ()
+ (let (window buffer)
+ (when (setq window (get-buffer-window
+ wl-draft-preview-attributes-buffer-name))
+ (select-window window)
+ (delete-window))
+ (when (setq buffer (get-buffer wl-draft-preview-attributes-buffer-name))
+ (kill-buffer buffer))))
+