unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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.




  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).