;;; jao-embark-prompter.el --- a prompter for embark -*- lexical-binding: t; -*- ;; Copyright (C) 2021 jao ;; Author: jao ;; Keywords: convenience ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Custom action prompting ;;; Code: (defun jao-embark--show-keymap (keymap) (with-current-buffer (cvs-get-buffer-create "*Embark Actions*") (read-only-mode -1) (setq-local cursor-type nil) (delete-region (point-min) (point-max)) (seq-each (lambda (x) (let ((k (car x)) (c (cdr x))) (unless (embark--omit-binding-p c) (let ((desc (if (numberp k) (single-key-description k) (key-description k))) (doc (car (split-string (or (ignore-errors (documentation c)) "") "\n")))) (insert (format "%s %s (%s)\n" (propertize desc 'face 'embark-keybinding) (propertize doc 'face 'italic) (symbol-name c))))))) (cdr (keymap-canonicalize keymap))) (delete-char -1) (read-only-mode 1) (pop-to-buffer (current-buffer) nil t) (fit-window-to-buffer))) (defun jao-embark--prompter (keymap) (let* ((buf (jao-embark--show-keymap keymap)) (cmd (embark-keymap-prompter keymap))) (embark-kill-buffer-and-window buf) cmd)) (advice-add 'embark-completing-read-prompter :override #'jao-embark--prompter) (add-to-list 'display-buffer-alist '("\\`\\*Embark Actions*\\*" (display-buffer-at-bottom) ;; (window-parameters (mode-line-format . none)) (window-height . fit-window-to-buffer))) (provide 'jao-embark-prompter) ;;; jao-embark-prompter.el ends here