summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2015-01-04 22:18:40 -0500
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2015-01-05 12:49:41 +0100
commit460f31efa03ceb18c8177dd1da76ae9d8650e0aa (patch)
treeb323786be6bd84b5330e4fa70c5187067bb7ab51
parent70f965535b07c03a40792237de3a970d1cb57551 (diff)
downloadorg-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.el24
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."