GNU bug report logs - #32108
27.0.50; Insertion of char from input method during macro invocation duplicates the char

Previous Next

Package: emacs;

Reported by: Filipp Gunbin <fgunbin <at> fastmail.fm>

Date: Mon, 9 Jul 2018 22:42:02 UTC

Severity: normal

Tags: confirmed

Merged with 34248

Found in versions 25.1, 27.0.50

Fixed in version 27.1

Done: Eli Zaretskii <eliz <at> gnu.org>

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 32108 in the body.
You can then email your comments to 32108 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Mon, 09 Jul 2018 22:42:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Filipp Gunbin <fgunbin <at> fastmail.fm>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 09 Jul 2018 22:42:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Filipp Gunbin <fgunbin <at> fastmail.fm>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; Insertion of char from input method during macro invocation
 duplicates the char
Date: Tue, 10 Jul 2018 01:41:01 +0300
emacs -Q
C-u C-\ russian-computer
C-x (
<type any letter>
C-x )
C-x e

The last command inserts two chars instead of one.


In GNU Emacs 27.0.50 (build 2, x86_64-apple-darwin17.6.0)
Repository revision: 6ffc6a698f5d425e402c35010394cdb17d8888ce
System Description:  Mac OS X 10.13.5

Configured using:
 'configure CC=/usr/bin/gcc --without-all --without-ns --with-dbus
 --with-file-notification=no --with-gnutls --with-modules --with-xml2
 --with-zlib'

Configured features:
GNUTLS LIBXML2 ZLIB MODULES

Important settings:
  value of $LC_CTYPE: UTF-8
  value of $LANG: ru_RU.UTF-8
  locale-coding-system: utf-8-unix




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Tue, 10 Jul 2018 16:19:02 GMT) Full text and rfc822 format available.

Message #8 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Filipp Gunbin <fgunbin <at> fastmail.fm>
Cc: 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Tue, 10 Jul 2018 19:18:16 +0300
> From: Filipp Gunbin <fgunbin <at> fastmail.fm>
> Date: Tue, 10 Jul 2018 01:41:01 +0300
> 
> 
> emacs -Q
> C-u C-\ russian-computer
> C-x (
> <type any letter>
> C-x )
> C-x e
> 
> The last command inserts two chars instead of one.
> 
> 
> In GNU Emacs 27.0.50 (build 2, x86_64-apple-darwin17.6.0)
> Repository revision: 6ffc6a698f5d425e402c35010394cdb17d8888ce
> System Description:  Mac OS X 10.13.5

Thanks.  I see this in the current emacs-26 branch as well.  If you
can afford it, would you please bisect this bug?  I'd like to at least
know how long ago did we break this (I'm afraid not too long).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Tue, 10 Jul 2018 22:39:01 GMT) Full text and rfc822 format available.

Message #11 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Filipp Gunbin <fgunbin <at> fastmail.fm>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 01:38:23 +0300
On 10/07/2018 19:18 +0300, Eli Zaretskii wrote:

>> From: Filipp Gunbin <fgunbin <at> fastmail.fm>
>> Date: Tue, 10 Jul 2018 01:41:01 +0300
>>
>>
>> emacs -Q
>> C-u C-\ russian-computer
>> C-x (
>> <type any letter>
>> C-x )
>> C-x e
>>
>> The last command inserts two chars instead of one.
>>
>>
>> In GNU Emacs 27.0.50 (build 2, x86_64-apple-darwin17.6.0)
>> Repository revision: 6ffc6a698f5d425e402c35010394cdb17d8888ce
>> System Description:  Mac OS X 10.13.5
>
> Thanks.  I see this in the current emacs-26 branch as well.  If you
> can afford it, would you please bisect this bug?  I'd like to at least
> know how long ago did we break this (I'm afraid not too long).

I was trying to find the "good" commit to start bisect with, got past
25.1 (bug present there), but cannot build any of 24.x:

Loading /Users/fgunbin/src/emacs-bisect/lisp/button.el (source)...
Loading /Users/fgunbin/src/emacs-bisect/lisp/startup.el (source)...
Wrong type argument: listp, 35183230188054
make[1]: *** [Makefile:757: bootstrap-emacs] Error 1
make[1]: Leaving directory '/Users/fgunbin/src/emacs-bisect/src'
make: *** [Makefile:382: src] Error 2

I'm not sure what to do with this error.

Thanks,
Filipp




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 00:55:02 GMT) Full text and rfc822 format available.

Message #14 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Filipp Gunbin <fgunbin <at> fastmail.fm>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Tue, 10 Jul 2018 20:54:31 -0400
Filipp Gunbin wrote:

> I was trying to find the "good" commit to start bisect with, got past
> 25.1 (bug present there), but cannot build any of 24.x:

Maybe your toolchain is tool new/old/something. Anyway, builds for me,
and bisects to 30a6b1f81412044aa7dda5573b0142a0a03c4fd3.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 03:10:01 GMT) Full text and rfc822 format available.

