From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: [Patch] Add project.el command to replace symbol at point throughout project Date: Sun, 16 Jan 2022 19:55:23 +0200 Organization: LINKOV.NET Message-ID: <86pmor36r8.fsf@mail.linkov.net> References: <83zgo2770l.fsf@gnu.org> <83zgo15dhp.fsf@gnu.org> <83czkw3uvl.fsf@gnu.org> <170a1c89-7767-0930-f726-f7b2551876b2@yandex.ru> <44f72f97-d1d8-0b4c-73a0-7f077fb1ef26@yandex.ru> <0617E8BF-CC43-4D82-8648-064252F644FD@gmail.com> <77116180-4340-4401-AEB2-7E2CEC42DB58@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25243"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) Cc: Eli Zaretskii , emacs-devel@gnu.org, Dmitry Gutov To: Jon Eskin Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Jan 16 19:04:16 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n99t2-0006OG-QX for ged-emacs-devel@m.gmane-mx.org; Sun, 16 Jan 2022 19:04:16 +0100 Original-Received: from localhost ([::1]:60778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n99t1-0006UW-4T for ged-emacs-devel@m.gmane-mx.org; Sun, 16 Jan 2022 13:04:15 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:37056) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n99rx-0005AB-Dy for emacs-devel@gnu.org; Sun, 16 Jan 2022 13:03:10 -0500 Original-Received: from relay5-d.mail.gandi.net ([217.70.183.197]:54909) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n99rv-0002IX-8W; Sun, 16 Jan 2022 13:03:08 -0500 Original-Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 81FC61C0003; Sun, 16 Jan 2022 18:03:02 +0000 (UTC) In-Reply-To: <77116180-4340-4401-AEB2-7E2CEC42DB58@gmail.com> (Jon Eskin's message of "Sat, 15 Jan 2022 13:41:00 -0500") Received-SPF: pass client-ip=217.70.183.197; envelope-from=juri@linkov.net; helo=relay5-d.mail.gandi.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, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:284841 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit > Apologies- in the event that this patch is satisfactory, the following > includes `xref-find-references-and-replace`. I didn’t realize it > would be a simple replacement. > [...] > @@ -1072,9 +1072,11 @@ project-query-replace-regexp > - (pcase-let ((`(,from ,to) > - (query-replace-read-args "Query replace (regexp)" t t))) > - (list from to))) > + (let ((read-regexp-defaults-function (lambda () > + (find-tag-default-as-regexp)))) > + (pcase-let ((`(,from ,to) > + (query-replace-read-args "Query replace (regexp)" t t))) > + (list from to)))) The problem was in let-binding 'read-regexp-defaults-function' to a lambda. It should work when using 'find-tag-default-as-regexp' as a symbol: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=read-regexp-defaults-function.patch diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index c812f28c1b..c58c05bc71 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1072,9 +1072,10 @@ project-query-replace-regexp If you exit the `query-replace', you can later continue the `query-replace' loop using the command \\[fileloop-continue]." (interactive - (pcase-let ((`(,from ,to) - (query-replace-read-args "Query replace (regexp)" t t))) - (list from to))) + (let ((read-regexp-defaults-function 'find-tag-default-as-regexp)) + (pcase-let ((`(,from ,to) + (query-replace-read-args "Query replace (regexp)" t t))) + (list from to)))) (fileloop-initialize-replace from to (project-files (project-current t)) 'default) (fileloop-continue)) diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 37e2159782..640c8745db 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1481,8 +1481,9 @@ xref-find-references (defun xref-find-references-and-replace (from to) "Replace all references to identifier FROM with TO." (interactive - (let ((common - (query-replace-read-args "Query replace identifier" nil))) + (let* ((read-regexp-defaults-function 'find-tag-default-as-regexp) + (common + (query-replace-read-args "Query replace identifier" nil))) (list (nth 0 common) (nth 1 common)))) (require 'xref) (with-current-buffer diff --git a/lisp/replace.el b/lisp/replace.el index 60e507c642..9c7680a563 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -234,7 +234,8 @@ query-replace-read-from (symbol-value query-replace-from-history-variable))) (minibuffer-allow-text-properties t) ; separator uses text-properties (prompt - (cond ((and query-replace-defaults separator) + (cond ((and regexp-flag read-regexp-defaults-function) prompt) + ((and query-replace-defaults separator) (format-prompt prompt (car minibuffer-history))) (query-replace-defaults (format-prompt @@ -255,7 +256,10 @@ query-replace-read-from (append '((separator . t) (face . t)) text-property-default-nonsticky))) (if regexp-flag - (read-regexp prompt nil 'minibuffer-history) + (read-regexp + (if read-regexp-defaults-function (string-remove-suffix ": " prompt)) + read-regexp-defaults-function + 'minibuffer-history) (read-from-minibuffer prompt nil nil nil nil (query-replace-read-from-suggestions) t))))) --=-=-=--