diff options
| author | eeeickythump <devnull@localhost> | 2012-05-06 10:34:58 +1200 |
|---|---|---|
| committer | eeeickythump <devnull@localhost> | 2012-05-06 10:34:58 +1200 |
| commit | b69d212068793246c7b8b82912c47a67e5b17cf1 (patch) | |
| tree | 546c257d3ae14be5381db61b50e2c62d63557a58 | |
| parent | f9a217faa10e4b580324020c5ee3489956487998 (diff) | |
| download | org-drill-b69d212068793246c7b8b82912c47a67e5b17cf1.tar.gz org-drill-b69d212068793246c7b8b82912c47a67e5b17cf1.zip | |
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.
| -rwxr-xr-x | org-drill.el | 85 |
1 files changed, 35 insertions, 50 deletions
diff --git a/org-drill.el b/org-drill.el index 7d32176..793d6b4 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) - |
