Fix: (outline-path) Normalizer infinite loop
Hopefully there aren't more of these lurking, but with the recent --normalize-query change, there might be...
This commit is contained in:
parent
482a5c939b
commit
e03fb24f9b
2 changed files with 8 additions and 1 deletions
|
|
@ -1481,6 +1481,7 @@ any link is found."
|
|||
(match-string org-ql-link-description-group)))))))))
|
||||
|
||||
;; MAYBE: Preambles for outline-path predicates. Not sure if possible without complicated logic.
|
||||
;; FIXME: These preds say they accept regexps but the strings get regexp-quoted. They should probably just take strings.
|
||||
|
||||
(org-ql-defpred (outline-path olp) (&rest regexps)
|
||||
"Return non-nil if current node's outline path matches all of REGEXPS.
|
||||
|
|
@ -1496,7 +1497,7 @@ the following queries:
|
|||
(olp \"Food\" \"Grapes\")"
|
||||
:normalizers ((`(,predicate-names . ,strings)
|
||||
;; Regexp quote headings.
|
||||
`(outline-path ,@(mapcar #'regexp-quote strings))))
|
||||
`(org-ql--predicate-outline-path ,@(mapcar #'regexp-quote strings))))
|
||||
:body (let ((entry-olp (org-ql--value-at (point) #'org-ql--outline-path)))
|
||||
(cl-loop for h in regexps
|
||||
always (cl-member h entry-olp :test #'string-match))))
|
||||
|
|
|
|||
|
|
@ -251,6 +251,12 @@ with keyword arg NOW in PLIST."
|
|||
:to-equal '(link :description "DESCRIPTION" :target "TARGET"
|
||||
:regexp-p t))))
|
||||
|
||||
(describe "(outline-path)"
|
||||
(it "with a regexp metacharacter"
|
||||
;; Ensures that normalizer doesn't infinitely loop.
|
||||
(expect (org-ql--normalize-query '(olp "a." "b"))
|
||||
:to-equal '(org-ql--predicate-outline-path "a\\." "b"))))
|
||||
|
||||
(describe "timestamp predicates"
|
||||
;; NOTE: (clocked) and (closed) don't accept :with-time arguments.
|
||||
(describe "(clocked)"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue