GNU bug report logs - #69542
Feature request: making occur obey isearch-filter-predicate

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: wishlist; Reported by: Gabriele Nicolardi <gabriele@HIDDEN>; dated Mon, 4 Mar 2024 11:46:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 4 Mar 2024 11:45:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 04 06:45:37 2024
Received: from localhost ([127.0.0.1]:42196 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rh6lE-0001lf-On
	for submit <at> debbugs.gnu.org; Mon, 04 Mar 2024 06:45:37 -0500
Received: from lists.gnu.org ([209.51.188.17]:50186)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gabriele@HIDDEN>) id 1rh6lC-0001gI-Tu
 for submit <at> debbugs.gnu.org; Mon, 04 Mar 2024 06:45:35 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <gabriele@HIDDEN>)
 id 1rh6kf-000802-FL
 for bug-gnu-emacs@HIDDEN; Mon, 04 Mar 2024 06:45:02 -0500
Received: from smtp02.cbsolt.net ([185.97.217.41])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <gabriele@HIDDEN>)
 id 1rh6kb-0006l7-9V
 for bug-gnu-emacs@HIDDEN; Mon, 04 Mar 2024 06:45:01 -0500
Received: from [10.0.2.15] (host-79-16-242-199.retail.telecomitalia.it
 [79.16.242.199])
 by smtp02.cbsolt.net (Postfix) with ESMTPSA id 4TpH1G1H8zz3wbB
 for <bug-gnu-emacs@HIDDEN>; Mon,  4 Mar 2024 12:44:49 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cbsolt.net;
 s=201504-di4k2w; t=1709552691;
 bh=vLY9SZaq3M1s16W8tnjAfGutHaN9DH2VnOK/gluJjc0=;
 h=Date:To:From:Subject:From;
 b=URHBGVly+KQ+sbUhuiWLFRzmq97Fn3KRFxwljrbDkQdFQUl5Id/8iuwn9E9uQDEQf
 NeBVFaYvQNfayCL3rdW/t1mMBStoN7PvJhrc2KOf2r9mI80/mCYYHGpuM5i9z+S2hZ
 Thq93CMBaQrroc1jp7uur0xLKF7pJMP22sE2nObE=
Content-Type: multipart/alternative;
 boundary="------------zrEEoRN1SeuqiwV3Q46w2Jya"
Message-ID: <6071eb9a-fa15-45fb-9917-7a35c7556680@HIDDEN>
Date: Mon, 4 Mar 2024 12:44:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: bug-gnu-emacs@HIDDEN
Content-Language: en-US
From: Gabriele Nicolardi <gabriele@HIDDEN>
Subject: Feature request: making occur obey isearch-filter-predicate
Received-SPF: pass client-ip=185.97.217.41;
 envelope-from=gabriele@HIDDEN; helo=smtp02.cbsolt.net
X-Spam_score_int: -25
X-Spam_score: -2.6
X-Spam_bar: --
X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7,
 RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

This is a multi-part message in MIME format.
--------------zrEEoRN1SeuqiwV3Q46w2Jya
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

I’d like occur to obey to |isearch-filter-predicate| like query-replace* 
and |isearch*| commands.

This is an example of what I do:

|(defmacro with-ifp-predicates (PREDICATES &rest body) "Allows assigning 
a list of predicates to the variable `isearch-filter-predicate'. |

Below is an example of usage:

|(with-ifp-predicates '(skip-maths skip-comments) (query-replace \"foo\" 
\"bar\" nil (point-min) (point-max)))" (declare (indent 1)) `(let 
((isearch-filter-predicate isearch-filter-predicate)) (mapc (lambda 
(predicate) (add-function :before-while isearch-filter-predicate 
predicate)) ,PREDICATES) ,@body)) |

(I always use let-binding for operations that involve 
|isearch-filter-predicate|.)

In some cases, I would like to have something like this:

