5 ms·
Nice. I tried to write a quick version of this for my response, but wasn't aware of insert-key-sequence. Edit: insert-key-sequence doesn't exist on Emacs 22.3.
by silentbicycle 16y ago
Nice. I tried to write a quick version of this for my response, but wasn't aware of insert-key-sequence.
Edit: insert-key-sequence doesn't exist on Emacs 22.3.1, is that a more recent addition?
Also, while not crucial, I prefer to add a my-X-mode-hook function and add things to that, rather than adding several lambdas to the mode hook - it's easier to modify them all after binding that way.
- deleted 16y ago[deleted]
- funptr 16y agoIt's not part of emacs, I just wrote it as an example.
- silentbicycle 16y agoOh, right. Sorry, hadn't had my coffee yet. I tried doing exactly that, but used (interactive "kKey: "), with lowercase k, and it didn't work.
- funptr 16y agoThat seems to work also, what's the problem?
- silentbicycle 16y agoDidn't work correctly with a few slightly-more elaborate key combinations I tried. IIRC C-x M-. was one of them. I much prefer formatting the keybindings like kbd uses, anyway - do you know offhand how to convert a keypress to that format w/out using C-h k?
- funptr 16y agoNot offhand, but I looked it up and I think what you want is `key-description'. It prints key sequences, so e.g. (key-description "\370") evals to "M-x".
- silentbicycle 16y agoBingo. Thanks. This should do what the original commenter wanted: (defun insert-keybinding (k) "Insert code for a keybinding." (interactive "kKey sequence: ") (insert (concat "(global-set-key (kbd \"" (key-description k) "\") 'function-name)")))