emacs-devel
[Top][All Lists]
Advanced

[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")))))












reply via email to

[Prev in Thread] Current Thread [Next in Thread]