emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 50a12de: Make gravatar-build-url respect dynamically bound variab


From: Lars Ingebrigtsen
Subject: master 50a12de: Make gravatar-build-url respect dynamically bound variables again
Date: Thu, 30 Jul 2020 22:19:13 -0400 (EDT)

branch: master
commit 50a12de877b752a4830b55beb196a7c3c1b7f715
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make gravatar-build-url respect dynamically bound variables again
    
    * lisp/image/gravatar.el (gravatar-build-url): Compute
    query-string first, so that dynamically bound values of
    `gravatar-rating' (etc.) are respected, instead of computing it
    when the callback happens.
---
 lisp/image/gravatar.el            | 17 +++++++++--------
 test/lisp/image/gravatar-tests.el |  9 +++++++--
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/lisp/image/gravatar.el b/lisp/image/gravatar.el
index ff612d2..d1091e5 100644
--- a/lisp/image/gravatar.el
+++ b/lisp/image/gravatar.el
@@ -188,14 +188,15 @@ to track whether you're reading a specific mail."
 (defun gravatar-build-url (mail-address callback)
   "Find the URL of a gravatar for MAIL-ADDRESS and call CALLBACK with it."
   ;; https://gravatar.com/site/implement/images/
-  (funcall (alist-get gravatar-service gravatar-service-alist)
-           mail-address
-           (lambda (url)
-             (funcall callback
-                      (format "%s/%s?%s"
-                              url
-                              (gravatar-hash mail-address)
-                              (gravatar--query-string))))))
+  (let ((query-string (gravatar--query-string)))
+    (funcall (alist-get gravatar-service gravatar-service-alist)
+             mail-address
+             (lambda (url)
+               (funcall callback
+                        (format "%s/%s?%s"
+                                url
+                                (gravatar-hash mail-address)
+                                query-string))))))
 
 (defun gravatar-get-data ()
   "Return body of current URL buffer, or nil on failure."
diff --git a/test/lisp/image/gravatar-tests.el 
b/test/lisp/image/gravatar-tests.el
index e66b5c6..43c3024 100644
--- a/test/lisp/image/gravatar-tests.el
+++ b/test/lisp/image/gravatar-tests.el
@@ -65,8 +65,13 @@
   "Test `gravatar-build-url'."
   (let ((gravatar-default-image nil)
         (gravatar-force-default nil)
-        (gravatar-size nil))
-    (should (equal (gravatar-build-url "foo") "\
+        (gravatar-size nil)
+        (gravatar-service 'gravatar)
+        url)
+    (gravatar-build-url "foo" (lambda (u) (setq url u)))
+    (while (not url)
+      (sleep-for 0.01))
+    (should (equal url "\
 https://www.gravatar.com/avatar/acbd18db4cc2f85cedef654fccc4a4d8?r=g";))))
 
 ;;; gravatar-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]