emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/org-drill b69d212068 053/251: Go back to using org-save-ou


From: ELPA Syncer
Subject: [nongnu] elpa/org-drill b69d212068 053/251: Go back to using org-save-outline-visibility instead of org-drill-save-visibility -
Date: Mon, 17 Jan 2022 18:59:00 -0500 (EST)

branch: elpa/org-drill
commit b69d212068793246c7b8b82912c47a67e5b17cf1
Author: eeeickythump <devnull@localhost>
Commit: eeeickythump <devnull@localhost>

    Go back to using org-save-outline-visibility instead of 
org-drill-save-visibility -
    the latter is no longer needed as the former now returns a useful value.
    
    In org-drill-entry, temporarily bind `outline-view-change-hook' to nil, as
    fontification functions in that variable can cause big slowdowns when 
moving from
    drill item to drill item.
---
 org-drill.el | 85 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 35 insertions(+), 50 deletions(-)

diff --git a/org-drill.el b/org-drill.el
index 7d3217644f..793d6b483c 100755
--- a/org-drill.el
+++ b/org-drill.el
@@ -1976,23 +1976,6 @@ visible content of the card."
       (org-drill-hide-subheadings-if 'org-drill-entry-p)))))
 
 
-;;; The following macro is necessary because `org-save-outline-visibility'
-;;; currently discards the value returned by its body and returns a garbage
-;;; value instead. (as at org mode v 7.5)
-
-(defmacro org-drill-save-visibility (&rest body)
-  "Store the current visibility state of the org buffer, and restore it
-after executing BODY. Return the value of the last expression
-in BODY."
-  (let ((retval (gensym)))
-    `(let ((,retval nil))
-       (org-save-outline-visibility t
-         (setq ,retval
-               (progn
-                 ,@body)))
-       ,retval)))
-
-
 (defun org-drill-entry ()
   "Present the current topic for interactive review, as in `org-drill'.
 Review will occur regardless of whether the topic is due for review or whether
@@ -2012,38 +1995,41 @@ See `org-drill' for more details."
   ;;  (org-back-to-heading))
   (let ((card-type (org-entry-get (point) "DRILL_CARD_TYPE"))
         (answer-fn 'org-drill-present-default-answer)
-        (cont nil))
-    (org-drill-save-visibility
-     (save-restriction
-       (org-narrow-to-subtree)
-       (org-show-subtree)
-       (org-cycle-hide-drawers 'all)
-
-       (let ((presentation-fn (cdr (assoc card-type 
org-drill-card-type-alist))))
-         (if (listp presentation-fn)
-             (psetq answer-fn (or (second presentation-fn)
-                                  'org-drill-present-default-answer)
-                    presentation-fn (first presentation-fn)))
-         (cond
-          ((null presentation-fn)
-           (message "%s:%d: Unrecognised card type '%s', skipping..."
-                    (buffer-name) (point) card-type)
-           (sit-for 0.5)
-           'skip)
-          (t
-           (setq cont (funcall presentation-fn))
-           (cond
-            ((not cont)
-             (message "Quit")
-             nil)
-            ((eql cont 'edit)
-             'edit)
-            ((eql cont 'skip)
-             'skip)
-            (t
-             (save-excursion
-               (funcall answer-fn
-                        (lambda () (org-drill-reschedule)))))))))))))
+        (cont nil)
+        ;; fontification functions in `outline-view-change-hook' can cause big
+        ;; slowdowns, so we temporarily bind this variable to nil here.
+        (outline-view-change-hook nil))
+    (org-save-outline-visibility t
+      (save-restriction
+        (org-narrow-to-subtree)
+        (org-show-subtree)
+        (org-cycle-hide-drawers 'all)
+
+        (let ((presentation-fn (cdr (assoc card-type 
org-drill-card-type-alist))))
+          (if (listp presentation-fn)
+              (psetq answer-fn (or (second presentation-fn)
+                                   'org-drill-present-default-answer)
+                     presentation-fn (first presentation-fn)))
+          (cond
+           ((null presentation-fn)
+            (message "%s:%d: Unrecognised card type '%s', skipping..."
+                     (buffer-name) (point) card-type)
+            (sit-for 0.5)
+            'skip)
+           (t
+            (setq cont (funcall presentation-fn))
+            (cond
+             ((not cont)
+              (message "Quit")
+              nil)
+             ((eql cont 'edit)
+              'edit)
+             ((eql cont 'skip)
+              'skip)
+             (t
+              (save-excursion
+                (funcall answer-fn
+                         (lambda () (org-drill-reschedule)))))))))))))
 
 
 (defun org-drill-entries-pending-p ()
@@ -3013,4 +2999,3 @@ returns its return value."
 
 
 (provide 'org-drill)
-



reply via email to

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