From f95e9e89b47b35d5198ecaff7ee20ffb3e63b066 Mon Sep 17 00:00:00 2001 From: Litvinov Sergey 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