branch: elpa/fj
commit 7fbb0e23f4322a36429b1e28d3bc8ea185ab74c2
Author: marty hiatt <[email protected]>
Commit: marty hiatt <[email protected]>
implement sorting of repo search results on C-c C-c (also saner defaults)
---
fj.el | 43 ++++++++++++++++++++++++++++++++++---------
1 file changed, 34 insertions(+), 9 deletions(-)
diff --git a/fj.el b/fj.el
index e5826b8a79..6ce21120a0 100644
--- a/fj.el
+++ b/fj.el
@@ -3690,7 +3690,7 @@ PAGE LIMIT"
(let* ((params
(append
`(("limit" . ,(or limit (fj-default-limit)))
- ("sort" . ,(or sort "updated")))
+ ("sort" . ,sort))
;; (when id `(("exclusive" . "true")))
(fedi-opt-params (query :alias "q") (topic :boolean "true")
(id :alias "uid")
@@ -3714,7 +3714,8 @@ Returns annotation for CAND, a candidate."
(defvar-keymap fj-repo-tl-mode-map
:doc "Map for `fj-repo-tl-mode', a tabluated list of repos."
- :parent fj-repo-tl-map)
+ :parent fj-repo-tl-map
+ "C-c C-c" #'fj-list-repos-sort)
(define-derived-mode fj-repo-tl-mode tabulated-list-mode
"fj-repo-search"
@@ -3811,10 +3812,22 @@ ORDER is the sort order, either \"asc\" or \"desc\"; it
requires SORT to be set.
PAGE is the page number of results.
LIMIT is the amount of result (to a page)."
(interactive "sSearch for repos: ")
- (let* ((resp (fj-repo-search-do query topic id mode exclusive
- (or include-desc :desc)
- priority-owner-id
- sort order page limit))
+ (let* ((resp (fj-repo-search-do
+ query topic id mode exclusive
+ ;; include description by default:
+ (or include-desc :desc)
+ priority-owner-id
+ ;; provide better default than the API.
+ ;; default is alphabetic, which
+ ;; indicates very little for repos
+ ;; results:
+ (or sort "updated")
+ ;; provide better default than the API.
+ ;; if we sort alphabetic but don't to
+ ;; desc it is reverse alphabetic, or for
+ ;; stars it starts with least stars:
+ (or order "desc")
+ page limit))
(buf (format "*fj-search-%s*" query))
(url (concat fj-host "/explore/repos"))
(data (alist-get 'data resp))
@@ -3826,9 +3839,12 @@ LIMIT is the amount of result (to a page)."
`( :url ,url
:viewargs
( :query ,query :topic ,topic :id ,id :mode ,mode
- :exclusive ,exclusive :include-desc ,include-desc
- :priority-owner-id ,priority-owner-id :sort ,sort
- :order ,order :page ,page :limit ,limit)
+ :exclusive ,exclusive
+ :include-desc ,(or include-desc :desc)
+ :priority-owner-id ,priority-owner-id
+ :sort ,(or sort "updated")
+ :order ,(or order "desc") ;; else the default is backwards
+ :page ,page :limit ,limit)
:viewfun fj-repo-search))
(fj-other-window-maybe prev-buf "*fj-search" #'string-prefix-p))))
@@ -3837,6 +3853,15 @@ LIMIT is the amount of result (to a page)."
(interactive "sSearch for topic in repos: ")
(fj-repo-search query 'topic))
+(defun fj-list-repos-sort ()
+ "Reload current repos listing, prompting for a sort type.
+The default sort value is \"latest\"."
+ (interactive)
+ (fj-destructure-buf-spec (viewfun viewargs)
+ (let* ((sort (completing-read "Sort by: " fj-search-sorts))
+ (args (plist-put (copy-sequence viewargs) :sort sort)))
+ (apply viewfun (fj-plist-values args)))))
+
;;; TL ACTIONS
(defun fj-create-issue (&optional _)