diff options
author | Kyle Meyer <kyle@kyleam.com> | 2015-01-04 22:18:40 -0500 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2015-01-05 12:49:41 +0100 |
commit | 460f31efa03ceb18c8177dd1da76ae9d8650e0aa (patch) | |
tree | b323786be6bd84b5330e4fa70c5187067bb7ab51 | |
parent | 70f965535b07c03a40792237de3a970d1cb57551 (diff) | |
download | org-mode-460f31efa03ceb18c8177dd1da76ae9d8650e0aa.tar.gz |
org-agenda: Track last indirect buffer
* lisp/org-agenda.el (org-agenda-tree-to-indirect-buffer): Record last
indirect buffer for agenda.
* lisp/org-agenda.el (org-agenda-quit): Delete window for
org-agenda-last-indirect-buffer, not org-last-indirect-buffer.
Introduce a new variable, org-agenda-last-indirect-buffer, that is
specific for the agenda (and perhaps a particular agenda buffer, if
org-agenda-sticky is set). This prevents org-agenda-quit from deleting
a window if it is displaying a buffer that was created through a
org-tree-to-indirect-buffer call outside of
org-agenda-tree-to-indirect-buffer.
Make org-agenda-Quit check for indirect buffer windows, like
org-agenda-quit does.
-rw-r--r-- | lisp/org-agenda.el | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 2fbfacc..6e2e953 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2078,6 +2078,8 @@ When nil, `q' will kill the single agenda buffer." (defvar org-agenda-this-buffer-name nil) (defvar org-agenda-doing-sticky-redo nil) (defvar org-agenda-this-buffer-is-sticky nil) +(defvar org-agenda-last-indirect-buffer nil + "Last buffer loaded by `org-agenda-tree-to-indirect-buffer'.") (defconst org-agenda-local-vars '(org-agenda-this-buffer-name @@ -2102,6 +2104,7 @@ When nil, `q' will kill the single agenda buffer." org-agenda-effort-filter org-agenda-markers org-agenda-last-search-view-search-was-boolean + org-agenda-last-indirect-buffer org-agenda-filtered-by-category org-agenda-filter-form org-agenda-cycle-counter @@ -7177,6 +7180,12 @@ Allowed types are 'agenda 'timeline 'todo 'tags 'search." Like `org-agenda-quit', but kill the buffer even when `org-agenda-sticky' is non-nil." (interactive) + (let ((org-agenda-last-indirect-window + (and (eq org-indirect-buffer-display 'other-window) + org-agenda-last-indirect-buffer + (get-buffer-window org-agenda-last-indirect-buffer)))) + (when org-agenda-last-indirect-window + (delete-window org-agenda-last-indirect-window))) (if org-agenda-columns-active (org-columns-quit) (let ((buf (current-buffer))) @@ -7210,12 +7219,12 @@ the pre-agenda window configuration. When column view is active, exit column view instead of the agenda." (interactive) - (if (and (eq org-indirect-buffer-display 'other-window) - org-last-indirect-buffer) - (let ((org-last-indirect-window - (get-buffer-window org-last-indirect-buffer))) - (if org-last-indirect-window - (delete-window org-last-indirect-window)))) + (let ((org-agenda-last-indirect-window + (and (eq org-indirect-buffer-display 'other-window) + org-agenda-last-indirect-buffer + (get-buffer-window org-agenda-last-indirect-buffer)))) + (when org-agenda-last-indirect-window + (delete-window org-agenda-last-indirect-window))) (if org-agenda-columns-active (org-columns-quit) (if org-agenda-sticky @@ -8758,7 +8767,8 @@ use the dedicated frame)." (and indirect-window (select-window indirect-window)) (switch-to-buffer org-last-indirect-buffer :norecord) (fit-window-to-buffer indirect-window))) - (select-window (get-buffer-window agenda-buffer))))) + (select-window (get-buffer-window agenda-buffer)) + (setq org-agenda-last-indirect-buffer org-last-indirect-buffer)))) (defun org-agenda-do-tree-to-indirect-buffer (arg) "Same as `org-agenda-tree-to-indirect-buffer' without saving window." |