From 993c3ace44b4dd5753133bd0571eef3327e55e58 Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 23 Jan 2022 04:31:36 +0000 Subject: jao-minibuffer-mode --- lib/eos/jao-minibuffer.el | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'lib/eos') diff --git a/lib/eos/jao-minibuffer.el b/lib/eos/jao-minibuffer.el index 6445393..7e21db0 100644 --- a/lib/eos/jao-minibuffer.el +++ b/lib/eos/jao-minibuffer.el @@ -29,18 +29,16 @@ (defvar jao-minibuffer-notification nil) (defvar jao-minibuffer-align-right-p t) (defvar jao-minibuffer-right-margin (if window-system "" " ")) -(defvar jao-minibuffer-maximized-frames-p nil) +(defvar jao-minibuffer-maximized-frames-p t) (defvar jao-minibuffer-frame-width nil) (defvar jao-minibuffer-notification-timeout 5) -(defvar jao-minibuffer-enabled-p t) (defvar jao-minibuffer-active-buffer-line-color "azure4") (defvar jao-minibuffer-inactive-buffer-line-color "grey25") (defconst jao-minibuffer--name " *Minibuf-0*") (defun jao-minibuffer--text-with-padding (text) - "Return TEXT with padding on the left. -The padding pushes TEXT to the right edge of the mode-line." + "Return TEXT with padding on the left." (let* ((len (+ (string-pixel-width text) (string-pixel-width jao-minibuffer-right-margin))) (padding (propertize @@ -109,7 +107,7 @@ The padding pushes TEXT to the right edge of the mode-line." " " msg)))) (defun jao-minibuffer--set-message (msg) - (if (or (not jao-minibuffer-enabled-p) + (if (or (not jao-minibuffer-mode) (and msg (not (string-blank-p msg)) (bound-and-true-p current-minibuffer-command))) @@ -192,29 +190,43 @@ The padding pushes TEXT to the right edge of the mode-line." (jao-minibuffer-adjust-mode-line-faces)) ;;;###autoload -(defun jao-minibuffer-toggle () +(defun jao-minibuffer-turn-on () (interactive) - (setq jao-minibuffer-enabled-p (not jao-minibuffer-enabled-p)) - (if jao-minibuffer-enabled-p - (jao-minibuffer-refresh) - (jao-minibuffer--insert ""))) + (advice-add 'select-window :after #'jao-minibuffer-refresh) + (advice-add 'force-mode-line-update :after #'jao-minibuffer-refresh) + (setq set-message-function #'jao-minibuffer--format-msg) + (setq clear-message-function #'jao-minibuffer-refresh) + (jao-minibuffer-refresh)) + +;;;###autoload +(defun jao-minibuffer-turn-off () + (interactive) + (advice-remove 'select-window #'jao-minibuffer-refresh) + (advice-remove 'force-mode-line-update #'jao-minibuffer-refresh) + (setq set-message-function nil) + (setq clear-message-function nil) + (jao-minibuffer--insert "")) + +;;;###autoload +(define-minor-mode jao-minibuffer-mode + "Show minibuffer status" + :global t + (if jao-minibuffer-mode + (jao-minibuffer-turn-on) + (jao-minibuffer-turn-off))) ;;;###autoload (defun jao-minibuffer-refresh (&rest _ignore) (interactive) - (when (and jao-minibuffer-enabled-p + (when (and jao-minibuffer-mode (not (bound-and-true-p current-minibuffer-command))) - (let* ((jao-minibuffer-enabled-p nil) + (let* ((jao-minibuffer-mode nil) (window-selection-change-functions nil) (msg (jao-minibuffer--format-info jao-minibuffer-msg-info)) (msg (jao-minibuffer--format-msg (or msg "")))) (jao-minibuffer--insert (or msg ""))))) -(setq set-message-function #'jao-minibuffer--format-msg) -(setq clear-message-function #'jao-minibuffer-refresh) ;; (add-hook 'window-selection-change-functions #'jao-minibuffer-refresh) -(advice-add 'select-window :after #'jao-minibuffer-refresh) -(advice-add 'force-mode-line-update :after #'jao-minibuffer-refresh) (provide 'jao-minibuffer) ;;; jao-minibuffer.el ends here -- cgit v1.2.3