aboutsummaryrefslogtreecommitdiffstats
path: root/oni
diff options
context:
space:
mode:
authorGravatar Tom Willemse2023-10-13 14:43:15 -0700
committerGravatar Tom Willemse2023-10-13 14:43:15 -0700
commit1f92565b738d549ae29591cba17362a459591031 (patch)
tree6a73f21a4cb2b05bc23d39adfebafe61351cb993 /oni
parentb6ae70a86b73ca9e0cce114232c02c317385dd67 (diff)
downloadnew-dotfiles-1f92565b738d549ae29591cba17362a459591031.tar.gz
new-dotfiles-1f92565b738d549ae29591cba17362a459591031.zip
Make the dashboard wiki page loading asynchronous
Diffstat (limited to 'oni')
-rw-r--r--oni/home/services/emacs/oni-dashboard.el39
1 files changed, 24 insertions, 15 deletions
diff --git a/oni/home/services/emacs/oni-dashboard.el b/oni/home/services/emacs/oni-dashboard.el
index b08be37..85a5608 100644
--- a/oni/home/services/emacs/oni-dashboard.el
+++ b/oni/home/services/emacs/oni-dashboard.el
@@ -43,21 +43,30 @@
(dashboard-insert-heading "Today's Wiki page:" "w")
(insert "\n ")
(dashboard-insert-shortcut 'random-wiki-page "w" "Today's Wiki page:")
- (let ((info (with-current-buffer (url-retrieve-synchronously "https://www.emacswiki.org/emacs?action=random")
- (prog1 (cons (url-recreate-url url-current-object)
- (progn
- (search-forward "<title>")
- (let ((beginning (point)))
- (search-forward "</title>")
- (forward-char -8)
- (buffer-substring-no-properties beginning (point)))))
- (kill-buffer)))))
- (message "Got: %s" info)
- (widget-create 'url-link
- :format (format "%%[%s%%]" (cdr info))
- :button-suffix ""
- :button-prefix ""
- (car info))))
+ (let ((text-beginning-marker (point-marker)))
+ (insert "Loading...")
+ (url-retrieve "https://www.emacswiki.org/emacs?action=random"
+ (lambda (&rest _args)
+ (let ((info (prog1 (cons (url-recreate-url url-current-object)
+ (progn
+ (search-forward "<title>")
+ (let ((beginning (point)))
+ (search-forward "</title>")
+ (forward-char -8)
+ (buffer-substring-no-properties beginning (point)))))
+ (kill-buffer))))
+ (with-current-buffer (marker-buffer text-beginning-marker)
+ (let ((inhibit-read-only t))
+ (save-excursion
+ (goto-char (marker-position text-beginning-marker))
+ (delete-char 10)
+ (widget-create 'url-link
+ :format (format "%%[%s%%]" (cdr info))
+ :button-suffix ""
+ :button-prefix ""
+ (car info)))))))
+ nil
+ t)))
(add-to-list 'dashboard-item-generators '(random-wiki-page . oni-dashboard-insert-random-wiki-page))
(add-to-list 'dashboard-items '(random-wiki-page))