Message #17 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Filipp Gunbin <fgunbin <at> fastmail.fm>
Cc: 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 06:09:17 +0300
> From: Filipp Gunbin <fgunbin <at> fastmail.fm>
> Cc: 32108 <at> debbugs.gnu.org
> Date: Wed, 11 Jul 2018 01:38:23 +0300
> 
> > Thanks.  I see this in the current emacs-26 branch as well.  If you
> > can afford it, would you please bisect this bug?  I'd like to at least
> > know how long ago did we break this (I'm afraid not too long).
> 
> I was trying to find the "good" commit to start bisect with, got past
> 25.1 (bug present there), but cannot build any of 24.x:

OK, thanks.  I see that Emacs 24.5 doesn't have the problem, so the
bug was introduced in development of Emacs 25.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 03:12:02 GMT) Full text and rfc822 format available.

Message #20 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Glenn Morris <rgm <at> gnu.org>
Cc: fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 06:11:02 +0300
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  32108 <at> debbugs.gnu.org
> Date: Tue, 10 Jul 2018 20:54:31 -0400
> 
> Filipp Gunbin wrote:
> 
> > I was trying to find the "good" commit to start bisect with, got past
> > 25.1 (bug present there), but cannot build any of 24.x:
> 
> Maybe your toolchain is tool new/old/something. Anyway, builds for me,
> and bisects to 30a6b1f81412044aa7dda5573b0142a0a03c4fd3.

Thanks!




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 09:30:02 GMT) Full text and rfc822 format available.

Message #23 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Glenn Morris <rgm <at> gnu.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 12:29:03 +0300
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  32108 <at> debbugs.gnu.org
> Date: Tue, 10 Jul 2018 20:54:31 -0400
> 
> bisects to 30a6b1f81412044aa7dda5573b0142a0a03c4fd3.

AFAICS, this happens because when an input method is active, read_char
is called recursively from quail-start-translation, and that recursive
call records the same character for the second time.

Any ideas except introduction of a new variable, inhibit-record-char,
which quail-start-translation would bind to prevent recording of the
same key more than once?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 12:59:02 GMT) Full text and rfc822 format available.

Message #26 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Glenn Morris <rgm <at> gnu.org>, fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 08:58:25 -0400
> AFAICS, this happens because when an input method is active, read_char
> is called recursively from quail-start-translation, and that recursive
> call records the same character for the second time.
>
> Any ideas except introduction of a new variable, inhibit-record-char,
> which quail-start-translation would bind to prevent recording of the
> same key more than once?

I haven't taken the time to look at the details of why read_char sees
the character twice, but maybe we can use the (t . EVENT) format of
events which says that EVENT shouldn't be recorded (tho I'm not sure
it's the same form of "recording" and I'm not sure either that we can
apply this trick to the right "copy" of the two).


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Wed, 11 Jul 2018 15:24:01 GMT) Full text and rfc822 format available.

Message #29 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: rgm <at> gnu.org, fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Wed, 11 Jul 2018 18:23:39 +0300
> From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
> Cc: Glenn Morris <rgm <at> gnu.org>, fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
> Date: Wed, 11 Jul 2018 08:58:25 -0400
> 
> I haven't taken the time to look at the details of why read_char sees
> the character twice, but maybe we can use the (t . EVENT) format of
> events which says that EVENT shouldn't be recorded (tho I'm not sure
> it's the same form of "recording" and I'm not sure either that we can
> apply this trick to the right "copy" of the two).

I think I'm missing something: how does (t . EVENT) help us in this
case?  What we need is a way to distinguish between a character that
gets re-processed by quail.el from the use case described in the
reference mentioned in the log message of commit 30a6b1f, which was
the reason why we added the second call to record_char to read_char,
where previously there was none.  Don't both of these use cases use
the same machinery?

