Browse Source

Add indirect agenda follow mode

* lisp/org-agenda.el (org-agenda-follow-indirect): New option.
(org-agenda-follow-mode): Call `org-agenda-do-context-action' fro
follow mode.
(org-agenda-do-context-action): Also do indirect follow mode action.

By setting `org-agenda-follow-indirect' to a non-nil value,
`org-agenda-follow-mode' will use an indirect buffer to display only
the current item, rather than the whole agenda file in which it lives
Dave Abrahams 14 năm trước cách đây
mục cha
commit
e53f62eba9
1 tập tin đã thay đổi với 10 bổ sung3 xóa
  1. 10 3
      lisp/org-agenda.el

+ 10 - 3
lisp/org-agenda.el

@@ -872,6 +872,12 @@ Needs to be set before org.el is loaded."
   :group 'org-agenda-startup
   :type 'boolean)
 
+(defcustom org-agenda-follow-indirect nil
+  "Non-nil means `org-agenda-follow-mode' displays only the
+current item's tree, in an indirect buffer."
+  :group 'org-agenda
+  :type 'boolean)
+
 (defcustom org-agenda-show-outline-path t
   "Non-nil means show outline path in echo area after line motion."
   :group 'org-agenda-startup
@@ -6615,8 +6621,7 @@ so that the date SD will be in that range."
   (interactive)
   (setq org-agenda-follow-mode (not org-agenda-follow-mode))
   (org-agenda-set-mode-name)
-  (if (and org-agenda-follow-mode (org-get-at-bol 'org-marker))
-      (org-agenda-show))
+  (org-agenda-do-context-action)
   (message "Follow mode is %s"
 	   (if org-agenda-follow-mode "on" "off")))
 
@@ -6778,7 +6783,9 @@ When called with a prefix argument, include all archive files as well."
   "Show outline path and, maybe, follow mode window."
   (let ((m (org-get-at-bol 'org-marker)))
     (if (and org-agenda-follow-mode m)
-	(org-agenda-show))
+	(if org-agenda-follow-indirect
+	    (org-agenda-tree-to-indirect-buffer)
+	  (org-agenda-show)))
     (if (and m org-agenda-show-outline-path)
 	(org-with-point-at m
 	  (org-display-outline-path t)))))