unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Luc Teirlinck <teirllm@dms.auburn.edu>
Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
Subject: Re: Another bug with the macro counter
Date: Sat, 30 Oct 2004 17:04:57 -0500 (CDT)	[thread overview]
Message-ID: <200410302204.i9UM4vl03402@raven.dms.auburn.edu> (raw)
In-Reply-To: <m3zn23na1v.fsf@kfs-l.imdomain.dk> (storm@cua.dk)

Kim Storm wrote:

   If appending-to-kbd-macro is non-nil in the second line, you don't get
   to the third line which sets it to nil (i.e. it is only set to nil if
   it is already nil).

Yes, that was just some confusion on my part.

   I think it will be better if kmacro.el defines a function

and:

   If appending-to-kbd-macro is non-nil in the second line, you don't get
   to the third line which sets it to nil (i.e. it is only set to nil if
   it is already nil).

   I think it will be better if kmacro.el defines a function

   (defun kmacro-quit ()
      (or appending-to-kbd-macro
	  (kmacro-ring-empty-p)
	  (kmacro-pop-ring))
      (setq appending-to-kbd-macro nil))

   which does the cleanup and then simply call this as

	 (if (fboundp 'kmacro-quit)
	   (kmacro-quit))

   in keyboard-quit.

   Or even better, define a keyboard-quit-hook and add kmacro-quit to it.

   Here is a patch which does that:

I will take a look at it.

Just in case, here is the corrected version of my patch (although your
one might indeed be better, I still have to look at it.)


===File ~/simple-diff-5=====================================
*** simple.el	25 Oct 2004 07:40:49 -0500	1.664
--- simple.el	30 Oct 2004 16:41:28 -0500	
***************
*** 865,873 ****
    (if (and (integerp value)
             (or (not (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                 (eq this-command last-command)
!                (and (boundp 'edebug-active) edebug-active)))
        (let ((char-string
!              (if (or (and (boundp 'edebug-active) edebug-active)
                       (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                   (prin1-char value))))
          (if char-string
--- 865,874 ----
    (if (and (integerp value)
             (or (not (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                 (eq this-command last-command)
! 	       ;; Use `if' instead of `and' to avoid compiler warning.
!                (if (boundp 'edebug-active) edebug-active)))
        (let ((char-string
!              (if (or (if (boundp 'edebug-active) edebug-active)
                       (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                   (prin1-char value))))
          (if char-string
***************
*** 3907,3912 ****
--- 3908,3918 ----
  ;Turned off because it makes dbx bomb out.
  (setq blink-paren-function 'blink-matching-open)
  \f
+ (defvar appending-to-kbd-macro nil
+   "Non-nil when appending to a keyboard macro definition.
+ The value is nil when defining a new keyboard macro.
+ In other situations, the value is undefined.")
+ 
  ;; This executes C-g typed while Emacs is waiting for a command.
  ;; Quitting out of a program does not go through here;
  ;; that happens in the QUIT macro at the C code level.
***************
*** 3916,3921 ****
--- 3922,3933 ----
  At top-level, as an editor command, this simply beeps."
    (interactive)
    (deactivate-mark)
+   (or appending-to-kbd-macro
+       ;; Just for safety.  kmacro.el should be loaded if we got here.
+       ;; Nothing else sets `appending-to-kbd-macro' to t.
+       (not (featurep 'kmacro))
+       (with-no-warnings (kmacro-ring-empty-p))
+       (with-no-warnings (kmacro-pop-ring)))
    (setq defining-kbd-macro nil)
    (signal 'quit nil))
  
============================================================

  reply	other threads:[~2004-10-30 22:04 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-21  1:07 Another bug with the macro counter Luc Teirlinck
2004-10-30  2:38 ` Luc Teirlinck
2004-10-30  3:27   ` Luc Teirlinck
2004-10-30  4:06     ` Stefan
2004-10-30 14:19       ` Luc Teirlinck
2004-10-30 16:12         ` Stefan
2004-10-30 18:06           ` David Kastrup
2004-10-30 23:13             ` Luc Teirlinck
2004-10-31  0:09             ` Stefan
2004-10-31  7:43               ` David Kastrup
2004-10-31 13:30                 ` Andreas Schwab
2004-10-31 17:05                 ` Stefan
2004-10-31 18:36                   ` David Kastrup
2004-10-31 18:52                     ` Luc Teirlinck
2004-10-30 14:24       ` Luc Teirlinck
2004-10-30 14:51       ` Luc Teirlinck
2004-10-30 21:57         ` Kim F. Storm
2004-10-30 22:04           ` Luc Teirlinck [this message]
2004-10-30 22:09             ` Luc Teirlinck
2004-10-30 22:43             ` Kim F. Storm
2004-10-31 21:01           ` Luc Teirlinck
2004-10-31 23:23             ` Kim F. Storm
2004-11-01  7:24           ` Richard Stallman
2004-10-31  9:42       ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200410302204.i9UM4vl03402@raven.dms.auburn.edu \
    --to=teirllm@dms.auburn.edu \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).