summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Wahl <marcowahlsoft@gmail.com>2018-06-24 09:52:29 +0200
committerMarco Wahl <marcowahlsoft@gmail.com>2018-06-24 09:52:29 +0200
commita6b4cec691317a903475519dc4aaf105beda1833 (patch)
tree86635b0265e26760a9d49c8a9ca9426bac0dd648
parentd6ebe38e2c420daa8ff0a27f5e4d5af2672a84f6 (diff)
downloadorg-mode-a6b4cec691317a903475519dc4aaf105beda1833.tar.gz
org-agenda: Refactored. Add test.
* lisp/org-agenda.el (org-agenda-mode): Factored out a function for a loop occuring two times. * testing/lisp/test-org-agenda.el: test the text scale after agenda-undo.
-rw-r--r--lisp/org-agenda.el47
-rw-r--r--testing/lisp/test-org-agenda.el21
2 files changed, 44 insertions, 24 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 3255d73..eaeddb6 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -2191,30 +2191,29 @@ The following commands are available:
face-remapping-alist))
(save (buffer-local-variables)))
(kill-all-local-variables)
- (cond (org-agenda-doing-sticky-redo
- ;; Refreshing sticky agenda-buffer
- ;;
- ;; Preserve the value of `org-agenda-local-vars' variables.
- (mapc #'make-local-variable org-agenda-local-vars)
- (dolist (elem save)
- (pcase elem
- (`(,var . ,val) ;ignore unbound variables
- (when (and val (memq var org-agenda-local-vars))
- (set var val)))))
- (setq-local org-agenda-this-buffer-is-sticky t))
- (org-agenda-sticky
- ;; Creating a sticky Agenda buffer for the first time
- (mapc 'make-local-variable org-agenda-local-vars)
- (setq-local org-agenda-this-buffer-is-sticky t))
- (t
- ;; Creating a non-sticky agenda buffer
- (setq-local org-agenda-this-buffer-is-sticky nil)))
- (mapc #'make-local-variable agenda-local-vars-to-keep)
- (dolist (elem save)
- (pcase elem
- (`(,var . ,val) ;ignore unbound variables
- (when (and val (memq var agenda-local-vars-to-keep))
- (set var val))))))
+ (cl-flet ((reset-saved (var-set)
+ "Reset variables in VAR-SET to possibly stored value in SAVE."
+ (dolist (elem save)
+ (pcase elem
+ (`(,var . ,val) ;ignore unbound variables
+ (when (and val (memq var var-set))
+ (set var val)))))))
+ (cond (org-agenda-doing-sticky-redo
+ ;; Refreshing sticky agenda-buffer
+ ;;
+ ;; Preserve the value of `org-agenda-local-vars' variables.
+ (mapc #'make-local-variable org-agenda-local-vars)
+ (reset-saved org-agenda-local-vars)
+ (setq-local org-agenda-this-buffer-is-sticky t))
+ (org-agenda-sticky
+ ;; Creating a sticky Agenda buffer for the first time
+ (mapc 'make-local-variable org-agenda-local-vars)
+ (setq-local org-agenda-this-buffer-is-sticky t))
+ (t
+ ;; Creating a non-sticky agenda buffer
+ (setq-local org-agenda-this-buffer-is-sticky nil)))
+ (mapc #'make-local-variable agenda-local-vars-to-keep)
+ (reset-saved agenda-local-vars-to-keep)))
(setq org-agenda-undo-list nil
org-agenda-pending-undo-list nil
org-agenda-bulk-marked-entries nil)
diff --git a/testing/lisp/test-org-agenda.el b/testing/lisp/test-org-agenda.el
index 552792f..6aaa88f 100644
--- a/testing/lisp/test-org-agenda.el
+++ b/testing/lisp/test-org-agenda.el
@@ -124,6 +124,27 @@
(org-test-agenda--kill-all-agendas))
+;; agenda redo
+
+(require 'face-remap)
+
+(ert-deftest test-org-agenda/rescale ()
+ "Text scale survives `org-agenda-redo'."
+ (org-test-agenda--kill-all-agendas)
+ (unwind-protect
+ (let ((org-agenda-span 'day)
+ org-agenda-files)
+ (org-agenda-list)
+ (set-buffer org-agenda-buffer-name)
+ (text-scale-mode)
+ (text-scale-set 11)
+ (cl-assert (and (boundp text-scale-mode) text-scale-mode))
+ (org-agenda-redo)
+ (should text-scale-mode)
+ (should (= 11 text-scale-mode-amount)))
+ (org-test-agenda--kill-all-agendas)))
+
+
(provide 'test-org-agenda)
;;; test-org-agenda.el ends here