Take clauses from preambles when possible

This commit is contained in:
Ihor Radchenko 2021-04-05 18:47:56 +08:00
parent e1a464fb2c
commit 9b30c4139b
No known key found for this signature in database
GPG key ID: 6470762A7DA11D8B

View file

@ -1229,7 +1229,7 @@ result form."
((eq query t) (setq query `(regexp ,regexp)))
((not query) (setq query `(regexp ,regexp)))
(t nil))
(setq query clause))
(unless query (setq query clause)))
(push query queries)
;; Take the longest regexp. It should be hardest to match.
(when (length> regexp (length regexp-max))
@ -1256,9 +1256,8 @@ result form."
(if regexp
(cond
((eq query t) (setq query `(regexp ,regexp)))
((not query) (setq query `(regexp ,regexp)))
(t nil))
(setq query clause))
((not query) (setq query `(regexp ,regexp))))
(unless query (setq query clause)))
(push query queries)
;; Collect regexps for combining.
(if regexp (push regexp regexps)
@ -1268,9 +1267,7 @@ result form."
(and regexps
(rx-to-string `(or ,@(mapcar (lambda (re) `(regex ,re)) regexps)))))
:case-fold t
:query (if regexp-null-p
`(save-excursion (or ,@clauses))
`(save-excursion (or ,@queries))))))))
:query `(or ,@(mapcar (lambda (clause) `(save-excursion ,clause)) queries)))))))
(org-ql-defpred org-ql--when (condition &rest clauses)
"Return values of CLAUSES when CONDITION is non-nil."
@ -1283,7 +1280,7 @@ result form."
(-let* (((&plist :regexp :case-fold :query) (rec `(and ,condition ,(last clauses)))))
(list :regexp regexp
:case-fold case-fold
:query `(when ,condition ,@clauses))))))
:query `(when ,condition ,@(mapcar (lambda (clause) `(save-excursion ,clause)) (butlast clauses)) ,(last clauses)))))))
(org-ql-defpred org-ql--unless (condition &rest clauses)
"Return values of CLAUSES unless CONDITION is non-nil."
@ -1296,7 +1293,7 @@ result form."
(-let* (((&plist :regexp :case-fold :query) (rec ,(last clauses))))
(list :regexp regexp
:case-fold case-fold
:query `(unless ,condition ,@clauses))))))
:query `(unless (save-excursion ,condition) ,@(mapcar (lambda (clause) `(save-excursion ,clause)) (butlast clauses)) ,(last clauses)))))))
(org-ql-defpred org-ql--not (clauses)
"Match when CLAUSES don't match."