[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vertico fa9e8dc 26/48: split functions
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vertico fa9e8dc 26/48: split functions |
Date: |
Mon, 5 Apr 2021 10:54:43 -0400 (EDT) |
branch: externals/vertico
commit fa9e8dc18bdc7cdc112cbac03513fe277efb615f
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
split functions
---
minicomp.el | 58 ++++++++++++++++++++++++++++++++--------------------------
1 file changed, 32 insertions(+), 26 deletions(-)
diff --git a/minicomp.el b/minicomp.el
index 3771756..b1da4f4 100644
--- a/minicomp.el
+++ b/minicomp.el
@@ -208,7 +208,7 @@
(ann (mapcar (lambda (cand) (list cand (or (funcall ann cand) "")))
candidates))
(t candidates))))
-(defun minicomp--candidates (input metadata)
+(defun minicomp--recompute-candidates (input metadata)
"Recompute candidates with INPUT string and METADATA."
(let* ((all (completion-all-completions
input
@@ -238,10 +238,10 @@
(setq all (mapcan #'cdr (funcall group all))))
(list base total all)))
-(defun minicomp--recompute (input metadata)
+(defun minicomp--update-candidates (input metadata)
"Preprocess candidates with INPUT string and METADATA."
(pcase (let ((while-no-input-ignore-events '(selection-request)))
- (while-no-input (minicomp--candidates input metadata)))
+ (while-no-input (minicomp--recompute-candidates input metadata)))
('nil (abort-recursive-edit))
(`(,base ,total ,candidates)
(unless (and minicomp--keep (< minicomp--index 0))
@@ -270,8 +270,8 @@
(setq pos end)))
(apply #'concat (nreverse chunks))))
-(defun minicomp--display (input metadata)
- "Display current candidates with INPUT string and METADATA."
+(defun minicomp--format-candidates (input metadata)
+ "Format current candidates with INPUT string and METADATA."
(let* ((index (min (max 0 (- minicomp--index (/ minicomp-count 2)))
(max 0 (- minicomp--total minicomp-count))))
(candidates (seq-subseq minicomp--candidates index
@@ -288,10 +288,10 @@
metadata
candidates)))
(title nil)
- (displayed " ")
+ (formatted (propertize " " 'cursor t))
(group (completion-metadata-get metadata 'x-group-function)))
- (dolist (ann-cand ann-candidates)
- (setq displayed (concat displayed
+ (dolist (ann-cand ann-candidates formatted)
+ (setq formatted (concat formatted
(if (= index (1+ minicomp--index))
(propertize "\n" 'face 'minicomp-current)
"\n")))
@@ -302,7 +302,7 @@
(_ (setq cand ann-cand)))
(when-let (new-title (and minicomp-group-format group (caar (funcall
group (list cand)))))
(unless (equal title new-title)
- (setq displayed (concat displayed (format minicomp-group-format
new-title) "\n")
+ (setq formatted (concat formatted (format minicomp-group-format
new-title) "\n")
title new-title)))
(setq cand (thread-last cand
(replace-regexp-in-string "[\t ]+" " ")
@@ -317,29 +317,35 @@
(when (= index minicomp--index)
(setq cand (concat cand))
(add-face-text-property 0 (length cand) 'minicomp-current 'append
cand))
- (setq displayed (concat displayed cand)
- index (1+ index))))
- (put-text-property 0 1 'cursor t displayed)
- (if (and (< minicomp--index 0) (not (minicomp--require-match)))
- (add-text-properties (minibuffer-prompt-end) (point-max) '(face
minicomp-current))
- (remove-text-properties (minibuffer-prompt-end) (point-max) '(face nil)))
- (move-overlay minicomp--candidates-ov (point-max) (point-max))
- (overlay-put minicomp--candidates-ov 'after-string displayed)
- (when minicomp-count-format
- (move-overlay minicomp--count-ov (point-min) (point-min))
- (overlay-put minicomp--count-ov 'before-string
- (format (car minicomp-count-format)
- (format (cdr minicomp-count-format)
- (if (< minicomp--index 0) "*" (1+
minicomp--index))
- minicomp--total))))))
+ (setq formatted (concat formatted cand)
+ index (1+ index))))))
+
+(defun minicomp--display-candidates (str)
+ "Update candidates overlay with STR."
+ (move-overlay minicomp--candidates-ov (point-max) (point-max))
+ (overlay-put minicomp--candidates-ov 'after-string str))
+
+(defun minicomp--display-count ()
+ "Update count overlay."
+ (when minicomp-count-format
+ (move-overlay minicomp--count-ov (point-min) (point-min))
+ (overlay-put minicomp--count-ov 'before-string
+ (format (car minicomp-count-format)
+ (format (cdr minicomp-count-format)
+ (if (< minicomp--index 0) "*" (1+
minicomp--index))
+ minicomp--total)))))
(defun minicomp--exhibit ()
"Exhibit completion UI."
(let ((metadata (completion--field-metadata (minibuffer-prompt-end)))
(input (minibuffer-contents-no-properties)))
(unless (equal minicomp--input input)
- (minicomp--recompute input metadata))
- (minicomp--display input metadata)))
+ (minicomp--update-candidates input metadata))
+ (minicomp--display-candidates (minicomp--format-candidates input metadata))
+ (minicomp--display-count)
+ (if (and (< minicomp--index 0) (not (minicomp--require-match)))
+ (add-text-properties (minibuffer-prompt-end) (point-max) '(face
minicomp-current))
+ (remove-text-properties (minibuffer-prompt-end) (point-max) '(face
nil)))))
(defun minicomp--require-match ()
"Match is required."
- [elpa] externals/vertico e8a3e96 16/48: Minor optimization, (continued)
- [elpa] externals/vertico e8a3e96 16/48: Minor optimization, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 333a0a2 29/48: use chunks for candidate formatting, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 8b760bc 30/48: Fix minicomp--index initialization, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico ed87a60 33/48: Require 27.1, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico c4b3e8b 42/48: Simplify minicomp--flatten-prop, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 99a355c 12/48: abort minibuffer session if while-no-input returns nil, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico f835fb6 14/48: add readme, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 1b75916 18/48: better orderless integration, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 42823ce 25/48: Use read-char-exclusive to avoid error message, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico af41b13 24/48: fix lexical scoping, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico fa9e8dc 26/48: split functions,
Stefan Monnier <=
- [elpa] externals/vertico 27070bb 27/48: truncate long candidate strings, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 94d9c4c 28/48: use literals, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 5f64f97 22/48: update readme, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 308670c 31/48: Fix confirmation: Use ignore-errors+read-char, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico 2cde6fd 40/48: Simplify, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico e429e06 43/48: Rename to vertico, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico eb5d617 47/48: Improve candidate sanitization, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico d57d390 34/48: Support partial completion for files, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico f3c0e7c 35/48: tidy shadowed file names, Stefan Monnier, 2021/04/05
- [elpa] externals/vertico afd0abf 41/48: Always pass again through completion style for highlighting, Stefan Monnier, 2021/04/05