summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Abrahams <dave@boostpro.com>2011-10-23 14:41:44 -0400
committerBastien Guerry <bzg@altern.org>2011-12-12 17:37:16 +0100
commit35d6d9f5051f39a18870f1a002bf63f06282e8a0 (patch)
treea4b37d52d9882f01499193dc756f36e61a271bbc
parentc9ac829394df3ab8e0fbdd970cb3e90814465fec (diff)
downloadorg-mode-35d6d9f5051f39a18870f1a002bf63f06282e8a0.tar.gz
Maintain stable window config when `org-agenda-follow-indirect' is set.
* org-agenda.el (org-agenda-do-tree-to-indirect-buffer): New function. (org-agenda-tree-to-indirect-buffer): Use the new function. TINYCHANGE Without this change, `org-agenda-follow-indirect' tends to cause the window configration to bounce around chaotically as you move from item to item.
-rw-r--r--lisp/org-agenda.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index fb56b5b..7eacf54 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -7199,6 +7199,23 @@ With numerical prefix arg ARG, go up to this level and then take that tree.
With a \\[universal-argument] prefix, make a separate frame for this tree (i.e. don't
use the dedicated frame)."
(interactive)
+ (if (and current-prefix-arg (listp current-prefix-arg))
+ (org-agenda-do-tree-to-indirect-buffer)
+ (let ((agenda-window (selected-window))
+ (indirect-window (get-buffer-window org-last-indirect-buffer)))
+ (save-window-excursion (org-agenda-do-tree-to-indirect-buffer))
+ (unwind-protect
+ (progn
+ (unless indirect-window
+ (setq indirect-window (split-window agenda-window)))
+ (select-window indirect-window)
+ (switch-to-buffer org-last-indirect-buffer :norecord)
+ (fit-window-to-buffer indirect-window))
+ (select-window agenda-window)))))
+
+(defun org-agenda-do-tree-to-indirect-buffer ()
+ "Implements org-agenda-tree-to-indirect-buffer, but
+doesn't attempt to manage stability of the window configuration."
(org-agenda-check-no-diary)
(let* ((marker (or (org-get-at-bol 'org-marker)
(org-agenda-error)))