From 6a5925d3ecdb66d3d5b8ef68f477af2a009230c7 Mon Sep 17 00:00:00 2001 From: Jason Dufair Date: Fri, 1 Mar 2019 13:18:35 -0500 Subject: [PATCH 1/3] Constrain list size. Sync and sort. - List of items was being appended to with every refresh. Reset list each time - Insert section after fetch and populate are finished - Sort items by id --- dashboard-hackernews.el | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/dashboard-hackernews.el b/dashboard-hackernews.el index 9a57393..cbc0dc3 100644 --- a/dashboard-hackernews.el +++ b/dashboard-hackernews.el @@ -86,13 +86,25 @@ (defun dashboard-hackernews-insert (list-size) "Add the list of LIST-SIZE items from hackernews." + (setq dashboard-hackernews-items ()) (dashboard-hackernews-get-ids (lambda (ids) - (dotimes (i list-size) - (dashboard-hackernews-get-item - (elt ids i) (lambda (item) (push item dashboard-hackernews-items)))))) - (dashboard-hackernews-insert-list "Hackernews:" - (dashboard-subseq dashboard-hackernews-items 0 list-size))) + (let ((inserted-count 0)) + (dotimes (i list-size) + (progn + (dashboard-hackernews-get-item + (elt ids i) (lambda (item) + (push item dashboard-hackernews-items) + (setq inserted-count (1+ inserted-count)))))) + (while (< inserted-count list-size) + (sleep-for 0.05)) + (setq dashboard-hackernews-items + (seq-sort-by (lambda (el) (cdr (assoc 'id el))) '> dashboard-hackernews-items)) + (dashboard-hackernews-insert-list + "Hackernews:" + (dashboard-subseq + dashboard-hackernews-items + 0 list-size)))))) (provide 'dashboard-hackernews) ;;; dashboard-hackernews.el ends here From c6adecec8e3f3c7183bb288327e713e31fc02b80 Mon Sep 17 00:00:00 2001 From: Jason Dufair Date: Fri, 1 Mar 2019 13:25:35 -0500 Subject: [PATCH 2/3] Untabify --- dashboard-hackernews.el | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/dashboard-hackernews.el b/dashboard-hackernews.el index cbc0dc3..0e3245e 100644 --- a/dashboard-hackernews.el +++ b/dashboard-hackernews.el @@ -86,25 +86,25 @@ (defun dashboard-hackernews-insert (list-size) "Add the list of LIST-SIZE items from hackernews." - (setq dashboard-hackernews-items ()) + (setq dashboard-hackernews-items ()) (dashboard-hackernews-get-ids (lambda (ids) (let ((inserted-count 0)) - (dotimes (i list-size) - (progn - (dashboard-hackernews-get-item - (elt ids i) (lambda (item) - (push item dashboard-hackernews-items) - (setq inserted-count (1+ inserted-count)))))) - (while (< inserted-count list-size) - (sleep-for 0.05)) - (setq dashboard-hackernews-items - (seq-sort-by (lambda (el) (cdr (assoc 'id el))) '> dashboard-hackernews-items)) - (dashboard-hackernews-insert-list - "Hackernews:" - (dashboard-subseq - dashboard-hackernews-items - 0 list-size)))))) + (dotimes (i list-size) + (progn + (dashboard-hackernews-get-item + (elt ids i) (lambda (item) + (push item dashboard-hackernews-items) + (setq inserted-count (1+ inserted-count)))))) + (while (< inserted-count list-size) + (sleep-for 0.05)) + (setq dashboard-hackernews-items + (seq-sort-by (lambda (el) (cdr (assoc 'id el))) '> dashboard-hackernews-items)) + (dashboard-hackernews-insert-list + "Hackernews:" + (dashboard-subseq + dashboard-hackernews-items + 0 list-size)))))) (provide 'dashboard-hackernews) ;;; dashboard-hackernews.el ends here From 1a23c6e474bfc56ccabb2efc2cce24f8312dcb07 Mon Sep 17 00:00:00 2001 From: Jason Dufair Date: Fri, 1 Mar 2019 14:37:40 -0500 Subject: [PATCH 3/3] Use updated dashboard-insert-section api --- dashboard-hackernews.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dashboard-hackernews.el b/dashboard-hackernews.el index 0e3245e..1ccded5 100644 --- a/dashboard-hackernews.el +++ b/dashboard-hackernews.el @@ -100,11 +100,14 @@ (sleep-for 0.05)) (setq dashboard-hackernews-items (seq-sort-by (lambda (el) (cdr (assoc 'id el))) '> dashboard-hackernews-items)) - (dashboard-hackernews-insert-list - "Hackernews:" - (dashboard-subseq - dashboard-hackernews-items - 0 list-size)))))) + (dashboard-insert-section + "Hacker News:" + dashboard-hackernews-items + list-size + "n" + `(lambda (&rest ignore) + (browse-url ,(cdr (assoc 'url el)))) + (format "[%3d] %s" (cdr (assoc 'score el)) (decode-coding-string (cdr (assoc 'title el)) 'utf-8))))))) (provide 'dashboard-hackernews) ;;; dashboard-hackernews.el ends here