This must be a cumulative patch against master.
>From f95e9e89b47b35d5198ecaff7ee20ffb3e63b066 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey <slitvi...@gmail.com>
Date: Thu, 2 Feb 2012 08:15:56 +0100
Subject: [PATCH] Make narrowing of the agenda file survive (org-agenda-redo)

* lisp/org.el (org-prepare-agenda-buffers): move '(save-excursion
  (save-restriction' construction
* testing/examples/org-agenda-test.org: add examples
---
 lisp/org.el                          |   65 +++++++++++++++++----------------
 testing/examples/org-agenda-test.org |   21 +++++++++++
 2 files changed, 54 insertions(+), 32 deletions(-)
 create mode 100644 testing/examples/org-agenda-test.org

diff --git a/lisp/org.el b/lisp/org.el
index dc9e653..2f08579 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16575,39 +16575,40 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 		(set-buffer file)
 	      (org-check-agenda-file file)
 	      (set-buffer (org-get-agenda-file-buffer file)))
-	    (widen)
-	    (setq bmp (buffer-modified-p))
-	    (org-refresh-category-properties)
-	    (setq org-todo-keywords-for-agenda
-		  (append org-todo-keywords-for-agenda org-todo-keywords-1))
-	    (setq org-done-keywords-for-agenda
-		  (append org-done-keywords-for-agenda org-done-keywords))
-	    (setq org-todo-keyword-alist-for-agenda
-		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
-	    (setq org-drawers-for-agenda
-		  (append org-drawers-for-agenda org-drawers))
-	    (setq org-tag-alist-for-agenda
-		  (append org-tag-alist-for-agenda org-tag-alist))
-
 	    (save-excursion
-	      (remove-text-properties (point-min) (point-max) pall)
-	      (when org-agenda-skip-archived-trees
-		(goto-char (point-min))
-		(while (re-search-forward rea nil t)
-		  (if (org-at-heading-p t)
-		      (add-text-properties (point-at-bol) (org-end-of-subtree t) pa))))
-	      (goto-char (point-min))
-	      (setq re (format org-heading-keyword-regexp-format
-			       org-comment-string))
-	      (while (re-search-forward re nil t)
-		(add-text-properties
-		 (match-beginning 0) (org-end-of-subtree t) pc)))
-	    (set-buffer-modified-p bmp)))))
-    (setq org-todo-keywords-for-agenda
-          (org-uniquify org-todo-keywords-for-agenda))
-    (setq org-todo-keyword-alist-for-agenda
-	  (org-uniquify org-todo-keyword-alist-for-agenda)
-	  org-tag-alist-for-agenda (org-uniquify org-tag-alist-for-agenda))))
+	      (save-restriction
+		(widen)
+		(setq bmp (buffer-modified-p))
+		(org-refresh-category-properties)
+		(setq org-todo-keywords-for-agenda
+		      (append org-todo-keywords-for-agenda org-todo-keywords-1))
+		(setq org-done-keywords-for-agenda
+		      (append org-done-keywords-for-agenda org-done-keywords))
+		(setq org-todo-keyword-alist-for-agenda
+		      (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
+		(setq org-drawers-for-agenda
+		      (append org-drawers-for-agenda org-drawers))
+		(setq org-tag-alist-for-agenda
+		      (append org-tag-alist-for-agenda org-tag-alist))
+		(save-excursion
+		  (remove-text-properties (point-min) (point-max) pall)
+		  (when org-agenda-skip-archived-trees
+		    (goto-char (point-min))
+		    (while (re-search-forward rea nil t)
+		      (if (org-at-heading-p t)
+			  (add-text-properties (point-at-bol) (org-end-of-subtree t) pa))))
+		  (goto-char (point-min))
+		  (setq re (format org-heading-keyword-regexp-format
+				   org-comment-string))
+		  (while (re-search-forward re nil t)
+		    (add-text-properties
+		     (match-beginning 0) (org-end-of-subtree t) pc)))
+		(set-buffer-modified-p bmp)))))))
+	(setq org-todo-keywords-for-agenda
+	      (org-uniquify org-todo-keywords-for-agenda))
+	(setq org-todo-keyword-alist-for-agenda
+	      (org-uniquify org-todo-keyword-alist-for-agenda)
+	      org-tag-alist-for-agenda (org-uniquify org-tag-alist-for-agenda))))
 
 ;;;; Embedded LaTeX
 
diff --git a/testing/examples/org-agenda-test.org b/testing/examples/org-agenda-test.org
new file mode 100644
index 0000000..b16badb
--- /dev/null
+++ b/testing/examples/org-agenda-test.org
@@ -0,0 +1,21 @@
+#+Title: a collection of examples for org-agenda tests
+* TODO should be visible
+  CLOCK: [2010-01-01 Fri 10:00]--[2010-01-01 Fri 10:05] =>  0:05
+ob-agenda-test.org buffer should be narrowed after execution of this block
+#+BEGIN_SRC elisp :results silent
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-narrow-to-subtree)
+  (org-agenda nil "t")
+  (org-agenda-redo))
+#+END_SRC
+
+#+BEGIN_SRC elisp :results silent
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-agenda nil "a")
+  (org-agenda-clockreport-mode 1)
+  (org-agenda-change-time-span 'year 2010)
+  (org-agenda-day-view 1)
+)
+#+END_SRC
+* TODO should be hidden
+  CLOCK: [2010-02-01 Mon 10:00]--[2010-02-01 Mon 10:05] =>  0:05
-- 
1.7.3.4

Reply via email to