]> git.eshelyaron.com Git - emacs.git/commitdiff
(global_set_key, local_set_key, global_unset_key)
authorRichard M. Stallman <rms@gnu.org>
Sat, 25 Feb 1995 04:44:08 +0000 (04:44 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 25 Feb 1995 04:44:08 +0000 (04:44 +0000)
(local_unset_key): Functions moved here from keyboard.c.

lisp/subr.el

index 11abcdc3aa11cbcae81688174d4fe5c87308d68c..7f6db387cce67d4a1a1e8f55037f745bc14e1a81 100644 (file)
@@ -932,7 +932,52 @@ syntax table; other characters are copied from the standard syntax table."
        (aset table i 13)
        (setq i (1+ i)))
       table)))
+\f
+(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)
+\f
 ;; now in fns.c
 ;(defun nth (n list)
 ;  "Returns the Nth element of LIST.