[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/iwindow f7b47e3bd8 04/13: Show keys for minibuffer on mini
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/iwindow f7b47e3bd8 04/13: Show keys for minibuffer on minibuffer |
Date: |
Sun, 27 Nov 2022 16:01:12 -0500 (EST) |
branch: elpa/iwindow
commit f7b47e3bd8112ec19caf56ad94b82ebb8450a300
Author: Akib Azmain Turja <akib@disroot.org>
Commit: Akib Azmain Turja <akib@disroot.org>
Show keys for minibuffer on minibuffer
---
iwindow.el | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 50 insertions(+), 12 deletions(-)
diff --git a/iwindow.el b/iwindow.el
index 9fe86a58f9..3585e653a5 100644
--- a/iwindow.el
+++ b/iwindow.el
@@ -58,6 +58,7 @@ Each element should be a key that `read-key' can return."
(defcustom iwindow-decoration-functions
(list #'iwindow-show-keys-on-mode-line
+ #'iwindow-show-keys-for-minibuffer
#'iwindow-highlight-window)
"Hook run to decorate candidate window.
@@ -72,8 +73,12 @@ function should make any changes (e.g. let-bind a variable),
call
CALLBACK and revert the changes it has done."
:type 'hook
:options (list #'iwindow-show-keys-on-mode-line
+ #'iwindow-show-keys-for-minibuffer
#'iwindow-highlight-window))
+(defface iwindow-minibuffer-keys-face '((t :inherit (highlight bold)))
+ "Face to use for showing keys on minibuffer.")
+
(defcustom iwindow-highlight-faces
'((default . iwindow-highlight-default)
(fringe . iwindow-highlight-fringe))
@@ -219,20 +224,53 @@ WINDOWS and CALLBACK is described in the docstring of
(window-list)
(with-selected-window (caar window-list)
(cl-letf* (((window-parameter nil sym) sym)
- (face-remapping-alist
- face-remapping-alist))
- (unless (memq (current-buffer) buffers)
- (dolist (pair iwindow-highlight-faces)
- (face-remap-add-relative
- (car pair)
- `(:filtered (:window ,sym ,sym)
- ,(cdr pair)))))
- (push (current-buffer) buffers)
- (if (cdr window-list)
- (setup-windows (cdr window-list))
- (funcall callback))))))
+ (payload
+ (lambda ()
+ (if (cdr window-list)
+ (setup-windows (cdr window-list))
+ (funcall callback)))))
+ (if (memq (current-buffer) buffers)
+ (funcall payload)
+ (let ((face-remapping-alist
+ face-remapping-alist))
+ (dolist (pair iwindow-highlight-faces)
+ (face-remap-add-relative
+ (car pair)
+ `(:filtered (:window ,sym ,sym)
+ ,(cdr pair))))
+ (push (current-buffer) buffers)
+ (funcall payload)))))))
(setup-windows windows))))
+(defun iwindow-show-keys-for-minibuffer (windows callback)
+ "Show the keys to choose minibuffer in minibuffer.
+
+WINDOWS and CALLBACK is described in the docstring of
+`iwindow-decoration-functions', which see."
+ (cl-labels ((setup-windows
+ (window-list)
+ (with-selected-window (caar window-list)
+ (let ((ov nil))
+ (when (minibufferp)
+ (setq ov (make-overlay (point-min)
+ (point-min)))
+ (overlay-put
+ ov 'before-string
+ (concat (propertize
+ (mapconcat #'string (cdar window-list)
+ " ")
+ 'face '(iwindow-minibuffer-keys-face
+ default))
+ " "))
+ (overlay-put ov 'window (selected-window)))
+ (unwind-protect
+ (if (cdr window-list)
+ (setup-windows (cdr window-list))
+ (funcall callback))
+ (when ov
+ (delete-overlay ov)))))))
+ (setup-windows windows)))
+
;;;###autoload
(defun iwindow-select ()
"Interactively select a window."
- [nongnu] branch elpa/iwindow created (now 144c402d5f), ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow bfc5e97dfe 03/13: Add iwindow-swap, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 16c6c97143 09/13: Don't error when PREDICATE is nil, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 89989ad071 10/13: Minor cleanup, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow fc092c6b64 12/13: Lower Emacs minimum requirement to 24.3, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow cbbcdb32b2 05/13: Suppress runtime warning, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow f7b47e3bd8 04/13: Show keys for minibuffer on minibuffer,
ELPA Syncer <=
- [nongnu] elpa/iwindow 13b9c558bf 11/13: Replace cl-labels with named-let, use Compat if needed, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 144c402d5f 13/13: Add .dir-locals.el, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 6c5ea91142 02/13: Allow to use any arbitrary face to highlight, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 285f40ff09 01/13: Add iwindow-select, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow a32c522f80 06/13: Add iwindow-delete and iwindow-delete-others, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow f5cf9ed724 07/13: Don't show raw key code on unbound key, ELPA Syncer, 2022/11/27
- [nongnu] elpa/iwindow 63426c55a9 08/13: Make window keys more predictable, ELPA Syncer, 2022/11/27