Function: which-key-add-major-mode-key-based-replacements

which-key-add-major-mode-key-based-replacements is an autoloaded and byte-compiled function defined in which-key.el.gz.

Signature

(which-key-add-major-mode-key-based-replacements MODE KEY-SEQUENCE REPLACEMENT &rest MORE)

Documentation

Functions like which-key-add-key-based-replacements.

The difference is that MODE specifies the major-mode that must be active for KEY-SEQUENCE and REPLACEMENT (MORE contains addition KEY-SEQUENCE REPLACEMENT pairs) to apply.

Source Code

;; Defined in /usr/src/emacs/lisp/which-key.el.gz
;;;###autoload
(defun which-key-add-major-mode-key-based-replacements
    (mode key-sequence replacement &rest more)
  "Functions like `which-key-add-key-based-replacements'.
The difference is that MODE specifies the `major-mode' that must
be active for KEY-SEQUENCE and REPLACEMENT (MORE contains
addition KEY-SEQUENCE REPLACEMENT pairs) to apply."
  (declare (indent defun))
  ;; TODO: Make interactive
  (when (not (symbolp mode))
    (error "`%S' should be a symbol corresponding to a value of major-mode" mode))
  (let ((mode-alist
         (or (cdr-safe (assq mode which-key-replacement-alist)) (list)))
        (title-mode-alist
         (or (cdr-safe (assq mode which-key--prefix-title-alist)) (list))))
    (while key-sequence
      ;; normalize key sequences before adding
      (let ((key-seq (key-description (kbd key-sequence)))
            (replace (or (and (functionp replacement) replacement)
                         (car-safe replacement)
                         replacement)))
        (push (cons (cons (concat "\\`" (regexp-quote key-seq) "\\'") nil)
                    (if (functionp replace) replace (cons nil replace)))
              mode-alist)
        (when (and (not (functionp replacement)) (consp replacement))
          (push (cons key-seq (cdr-safe replacement))
                title-mode-alist)))
      (setq key-sequence (pop more) replacement (pop more)))
    (if (assq mode which-key-replacement-alist)
        (setcdr (assq mode which-key-replacement-alist) mode-alist)
      (push (cons mode mode-alist) which-key-replacement-alist))
    (if (assq mode which-key--prefix-title-alist)
        (setcdr (assq mode which-key--prefix-title-alist) title-mode-alist)
      (push (cons mode title-mode-alist) which-key--prefix-title-alist))))