branch: elpa/gnosis
commit b2903c62043233ad99d9d37846bde0372f020f27
Author: Thanos Apollo <[email protected]>
Commit: Thanos Apollo <[email protected]>
[Rewrite] review: use optional function and global review-types.
+ Simplified to make it work with gnosis-monkeytype.
+ Introduced a new global variable =gnosis-review-types= to store
available review types for easier management.
---
gnosis.el | 53 ++++++++++++++++++++++++++++-------------------------
1 file changed, 28 insertions(+), 25 deletions(-)
diff --git a/gnosis.el b/gnosis.el
index a3cc8af2e00..bbe756383bb 100644
--- a/gnosis.el
+++ b/gnosis.el
@@ -159,6 +159,14 @@ Avoid using an increased height value as this messes up
with
(defvar gnosis-testing nil
"Change this to non-nil when running manual tests.")
+(defvar gnosis-review-types '("Due themata"
+ "Due themata of deck"
+ "Due themata of specified tag(s)"
+ "Overdue themata"
+ "Due themata (Without Overdue)"
+ "All themata of deck"
+ "All themata of tag(s)"))
+
(defconst gnosis-db-version 4
"Gnosis database version.")
@@ -1364,35 +1372,30 @@ To customize the keybindings, adjust
`gnosis-review-keybindings'."
(?q (gnosis-review-action--quit success id)))))
;;;###autoload
-(defun gnosis-review ()
- "Start gnosis review session."
+(defun gnosis-review (&optional fn)
+ "Start gnosis review session.
+
+FN: Review function, defaults to `gnosis-review-session'"
(interactive)
- ;; Refresh modeline
(setq gnosis-due-themata-total (length (gnosis-review-get-due-themata)))
- ;; reset pre-image register
(set-register :gnosis-pre-image nil)
- ;; Select review type
- (let ((review-type
- (gnosis-completing-read "Review: "
- '("Due themata"
- "Due themata of deck"
- "Due themata of specified tag(s)"
- "Overdue themata"
- "Due themata (Without Overdue)"
- "All themata of deck"
- "All themata of tag(s)"))))
+ (let ((review-type (gnosis-completing-read "Review: " gnosis-review-types))
+ (fn (or fn #'gnosis-review-session)))
(pcase review-type
- ("Due themata" (gnosis-review-session (gnosis-collect-thema-ids :due t)
t))
- ("Due themata of deck" (gnosis-review-session
- (gnosis-collect-thema-ids :due t :deck
(gnosis--get-deck-id))))
- ("Due themata of specified tag(s)" (gnosis-review-session
- (gnosis-collect-thema-ids :due t :tags
t)))
- ("Overdue themata" (gnosis-review-session
(gnosis-review-get-overdue-themata)))
- ("Due themata (Without Overdue)" (gnosis-review-session
-
(gnosis-review-get-due-themata--no-overdue)))
- ("All themata of deck" (gnosis-review-session
- (gnosis-collect-thema-ids :deck
(gnosis--get-deck-id))))
- ("All themata of tag(s)" (gnosis-review-session
(gnosis-collect-thema-ids :tags t))))))
+ ("Due themata"
+ (funcall fn (gnosis-collect-thema-ids :due t) t))
+ ("Due themata of deck"
+ (funcall fn (gnosis-collect-thema-ids :due t :deck
(gnosis--get-deck-id))))
+ ("Due themata of specified tag(s)"
+ (funcall fn (gnosis-collect-thema-ids :due t :tags t)))
+ ("Overdue themata"
+ (funcall fn (gnosis-review-get-overdue-themata)))
+ ("Due themata (Without Overdue)"
+ (funcall fn (gnosis-review-get-due-themata--no-overdue)))
+ ("All themata of deck"
+ (funcall fn (gnosis-collect-thema-ids :deck (gnosis--get-deck-id))))
+ ("All themata of tag(s)"
+ (funcall fn (gnosis-collect-thema-ids :tags t))))))
(defun gnosis-review--select-topic ()
"Prompt for topic from org-gnosis database and return it's id."