Take clauses from preambles when possible
This commit is contained in:
parent
e1a464fb2c
commit
9b30c4139b
1 changed files with 6 additions and 9 deletions
15
org-ql.el
15
org-ql.el
|
|
@ -1229,7 +1229,7 @@ result form."
|
||||||
((eq query t) (setq query `(regexp ,regexp)))
|
((eq query t) (setq query `(regexp ,regexp)))
|
||||||
((not query) (setq query `(regexp ,regexp)))
|
((not query) (setq query `(regexp ,regexp)))
|
||||||
(t nil))
|
(t nil))
|
||||||
(setq query clause))
|
(unless query (setq query clause)))
|
||||||
(push query queries)
|
(push query queries)
|
||||||
;; Take the longest regexp. It should be hardest to match.
|
;; Take the longest regexp. It should be hardest to match.
|
||||||
(when (length> regexp (length regexp-max))
|
(when (length> regexp (length regexp-max))
|
||||||
|
|
@ -1256,9 +1256,8 @@ result form."
|
||||||
(if regexp
|
(if regexp
|
||||||
(cond
|
(cond
|
||||||
((eq query t) (setq query `(regexp ,regexp)))
|
((eq query t) (setq query `(regexp ,regexp)))
|
||||||
((not query) (setq query `(regexp ,regexp)))
|
((not query) (setq query `(regexp ,regexp))))
|
||||||
(t nil))
|
(unless query (setq query clause)))
|
||||||
(setq query clause))
|
|
||||||
(push query queries)
|
(push query queries)
|
||||||
;; Collect regexps for combining.
|
;; Collect regexps for combining.
|
||||||
(if regexp (push regexp regexps)
|
(if regexp (push regexp regexps)
|
||||||
|
|
@ -1268,9 +1267,7 @@ result form."
|
||||||
(and regexps
|
(and regexps
|
||||||
(rx-to-string `(or ,@(mapcar (lambda (re) `(regex ,re)) regexps)))))
|
(rx-to-string `(or ,@(mapcar (lambda (re) `(regex ,re)) regexps)))))
|
||||||
:case-fold t
|
:case-fold t
|
||||||
:query (if regexp-null-p
|
:query `(or ,@(mapcar (lambda (clause) `(save-excursion ,clause)) queries)))))))
|
||||||
`(save-excursion (or ,@clauses))
|
|
||||||
`(save-excursion (or ,@queries))))))))
|
|
||||||
|
|
||||||
(org-ql-defpred org-ql--when (condition &rest clauses)
|
(org-ql-defpred org-ql--when (condition &rest clauses)
|
||||||
"Return values of CLAUSES when CONDITION is non-nil."
|
"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)))))
|
(-let* (((&plist :regexp :case-fold :query) (rec `(and ,condition ,(last clauses)))))
|
||||||
(list :regexp regexp
|
(list :regexp regexp
|
||||||
:case-fold case-fold
|
: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)
|
(org-ql-defpred org-ql--unless (condition &rest clauses)
|
||||||
"Return values of CLAUSES unless CONDITION is non-nil."
|
"Return values of CLAUSES unless CONDITION is non-nil."
|
||||||
|
|
@ -1296,7 +1293,7 @@ result form."
|
||||||
(-let* (((&plist :regexp :case-fold :query) (rec ,(last clauses))))
|
(-let* (((&plist :regexp :case-fold :query) (rec ,(last clauses))))
|
||||||
(list :regexp regexp
|
(list :regexp regexp
|
||||||
:case-fold case-fold
|
: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)
|
(org-ql-defpred org-ql--not (clauses)
|
||||||
"Match when CLAUSES don't match."
|
"Match when CLAUSES don't match."
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue