summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Wahl <marcowahlsoft@gmail.com>2018-06-04 15:17:29 +0200
committerMarco Wahl <marcowahlsoft@gmail.com>2018-06-20 17:22:52 +0200
commit00c1184a042da4fc9642eab8020accd87dd9e1c0 (patch)
tree69deaca2840fdfa69dd7aaaa0b7213479a4edfb0
parent9ff77b1e579b78c06a3923ef7b710562fdb98614 (diff)
downloadorg-mode-00c1184a042da4fc9642eab8020accd87dd9e1c0.tar.gz
org-agenda: Keep local-variables defining text-scale
* lisp/org-agenda.el (org-agenda-mode): Save and restore local variables text-scale-mode-amount, text-scale-mode, text-scale-mode-lighter, face-remapping-alist. In effect this keeps the text-scale at agenda rebuild and redo. This commit is predicated on the newsgroup post of Samuel Wales "point moves and zoom level reverts when refreshing agenda" at Sun, 27 May 2018.
-rw-r--r--lisp/org-agenda.el44
1 files changed, 26 insertions, 18 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 24b7524..4b95b8c 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -2184,29 +2184,37 @@ The following commands are available:
\\{org-agenda-mode-map}"
(interactive)
- (cond (org-agenda-doing-sticky-redo
- ;; Refreshing sticky agenda-buffer
- ;;
- ;; Preserve the value of `org-agenda-local-vars' variables,
- ;; while letting `kill-all-local-variables' kill the rest
- (let ((save (buffer-local-variables)))
- (kill-all-local-variables)
+ (let ((agenda-local-vars-to-keep
+ '(text-scale-mode-amount
+ text-scale-mode
+ text-scale-mode-lighter
+ 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
- (kill-all-local-variables)
- (mapc 'make-local-variable org-agenda-local-vars)
- (setq-local org-agenda-this-buffer-is-sticky t))
- (t
- ;; Creating a non-sticky agenda buffer
- (kill-all-local-variables)
- (setq-local org-agenda-this-buffer-is-sticky nil)))
+ (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))))))
(setq org-agenda-undo-list nil
org-agenda-pending-undo-list nil
org-agenda-bulk-marked-entries nil)