Function: compat--define-key

compat--define-key is a byte-compiled function defined in compat-29.el.

Signature

(compat--define-key KEYMAP KEY DEF &optional REMOVE)

Documentation

[Compatibility function for define-key, defined in Emacs 29.1. See (compat)
Emacs 29.1' for more details.]

Handle optional argument REMOVE.

Source Code

;; Defined in ~/.emacs.d/elpa/compat-30.1.0.1/compat-29.el
;;;; Defined in keymap.c

(compat-defun define-key (keymap key def &optional remove) ;; <compat-tests:define-key>
  "Handle optional argument REMOVE."
  :extended t
  (if (not remove)
      (define-key keymap key def)
    ;; Canonicalize key
    (setq key (key-parse (key-description key)))
    (define-key keymap key nil)
    ;; Split M-key in ESC key
    (setq key (mapcan (lambda (k)
                        (if (and (integerp k) (/= (logand k ?\M-\0) 0))
                            (list ?\e (logxor k ?\M-\0))
                          (list k)))
                      key))
    ;; Delete single keys directly
    (if (length= key 1)
        (delete key keymap)
      ;; Lookup submap and delete key from there
      (let ((submap (lookup-key keymap (vconcat (butlast key)))))
        (unless (keymapp submap)
          (error "Not a keymap for %s" key))
        (when (symbolp submap)
          (setq submap (symbol-function submap)))
        (delete (last key) submap)))
    def))