From: Ramesh Nedunchezian <rameshnedunchezian@outlook.com>
To: emacs-devel@gnu.org
Subject: Re: Getting magic numbers 134217734 etc in a repetable keymap
Date: Sat, 3 Apr 2021 17:28:12 +0530 [thread overview]
Message-ID: <TY2PR0101MB3693FBA1AC86AD0C68AED29CDA799@TY2PR0101MB3693.apcprd01.prod.exchangelabs.com> (raw)
In-Reply-To: <83tuonesck.fsf@gnu.org>
On 03/04/21 1:02 pm, Eli Zaretskii wrote:
>> From: Ramesh Nedunchezian <rameshnedunchezian@outlook.com>
>> Date: Sat, 3 Apr 2021 11:50:50 +0530
>>
>> I would like to create a repeatable keymap which has magic number
>> 134217734 etc in it using either `define-key' or any other API.
>>
>> I have tried the following, and it desn't work
>>
>> (define-key sexp--repeat-map
>> (vector
>> (car
>> (listify-key-sequence
>> (kbd "C-M-f"))))
>> 'forward-sexp)
>>
>> Getting numbers like 134217734 etc in to the repeatable keymap are
>> important for successful setting up of repetition. That is, for
>> repetition to succeed, the condition below in `repeat-post-hook' need
>> to succeed.
>>
>> (or (memq last-command-event keys)
>> (memq this-original-command '(universal-argument
>> universal-argument-more
>> digit-argument
>> negative-argument)))
>>
>> ... and when I invoke C-M-f `last-command-event' comes out as 134217734.
>>
>> ----------------
>>
>> For now I have hard-coded `sexp--repeat-map' as below, and this works
>> as expected. But I want a cleaner and less-hackish recipe for achieving the same.
>
> Display the "magic" numbers in hex, and I think you will see the way
> clearly.
>
I am dumb. I unable to take your hint. Can I have a full
recipe.
Getting the magic value of C-M-f is not an issue.
But, getting the magic number _verbatim_ in to the _repeat-map__ is
the issue. Note the emphasis on words "verbatim" and "repeat-map".
i.e., I want a recipe which will create this keymap
'(keymap
(134217734 . forward-sexp)
;; (102 . forward-sexp)
)
instead of the
(keymap
(27 keymap
(6 . forward-sexp)))
i.e. The problem with `define-key' is that it is converting C-M-f in
to ESC C-f and this 2-level keymap I DO NOT want. The two level
keymap gets in the way of setting up a repeatable keymap which will
help me do C-M-f f f f f etc.
To summarize, I want the "not ok" to be fixed.
(progn
(defvar test-repeat-map
(let
((map
(make-sparse-keymap)))
map)
"Keymap used to repeatedly invoke `forward-sexp' with C-M-f f f f .....")
(cl-loop for
(cmd . key)
in
'((forward-sexp .
[134217734]) ;; Not ok
(forward-sexp . "f"))
do
(define-key test-repeat-map key cmd)
(put cmd 'repeat-map 'test-repeat-map))
test-repeat-map)
----------------
This is the crux of my problem, and it appears in the context of
newly introduced `repeat-mode' feature.
Getting numbers like 134217734 etc in to the repeatable keymap are
important for successful setting up of repetition. That is, for
repetition to succeed, the condition below in `repeat-post-hook' need
to succeed.
(or (memq last-command-event keys)
(memq this-original-command '(universal-argument
universal-argument-more
digit-argument
negative-argument)))
... and when I invoke C-M-f `last-command-event' comes out as 134217734.
next prev parent reply other threads:[~2021-04-03 11:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-03 6:20 Getting magic numbers 134217734 etc in a repetable keymap Ramesh Nedunchezian
2021-04-03 7:32 ` Eli Zaretskii
2021-04-03 11:58 ` Ramesh Nedunchezian [this message]
2021-04-03 13:14 ` Eli Zaretskii
2021-04-03 15:14 ` Ramesh Nedunchezian
2021-04-03 8:16 ` Andreas Schwab
2021-04-05 20:47 ` Juri Linkov
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=TY2PR0101MB3693FBA1AC86AD0C68AED29CDA799@TY2PR0101MB3693.apcprd01.prod.exchangelabs.com \
--to=rameshnedunchezian@outlook.com \
--cc=emacs-devel@gnu.org \
/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).