[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Getting magic numbers 134217734 etc in a repetable keymap
From: |
Ramesh Nedunchezian |
Subject: |
Getting magic numbers 134217734 etc in a repetable keymap |
Date: |
Sat, 3 Apr 2021 11:50:50 +0530 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
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.
(setq sexp--repeat-map
'(keymap
;; How can I get 134217734 here?
;; (define-key sexp--repeat-map (kbd "C-M-f") 'forward-sexp)
;; puts a nested list in keymap
;; The numerical vaues here are values of `last-command-event' in
;; `repeat-post-hook'
(134217734 . forward-sexp)
(134217730 . backward-sexp)
(134217729 . beginning-of-defun)
(134217733 . end-of-defun)
(134217732 . down-list)
(134217749 . backward-up-list)
;; I can get 102 here with
;; (define-key sexp--repeat-map "f" 'forward-sexp)
(102 . forward-sexp)
(98 . backward-sexp)
(97 . beginning-of-defun)
(101 . end-of-defun)
(100 . down-list)
(117 . backward-up-list)))
(progn
(put 'forward-sexp 'repeat-map 'sexp--repeat-map)
(put 'backward-sexp 'repeat-map 'sexp--repeat-map)
(put 'beginning-of-defun 'repeat-map 'sexp--repeat-map)
(put 'end-of-defun 'repeat-map 'sexp--repeat-map)
(put 'down-list 'repeat-map 'sexp--repeat-map)
(put 'backward-up-list 'repeat-map 'sexp--repeat-map))
----------------
FWIW, to convert C-M-f to 102, I used this
(vector
(event-basic-type
(car
(listify-key-sequence
(kbd "C-M-f")))))