diff --git a/README.org b/README.org index 05c6c03..6b60846 100644 --- a/README.org +++ b/README.org @@ -472,6 +472,11 @@ Expands into a call to ~org-ql-select~ with the same arguments. For convenience *Changed* + Predicate =heading= now accepts multiple regexps. +** 0.2.1 + +*Fixed* ++ =(descendants)= selector matched against parent heading instead of only descendants. + ** 0.2 :PROPERTIES: :ID: 67be09f9-e959-4333-9be2-93ad8f458fbe diff --git a/org-ql.el b/org-ql.el index 235e8f4..84c9b1a 100644 --- a/org-ql.el +++ b/org-ql.el @@ -748,6 +748,7 @@ Or, when possible, fix the problem." (save-restriction (org-narrow-to-subtree) (when (org-goto-first-child) + (narrow-to-region (point) (point-max)) (catch 'found (org-ql-select (current-buffer) query diff --git a/tests/test-org-ql.el b/tests/test-org-ql.el index 99e0906..6d337b8 100644 --- a/tests/test-org-ql.el +++ b/tests/test-org-ql.el @@ -251,7 +251,13 @@ RESULTS should be a list of strings as returned by '("Test data" "Recurring"))) (org-ql-it "with granddescendants query" (org-ql-expect ((descendants (descendants "moon"))) - '("Test data" "Take over the universe" "Take over the moon" "Code")))) + '("Test data" "Take over the universe"))) + (org-ql-it "with query that should not match parent" + ;; This test would fail if the `descendants' predicate did not properly exclude + ;; the parent heading by narrowing the buffer to begin at the first child. + (org-ql-expect ((and (descendants (todo "WAITING")) + (not (descendants (todo "TODO" "NEXT"))))) + '("Take over the moon")))) (describe "(clocked)"