Thanks.




bug Marked as found in versions 25.1. Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 11 Jul 2018 21:35:01 GMT) Full text and rfc822 format available.

Added tag(s) confirmed. Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 11 Jul 2018 21:35:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Sat, 21 Jul 2018 09:17:01 GMT) Full text and rfc822 format available.

Message #36 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: fgunbin <at> fastmail.fm
Cc: rgm <at> gnu.org, monnier <at> iro.umontreal.ca, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Sat, 21 Jul 2018 12:15:57 +0300
> Date: Wed, 11 Jul 2018 12:29:03 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: fgunbin <at> fastmail.fm, 32108 <at> debbugs.gnu.org
> 
> > From: Glenn Morris <rgm <at> gnu.org>
> > Cc: Eli Zaretskii <eliz <at> gnu.org>,  32108 <at> debbugs.gnu.org
> > Date: Tue, 10 Jul 2018 20:54:31 -0400
> > 
> > bisects to 30a6b1f81412044aa7dda5573b0142a0a03c4fd3.
> 
> AFAICS, this happens because when an input method is active, read_char
> is called recursively from quail-start-translation, and that recursive
> call records the same character for the second time.
> 
> Any ideas except introduction of a new variable, inhibit-record-char,
> which quail-start-translation would bind to prevent recording of the
> same key more than once?

No other ideas, so I pushed to the master branch a fix along the above
lines (except it turned out to be slightly more tricky due to input
methods that translate sequences of two or more keys).  Please test.

Btw, it turned out the offending commit also caused us in this
situation to output keys twice to the dribble file and insert them
twice into recent-keys, so this fix resolves those problems as well.

Let's see how much I broke this time...




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32108; Package emacs. (Mon, 23 Jul 2018 18:39:02 GMT) Full text and rfc822 format available.

Message #39 received at 32108 <at> debbugs.gnu.org (full text, mbox):

From: Filipp Gunbin <fgunbin <at> fastmail.fm>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: rgm <at> gnu.org, monnier <at> iro.umontreal.ca, 32108 <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Mon, 23 Jul 2018 21:38:29 +0300
On 21/07/2018 12:15 +0300, Eli Zaretskii wrote:

> No other ideas, so I pushed to the master branch a fix along the above
> lines (except it turned out to be slightly more tricky due to input
> methods that translate sequences of two or more keys).  Please test.

LGTM, it indeed fixes the problem, thanks!




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Mon, 23 Jul 2018 18:59:01 GMT) Full text and rfc822 format available.

Notification sent to Filipp Gunbin <fgunbin <at> fastmail.fm>:
bug acknowledged by developer. (Mon, 23 Jul 2018 18:59:02 GMT) Full text and rfc822 format available.

Message #44 received at 32108-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Filipp Gunbin <fgunbin <at> fastmail.fm>
Cc: rgm <at> gnu.org, monnier <at> iro.umontreal.ca, 32108-done <at> debbugs.gnu.org
Subject: Re: bug#32108: 27.0.50;
 Insertion of char from input method during macro invocation
 duplicates the char
Date: Mon, 23 Jul 2018 21:58:05 +0300
> From: Filipp Gunbin <fgunbin <at> fastmail.fm>
> Cc: rgm <at> gnu.org,  monnier <at> iro.umontreal.ca,  32108 <at> debbugs.gnu.org
> Date: Mon, 23 Jul 2018 21:38:29 +0300
> 
> On 21/07/2018 12:15 +0300, Eli Zaretskii wrote:
> 
> > No other ideas, so I pushed to the master branch a fix along the above
> > lines (except it turned out to be slightly more tricky due to input
> > methods that translate sequences of two or more keys).  Please test.
> 
> LGTM, it indeed fixes the problem, thanks!

Thanks for testing.  I'm closing the bug, feel free to reopen if some
issues arise.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 21 Aug 2018 11:24:04 GMT) Full text and rfc822 format available.

bug unarchived. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 29 Jan 2019 18:53:01 GMT) Full text and rfc822 format available.

Forcibly Merged 32108 34248. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 29 Jan 2019 18:53:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 27 Feb 2019 12:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 117 days ago.

Previous Next


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