Multi and stuff
This commit is contained in:
parent
aa722987b0
commit
a0f557d6fc
1 changed files with 34 additions and 3 deletions
|
|
@ -33,11 +33,31 @@
|
||||||
(read-only-mode 1)
|
(read-only-mode 1)
|
||||||
(pop-to-buffer (current-buffer)))))
|
(pop-to-buffer (current-buffer)))))
|
||||||
|
|
||||||
|
(cl-defun org-agenda-ng--agenda-multi (&key files any-fns none-fns)
|
||||||
|
(let* ((entries (-flatten
|
||||||
|
(--map (org-agenda-ng--get-entries it
|
||||||
|
:any-fns any-fns
|
||||||
|
:none-fns none-fns)
|
||||||
|
files)))
|
||||||
|
(result-string (org-agenda-finalize-entries entries 'agenda))
|
||||||
|
(target-buffer (get-buffer-create "test-agenda-ng")))
|
||||||
|
(with-current-buffer target-buffer
|
||||||
|
(read-only-mode -1)
|
||||||
|
(erase-buffer)
|
||||||
|
(insert result-string)
|
||||||
|
(read-only-mode 1)
|
||||||
|
(pop-to-buffer (current-buffer)))))
|
||||||
|
|
||||||
(defmacro org-agenda-ng--test (&rest args)
|
(defmacro org-agenda-ng--test (&rest args)
|
||||||
`(with-current-buffer (find-buffer-visiting "~/org/main.org")
|
`(with-current-buffer (find-buffer-visiting "~/org/main.org")
|
||||||
(org-agenda-ng--agenda
|
(org-agenda-ng--agenda
|
||||||
,@args)))
|
,@args)))
|
||||||
|
|
||||||
|
(defmacro org-agenda-ng--test-multi (&rest args)
|
||||||
|
`(org-agenda-ng--agenda-multi
|
||||||
|
:files '("~/org/main.org")
|
||||||
|
,@args))
|
||||||
|
|
||||||
(defun org-agenda-ng--test-agenda ()
|
(defun org-agenda-ng--test-agenda ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-agenda-ng--test
|
(org-agenda-ng--test
|
||||||
|
|
@ -46,20 +66,29 @@
|
||||||
|
|
||||||
(defun org-agenda-ng--test-agenda-today ()
|
(defun org-agenda-ng--test-agenda-today ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-agenda-ng--test
|
(org-agenda-ng--test-multi
|
||||||
:any-fns `((org-agenda-ng--date-p :date <= ,(org-today))
|
:any-fns `((org-agenda-ng--date-p :date <= ,(org-today))
|
||||||
(org-agenda-ng--date-p :deadline <= ,(+ org-deadline-warning-days (org-today)))
|
(org-agenda-ng--date-p :deadline <= ,(+ org-deadline-warning-days (org-today)))
|
||||||
(org-agenda-ng--date-p :scheduled <= ,(org-today)))
|
(org-agenda-ng--date-p :scheduled <= ,(org-today)))
|
||||||
:none-fns `((org-agenda-ng--todo-p ,org-done-keywords))))
|
:none-fns `((org-agenda-ng--todo-p org-done-keywords))))
|
||||||
|
|
||||||
(defun org-agenda-ng--test-todo-list ()
|
(defun org-agenda-ng--test-todo-list ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-agenda-ng--test
|
(org-agenda-ng--test
|
||||||
:any-fns '(org-agenda-ng--todo-p)
|
:any-fns '(org-agenda-ng--todo-p)
|
||||||
:none-fns `((org-agenda-ng--todo-p ,org-done-keywords))))
|
:none-fns '((org-agenda-ng--todo-p org-done-keywords))))
|
||||||
|
|
||||||
;;;; Functions
|
;;;; Functions
|
||||||
|
|
||||||
|
(cl-defun org-agenda-ng--get-entries (file &key any-fns none-fns)
|
||||||
|
"Return list of entries from FILE."
|
||||||
|
(with-current-buffer (find-buffer-visiting file)
|
||||||
|
(let* ((org-use-tag-inheritance t)
|
||||||
|
(tree (cddr (org-element-parse-buffer 'headline)))
|
||||||
|
(entries (--> (org-agenda-ng--filter-tree tree :any-fns any-fns :none-fns none-fns)
|
||||||
|
(mapcar #'org-agenda-ng--format-element it))))
|
||||||
|
entries)))
|
||||||
|
|
||||||
(cl-defun org-agenda-ng--filter-tree (tree &key any-fns none-fns)
|
(cl-defun org-agenda-ng--filter-tree (tree &key any-fns none-fns)
|
||||||
(let* ((types '(headline))
|
(let* ((types '(headline))
|
||||||
(info nil)
|
(info nil)
|
||||||
|
|
@ -211,6 +240,8 @@ With KEYWORDS, return non-nil if its keyword is one of KEYWORDS."
|
||||||
(string= element-keyword keywords))
|
(string= element-keyword keywords))
|
||||||
((pred listp)
|
((pred listp)
|
||||||
(member element-keyword keywords))
|
(member element-keyword keywords))
|
||||||
|
((pred symbolp)
|
||||||
|
(member element-keyword (symbol-value keywords)))
|
||||||
(otherwise (error "Invalid keyword argument: %s" otherwise)))))
|
(otherwise (error "Invalid keyword argument: %s" otherwise)))))
|
||||||
|
|
||||||
(defun org-agenda-ng--date-p (entry type &optional comparator target-date)
|
(defun org-agenda-ng--date-p (entry type &optional comparator target-date)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue