[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/minibuffer-header 77dbab0d00 2/4: Fix nasty bug with me
From: |
ELPA Syncer |
Subject: |
[elpa] externals/minibuffer-header 77dbab0d00 2/4: Fix nasty bug with messages override |
Date: |
Sun, 7 Aug 2022 04:57:42 -0400 (EDT) |
branch: externals/minibuffer-header
commit 77dbab0d005da6b836e6af356a901cfcff8d24a7
Author: Nicolas P. Rougier <Nicolas.Rougier@inria.fr>
Commit: Nicolas P. Rougier <Nicolas.Rougier@inria.fr>
Fix nasty bug with messages override
---
minibuffer-header.el | 66 +++++++++++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 34 deletions(-)
diff --git a/minibuffer-header.el b/minibuffer-header.el
index e7505f5895..771bcc3370 100644
--- a/minibuffer-header.el
+++ b/minibuffer-header.el
@@ -48,11 +48,15 @@
(defcustom minibuffer-header-show-message t
"Whether to show messages in the header (on the right)."
- :type 'bool)
+ :type 'boolean)
(defcustom minibuffer-header-hide-prompt nil
"Whether to hide original minibuffer prompt."
- :type 'bool)
+ :type 'boolean)
+
+(defcustom minibuffer-header-default-message "-"
+ "Default displayed message when no message"
+ :type 'string)
(defface minibuffer-header-face
`((t :inherit highlight
@@ -73,9 +77,14 @@
(propertize (format " #%d Minibuffer" (minibuffer-depth))
'face '(bold minibuffer-header-face))
(propertize (format " (%s)" this-command)
- 'face 'minibuffer-header-face)
- ))
+ 'face 'minibuffer-header-face)))
+(defun minibuffer-header--fit (msg width)
+ "Make MSG to fit exactly WIDTH characters, by truncating or padding"
+
+ (if (> (length msg) width)
+ (concat (substring msg 0 (- width 1)) "…")
+ (format (format "%%%ds" width) msg)))
(defun minibuffer-header--setup ()
"Install header line in the minibuffer"
@@ -90,7 +99,9 @@
(let* ((inhibit-read-only t)
(left (minibuffer-header-format))
(left (split-string left "\n"))
- (right " ")
+ (width (- (window-width) (length (car left)) 2))
+ (right minibuffer-header-default-message)
+ (right (minibuffer-header--fit right width))
(prompt-beg (point-min))
(prompt-end (or (next-property-change (+ 1 (point-min)))
(max (point-min) (- (point-max) 0)))))
@@ -103,8 +114,7 @@
(concat (propertize (car left))
(propertize " "
'message-beg t
- 'face 'minibuffer-header-face
- 'display `(space :align-to (- right ,(-
(length right) -1))))
+ 'face 'minibuffer-header-face)
(propertize right
'face 'minibuffer-header-message-face)
(propertize "\n"
@@ -133,47 +143,35 @@
(defun minibuffer-header-message (&optional msg)
"Display MSG at the right of the minibuffer header line"
- (when-let* ((msg (or msg " "))
+ (when-let* ((msg (or msg minibuffer-header-default-message))
(window (active-minibuffer-window))
(buffer (window-buffer window)))
(with-current-buffer buffer
(save-excursion
-
- ;; Search for message marker (in heade line)
(goto-char (point-min))
- (let ((beg (when (text-property-search-forward 'message-beg) (-
(point) 1)))
- (end (when (text-property-search-forward 'message-end)
(point))))
+ (let* ((beg (when (text-property-search-forward 'message-beg)
(point)))
+ (end (when (text-property-search-forward 'message-end) (-
(point) 1))))
(when (and beg end)
(let* ((inhibit-read-only t)
+ (inhibit-message t)
(message-log-max nil)
- (width (- (window-width) beg 1))
- (msg (if (> (length msg) width)
- (format "%s…" (substring msg 0 (- width 1)))
- msg))
- (inhibit-message t))
-
+ (width (- (window-width window) beg))
+ (msg (minibuffer-header--fit msg width)))
+
;; Delete old message
(delete-region beg end)
;; Insert new message
(goto-char beg)
(insert
- (propertize
- (concat
- (propertize " " 'message-beg t
- 'face
'minibuffer-header-face
- 'display `(space :align-to (- right ,(-
(length msg) -1))))
- (propertize msg 'face 'minibuffer-header-message-face)
- (propertize "\n" 'face 'minibuffer-header-face
- 'message-end t))
- 'cursor-intangible t
- 'read-only t
- 'field t
- 'rear-nonsticky t
- 'front-sticky t)))))))))
-
-
-(defun minibuffer-header--message-override (orig-fun &rest args)
+ (propertize msg
+ 'face 'minibuffer-header-message-face
+ 'cursor-intangible t
+ 'read-only t
+ 'field t
+ 'rear-nonsticky t
+ 'front-sticky t)))))))))
+
(defun minibuffer-header--log (format-string &rest args)
(with-current-buffer (get-buffer-create "*Messages*")
(let ((inhibit-read-only t)