|(with-ifp-predicates '(predicate1 predicate2) (save-window-excursion 
(occur "foo") (query-replace \"foo\" \"bar\" nil (point-min) (point-max)))) |

with |occur| showing me only the strings that match the active predicates.

I wrote a mail to emacs-devel@HIDDEN and I have verified that others 
also believe that this solution would be helpful and consistent with the 
functioning of some other functions defined in |replace.el|.

I’d also like to add this feature to the |how-many| function.

I already wrote this modified version (Emacs 29.2):

|(defun re-search-forward-ifp (REGEXP &optional BOUND NOERROR COUNT) 
"Modified version of `search-forward-regexp' that filters (skips) 
matches according to `isearch-filter-predicate'." (let ((POINT (point))) 
(catch 'filtered (while (search-forward-regexp REGEXP BOUND NOERROR 
COUNT) (let ((B (match-beginning 0)) (E (match-end 0))) (when (funcall 
isearch-filter-predicate B E) (throw 'filtered (point))))) (goto-char 
POINT) nil))) (defalias 'search-forward-regexp-ifp 
're-search-forward-ifp) (defun how-many-ifp (regexp &optional rstart 
rend interactive) "Modified version of `how-many' that filters (skips) 
matches according to `isearch-filter-predicate'." (interactive 
(keep-lines-read-args "How many matches for regexp")) (save-excursion 
(if rstart (if rend (progn (goto-char (min rstart rend)) (setq rend (max 
rstart rend))) (goto-char rstart) (setq rend (point-max))) (if (and 
interactive (use-region-p)) (setq rstart (region-beginning) rend 
(region-end)) (setq rstart (point) rend (point-max))) (goto-char 
rstart)) (let ((count 0) (case-fold-search (if (and case-fold-search 
search-upper-case) (isearch-no-upper-case-p regexp t) 
case-fold-search))) (while (and (< (point) rend) (re-search-forward-ifp 
regexp rend t)) ;; Ensure forward progress on zero-length matches like 
"^$". (when (and (= (match-beginning 0) (match-end 0)) (not (eobp))) 
(forward-char 1)) (setq count (1+ count))) (when interactive (message 
(ngettext "%d occurrence" "%d occurrences" count) count)) count))) 
(defalias 'count-matches-ifp 'how-many-ifp) |

Best regards,

Gabriele Nicolardi

​
--------------zrEEoRN1SeuqiwV3Q46w2Jya
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="markdown-here-wrapper" data-md-url="" style=""
      markdown-here-wrapper-content-modified="true">
      <p style="margin: 0px 0px 1.2em !important;">Hi,</p>
      <p style="margin: 0px 0px 1.2em !important;">I’d like occur to
        obey to <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">isearch-filter-predicate</code>
        like query-replace* and <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">isearch*</code>
        commands.</p>
      <p style="margin: 0px 0px 1.2em !important;">This is an example of
        what I do:</p>
      <pre
style="font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block;">(defmacro with-ifp-predicates (PREDICATES &amp;rest body)
   "Allows assigning a list of predicates to the
 variable `isearch-filter-predicate'.
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;"> Below is an example
        of usage:</p>
      <pre
style="font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block;">(with-ifp-predicates '(skip-maths skip-comments)
  (query-replace \"foo\" \"bar\" nil (point-min) (point-max)))"
  (declare (indent 1))
  `(let ((isearch-filter-predicate isearch-filter-predicate))
     (mapc (lambda (predicate)
               (add-function :before-while isearch-filter-predicate predicate))
             ,PREDICATES)
     ,@body))
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">(I always use
        let-binding for operations that involve <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">isearch-filter-predicate</code>.)</p>
      <p style="margin: 0px 0px 1.2em !important;">In some cases, I
        would like to have something like this:</p>
      <pre
style="font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block;">(with-ifp-predicates '(predicate1 predicate2)
   (save-window-excursion
     (occur "foo")
     (query-replace \"foo\" \"bar\" nil (point-min) (point-max)))) 
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">with <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">occur</code>
        showing me only the strings that match the active predicates.</p>
      <p style="margin: 0px 0px 1.2em !important;">I wrote a mail to <a
          href="mailto:emacs-devel@HIDDEN"
          class="moz-txt-link-freetext">emacs-devel@HIDDEN</a> and I
        have verified that others also believe that this solution would
        be helpful and consistent with the functioning of some other
        functions defined in <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">replace.el</code>.</p>
      <p style="margin: 0px 0px 1.2em !important;">I’d also like to add
        this feature to the <code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;">how-many</code>
        function.</p>
      <p style="margin: 0px 0px 1.2em !important;">I already wrote this
        modified version (Emacs 29.2):</p>
      <pre
style="font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code
style="font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; font-weight: 550; background-color: rgba(119, 119, 119, 0.3); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block;">
(defun re-search-forward-ifp (REGEXP &amp;optional BOUND NOERROR COUNT)
  "Modified version of `search-forward-regexp' that
    filters (skips) matches according to `isearch-filter-predicate'."

  (let ((POINT (point)))
    (catch 'filtered
      (while (search-forward-regexp REGEXP BOUND NOERROR COUNT)
        (let ((B (match-beginning 0))
              (E (match-end 0)))
          (when (funcall isearch-filter-predicate B E)
            (throw 'filtered (point)))))
      (goto-char POINT)
      nil)))
(defalias 'search-forward-regexp-ifp 're-search-forward-ifp)

(defun how-many-ifp (regexp &amp;optional rstart rend interactive)
  "Modified version of `how-many' that filters (skips) matches
    according to `isearch-filter-predicate'."

  (interactive
   (keep-lines-read-args "How many matches for regexp"))
  (save-excursion
    (if rstart
        (if rend
            (progn
              (goto-char (min rstart rend))
              (setq rend (max rstart rend)))
          (goto-char rstart)
          (setq rend (point-max)))
      (if (and interactive (use-region-p))
          (setq rstart (region-beginning)
                rend (region-end))
        (setq rstart (point)
              rend (point-max)))
      (goto-char rstart))
    (let ((count 0)
          (case-fold-search
           (if (and case-fold-search search-upper-case)
               (isearch-no-upper-case-p regexp t)
             case-fold-search)))
      (while (and (&lt; (point) rend)
                  (re-search-forward-ifp regexp rend t))
        ;; Ensure forward progress on zero-length matches like "^$".
        (when (and (= (match-beginning 0) (match-end 0))
                   (not (eobp)))
          (forward-char 1))
        (setq count (1+ count)))
      (when interactive (message (ngettext "%d occurrence"
                                           "%d occurrences"
                                           count)
                                 count))
      count)))
(defalias 'count-matches-ifp 'how-many-ifp)
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">Best regards,</p>
      <p style="margin: 0px 0px 1.2em !important;">Gabriele Nicolardi</p>
      <div
title="MDH:PHA+SGksPC9wPjxwPkknZCBsaWtlIG9jY3VyIHRvIG9iZXkgdG8gYGlzZWFyY2gtZmlsdGVyLXBy
ZWRpY2F0ZWAgbGlrZSBxdWVyeS1yZXBsYWNlKiBhbmQgYGlzZWFyY2gqYCBjb21tYW5kcy48L3A+
PHA+VGhpcyBpcyBhbiBleGFtcGxlIG9mIHdoYXQgSSBkbzo8L3A+PHA+YGBgPGJyPjwvcD4KICAg
IDxwPihkZWZtYWNybyB3aXRoLWlmcC1wcmVkaWNhdGVzIChQUkVESUNBVEVTICZhbXA7cmVzdCBi
b2R5KTxicj4KICAgICAgJm5ic3A7ICJBbGxvd3MgYXNzaWduaW5nIGEgbGlzdCBvZiBwcmVkaWNh
dGVzIHRvIHRoZTxicj4KICAgICAgdmFyaWFibGUgYGlzZWFyY2gtZmlsdGVyLXByZWRpY2F0ZScu
PGJyPgogICAgICBgYGA8YnI+CiAgICAgIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdXNhZ2U6PGJy
PgogICAgICBgYGA8YnI+CiAgICAgICh3aXRoLWlmcC1wcmVkaWNhdGVzICcoc2tpcC1tYXRocyBz
a2lwLWNvbW1lbnRzKTxicj4KICAgICAgJm5ic3A7IChxdWVyeS1yZXBsYWNlIFwiZm9vXCIgXCJi
YXJcIiBuaWwgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKSI8YnI+CiAgICAgICZuYnNwOyAoZGVj
bGFyZSAoaW5kZW50IDEpKTxicj4KICAgICAgJm5ic3A7IGAobGV0ICgoaXNlYXJjaC1maWx0ZXIt
cHJlZGljYXRlIGlzZWFyY2gtZmlsdGVyLXByZWRpY2F0ZSkpPGJyPgogICAgICAmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsgKG1hcGMgKGxhbWJkYSAocHJlZGljYXRlKTxicj4KICAgICAgJm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChhZGQtZnVuY3Rpb24gOmJlZm9yZS13aGlsZQogICAgICBp
c2VhcmNoLWZpbHRlci1wcmVkaWNhdGUgcHJlZGljYXRlKSk8YnI+CiAgICAgICZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyAsUFJFRElDQVRFUyk8YnI+CiAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAsQGJv
ZHkpKTwvcD4KICAgIDxwPmBgYDwvcD48cD4oSSBhbHdheXMgdXNlIGxldC1iaW5kaW5nIGZvciBv
cGVyYXRpb25zIHRoYXQgaW52b2x2ZQogICAgICBgaXNlYXJjaC1maWx0ZXItcHJlZGljYXRlYC4p
PC9wPgogICAgPHA+SW4gc29tZSBjYXNlcywgSSB3b3VsZCBsaWtlIHRvIGhhdmUgc29tZXRoaW5n
IGxpa2UgdGhpczo8L3A+CiAgICA8cD5gYGA8L3A+PHA+KHdpdGgtaWZwLXByZWRpY2F0ZXMgJyhw
cmVkaWNhdGUxIHByZWRpY2F0ZTIpPGJyPgogICAgICAmbmJzcDsgKHNhdmUtd2luZG93LWV4Y3Vy
c2lvbjxicj4KICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IChvY2N1ciAiZm9vIik8YnI+CiAgICAg
ICZuYnNwOyZuYnNwOyZuYnNwOyAocXVlcnktcmVwbGFjZSBcImZvb1wiIFwiYmFyXCIgbmlsIChw
b2ludC1taW4pIChwb2ludC1tYXgpKSkpPGJyPgogICAgPC9wPgogICAgPHA+YGBgPC9wPjxwPndp
dGggYDxjb2RlPm9jY3VyYDwvY29kZT4gc2hvd2luZyBtZSBvbmx5IHRoZSBzdHJpbmdzIHRoYXQg
bWF0Y2gKICAgICAgdGhlIGFjdGl2ZSBwcmVkaWNhdGVzLjwvcD48cD48L3A+PHA+SSB3cm90ZSBh
IG1haWwgdG8gZW1hY3MtZGV2ZWxAZ251Lm9yZyBhbmQgSSBoYXZlIHZlcmlmaWVkIHRoYXQgb3Ro
ZXJzIGFsc28gYmVsaWV2ZSB0aGF0IHRoaXMgc29sdXRpb24gd291bGQgYmUgCmhlbHBmdWwgYW5k
IGNvbnNpc3RlbnQgd2l0aCB0aGUgZnVuY3Rpb25pbmcgb2Ygc29tZSBvdGhlciBmdW5jdGlvbnMg
CmRlZmluZWQgaW4gPGNvZGU+YHJlcGxhY2UuZWxgPC9jb2RlPi48L3A+PHA+SSdkIGFsc28gbGlr
ZSB0byBhZGQgdGhpcyBmZWF0dXJlIHRvIHRoZSBgaG93LW1hbnlgIGZ1bmN0aW9uLjwvcD48cD5J
IGFscmVhZHkgd3JvdGUgdGhpcyBtb2RpZmllZCB2ZXJzaW9uIChFbWFjcyAyOS4yKTo8YnI+YGBg
PC9wPjxwPihkZWZ1biByZS1zZWFyY2gtZm9yd2FyZC1pZnAgKFJFR0VYUCAmYW1wO29wdGlvbmFs
IEJPVU5EIE5PRVJST1IgQ09VTlQpPGJyPiZuYnNwOyAiTW9kaWZpZWQgdmVyc2lvbiBvZiBgc2Vh
cmNoLWZvcndhcmQtcmVnZXhwJyB0aGF0PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBmaWx0ZXJzIChz
a2lwcykgbWF0Y2hlcyBhY2NvcmRpbmcgdG8gYGlzZWFyY2gtZmlsdGVyLXByZWRpY2F0ZScuIjxi
cj48YnI+Jm5ic3A7IChsZXQgKChQT0lOVCAocG9pbnQpKSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
IChjYXRjaCAnZmlsdGVyZWQ8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICh3aGls
ZSAoc2VhcmNoLWZvcndhcmQtcmVnZXhwIFJFR0VYUCBCT1VORCBOT0VSUk9SIENPVU5UKTxicj4m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKGxldCAoKEIgKG1hdGNo
LWJlZ2lubmluZyAwKSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChFIChtYXRjaC1lbmQgMCkp
KTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsgKHdoZW4gKGZ1bmNhbGwgaXNlYXJjaC1maWx0ZXItcHJlZGljYXRlIEIgRSk8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7ICh0aHJvdyAnZmlsdGVyZWQgKHBvaW50KSkpKSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7IChnb3RvLWNoYXIgUE9JTlQpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyBuaWwpKSk8YnI+KGRlZmFsaWFzICdzZWFyY2gtZm9yd2FyZC1yZWdleHAtaWZwICdyZS1z
ZWFyY2gtZm9yd2FyZC1pZnApPGJyPjxicj4oZGVmdW4gaG93LW1hbnktaWZwIChyZWdleHAgJmFt
cDtvcHRpb25hbCByc3RhcnQgcmVuZCBpbnRlcmFjdGl2ZSk8YnI+Jm5ic3A7ICJNb2RpZmllZCB2
ZXJzaW9uIG9mIGBob3ctbWFueScgdGhhdCBmaWx0ZXJzIChza2lwcykgbWF0Y2hlczxicj4mbmJz
cDsmbmJzcDsmbmJzcDsgYWNjb3JkaW5nIHRvIGBpc2VhcmNoLWZpbHRlci1wcmVkaWNhdGUnLiI8
YnI+PGJyPiZuYnNwOyAoaW50ZXJhY3RpdmU8YnI+Jm5ic3A7Jm5ic3A7IChrZWVwLWxpbmVzLXJl
YWQtYXJncyAiSG93IG1hbnkgbWF0Y2hlcyBmb3IgcmVnZXhwIikpPGJyPiZuYnNwOyAoc2F2ZS1l
eGN1cnNpb248YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IChpZiByc3RhcnQ8YnI+Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChpZiByZW5kPGJyPiZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAocHJv
Z248YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChnb3RvLWNoYXIgKG1pbiByc3RhcnQgcmVuZCkp
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAoc2V0cSByZW5kIChtYXggcnN0YXJ0IHJlbmQpKSk8
YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
IChnb3RvLWNoYXIgcnN0YXJ0KTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsgKHNldHEgcmVuZCAocG9pbnQtbWF4KSkpPGJyPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAoaWYgKGFuZCBpbnRlcmFjdGl2ZSAodXNlLXJlZ2lvbi1w
KSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7IChzZXRxIHJzdGFydCAocmVnaW9uLWJlZ2lubmluZyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7IHJlbmQgKHJlZ2lvbi1lbmQpKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKHNldHEgcnN0YXJ0IChwb2ludCk8YnI+Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7IHJlbmQgKHBvaW50LW1heCkpKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsgKGdvdG8tY2hhciByc3RhcnQpKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsgKGxldCAo
KGNvdW50IDApPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyAoY2FzZS1mb2xkLXNlYXJjaDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKGlmIChhbmQgY2FzZS1mb2xkLXNl
YXJjaCBzZWFyY2gtdXBwZXItY2FzZSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChp
c2VhcmNoLW5vLXVwcGVyLWNhc2UtcCByZWdleHAgdCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhc2Ut
Zm9sZC1zZWFyY2gpKSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICh3aGlsZSAo
YW5kICgmbHQ7IChwb2ludCkgcmVuZCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7IChyZS1zZWFyY2gtZm9yd2FyZC1pZnAgcmVnZXhwIHJlbmQgdCkpPGJy
PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA7OyBFbnN1cmUgZm9y
d2FyZCBwcm9ncmVzcyBvbiB6ZXJvLWxlbmd0aCBtYXRjaGVzIGxpa2UgIl4kIi48YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICh3aGVuIChhbmQgKD0gKG1hdGNo
LWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKG5vdCAoZW9icCkpKTxicj4mbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKGZvcndhcmQtY2hhciAx
KSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChzZXRxIGNv
dW50ICgxKyBjb3VudCkpKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKHdoZW4g
aW50ZXJhY3RpdmUgKG1lc3NhZ2UgKG5nZXR0ZXh0ICIlZCBvY2N1cnJlbmNlIjxicj4mbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsgIiVkIG9jY3VycmVuY2VzIjxicj4mbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsgY291bnQpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb3VudCkpPGJyPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb3VudCkpKTxicj4oZGVmYWxpYXMgJ2NvdW50LW1hdGNo
ZXMtaWZwICdob3ctbWFueS1pZnApPGJyPjwvcD48cD5gYGA8YnI+PC9wPjxwPkJlc3QgcmVnYXJk
cyw8L3A+PHA+R2FicmllbGUgTmljb2xhcmRpPGJyPjwvcD4=" aria-hidden="true"
style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0;padding:0;margin:0;">​</div>
    </div>
  </body>
</html>

--------------zrEEoRN1SeuqiwV3Q46w2Jya--




Acknowledgement sent to Gabriele Nicolardi <gabriele@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#69542; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 4 Mar 2024 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.