From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.user/17219 Path: news.gmane.org!not-for-mail From: Julien Cubizolles Newsgroups: gmane.emacs.gnus.user Subject: Re: Using lisp code in query-replace-regexp Date: Wed, 05 Nov 2014 13:46:58 +0100 Message-ID: <878ujp7r25.fsf@free.fr> References: <87d292pwm0.fsf@debian.uxu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1415191654 14858 80.91.229.3 (5 Nov 2014 12:47:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 5 Nov 2014 12:47:34 +0000 (UTC) To: info-gnus-english@gnu.org Original-X-From: info-gnus-english-bounces+gegu-info-gnus-english=m.gmane.org@gnu.org Wed Nov 05 13:47:28 2014 Return-path: Envelope-to: gegu-info-gnus-english@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Xlzzi-0005SC-Mm for gegu-info-gnus-english@m.gmane.org; Wed, 05 Nov 2014 13:47:26 +0100 Original-Received: from localhost ([::1]:46091 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xlzzi-00073c-DN for gegu-info-gnus-english@m.gmane.org; Wed, 05 Nov 2014 07:47:26 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xlzza-00072w-PZ for info-gnus-english@gnu.org; Wed, 05 Nov 2014 07:47:24 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XlzzU-0003rR-OL for info-gnus-english@gnu.org; Wed, 05 Nov 2014 07:47:18 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:59358) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XlzzU-0003rK-IV for info-gnus-english@gnu.org; Wed, 05 Nov 2014 07:47:12 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1XlzzS-0005Iq-CX for info-gnus-english@gnu.org; Wed, 05 Nov 2014 13:47:10 +0100 Original-Received: from gas45-3-82-244-252-119.fbx.proxad.net ([82.244.252.119]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 05 Nov 2014 13:47:10 +0100 Original-Received: from j.cubizolles by gas45-3-82-244-252-119.fbx.proxad.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 05 Nov 2014 13:47:10 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 43 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: gas45-3-82-244-252-119.fbx.proxad.net User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/25.0.50 (gnu/linux) Cancel-Lock: sha1:hMVytg91mrvXBt+Kh0gGxnA4TMU= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: info-gnus-english@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Announcements and discussions for GNUS, the GNU Emacs Usenet newsreader \(in English\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: info-gnus-english-bounces+gegu-info-gnus-english=m.gmane.org@gnu.org Original-Sender: info-gnus-english-bounces+gegu-info-gnus-english=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.gnus.user:17219 Archived-At: Emanuel Berg writes: > Julien Cubizolles writes: > >> I can use the following replace string (for lack of >> a better term) with query-replace-regexp > > Yes, you can do that. > > Check out this: > > (while (re-search-forward REGEXP nil t) > (replace-match TO-STRING nil nil)) > > from the help of `replace-regexp'. > > So instead of the `replace-match' stuff above, you > write a function that examines `match-beginning', > `match-end', and `match-string', and then use that as > input to your Elisp, to produce the on-the-fly > TO-STRING (in the phrasing of the above Elisp). I came up with --8<---------------cut here---------------start------------->8--- (defun test_gen (begin end from to) (save-excursion (save-restriction (let (deactivate-mark) (narrow-to-region begin end) (goto-char (point-min)) (while (re-search-forward from end t) (replace-match-maybe-edit to t nil nil (match-data) nil))) ))) --8<---------------cut here---------------end--------------->8--- I used replace-match-maybe-edit because I wanted to be prompted for each replacement, and replace-match wouldn't allow it. However with replace-match-maybe-edit, the excursion is messed up at the end. It wasn't the case with replace-match. Julien.