1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2025-01-20 19:24:20 +00:00

Fix exiting sticky agenda refresh with C-g, was forgetting what kind of agenda it was

This commit is contained in:
Max Mikhanosha 2012-03-03 11:04:12 -05:00
parent 1b3dc456e4
commit ed0859969b

View File

@ -1937,12 +1937,30 @@ The following commands are available:
\\{org-agenda-mode-map}"
(interactive)
(kill-all-local-variables)
(let ((sticky-p (or org-agenda-sticky
org-agenda-doing-sticky-redo)))
(when sticky-p
(mapc 'make-local-variable org-agenda-local-vars))
(set (make-local-variable 'org-agenda-this-buffer-is-sticky) sticky-p))
(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)
(mapc 'make-local-variable org-agenda-local-vars)
(dolist (elem save)
(let ((var (car elem))
(val (cdr elem)))
(when (and val
(member var org-agenda-local-vars))
(set var val)))))
(set (make-local-variable '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)
(set (make-local-variable 'org-agenda-this-buffer-is-sticky) t))
(t
;; Creating a non-sticky agenda buffer
(kill-all-local-variables)
(set (make-local-variable 'org-agenda-this-buffer-is-sticky) nil)))
(setq org-agenda-undo-list nil
org-agenda-pending-undo-list nil
org-agenda-bulk-marked-entries nil)