summaryrefslogtreecommitdiff
path: root/lisp/subr.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-02-25 04:44:08 +0000
committerRichard M. Stallman <rms@gnu.org>1995-02-25 04:44:08 +0000
commitbaed0109364f28f12cabdc8a13e363b6f2f105fc (patch)
tree315f9104f76866680deb12601b89ef19c8dd1162 /lisp/subr.el
parentb03471782d533dac71a8b02e6ec2287c78329f9f (diff)
downloademacs-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.el45
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.