[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Function for deleting a key binding in a sparse keymap
From: |
Stefan Monnier |
Subject: |
Re: Function for deleting a key binding in a sparse keymap |
Date: |
Tue, 06 Dec 2005 20:56:11 -0500 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
> I feel a bit stupid because this example is not terribly important. However
> this is what I do. There is a minor mode where I use this,
> bw-window-resize-mode. When entering this mode I do:
> (mapc (lambda(key)
> (define-key bw-keymap (vector key) nil))
> help-event-list)
> I set the "help keys" to nil so that the help is still available during
> resizing. Those are the keys I want to remove afterwards. The default value
> in the sparse keymap bw-keymap is:
> (define-key bw-keymap [t] 'bw-exit-resize-mode)
I see. Coming from a functional programming background, I'd use anoter
approach based on the idea of reusing the original value rather than using
side-effects to try and coerce it back to the same shape it had originally:
(defvar bw-keymap
(let ((map (make-sparse-keymap)))
(define-key map [t] 'bw-exit-resize-mode)
map))
then when adding help-event-list bindings:
(setq bw-keymap (let ((map (make-sparse-keymap)))
(set-keymap-parent map bw-keymap)
map))
;; dolist is more efficient than mapc.
(dolist (key help-event-list)
(define-key bw-keymap (vector key) nil))
and when you want to remove those keys, just do
(setq bw-keymap (keymap-parent bw-keymap))
Of course, you can use variants of it, e.g. introduce a "bw-basic-map"
variable to keep the original map, rather than rely on (keymap-parent
bw-keymap) holding that original map.
Stefan
- Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/04
- Re: Function for deleting a key binding in a sparse keymap, Richard M. Stallman, 2005/12/05
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/05
- Re: Function for deleting a key binding in a sparse keymap, Richard M. Stallman, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap, Stefan Monnier, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap, Stefan Monnier, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/06
- Re: Function for deleting a key binding in a sparse keymap,
Stefan Monnier <=
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/07
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/07
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/07
- Re: Function for deleting a key binding in a sparse keymap, Kim F. Storm, 2005/12/08
- Re: Function for deleting a key binding in a sparse keymap, Richard M. Stallman, 2005/12/07
- Re: Function for deleting a key binding in a sparse keymap, Lennart Borgman, 2005/12/07
Re: Function for deleting a key binding in a sparse keymap, Stefan Monnier, 2005/12/05