Try to support different type of AVATAR property.

- Support [[file:dir/filename.png]] link
- Support empty value
- Support default value
This commit is contained in:
stardiviner 2021-10-30 18:08:43 +08:00
parent 507e48cbd1
commit 00560d5f4f

View file

@ -898,13 +898,24 @@ address."
(setq pom (or pom (point))) (setq pom (or pom (point)))
(catch 'icon (catch 'icon
;; Use `org-contacts-icon-property' ;; Use `org-contacts-icon-property'
(let ((image-data (org-entry-get pom org-contacts-icon-property))) (let ((image-path (let ((avatar (org-entry-get pom org-contacts-icon-property))
(when image-data (link-matcher-regexp "\\[\\[\\([^]]*\\)\\]\\(\\[\\(.*\\)\\]\\)?\\]"))
(cond
;; [[file:dir/filename.png]]
((string-match-p "\\[\\[.*\\]\\]" avatar)
(when (string-match link-matcher-regexp avatar)
(expand-file-name (substring (match-string-no-properties 1 avatar) 5 nil)
(file-name-directory (first org-contacts-files)))))
;; "" (empty string)
((string-empty-p avatar) nil)
(t (expand-file-name avatar (file-name-directory (first org-contacts-files))))))))
(when image-path
(throw 'icon (throw 'icon
(if (fboundp 'gnus-rescale-image) (if (fboundp 'gnus-rescale-image)
(gnus-rescale-image (create-image image-data) ;; FIXME `gnus-rescale-image' does not support rescale `create-image' spec.
(gnus-rescale-image (create-image image-path)
(cons org-contacts-icon-size org-contacts-icon-size)) (cons org-contacts-icon-size org-contacts-icon-size))
(create-image image-data))))) (create-image image-path)))))
;; Next, try Gravatar ;; Next, try Gravatar
(when org-contacts-icon-use-gravatar (when org-contacts-icon-use-gravatar
(let* ((gravatar-size org-contacts-icon-size) (let* ((gravatar-size org-contacts-icon-size)