Function: rst-define-key

rst-define-key is a byte-compiled function defined in rst.el.gz.

Signature

(rst-define-key KEYMAP KEY DEF &rest DEPRECATED)

Documentation

Bind like define-key but add deprecated key definitions.

KEYMAP, KEY, and DEF are as in define-key. DEPRECATED key definitions should be in vector notation. These are defined as well but give an additional message.

Source Code

;; Defined in /usr/src/emacs/lisp/textmodes/rst.el.gz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Mode definition

(defun rst-define-key (keymap key def &rest deprecated)
  ;; testcover: ok.
  "Bind like `define-key' but add deprecated key definitions.
KEYMAP, KEY, and DEF are as in `define-key'.  DEPRECATED key
definitions should be in vector notation.  These are defined
as well but give an additional message."
  (define-key keymap key def)
  (when deprecated
    (let* ((command-name (symbol-name def))
           (forwarder-function-name
            (if (string-match "^rst-\\(.*\\)$" command-name)
                (concat "rst-deprecated-"
                        (match-string 1 command-name))
              (error "Not an RST command: %s" command-name)))
           (forwarder-function (intern forwarder-function-name)))
      (unless (fboundp forwarder-function)
        (defalias forwarder-function
          (lambda ()
            (:documentation
             (format "Deprecated binding for %s, use \\[%s] instead."
                     def def))
            (interactive)
            (call-interactively def)
            (message "[Deprecated use of key %s; use key %s instead]"
                     (key-description (this-command-keys))
                     (key-description key)))))
      (dolist (dep-key deprecated)
        (define-key keymap dep-key forwarder-function)))))