From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Michael Heerdegen Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Jun 2012 17:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 11746@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Reply-To: michael_heerdegen@web.de Received: via spool by submit@debbugs.gnu.org id=B.134012870719909 (code B ref -1); Tue, 19 Jun 2012 17:59:01 +0000 Received: (at submit) by debbugs.gnu.org; 19 Jun 2012 17:58:27 +0000 Received: from localhost ([127.0.0.1]:48873 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh2h7-0005B3-Uy for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:58:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36261) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh2h5-0005Aw-3y for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:58:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh2di-0003FZ-I0 for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:55:00 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:47978) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2di-0003FS-Ed for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:54:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56129) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2dg-0002Q2-Pn for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh2da-0003Dc-8C for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:52 -0400 Received: from mout.web.de ([212.227.17.12]:56704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2dZ-0003D7-Ub for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:46 -0400 Received: from snow.dragon ([82.113.99.105]) by smtp.web.de (mrweb003) with ESMTPSA (Nemesis) id 0MQeqb-1SKExD0oVZ-00UiKr for ; Tue, 19 Jun 2012 19:54:43 +0200 Date: Tue, 19 Jun 2012 19:56:52 +0200 Message-Id: <87mx3z9od7.fsf@web.de> From: Michael Heerdegen X-Provags-ID: V02:K0:qiqY8yEY+nOshjvJS+GcR4fUPeBnu3YKrSk6RzU/HLD UDae3ckGWgVFNVTHIKOmFWiDm1XqxlHSMCUm7ebi2yhn3L6A1U zpqN0ckQDaNOwFs9JXLw3uByU5EMapvRX3DASopY4dL5GOH6UK k4yW9Looxhry9KSOueD1wSyCClFxHoGm54mxNsTOSjYdj8EBwo G7jgYP9u24zIb+ylivzQ9fH4+2mBP6QGZwRoZHl3Qw= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Hi, if you have `search-invisible' non-nil, isearch "opens" invisible text. But when you hit M-% or C-M-% while searching, you loose this ability: point will just be put inside invisible areas, and you don't see what you're doing. This is somewhat inconsistent. Having an open invisible feature for replacing text would be very convenient - think of org files, for example. Dunno if this would be easy to implement. `isearch-query-replace' uses just `perform-replace' from replace.el, which doesn't care about invisible text. Thanks, Michael. In GNU Emacs 24.1.50.1 (i486-pc-linux-gnu, GTK+ Version 3.4.2) of 2012-06-15 on zelenka, modified by Debian (emacs-snapshot package, version 2:20120615-1) Windowing system distributor `The X.Org Foundation', version 11.0.11201902 Configured using: `configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp' '--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/' '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'' From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Jun 2012 21:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: michael_heerdegen@web.de Cc: 11746@debbugs.gnu.org Received: via spool by 11746-submit@debbugs.gnu.org id=B11746.13401408618400 (code B ref 11746); Tue, 19 Jun 2012 21:21:02 +0000 Received: (at 11746) by debbugs.gnu.org; 19 Jun 2012 21:21:01 +0000 Received: from localhost ([127.0.0.1]:49007 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh5rB-0002BQ-3d for submit@debbugs.gnu.org; Tue, 19 Jun 2012 17:21:01 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:45842 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh5r8-0002Ar-VM for 11746@debbugs.gnu.org; Tue, 19 Jun 2012 17:21:00 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 88449451C9D2; Tue, 19 Jun 2012 14:17:33 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87mx3z9od7.fsf@web.de> Date: Wed, 20 Jun 2012 00:15:45 +0300 In-Reply-To: <87mx3z9od7.fsf@web.de> (Michael Heerdegen's message of "Tue, 19 Jun 2012 19:56:52 +0200") Message-ID: <87395rm29q.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Dunno if this would be easy to implement. `isearch-query-replace' > uses just `perform-replace' from replace.el, which doesn't care about > invisible text. A quick try does exactly what is needed: === modified file 'lisp/replace.el' --- lisp/replace.el 2012-05-01 02:48:41 +0000 +++ lisp/replace.el 2012-06-19 21:14:59 +0000 @@ -1840,7 +1840,9 @@ (defun perform-replace (from-string repl limit t) ;; For speed, use only integers and ;; reuse the list used last time. - (replace-match-data t real-match-data))) + (prog1 (replace-match-data t real-match-data) + (isearch-range-invisible + (match-beginning 0) (match-end 0))))) ((and (< (1+ (point)) (point-max)) (or (null limit) (< (1+ (point)) limit))) But it would be better to implement this the same way as for isearch filters. Adding the same filters in replacements also will make the variable `query-replace-skip-read-only' obsolete. From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Feb 2013 19:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 11746@debbugs.gnu.org Received: via spool by 11746-submit@debbugs.gnu.org id=B11746.13608688963741 (code B ref 11746); Thu, 14 Feb 2013 19:09:02 +0000 Received: (at 11746) by debbugs.gnu.org; 14 Feb 2013 19:08:16 +0000 Received: from localhost ([127.0.0.1]:56569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U64AJ-0000yG-5t for submit@debbugs.gnu.org; Thu, 14 Feb 2013 14:08:15 -0500 Received: from ps18281.dreamhost.com ([69.163.218.105]:49230 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U64AG-0000y3-MZ for 11746@debbugs.gnu.org; Thu, 14 Feb 2013 14:08:14 -0500 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 005B520213CF36; Thu, 14 Feb 2013 11:07:31 -0800 (PST) From: Juri Linkov Organization: JURTA References: <87mx3z9od7.fsf@web.de> Date: Thu, 14 Feb 2013 21:02:15 +0200 In-Reply-To: <87mx3z9od7.fsf@web.de> (Michael Heerdegen's message of "Tue, 19 Jun 2012 19:56:52 +0200") Message-ID: <87pq02btxv.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > if you have `search-invisible' non-nil, isearch "opens" invisible > text. But when you hit M-% or C-M-% while searching, you loose this > ability: point will just be put inside invisible areas, and you don't > see what you're doing. The recent adaptation of isearch functions to `perform-replace' makes it easy to implement this now. Depending on the value of `search-invisible', if `open' then M-% or C-M-% will open invisible overlays, if `nil' then they will skip invisible text, and if `t' they will match replacements inside invisible areas like now. The key point is using a search loop like in `isearch-search' that either opens invisible overlays or skips them. BTW, a similar loop could be later added to occur and hi-lock too, but since in occur and hi-lock it makes no sense to open overlays, they should just skip invisible areas like in `isearch-lazy-highlight-search'. The patch below moves the search related part of code from `perform-replace' to a new function `replace-search', adds a loop like in `isearch-search', and moves handling of `query-replace-skip-read-only' to this loop. It's worth to note that `wdired-isearch-filter-read-only' already has exactly the same condition that checks for read-only-ness, so the same condition is duplicated for modes that set both a read-only-skipping isearch filter and `query-replace-skip-read-only', but this is not a problem. === modified file 'lisp/replace.el' --- lisp/replace.el 2013-02-01 23:38:41 +0000 +++ lisp/replace.el 2013-02-14 18:55:14 +0000 @@ -1794,6 +1796,54 @@ (defvar replace-re-search-function nil It is called with three arguments, as if it were `re-search-forward'.") +(defun replace-search (search-string limit regexp-flag delimited-flag + case-fold-search) + "Search the next occurence of SEARCH-STRING to replace." + ;; Let-bind global isearch-* variables to values used + ;; to search the next replacement. These let-bindings + ;; should be effective both at the time of calling + ;; `isearch-search-fun-default' and also at the + ;; time of funcalling `search-function'. + ;; These isearch-* bindings can't be placed higher + ;; outside of this function because then another I-search + ;; used after `recursive-edit' might override them. + (let* ((isearch-regexp regexp-flag) + (isearch-word delimited-flag) + (isearch-lax-whitespace + replace-lax-whitespace) + (isearch-regexp-lax-whitespace + replace-regexp-lax-whitespace) + (isearch-case-fold-search case-fold-search) + (isearch-adjusted nil) + (isearch-nonincremental t) ; don't use lax word mode + (isearch-forward t) + (search-function + (or (if regexp-flag + replace-re-search-function + replace-search-function) + (isearch-search-fun-default))) + (retry t) + (success nil)) + ;; Use a loop like in `isearch-search'. + (while retry + (setq success (funcall search-function search-string limit t)) + ;; Clear RETRY unless the search predicate says + ;; to skip this search hit. + (if (or (not success) + (and (run-hook-with-args-until-failure + 'isearch-filter-predicates + (match-beginning 0) (match-end 0)) + (or (eq search-invisible t) + (not (isearch-range-invisible + (match-beginning 0) (match-end 0)))) + ;; Optionally ignore matches that have a read-only property. + (or (not query-replace-skip-read-only) + (not (text-property-not-all + (match-beginning 0) (match-end 0) + 'read-only nil))))) + (setq retry nil))) + success)) + (defun perform-replace (from-string replacements query-flag regexp-flag delimited-flag &optional repeat-count map start end) @@ -1881,29 +1931,6 @@ (defun perform-replace (from-string repl ;; Loop finding occurrences that perhaps should be replaced. (while (and keep-going (not (or (eobp) (and limit (>= (point) limit)))) - ;; Let-bind global isearch-* variables to values used - ;; to search the next replacement. These let-bindings - ;; should be effective both at the time of calling - ;; `isearch-search-fun-default' and also at the - ;; time of funcalling `search-function'. - ;; These isearch-* bindings can't be placed higher - ;; outside of this loop because then another I-search - ;; used after `recursive-edit' might override them. - (let* ((isearch-regexp regexp-flag) - (isearch-word delimited-flag) - (isearch-lax-whitespace - replace-lax-whitespace) - (isearch-regexp-lax-whitespace - replace-regexp-lax-whitespace) - (isearch-case-fold-search case-fold-search) - (isearch-adjusted nil) - (isearch-nonincremental t) ; don't use lax word mode - (isearch-forward t) - (search-function - (or (if regexp-flag - replace-re-search-function - replace-search-function) - (isearch-search-fun-default)))) ;; Use the next match if it is already known; ;; otherwise, search for a match after moving forward ;; one char if progress is required. @@ -1916,8 +1943,9 @@ (defun perform-replace (from-string repl ;; adjacent match. (match-again (and - (funcall search-function search-string - limit t) + (replace-search search-string limit + regexp-flag delimited-flag + case-fold-search) ;; For speed, use only integers and ;; reuse the list used last time. (replace-match-data t real-match-data))) @@ -1930,13 +1958,12 @@ (defun perform-replace (from-string repl ;; if the search fails. (let ((opoint (point))) (forward-char 1) - (if (funcall - search-function search-string - limit t) - (replace-match-data - t real-match-data) + (if (replace-search search-string limit + regexp-flag delimited-flag + case-fold-search) + (replace-match-data t real-match-data) (goto-char opoint) - nil))))))) + nil)))))) ;; Record whether the match is nonempty, to avoid an infinite loop ;; repeatedly matching the same empty string. @@ -1957,13 +1984,6 @@ (defun perform-replace (from-string repl (let ((match (match-data))) (and (/= (nth 0 match) (nth 1 match)) match)))))) - - ;; Optionally ignore matches that have a read-only property. - (unless (and query-replace-skip-read-only - (text-property-not-all - (nth 0 real-match-data) (nth 1 real-match-data) - 'read-only nil)) - ;; Calculate the replacement string, if necessary. (when replacements (set-match-data real-match-data) @@ -2168,7 +2188,7 @@ (defun perform-replace (from-string repl (match-end 0) (current-buffer)) (match-data t))) - stack))))) + stack)))) (replace-dehighlight)) (or unread-command-events From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Michael Heerdegen Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Feb 2013 20:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 11746@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.136087300912807 (code B ref -1); Thu, 14 Feb 2013 20:17:02 +0000 Received: (at submit) by debbugs.gnu.org; 14 Feb 2013 20:16:49 +0000 Received: from localhost ([127.0.0.1]:56592 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U65Ea-0003KQ-S7 for submit@debbugs.gnu.org; Thu, 14 Feb 2013 15:16:49 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37085) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U65EV-0003K4-2M for submit@debbugs.gnu.org; Thu, 14 Feb 2013 15:16:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U65Do-0006cN-0Z for submit@debbugs.gnu.org; Thu, 14 Feb 2013 15:16:00 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-101.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:56780) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U65Dn-0006cI-U2 for submit@debbugs.gnu.org; Thu, 14 Feb 2013 15:15:55 -0500 Received: from eggs.gnu.org ([208.118.235.92]:48412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U65Di-0001XS-VN for bug-gnu-emacs@gnu.org; Thu, 14 Feb 2013 15:15:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U65De-0006Zy-OL for bug-gnu-emacs@gnu.org; Thu, 14 Feb 2013 15:15:50 -0500 Received: from mout.web.de ([212.227.15.4]:64294) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U65De-0006Zd-D1 for bug-gnu-emacs@gnu.org; Thu, 14 Feb 2013 15:15:46 -0500 Received: from drachen.dragon ([92.74.177.220]) by smtp.web.de (mrweb003) with ESMTPSA (Nemesis) id 0M73XZ-1UrBWX1e9F-00xEvA; Thu, 14 Feb 2013 21:15:44 +0100 From: Michael Heerdegen References: <87mx3z9od7.fsf@web.de> <87pq02btxv.fsf@mail.jurta.org> Date: Thu, 14 Feb 2013 21:17:26 +0100 In-Reply-To: <87pq02btxv.fsf@mail.jurta.org> (Juri Linkov's message of "Thu, 14 Feb 2013 21:02:15 +0200") Message-ID: <87y5eq4pm1.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V02:K0:/VHLuQVceEb03Y0xnUjXd11I2AzNfa8Gs8s6QFdu3Om mmY87YZpnYk4flmkSHZg74nXzwdPtzWbFSmKRooGPPWyHBJ52y LMROM13qoleHQdpquff3xCk9yaGCpf6UrKX/Ib0JKypscEcxiG 5Iuubxd8DEUwyA9gp6DtXCgn6N4/RwT31nGteIXxV13DLjLuMG s+kvUPojV4daRAt26EOJGTvdmj9TdTT811S9Tag27M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -4.2 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Juri Linkov writes: > > if you have `search-invisible' non-nil, isearch "opens" invisible > > text. But when you hit M-% or C-M-% while searching, you loose this > > ability: point will just be put inside invisible areas, and you don't > > see what you're doing. > > The recent adaptation of isearch functions to `perform-replace' > makes it easy to implement this now. This sounds great. I have a question about your patch: I can't find the definition of `isearch-filter-predicates' you use - I find `isearch-filter-predicate' however. Is this a typo, or did I miss something? Thanks, Michael From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 15 Feb 2013 08:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 11746@debbugs.gnu.org Received: via spool by 11746-submit@debbugs.gnu.org id=B11746.136091522025065 (code B ref 11746); Fri, 15 Feb 2013 08:01:02 +0000 Received: (at 11746) by debbugs.gnu.org; 15 Feb 2013 08:00:20 +0000 Received: from localhost ([127.0.0.1]:57030 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U6GDU-0006WE-Jn for submit@debbugs.gnu.org; Fri, 15 Feb 2013 03:00:20 -0500 Received: from ps18281.dreamhost.com ([69.163.218.105]:34388 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U6GDT-0006W5-1S for 11746@debbugs.gnu.org; Fri, 15 Feb 2013 03:00:19 -0500 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 55B3D201B6C801; Thu, 14 Feb 2013 23:59:36 -0800 (PST) From: Juri Linkov Organization: JURTA References: <87mx3z9od7.fsf@web.de> <87pq02btxv.fsf@mail.jurta.org> <87y5eq4pm1.fsf@web.de> Date: Fri, 15 Feb 2013 09:54:20 +0200 In-Reply-To: <87y5eq4pm1.fsf@web.de> (Michael Heerdegen's message of "Thu, 14 Feb 2013 21:17:26 +0100") Message-ID: <877gmaf1pd.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > I have a question about your patch: I can't find the definition of > `isearch-filter-predicates' you use - I find `isearch-filter-predicate' > however. Is this a typo, or did I miss something? Sorry, that was from an uncommitted patch from bug#11378 where I couldn't decide what is the best way to handle both the variable `search-invisible' and the invisibility isearch filter simultaneously. I'll summarize the current state in bug#11378. From unknown Sat Jun 14 03:57:15 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: michael_heerdegen@web.de Subject: bug#11746: closed (Re: bug#11746: feature request: `isearch-query-replace' should open invisible text) Message-ID: References: <8761y410tk.fsf@mail.jurta.org> <87mx3z9od7.fsf@web.de> X-Gnu-PR-Message: they-closed 11746 X-Gnu-PR-Package: emacs Reply-To: 11746@debbugs.gnu.org Date: Mon, 27 May 2013 23:09:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1369696142-15919-1" This is a multi-part message in MIME format... ------------=_1369696142-15919-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #11746: feature request: `isearch-query-replace' should open invisible text which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 11746@debbugs.gnu.org. --=20 11746: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D11746 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1369696142-15919-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 11746-done) by debbugs.gnu.org; 27 May 2013 23:08:28 +0000 Received: from localhost ([127.0.0.1]:36896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Uh6Wh-00047e-Gh for submit@debbugs.gnu.org; Mon, 27 May 2013 19:08:28 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:40111 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Uh6Wf-00047V-EG for 11746-done@debbugs.gnu.org; Mon, 27 May 2013 19:08:25 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 3524F258B9E91C; Mon, 27 May 2013 16:07:09 -0700 (PDT) From: Juri Linkov To: Michael Heerdegen Subject: Re: bug#11746: feature request: `isearch-query-replace' should open invisible text Organization: JURTA References: <87mx3z9od7.fsf@web.de> <87pq02btxv.fsf@mail.jurta.org> <87y5eq4pm1.fsf@web.de> Date: Tue, 28 May 2013 02:04:50 +0300 In-Reply-To: <87y5eq4pm1.fsf@web.de> (Michael Heerdegen's message of "Thu, 14 Feb 2013 21:17:26 +0100") Message-ID: <8761y410tk.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 11746-done Cc: 11746-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >> > if you have `search-invisible' non-nil, isearch "opens" invisible >> > text. But when you hit M-% or C-M-% while searching, you loose this >> > ability: point will just be put inside invisible areas, and you don't >> > see what you're doing. >> >> The recent adaptation of isearch functions to `perform-replace' >> makes it easy to implement this now. > > This sounds great. Sorry for the delay, it required more testing with more fixes like adding `isearch-clean-overlays' to `replace-dehighlight', etc. This is installed now. ------------=_1369696142-15919-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 19 Jun 2012 17:58:27 +0000 Received: from localhost ([127.0.0.1]:48873 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh2h7-0005B3-Uy for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:58:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36261) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sh2h5-0005Aw-3y for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:58:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh2di-0003FZ-I0 for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:55:00 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:47978) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2di-0003FS-Ed for submit@debbugs.gnu.org; Tue, 19 Jun 2012 13:54:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56129) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2dg-0002Q2-Pn for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh2da-0003Dc-8C for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:52 -0400 Received: from mout.web.de ([212.227.17.12]:56704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh2dZ-0003D7-Ub for bug-gnu-emacs@gnu.org; Tue, 19 Jun 2012 13:54:46 -0400 Received: from snow.dragon ([82.113.99.105]) by smtp.web.de (mrweb003) with ESMTPSA (Nemesis) id 0MQeqb-1SKExD0oVZ-00UiKr for ; Tue, 19 Jun 2012 19:54:43 +0200 Date: Tue, 19 Jun 2012 19:56:52 +0200 Message-Id: <87mx3z9od7.fsf@web.de> From: Michael Heerdegen To: bug-gnu-emacs@gnu.org Subject: feature request: `isearch-query-replace' should open invisible text X-Provags-ID: V02:K0:qiqY8yEY+nOshjvJS+GcR4fUPeBnu3YKrSk6RzU/HLD UDae3ckGWgVFNVTHIKOmFWiDm1XqxlHSMCUm7ebi2yhn3L6A1U zpqN0ckQDaNOwFs9JXLw3uByU5EMapvRX3DASopY4dL5GOH6UK k4yW9Looxhry9KSOueD1wSyCClFxHoGm54mxNsTOSjYdj8EBwo G7jgYP9u24zIb+ylivzQ9fH4+2mBP6QGZwRoZHl3Qw= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: michael_heerdegen@web.de List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Hi, if you have `search-invisible' non-nil, isearch "opens" invisible text. But when you hit M-% or C-M-% while searching, you loose this ability: point will just be put inside invisible areas, and you don't see what you're doing. This is somewhat inconsistent. Having an open invisible feature for replacing text would be very convenient - think of org files, for example. Dunno if this would be easy to implement. `isearch-query-replace' uses just `perform-replace' from replace.el, which doesn't care about invisible text. Thanks, Michael. In GNU Emacs 24.1.50.1 (i486-pc-linux-gnu, GTK+ Version 3.4.2) of 2012-06-15 on zelenka, modified by Debian (emacs-snapshot package, version 2:20120615-1) Windowing system distributor `The X.Org Foundation', version 11.0.11201902 Configured using: `configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp' '--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/' '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'' ------------=_1369696142-15919-1-- From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 May 2013 22:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 11746@debbugs.gnu.org Cc: michael_heerdegen@web.de Received: via spool by 11746-submit@debbugs.gnu.org id=B11746.13697804724263 (code B ref 11746); Tue, 28 May 2013 22:35:01 +0000 Received: (at 11746) by debbugs.gnu.org; 28 May 2013 22:34:32 +0000 Received: from localhost ([127.0.0.1]:38167 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhSTQ-00016i-2D for submit@debbugs.gnu.org; Tue, 28 May 2013 18:34:32 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:39336 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhSTN-00016Z-I3 for 11746@debbugs.gnu.org; Tue, 28 May 2013 18:34:31 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 8B11B258B9E91C; Tue, 28 May 2013 15:33:07 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87mx3z9od7.fsf@web.de> <87pq02btxv.fsf@mail.jurta.org> <87y5eq4pm1.fsf@web.de> <8761y410tk.fsf@mail.jurta.org> Date: Wed, 29 May 2013 01:28:52 +0300 In-Reply-To: <8761y410tk.fsf@mail.jurta.org> (Juri Linkov's message of "Tue, 28 May 2013 02:04:50 +0300") Message-ID: <87txlmyc0r.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) It would be nice to inform the users who customized `search-invisible' to nil that now `query-replace' ignores hidden matches, i.e. currently at the end `query-replace' reports in the echo area: Replaced 2 occurrences Instead of keeping silence about skipped occurrences a better message would be: Replaced 2 occurrences (skipped 3 read-only, 4 invisible, 5 filtered out) === modified file 'lisp/replace.el' --- lisp/replace.el 2013-05-27 23:38:56 +0000 +++ lisp/replace.el 2013-05-28 22:28:01 +0000 @@ -1934,6 +1965,9 @@ (defun perform-replace (from-string repl (keep-going t) (stack nil) (replace-count 0) + (skip-read-only-count 0) + (skip-filtered-count 0) + (skip-invisible-count 0) (nonempty-match nil) (multi-buffer nil) (recenter-last-op nil) ; Start cycling order with initial position. @@ -2042,20 +2076,24 @@ (defun perform-replace (from-string repl (and (/= (nth 0 match) (nth 1 match)) match)))))) - ;; Optionally ignore matches that have a read-only property. - (when (and (or (not query-replace-skip-read-only) - (not (text-property-not-all - (nth 0 real-match-data) (nth 1 real-match-data) - 'read-only nil))) - ;; Optionally filter out matches. - (run-hook-with-args-until-failure - 'isearch-filter-predicates - (nth 0 real-match-data) (nth 1 real-match-data)) - ;; Optionally ignore invisible matches. - (or (eq search-invisible t) - (not (isearch-range-invisible - (nth 0 real-match-data) (nth 1 real-match-data))))) - + (cond + ;; Optionally ignore matches that have a read-only property. + ((not (or (not query-replace-skip-read-only) + (not (text-property-not-all + (nth 0 real-match-data) (nth 1 real-match-data) + 'read-only nil)))) + (setq skip-read-only-count (1+ skip-read-only-count))) + ;; Optionally filter out matches. + ((not (run-hook-with-args-until-failure + 'isearch-filter-predicates + (nth 0 real-match-data) (nth 1 real-match-data))) + (setq skip-filtered-count (1+ skip-filtered-count))) + ;; Optionally ignore invisible matches. + ((not (or (eq search-invisible t) + (not (isearch-range-invisible + (nth 0 real-match-data) (nth 1 real-match-data))))) + (setq skip-invisible-count (1+ skip-invisible-count))) + (t ;; Calculate the replacement string, if necessary. (when replacements (set-match-data real-match-data) @@ -2260,13 +2298,31 @@ (defun perform-replace (from-string repl (match-end 0) (current-buffer)) (match-data t))) - stack))))) + stack)))))) (replace-dehighlight)) (or unread-command-events - (message "Replaced %d occurrence%s" + (message "Replaced %d occurrence%s%s" replace-count - (if (= replace-count 1) "" "s"))) + (if (= replace-count 1) "" "s") + (if (> (+ skip-read-only-count + skip-filtered-count + skip-invisible-count) 0) + (format " (skipped %s)" + (mapconcat + 'identity + (delq nil (list + (if (> skip-read-only-count 0) + (format "%s read-only" + skip-read-only-count)) + (if (> skip-invisible-count 0) + (format "%s invisible" + skip-invisible-count)) + (if (> skip-filtered-count 0) + (format "%s filtered out" + skip-filtered-count)))) + ", ")) + ""))) (or (and keep-going stack) multi-buffer))) ;;; replace.el ends here From unknown Sat Jun 14 03:57:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11746: feature request: `isearch-query-replace' should open invisible text Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 30 May 2013 00:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11746 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 11746@debbugs.gnu.org Cc: michael_heerdegen@web.de Received: via spool by 11746-submit@debbugs.gnu.org id=B11746.136987273818830 (code B ref 11746); Thu, 30 May 2013 00:13:01 +0000 Received: (at 11746) by debbugs.gnu.org; 30 May 2013 00:12:18 +0000 Received: from localhost ([127.0.0.1]:41027 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhqTZ-0004tf-Ue for submit@debbugs.gnu.org; Wed, 29 May 2013 20:12:18 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:56745 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhqTY-0004tX-0W for 11746@debbugs.gnu.org; Wed, 29 May 2013 20:12:16 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 1B932258B9E91C; Wed, 29 May 2013 17:10:47 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87mx3z9od7.fsf@web.de> <87pq02btxv.fsf@mail.jurta.org> <87y5eq4pm1.fsf@web.de> <8761y410tk.fsf@mail.jurta.org> <87txlmyc0r.fsf@mail.jurta.org> Date: Thu, 30 May 2013 03:03:00 +0300 In-Reply-To: <87txlmyc0r.fsf@mail.jurta.org> (Juri Linkov's message of "Wed, 29 May 2013 01:28:52 +0300") Message-ID: <878v2xjpqg.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) Actually opening hidden overlays is not optimal when the user types `!' for automatic replacement. There is no need to open overlays and immediately close afterwards without seeing opened text by the user. This can be improved with this patch: === modified file 'lisp/replace.el' --- lisp/replace.el 2013-05-29 23:16:44 +0000 +++ lisp/replace.el 2013-05-30 00:00:39 +0000 @@ -2111,6 +2111,9 @@ (defun perform-replace (from-string repl (setq skip-filtered-count (1+ skip-filtered-count))) ;; Optionally ignore invisible matches. ((not (or (eq search-invisible t) + ;; Don't open overlays for automatic replacements. + (and (not query-flag) search-invisible) + ;; Open hidden overlays for interactive replacements. (not (isearch-range-invisible (nth 0 real-match-data) (nth 1 real-match-data))))) (setq skip-invisible-count (1+ skip-invisible-count))) From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 13 18:53:14 2013 Received: (at control) by debbugs.gnu.org; 13 Jun 2013 22:53:14 +0000 Received: from localhost ([127.0.0.1]:42443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1UnGOI-0001SE-GV for submit@debbugs.gnu.org; Thu, 13 Jun 2013 18:53:14 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:50452 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1UnGOG-0001S7-Li for control@debbugs.gnu.org; Thu, 13 Jun 2013 18:53:12 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 8E5F1258B9E91C for ; Thu, 13 Jun 2013 15:53:11 -0700 (PDT) From: Juri Linkov To: control@debbugs.gnu.org Subject: Re: bug#14566: 24.3; Feature Request: query-replace-end-hook for invisible text Organization: JURTA References: <8738stj17k.fsf@web.de> Date: Fri, 14 Jun 2013 01:52:40 +0300 In-Reply-To: (Michael Bach's message of "Sat, 8 Jun 2013 11:23:19 +0200") Message-ID: <87d2rpoc7b.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) forcemerge 11746 14566 stop