Проблема с заменой фрагмента в представлении пейджера из другого фрагмента

Вот реализация бедных людей, что дает вам describe-bindings (C-h b), но ограничивается определенной раскладкой. Форматирование не очень хорошо, но вы должны начать:

(defun describe-keymap (keymap &optional prefix)
  (pop-to-buffer "Keymap description")
  (erase-buffer)
  (describe-keymap-impl keymap prefix))

(defun describe-keymap-impl (keymap &optional prefix)
  "show a description of keymap"
  (let (keymaps-to-process)
    (mapc (lambda (partofkeymap)
            (when prefix
              (insert (concat prefix " ")))
            (insert (key-description (list partofkeymap)))
            (insert "                ")
            (cond ((atom partofkeymap))
                  ((listp (cdr partofkeymap))
                   (insert "prefix-key")
                   (if (eq 'keymap (cadr partofkeymap))
                       (setq keymaps-to-process (cons partofkeymap keymaps-to-process))))
                  (t 
                   (insert (symbol-name (cdr partofkeymap)))))
            (insert "\n"))
          (if (and (symbolp keymap) (boundp keymap))
              (symbol-value keymap)
            keymap))
    (while keymaps-to-process
      (insert "\n\n")
      (describe-keymap-impl (cddar keymaps-to-process) (concat prefix (key-description (list (caar keymaps-to-process)))))
      (setq keymaps-to-process (cdr keymaps-to-process))))
  nil)

Я тестировал, оценивая оба:

(describe-keymap emacs-lisp-mode-map)
(describe-keymap 'emacs-lisp-mode-map)
4
задан Sapna Sharma 13 July 2018 в 07:06
поделиться