org-ql/examples.org
2019-08-19 03:30:37 -05:00

2.3 KiB

org-ql examples

Show entries with recent timestamps

You can also access these views with the command org-ql-view.

  ;; Show entries with any timestamp from last 7 days:
  (org-ql-view-recent-items 7)

  ;; Show entries clocked in last 30 days:
  (org-ql-view-recent-items 30 'clocked)

  ;; Show entries closed in last 30 days:
  (org-ql-view-recent-items 30 'closed)

Stuck projects block agenda

Reddit user emptymatrix shared this example of replacing a traditional org-stuck-projects view like:

  (setq org-stuck-projects
        '("+@project/-DONE" ("NEXT") nil "SCHEDULED:"))

With this org-ql-block agenda view, like:

  (setq org-agenda-custom-commands
        '(("s" "Stuck Projects"
           ((org-ql-block '(and (tags "@project")
                                (not (done))
                                (not (descendants (todo "NEXT")))
                                (not (descendants (scheduled)))))))))

Listing bills coming due

This uses the example in the readme file, but maps across the elements returned by org-ql to present a simple list of titles and deadlines.

  (--map (list (org-element-property :raw-value it)
               (org-timestamp-format (org-element-property :deadline it) "%c"))
         (org-ql (org-agenda-files)
           (and (not (done))
                (tags "bills")
                (deadline <=))
           :sort deadline))
  ;;=> (("Electric bill" "Thu 23 Aug 2018 12:00:00 AM CDT")
  ;;    ("Rent" "Sat 01 Sep 2018 08:00:00 PM CDT"))

This could also be put in a script, which could use desktop notifications to remind of bills coming due: org-bills-due.el.