GNU bug report logs - #37057
25.2; Calc; Key erroneously recorded twice in keyboard macro

Previous Next

Package: emacs;

Reported by: Christoph Arenz <tiga.arenz <at> web.de>

Date: Fri, 16 Aug 2019 17:45:01 UTC

Severity: normal

Found in version 25.2

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 37057 in the body.
You can then email your comments to 37057 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#37057; Package emacs. (Fri, 16 Aug 2019 17:45:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christoph Arenz <tiga.arenz <at> web.de>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 16 Aug 2019 17:45:02 GMT) Full text and rfc822 format available.

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

From: Christoph Arenz <tiga.arenz <at> web.de>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.2; Calc; Key erroneously recorded twice in keyboard macro
Date: Fri, 16 Aug 2019 19:33:04 +0200
In Calc enter:
90 <RET> S <f3> I S <f4>
S <f4>
The first key sequence gives 90 again.
The second key sequence shows 1, however expected is 90 as well.

Looking at the recorded macro with C-x C-k e <RET> shows this:
Command: last-kbd-macro
Key: none

Macro:

ISS            ;; self-insert-command * 3



<view-lossage> shows this:
 C-x * [calc-dispatch]
 * * 9 [calcDigit-start]
 0 [calcDigit-key]
 <return> [calcDigit-nondigit]
 S [calc-sin]
 <f3> [kmacro-start-macro-or-insert-counter]
 I [calc-inverse]
 S [calc-fancy-prefix-other-key]
 S [calc-sin]
 <f4> [kmacro-end-or-call-macro]
 S [calc-sin]
 <f4> [kmacro-end-or-call-macro]

It looks like the one key press of 'S' was seen twice (as
[calc-fancy-prefix-other-key]
and as [calc-sin]) and also recorded twice in the keyboard macro.
Using the macro thereafter leads to a wrong result.





In GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21)
 of 2017-09-22, modified by Debian built on lgw01-amd64-050
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description:    Ubuntu 18.04.3 LTS

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --build x86_64-linux-gnu
 --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-x=yes --with-x-toolkit=gtk3
 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs25-jYekUr/emacs25-25.2+1=.
-fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LC_MONETARY: de_DE.UTF-8
  value of $LC_NUMERIC: de_DE.UTF-8
  value of $LC_TIME: de_DE.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Calculator

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Working...
Keyboard macro defined
Working...
Inverse...
Working... [2 times]
Type "q" in help window to restore previous buffer.
Making completion list...
Mark set
Please enter your report.  Type C-c C-c to send, C-c C-k to abort.
Auto-saving...done

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug sendmail message dired format-spec
rfc822 mml mml-sec password-cache epg epg-config gnus-util mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mm-util help-fns mail-prsvr mailabbrev mail-utils gmm-utils mailheader
reporter help-mode cl-loaddefs pcase cl-lib kmacro calc-misc calc-math
calc-alg calc-ext calc-menu easymenu calc calc-loaddefs calc-macs
time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote dbusbind inotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 123655 11261)
 (symbols 48 23246 0)
 (miscs 40 798 182)
 (strings 32 21504 4226)
 (string-bytes 1 593283)
 (vectors 16 16407)
 (vector-slots 8 484237 6894)
 (floats 8 167 195)
 (intervals 56 304 4)
 (buffers 976 21))





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#37057; Package emacs. (Sun, 05 Apr 2020 20:07:01 GMT) Full text and rfc822 format available.

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

From: Adrian Parvin Ouano <programmer <at> adrianpar.vin>
To: 37057 <at> debbugs.gnu.org
Subject: Possible explanation for double-recording of keyboard macro
Date: Mon, 06 Apr 2020 03:54:39 +0800
I've personally experienced this problem when I use operators with
implicit stack push. That is, pressing `1 +` rather than `1 <SPC> +`. I
believe this is a problem of focus. That is, when switching from
minibuffer to Calc buffer, the key gets entried twice. I think the same
things happens with the inverse prefix.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#37057; Package emacs. (Sun, 05 Apr 2020 20:34:01 GMT) Full text and rfc822 format available.

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

From: Adrian Parvin Ouano <programmer <at> adrianpar.vin>
To: 37057 <at> debbugs.gnu.org
Subject: Better explanation
Date: Mon, 06 Apr 2020 04:21:03 +0800
Actually, I looked into how Emacs handles implicit pushes, and found the
answer to *my* problem, not sure if the same is with yours. Emacs Calc
uses `unread-command-events` in order to perform the addition. That is,

1 1+
(space verbatim)
is read as:
1 1++
where the first + pushes into the Calc stack, and pushes "+" into the
command queue, for the Calc stack to process as addition.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Mon, 06 Apr 2020 13:17:02 GMT) Full text and rfc822 format available.

Notification sent to Christoph Arenz <tiga.arenz <at> web.de>:
bug acknowledged by developer. (Mon, 06 Apr 2020 13:17:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Adrian Parvin Ouano <programmer <at> adrianpar.vin>
Cc: 37057-done <at> debbugs.gnu.org, 37526-done <at> debbugs.gnu.org
Subject: Re: bug#37057: Better explanation
Date: Mon, 06 Apr 2020 16:16:33 +0300
> From: Adrian Parvin Ouano <programmer <at> adrianpar.vin>
> Date: Mon, 06 Apr 2020 04:21:03 +0800
> 
> Actually, I looked into how Emacs handles implicit pushes, and found the
> answer to *my* problem, not sure if the same is with yours. Emacs Calc
> uses `unread-command-events` in order to perform the addition. That is,
> 
> 1 1+
> (space verbatim)
> is read as:
> 1 1++
> where the first + pushes into the Calc stack, and pushes "+" into the
> command queue, for the Calc stack to process as addition.

This bug (and a similar bug#37526) are already fixed in what will
become Emacs 27, we just forgot to close them.  Closing now.

Thanks.




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

This bug report was last modified 3 years and 350 days ago.

Previous Next


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