Fix: (src) Rewrite body

Fixes #304.  Thanks to @johanwk for reporting.
This commit is contained in:
Adam Porter 2023-03-09 01:41:01 -06:00
parent 0304a2c9dc
commit 1996969920
2 changed files with 17 additions and 20 deletions

View file

@ -558,6 +558,7 @@ Simple links may also be written manually in either sexp or non-sexp form, like:
*Fixed*
+ Predicate ~src~'s matching of begin/end block lines, normalization of arguments, and handling in non-sexp queries.
+ Predicate ~src~'s behavior with various arguments.
*Internal*
+ Certain query predicates, when called multiple times in an ~and~ sub-expression, are optimized to a single call.

View file

@ -1925,14 +1925,12 @@ language. Matching is done case-insensitively."
;; Always check contents with predicate.
:query query)))
:body
(catch 'return
(save-excursion
(save-match-data
(when (re-search-forward org-babel-src-block-regexp (org-entry-end-position) t)
(when lang
(unless (string= lang (match-string 2))
(throw 'return nil)))
(if regexps
(cl-loop while (re-search-forward org-babel-src-block-regexp (org-entry-end-position) t)
thereis (when (or (not lang) (equal lang (match-string 2)))
(or (not regexps)
(save-excursion
(let ((contents-beg (progn
(goto-char (match-beginning 0))
(forward-line 1)
@ -1942,9 +1940,7 @@ language. Matching is done case-insensitively."
(point-at-bol))))
(cl-loop for re in regexps
do (goto-char contents-beg)
always (re-search-forward re contents-end t)))
;; No regexps to check: return non-nil.
t))))))
always (re-search-forward re contents-end t))))))))))
(org-ql-defpred (tags) (&rest tags)
"Return non-nil if current heading has one or more of TAGS (a list of strings).