Browse Source

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.
Marco Wahl 2 years ago
parent
commit
a6b4cec691
2 changed files with 44 additions and 24 deletions
  1. 23 24
      lisp/org-agenda.el
  2. 21 0
      testing/lisp/test-org-agenda.el

+ 23 - 24
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)

+ 21 - 0
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