Merge branch 'maint'

Conflicts:
	lisp/org-agenda.el
This commit is contained in:
Bastien Guerry 2014-05-26 15:32:13 +02:00
commit b622300c0c
1 changed files with 63 additions and 57 deletions

View File

@ -3587,10 +3587,12 @@ generating a new one."
;; does not have org variables local ;; does not have org variables local
org-agenda-this-buffer-is-sticky)))) org-agenda-this-buffer-is-sticky))))
(defun org-agenda-prepare-window (abuf) (defun org-agenda-prepare-window (abuf filter-alist)
"Setup agenda buffer in the window." "Setup agenda buffer in the window.
(let* ((awin (get-buffer-window abuf)) ABUF is the buffer for the agenda window.
wconf) FILTER-ALIST is an alist of filters we need to apply when
`org-agenda-persistent-filter' is non-nil."
(let* ((awin (get-buffer-window abuf)) wconf)
(cond (cond
((equal (current-buffer) abuf) nil) ((equal (current-buffer) abuf) nil)
(awin (select-window awin)) (awin (select-window awin))
@ -3604,26 +3606,30 @@ generating a new one."
((equal org-agenda-window-setup 'reorganize-frame) ((equal org-agenda-window-setup 'reorganize-frame)
(delete-other-windows) (delete-other-windows)
(org-switch-to-buffer-other-window abuf))) (org-switch-to-buffer-other-window abuf)))
;; additional test in case agenda is invoked from within agenda (setq org-agenda-tag-filter (cdr (assoc 'tag filter-alist)))
;; buffer via elisp link (setq org-agenda-category-filter (cdr (assoc 'cat filter-alist)))
(setq org-agenda-regexp-filter (cdr (assoc 're filter-alist)))
;; Additional test in case agenda is invoked from within agenda
;; buffer via elisp link.
(unless (equal (current-buffer) abuf) (unless (equal (current-buffer) abuf)
(org-pop-to-buffer-same-window abuf)) (org-pop-to-buffer-same-window abuf))
(setq org-agenda-pre-window-conf (setq org-agenda-pre-window-conf
(or org-agenda-pre-window-conf wconf)))) (or org-agenda-pre-window-conf wconf))))
(defun org-agenda-prepare (&optional name) (defun org-agenda-prepare (&optional name)
(let ((filter-alist (if org-agenda-persistent-filter
(list `(tag . ,org-agenda-tag-filter)
`(re . ,org-agenda-regexp-filter)
`(car . ,org-agenda-category-filter)))))
(if (org-agenda-use-sticky-p) (if (org-agenda-use-sticky-p)
(progn (progn
;; Popup existing buffer ;; Popup existing buffer
(org-agenda-prepare-window (get-buffer org-agenda-buffer-name)) (org-agenda-prepare-window (get-buffer org-agenda-buffer-name)
filter-alist)
(message "Sticky Agenda buffer, use `r' to refresh") (message "Sticky Agenda buffer, use `r' to refresh")
(or org-agenda-multi (org-agenda-fit-window-to-buffer)) (or org-agenda-multi (org-agenda-fit-window-to-buffer))
(throw 'exit "Sticky Agenda buffer, use `r' to refresh")) (throw 'exit "Sticky Agenda buffer, use `r' to refresh"))
(setq org-todo-keywords-for-agenda nil) (setq org-todo-keywords-for-agenda nil)
(unless org-agenda-persistent-filter
(setq org-agenda-tag-filter nil
org-agenda-category-filter nil
org-agenda-regexp-filter nil))
(put 'org-agenda-tag-filter :preset-filter (put 'org-agenda-tag-filter :preset-filter
org-agenda-tag-filter-preset) org-agenda-tag-filter-preset)
(put 'org-agenda-category-filter :preset-filter (put 'org-agenda-category-filter :preset-filter
@ -3643,10 +3649,10 @@ generating a new one."
"\n")) "\n"))
(narrow-to-region (point) (point-max))) (narrow-to-region (point) (point-max)))
(setq org-done-keywords-for-agenda nil) (setq org-done-keywords-for-agenda nil)
;; Setting any org variables that are in org-agenda-local-vars ;; Setting any org variables that are in org-agenda-local-vars
;; list need to be done after the prepare call ;; list need to be done after the prepare call
(org-agenda-prepare-window (get-buffer-create org-agenda-buffer-name)) (org-agenda-prepare-window
(get-buffer-ecreate org-agenda-buffer-name) filter-alist)
(setq buffer-read-only nil) (setq buffer-read-only nil)
(org-agenda-reset-markers) (org-agenda-reset-markers)
(let ((inhibit-read-only t)) (erase-buffer)) (let ((inhibit-read-only t)) (erase-buffer))
@ -3663,7 +3669,7 @@ generating a new one."
(setq org-agenda-this-buffer-name org-agenda-buffer-name) (setq org-agenda-this-buffer-name org-agenda-buffer-name)
(and name (not org-agenda-name) (and name (not org-agenda-name)
(org-set-local 'org-agenda-name name))) (org-set-local 'org-agenda-name name)))
(setq buffer-read-only nil))) (setq buffer-read-only nil))))
(defvar org-agenda-overriding-columns-format) ; From org-colview.el (defvar org-agenda-overriding-columns-format) ; From org-colview.el
(defun org-agenda-finalize () (defun org-agenda-finalize ()