GNU bug report logs -
#31073
27.0.50; query-replace undo might change the word case
Previous Next
Reported by: Tino Calancha <tino.calancha <at> gmail.com>
Date: Fri, 6 Apr 2018 05:03:01 UTC
Severity: normal
Found in version 27.0.50
Done: Tino Calancha <tino.calancha <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31073 in the body.
You can then email your comments to 31073 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
juri <at> jurta.org, bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Fri, 06 Apr 2018 05:03:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Tino Calancha <tino.calancha <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
juri <at> jurta.org, bug-gnu-emacs <at> gnu.org
.
(Fri, 06 Apr 2018 05:03:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
X-Debbugs-CC: Juri Linkov <juri <at> jurta.org>
The undo feature shouldn't change the case; it must return
to the original words.
emacs -Q
<
M-% t RET FOO RET SPC SPC SPC SPC U
;; The first line shows upcase 'T' at several positions, for instance
;; it shows 'TexT', originally shown as 'text'.
--8<-----------------------------cut here---------------start------------->8---
commit 6fcb746c4efcbc2afce6a520f4a8b67a8d40cdd1
Author: Tino Calancha <tino.calancha <at> gmail.com>
Date: Fri Apr 6 13:40:06 2018 +0900
Preserve case in query-replace undo
If the user query and replaces 'foo' with 'BAR', then
undo must comeback to 'foo', not to 'FOO'.
* lisp/replace.el (perform-replace): Bind nocasify to non-nil
value during undo/undo-all actions.
* test/lisp/replace-tests.el (query-replace-undo-bug31073): Add test.
diff --git a/lisp/replace.el b/lisp/replace.el
index c28c9b36f0..a147c8dd86 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -2619,6 +2619,7 @@ perform-replace
(let ((stack-idx 0)
(stack-len (length stack))
(num-replacements 0)
+ (nocasify t) ; Bug#31073.
search-string
next-replacement)
(while (and (< stack-idx stack-len)
diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el
index 66c6842660..d6043e297c 100644
--- a/test/lisp/replace-tests.el
+++ b/test/lisp/replace-tests.el
@@ -380,4 +380,24 @@ replace-tests--query-replace-undo
(should (string= "211" (replace-tests--query-replace-undo)))
(should (string= "211" (replace-tests--query-replace-undo 'comma))))
+(ert-deftest query-replace-undo-bug31073 ()
+ "Test for https://debbugs.gnu.org/31073 ."
+ (let ((text "The teeth must be cleaned after every meal.")
+ (count 0))
+ (with-temp-buffer
+ (insert text)
+ (goto-char 1)
+ (cl-letf (((symbol-function 'read-event)
+ (lambda (&rest args)
+ (cl-incf count)
+ (let ((val (pcase count
+ ('4 ?U) ; undo-all
+ ('5 ?q) ; exit
+ (_ ?\s)))) ; replace current and go next
+ val))))
+ (perform-replace "t" "FOO" t nil nil))
+ ;; After undo text must be the same.
+ (should (string= text (buffer-string))))))
+
+
;;; replace-tests.el ends here
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 27.0.50 (build 25, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
of 2018-04-03 built on calancha-pc
Repository revision: 10ef466a9eb621a3752de69930fcb14bf1af4887
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Sat, 07 Apr 2018 20:52:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 31073 <at> debbugs.gnu.org (full text, mbox):
> The undo feature shouldn't change the case; it must return
> to the original words.
>
> emacs -Q
> <
> M-% t RET FOO RET SPC SPC SPC SPC U
> ;; The first line shows upcase 'T' at several positions, for instance
> ;; it shows 'TexT', originally shown as 'text'.
Good catch! This means we should have more test coverage. Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Sun, 08 Apr 2018 01:15:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 31073 <at> debbugs.gnu.org (full text, mbox):
Juri Linkov <juri <at> jurta.org> writes:
>> The undo feature shouldn't change the case; it must return
>> to the original words.
>>
>> emacs -Q
>> <
>> M-% t RET FOO RET SPC SPC SPC SPC U
>> ;; The first line shows upcase 'T' at several positions, for instance
>> ;; it shows 'TexT', originally shown as 'text'.
>
> Good catch! This means we should have more test coverage. Thanks.
Eli,
this feature was introduced for Emacs-26 release. Should the fix go
into that branch (Emacs-26)?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Sun, 08 Apr 2018 02:34:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 31073 <at> debbugs.gnu.org (full text, mbox):
> From: Tino Calancha <tino.calancha <at> gmail.com>
> Cc: 31073 <at> debbugs.gnu.org, Juri Linkov <juri <at> jurta.org>
> Date: Sun, 08 Apr 2018 10:14:01 +0900
>
> Juri Linkov <juri <at> jurta.org> writes:
>
> >> The undo feature shouldn't change the case; it must return
> >> to the original words.
> >>
> >> emacs -Q
> >> <
> >> M-% t RET FOO RET SPC SPC SPC SPC U
> >> ;; The first line shows upcase 'T' at several positions, for instance
> >> ;; it shows 'TexT', originally shown as 'text'.
> >
> > Good catch! This means we should have more test coverage. Thanks.
> Eli,
>
> this feature was introduced for Emacs-26 release. Should the fix go
> into that branch (Emacs-26)?
It's too late for Emacs 26.1. For the other 26.x, I'd need to see the
patch first.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Sun, 08 Apr 2018 02:47:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 31073 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> this feature was introduced for Emacs-26 release. Should the fix go
>> into that branch (Emacs-26)?
>
> It's too late for Emacs 26.1. For the other 26.x, I'd need to see the
> patch first.
I see.
The patch is pretty obvious: just 1 line:
--8<-----------------------------cut here---------------start------------->8---
commit a70414e82048f425cdb00e3cd30c15fcb9fbab86
Author: Tino Calancha <tino.calancha <at> gmail.com>
Date: Fri Apr 6 14:03:55 2018 +0900
Preserve case in query-replace undo
If the user query and replaces 'foo' with 'BAR', then
undo must comeback to 'foo', not to 'FOO' (Bug#31073).
* lisp/replace.el (perform-replace): Bind nocasify to non-nil
value during undo/undo-all actions.
diff --git a/lisp/replace.el b/lisp/replace.el
index c28c9b36f0..2b0555d580 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -2619,6 +2619,7 @@ perform-replace
(let ((stack-idx 0)
(stack-len (length stack))
(num-replacements 0)
+ (nocasify t) ; Bug#31073.
search-string
next-replacement)
(while (and (< stack-idx stack-len)
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 27.0.50 (build 25, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
Repository revision: 8df23a82042fa7dbaaa4377bc376d705595b073f
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31073
; Package
emacs
.
(Sun, 08 Apr 2018 12:54:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 31073 <at> debbugs.gnu.org (full text, mbox):
> From: Tino Calancha <tino.calancha <at> gmail.com>
> Cc: juri <at> jurta.org, 31073 <at> debbugs.gnu.org
> Date: Sun, 08 Apr 2018 11:46:15 +0900
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> >> this feature was introduced for Emacs-26 release. Should the fix go
> >> into that branch (Emacs-26)?
> >
> > It's too late for Emacs 26.1. For the other 26.x, I'd need to see the
> > patch first.
> I see.
> The patch is pretty obvious: just 1 line:
Thanks. This is indeed OK for the emacs-26 branch, but please wait
with pushing this until Emacs 26.1 is released, hopefully soon enough.
Alternatively, feel free to push to master and cherry-pick to emacs-26
later, after the 26.1 release.
Reply sent
to
Tino Calancha <tino.calancha <at> gmail.com>
:
You have taken responsibility.
(Mon, 09 Apr 2018 02:56:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Tino Calancha <tino.calancha <at> gmail.com>
:
bug acknowledged by developer.
(Mon, 09 Apr 2018 02:56:02 GMT)
Full text and
rfc822 format available.
Message #25 received at 31073-done <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> The patch is pretty obvious: just 1 line:
>
> Thanks. This is indeed OK for the emacs-26 branch, but please wait
> with pushing this until Emacs 26.1 is released, hopefully soon enough.
>
> Alternatively, feel free to push to master and cherry-pick to emacs-26
> later, after the 26.1 release.
Pushed fix into master branch as commit
"Preserve case in query-replace undo"
(32dc0cb1b5ae895d237c7118ccaeb084715934fd).
I will backport the fix to emacs-26 after 26.1 release.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 07 May 2018 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 6 years and 263 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.