Gnus development mailing list
 help / color / mirror / Atom feed
From: Tassilo Horn <tsdh@gnu.org>
To: Peter Davis <pfd@pfdstudio.com>
Cc: ding@gnus.org
Subject: Re: Macro suddenly broken
Date: Tue, 18 Aug 2015 16:10:05 +0200	[thread overview]
Message-ID: <87egj01yde.fsf@gnu.org> (raw)
In-Reply-To: <6sw6c7a8towzl5.fsf@dhcp-6-148.hmco.com> (Peter Davis's message of "Tue, 18 Aug 2015 08:28:06 -0400")

Peter Davis <pfd@pfdstudio.com> writes:

>>> On the working system, 'M M e' is nothing, but 'M M e e' is:
>>
>> What does "nothing" mean?  I guess "the key sequence is not finished",
>> right?
>
> Nothing means that if I type 'M M e', emacs immediately responds that
> this is undefined, without waiting for any further keystrokes.

Wow, this is really strange.  If `M M e' is described as undefined, then
actually `e' should be bound to `gnus-summary-put-mark-as-expirable'.

>>>    ⇧M ⇧M E E runs the command gnus-summary-put-mark-as-expirable,
>>>    which is an interactive Lisp function in `gnus-sum.el'.

Is that the literal output?  I've never seen this key notation in emacs.
Here, it would say `M M e e'.  Is that something inherent to Aquamacs?

>> Anyway.  By default, `gnus-summary-put-mark-as-expirable' is not bound
>> to a key, at least not in the current Gnus version.  Is it possible that
>> you've bound it, e.g., in ~/.gnus.el, on the machine where the macro
>> works?
>
> It's not defined anywhere in my .emacs or .gnus.el file. In fact, the
> sequence originally came from an example Peter Münster posted to this
> list, so it evidently worked for him.

Ok, I see.

>> Well, what you can do of course is define your keyboard macro in such
>> a way that it doesn't depend on key bindings, that is, the keyboard
>> macro would do
>>
>>   M-x gnus-summary-put-mark-as-expirable RET...
>>
>> instead of
>>
>>   M M e e...
>
> Yes, I'd have to figure out how to do the rest of the behavior (moving
> to and showing the next message in the group).  As I mentioned, I'm not
> lisp-savvy, but I could figure this out in time.

Binding keys to vectors of keys is not the best way to persist keyboard
macros.  Basically, I'd recommend you re-record your macro using

1. Start recording with <f3>.

2. Perform the actions you want to record, e.g., expire the current
   message and move on to the next one.  You can use key bindings for
   that but also the menu or tool bar or M-x ...

3. Finish recording of the macro with <f4>.

4. Give the last recently recorded keyboard macro a name, e.g.,
   `pd/gnus-expire-and-move-on' using `C-x C-k n'
  
5. Open your ~/.emacs, move point to some empty line and do ` M-x
   insert-kbd-macro RET pd/gnus-expire-and-move-on RET'.  This will
   insert a command definition for the given keyboard macro.  Then you
   can bind that command rather than a plain key sequence in your
   `pm/alter-*-map' functions which I guess are run in
   `gnus-summary-mode-hook' and `gnus-article-mode-hook'.

> I'm still puzzled about why it suddenly stopped working, after being
> in use for months.

Yes, me too.  Is it possible that you are using different Aquamacs
versions on the two computers?  AFAIK, the current Aquamacs release is
based on emacs 24.x whereas the previos version was based on emacs 23.x.
It is possible that something in the handling of keyboard macros has
changed between versions (although I cannot find a corresponding NEWS
entry).

Concretely, from what you are telling it seems as if the current version
errors when a keyboard macro invokes an undefined key binding whereas
the older version just ignores it and continues with the rest of the
macro's keys.

Bye,
Tassilo



  reply	other threads:[~2015-08-18 14:10 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-14 14:47 Peter Davis
2015-08-14 15:01 ` Peter Davis
2015-08-14 15:49 ` Tassilo Horn
2015-08-14 16:17   ` Peter Davis
2015-08-15 13:06     ` Peter Davis
2015-08-17  7:19     ` Tassilo Horn
2015-08-17 12:18       ` Peter Davis
2015-08-18  7:46         ` Tassilo Horn
2015-08-18 12:28           ` Peter Davis
2015-08-18 14:10             ` Tassilo Horn [this message]
2015-08-19 23:23               ` Peter Davis
2015-08-20  5:01                 ` Tassilo Horn
2015-08-20 12:11                   ` Peter Davis
2015-08-20 12:31                     ` Tassilo Horn
2015-08-20 12:57                       ` Peter Davis

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

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

  git send-email \
    --in-reply-to=87egj01yde.fsf@gnu.org \
    --to=tsdh@gnu.org \
    --cc=ding@gnus.org \
    --cc=pfd@pfdstudio.com \
    /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.
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 NNTP newsgroup(s).