diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-02-25 04:44:08 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-02-25 04:44:08 +0000 |
commit | baed0109364f28f12cabdc8a13e363b6f2f105fc (patch) | |
tree | 315f9104f76866680deb12601b89ef19c8dd1162 /lisp/subr.el | |
parent | b03471782d533dac71a8b02e6ec2287c78329f9f (diff) | |
download | emacs-baed0109364f28f12cabdc8a13e363b6f2f105fc.tar.gz |
(global_set_key, local_set_key, global_unset_key)
(local_unset_key): Functions moved here from keyboard.c.
Diffstat (limited to 'lisp/subr.el')
-rw-r--r-- | lisp/subr.el | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lisp/subr.el b/lisp/subr.el index 11abcdc3aa1..7f6db387cce 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -932,7 +932,52 @@ syntax table; other characters are copied from the standard syntax table." (aset table i 13) (setq i (1+ i))) table))) + +(defun global-set-key (key command) + "Give KEY a global binding as COMMAND. +COMMAND is a symbol naming an interactively-callable function. +KEY is a key sequence (a string or vector of characters or event types). +Non-ASCII characters with codes above 127 (such as ISO Latin-1) +can be included if you use a vector. +Note that if KEY has a local binding in the current buffer +that local binding will continue to shadow any global binding." + (interactive "KSet key globally: \nCSet key %s to command: ") + (or (vectorp key) (stringp key) + (signal 'wrong-type-argument (list 'arrayp key))) + (define-key (current-global-map) key command) + nil) + +(defun local-set-key (key command) + "Give KEY a local binding as COMMAND. +COMMAND is a symbol naming an interactively-callable function. +KEY is a key sequence (a string or vector of characters or event types). +Non-ASCII characters with codes above 127 (such as ISO Latin-1) +can be included if you use a vector. +The binding goes in the current buffer's local map, +which in most cases is shared with all other buffers in the same major mode." + (interactive "KSet key locally: \nCSet key %s locally to command: ") + (let ((map (current-local-map))) + (or map + (use-local-map (setq map (make-sparse-keymap)))) + (or (vectorp key) (stringp key) + (signal 'wrong-type-argument (list 'arrayp key))) + (define-key map key command)) + nil) +(defun global-unset-key (key) + "Remove global binding of KEY. +KEY is a string representing a sequence of keystrokes." + (interactive "kUnset key globally: ") + (global-set-key key nil)) + +(defun local-unset-key + "Remove local binding of KEY. +KEY is a string representing a sequence of keystrokes." + (interactive "kUnset key locally: ") + (if (current-local-map) + (local-set-key (current-local-map) key nil)) + nil) + ;; now in fns.c ;(defun nth (n list) ; "Returns the Nth element of LIST. |