[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vertico 5c4a2cbe99 1/2: Simplify resizing
From: |
ELPA Syncer |
Subject: |
[elpa] externals/vertico 5c4a2cbe99 1/2: Simplify resizing |
Date: |
Sun, 8 Dec 2024 18:59:10 -0500 (EST) |
branch: externals/vertico
commit 5c4a2cbe9916c2761bfb56ac129eb4b8f9210b22
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Simplify resizing
Rely on the `resize-mini-windows' setting to behave correctly. On old Emacs
versions the resizing wasn't reliable.
---
CHANGELOG.org | 1 +
extensions/vertico-buffer.el | 2 +-
extensions/vertico-flat.el | 6 ++++--
extensions/vertico-reverse.el | 3 +--
vertico.el | 22 +++++++---------------
5 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 9ceb4c81f3..518b75e466 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -10,6 +10,7 @@
- Drop obsolete command alias ~vertico-repeat-last~.
- ~vertico-buffer~: Use ~display-buffer-use-least-recent-window~ as default
buffer
display action.
+- Simplify the mini window resizing implementation, see ~vertico--resize~.
* Version 1.9 (2024-07-26)
diff --git a/extensions/vertico-buffer.el b/extensions/vertico-buffer.el
index f58d804704..e2404f1359 100644
--- a/extensions/vertico-buffer.el
+++ b/extensions/vertico-buffer.el
@@ -208,7 +208,7 @@
((and (not vertico-buffer-mode) vertico-buffer--restore)
(funcall vertico-buffer--restore))))))
-(cl-defmethod vertico--resize-window (_height &context (vertico-buffer-mode
(eql t))))
+(cl-defmethod vertico--resize (&context (vertico-buffer-mode (eql t))))
(cl-defmethod vertico--setup :after (&context (vertico-buffer-mode (eql t)))
(vertico-buffer--setup))
diff --git a/extensions/vertico-flat.el b/extensions/vertico-flat.el
index 11b334c9db..11ff7bf739 100644
--- a/extensions/vertico-flat.el
+++ b/extensions/vertico-flat.el
@@ -83,9 +83,11 @@
(when vertico-flat-mode
(push `(vertico--input . ,vertico-flat-map) minor-mode-map-alist)))
-(cl-defmethod vertico--display-candidates (candidates &context
(vertico-flat-mode (eql t)))
+(cl-defmethod vertico--resize (&context (vertico-flat-mode (eql t)))
(setq-local truncate-lines nil
- resize-mini-windows t)
+ resize-mini-windows t))
+
+(cl-defmethod vertico--display-candidates (candidates &context
(vertico-flat-mode (eql t)))
(move-overlay vertico--candidates-ov (point-max) (point-max))
(overlay-put
vertico--candidates-ov 'after-string
diff --git a/extensions/vertico-reverse.el b/extensions/vertico-reverse.el
index 2b1b6c3b16..13732b0e56 100644
--- a/extensions/vertico-reverse.el
+++ b/extensions/vertico-reverse.el
@@ -73,8 +73,7 @@
(let ((string (apply #'concat lines)))
(add-face-text-property 0 (length string) 'default 'append string)
(overlay-put vertico--candidates-ov 'before-string string)
- (overlay-put vertico--candidates-ov 'after-string nil))
- (vertico--resize-window (length lines)))
+ (overlay-put vertico--candidates-ov 'after-string nil)))
(provide 'vertico-reverse)
;;; vertico-reverse.el ends here
diff --git a/vertico.el b/vertico.el
index 5e613a6e11..d33cc7b43f 100644
--- a/vertico.el
+++ b/vertico.el
@@ -522,7 +522,8 @@ The function is configured by BY, BSIZE, BINDEX, BPRED and
PRED."
(vertico--update 'interruptible)
(vertico--prompt-selection)
(vertico--display-count)
- (vertico--display-candidates (vertico--arrange-candidates))))
+ (vertico--display-candidates (vertico--arrange-candidates))
+ (vertico--resize)))
(defun vertico--goto (index)
"Go to candidate with INDEX."
@@ -604,23 +605,14 @@ The function is configured by BY, BSIZE, BINDEX, BPRED
and PRED."
"Update candidates overlay `vertico--candidates-ov' with LINES."
(move-overlay vertico--candidates-ov (point-max) (point-max))
(overlay-put vertico--candidates-ov 'after-string
- (apply #'concat #(" " 0 1 (cursor t)) (and lines "\n") lines))
- (vertico--resize-window (length lines)))
+ (apply #'concat #(" " 0 1 (cursor t)) (and lines "\n") lines)))
-(cl-defgeneric vertico--resize-window (height)
- "Resize active minibuffer window to HEIGHT."
+(cl-defgeneric vertico--resize ()
+ "Resize active minibuffer window."
(setq-local truncate-lines (< (point) (* 0.8 (vertico--window-width)))
- resize-mini-windows 'grow-only
+ resize-mini-windows vertico-resize
max-mini-window-height 1.0)
- (unless truncate-lines (set-window-hscroll nil 0))
- (unless (frame-root-window-p (active-minibuffer-window))
- (unless vertico-resize (setq height (max height vertico-count)))
- (let ((dp (- (max (cdr (window-text-pixel-size))
- (* (default-line-height) (1+ height)))
- (window-pixel-height))))
- (when (or (and (> dp 0) (/= height 0))
- (and (< dp 0) (eq vertico-resize t)))
- (window-resize nil dp nil nil 'pixelwise)))))
+ (unless truncate-lines (set-window-hscroll nil 0)))
(cl-defgeneric vertico--prepare ()
"Ensure that the state is prepared before running the next command."