From: Eshel Yaron Date: Sun, 24 Sep 2023 19:53:13 +0000 (+0200) Subject: ; Fix filtering of the just created body when extracting goal X-Git-Tag: V9.1.16-sweep-0.25.3~13 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e02f243b0359006bbe019e18bd67971e01e24a81;p=sweep.git ; Fix filtering of the just created body when extracting goal * sweeprolog (sweeprolog-extract-region-to-predicate): When searching and replacing other goals subsumed by the extracted goal, use a more robust check to filter out the newly created body term from the search matches. --- diff --git a/sweeprolog.el b/sweeprolog.el index 39f612f..4a9b157 100644 --- a/sweeprolog.el +++ b/sweeprolog.el @@ -7139,7 +7139,8 @@ where in the buffer to insert the newly created predicate." (sweeprolog--query-once "sweep" "sweep_term_variable_names" body) (prolog-exception - (user-error "Region does not contain a valid Prolog term"))))) + (user-error "Region does not contain a valid Prolog term")))) + (def-end nil)) (if (and (sweeprolog--query-once "sweep" "sweep_goal_may_cut" body) (not (y-or-n-p (concat "The selected goal contains a cut whose " @@ -7182,18 +7183,15 @@ where in the buffer to insert the newly created predicate." ".\n"))) (insert clause) (indent-region-line-by-line def-beg (point)) + (setq def-end (point)) (goto-char def-beg)))) (when all - (let ((body-beg - (+ 2 (point) - (length head) - (length neck) - sweeprolog-indent-offset))) + (let ((def-beg (point))) (save-excursion (goto-char (point-min)) (let ((sweeprolog-query-replace-term-include-match-function - (pcase-lambda (`(,beg . ,_)) - (not (= beg body-beg))))) + (pcase-lambda (`(,beg ,end . ,_)) + (not (<= def-beg beg end def-end))))) (deactivate-mark) (sweeprolog-query-replace-term body head "true" '(goal))))))