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,66 +3606,70 @@ 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)
(if (org-agenda-use-sticky-p) (let ((filter-alist (if org-agenda-persistent-filter
(progn (list `(tag . ,org-agenda-tag-filter)
;; Popup existing buffer `(re . ,org-agenda-regexp-filter)
(org-agenda-prepare-window (get-buffer org-agenda-buffer-name)) `(car . ,org-agenda-category-filter)))))
(message "Sticky Agenda buffer, use `r' to refresh") (if (org-agenda-use-sticky-p)
(or org-agenda-multi (org-agenda-fit-window-to-buffer))
(throw 'exit "Sticky Agenda buffer, use `r' to refresh"))
(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
org-agenda-tag-filter-preset)
(put 'org-agenda-category-filter :preset-filter
org-agenda-category-filter-preset)
(put 'org-agenda-regexp-filter :preset-filter
org-agenda-regexp-filter-preset)
(if org-agenda-multi
(progn (progn
(setq buffer-read-only nil) ;; Popup existing buffer
(goto-char (point-max)) (org-agenda-prepare-window (get-buffer org-agenda-buffer-name)
(unless (or (bobp) org-agenda-compact-blocks filter-alist)
(not org-agenda-block-separator)) (message "Sticky Agenda buffer, use `r' to refresh")
(insert "\n" (or org-agenda-multi (org-agenda-fit-window-to-buffer))
(if (stringp org-agenda-block-separator) (throw 'exit "Sticky Agenda buffer, use `r' to refresh"))
org-agenda-block-separator (setq org-todo-keywords-for-agenda nil)
(make-string (window-width) org-agenda-block-separator)) (put 'org-agenda-tag-filter :preset-filter
"\n")) org-agenda-tag-filter-preset)
(narrow-to-region (point) (point-max))) (put 'org-agenda-category-filter :preset-filter
(setq org-done-keywords-for-agenda nil) org-agenda-category-filter-preset)
(put 'org-agenda-regexp-filter :preset-filter
;; Setting any org variables that are in org-agenda-local-vars org-agenda-regexp-filter-preset)
;; list need to be done after the prepare call (if org-agenda-multi
(org-agenda-prepare-window (get-buffer-create org-agenda-buffer-name)) (progn
(setq buffer-read-only nil) (setq buffer-read-only nil)
(org-agenda-reset-markers) (goto-char (point-max))
(let ((inhibit-read-only t)) (erase-buffer)) (unless (or (bobp) org-agenda-compact-blocks
(org-agenda-mode) (not org-agenda-block-separator))
(setq org-agenda-buffer (current-buffer)) (insert "\n"
(setq org-agenda-contributing-files nil) (if (stringp org-agenda-block-separator)
(setq org-agenda-columns-active nil) org-agenda-block-separator
(org-agenda-prepare-buffers (org-agenda-files nil 'ifmode)) (make-string (window-width) org-agenda-block-separator))
(setq org-todo-keywords-for-agenda "\n"))
(org-uniquify org-todo-keywords-for-agenda)) (narrow-to-region (point) (point-max)))
(setq org-done-keywords-for-agenda (setq org-done-keywords-for-agenda nil)
(org-uniquify org-done-keywords-for-agenda)) ;; Setting any org variables that are in org-agenda-local-vars
(setq org-agenda-last-prefix-arg current-prefix-arg) ;; list need to be done after the prepare call
(setq org-agenda-this-buffer-name org-agenda-buffer-name) (org-agenda-prepare-window
(and name (not org-agenda-name) (get-buffer-ecreate org-agenda-buffer-name) filter-alist)
(org-set-local 'org-agenda-name name))) (setq buffer-read-only nil)
(setq buffer-read-only nil))) (org-agenda-reset-markers)
(let ((inhibit-read-only t)) (erase-buffer))
(org-agenda-mode)
(setq org-agenda-buffer (current-buffer))
(setq org-agenda-contributing-files nil)
(setq org-agenda-columns-active nil)
(org-agenda-prepare-buffers (org-agenda-files nil 'ifmode))
(setq org-todo-keywords-for-agenda
(org-uniquify org-todo-keywords-for-agenda))
(setq org-done-keywords-for-agenda
(org-uniquify org-done-keywords-for-agenda))
(setq org-agenda-last-prefix-arg current-prefix-arg)
(setq org-agenda-this-buffer-name org-agenda-buffer-name)
(and name (not org-agenda-name)
(org-set-local 'org-agenda-name name)))
(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 ()