diff --git a/org-agenda-ng.el b/org-agenda-ng.el index a7b259a..d96d6f1 100644 --- a/org-agenda-ng.el +++ b/org-agenda-ng.el @@ -68,16 +68,24 @@ When nil, buffers are widened before being searched." (let ((files '(org-agenda-files)) pred sort narrow) ;; Parse args manually (so we can leave FILES nil for a default argument). + ;; TODO: DRY this and org-ql, I think. (pcase args (`(,arg-files ,arg-pred . ,(and rest (guard (keywordp (car rest))))) + ;; Files, query, and keyword args (FIXME: Can I combine this and the next one? Does it + ;; matter if rest is nil or starts with a keyword?) (setq files arg-files pred arg-pred) (set-keyword-args rest)) (`(,arg-pred . ,(and rest (guard (keywordp (car rest))))) + ;; Query and keyword args, no files (setq pred arg-pred) - (set-keyword-args rest))) + (set-keyword-args rest)) + (`(,arg-pred) + ;; Only query + (setq pred arg-pred))) ;; Call --agenda `(org-agenda-ng--agenda ,files + ;; TODO: Probably better to just use eval on org-ql rather than reimplementing parts of it here. (byte-compile (lambda () (cl-symbol-macrolet ((= #'=) (< #'<) (> #'>) (<= #'<=) (>= #'>=)) ,pred)))