[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/consult 34aab9d44f 1/3: consult-register: Simplify
From: |
ELPA Syncer |
Subject: |
[elpa] externals/consult 34aab9d44f 1/3: consult-register: Simplify |
Date: |
Thu, 17 Feb 2022 11:57:22 -0500 (EST) |
branch: externals/consult
commit 34aab9d44f5af870ffb0cdc56e93cc0d881f069d
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
consult-register: Simplify
---
consult-register.el | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/consult-register.el b/consult-register.el
index b4d7497d8e..f956f63f27 100644
--- a/consult-register.el
+++ b/consult-register.el
@@ -47,7 +47,7 @@ Each element of the list must have the form '(char name
predicate)."
BUFFER is the window buffer.
SHOW-EMPTY must be t if the window should be shown for an empty register list."
- (let ((regs (seq-filter #'cdr register-alist))
+ (let ((regs (consult-register--alist 'noerror))
(separator
(and (display-graphic-p)
(propertize (concat (propertize " " 'display '(space :align-to
right)) "\n")
@@ -66,17 +66,14 @@ SHOW-EMPTY must be t if the window should be shown for an
empty register list."
(insert (mapconcat
(lambda (reg)
(concat (funcall register-preview-function reg) separator))
- (seq-sort #'car-less-than-car regs) nil))))))
+ regs nil))))))
;;;###autoload
-(defun consult-register-format (reg)
+(defun consult-register-format (reg &optional no-newline)
"Enhanced preview of register REG.
-This function can be used as `register-preview-function'."
- (concat (consult-register--format reg) "\n"))
-
-(defun consult-register--format (reg)
- "Format register REG for preview."
+This function can be used as `register-preview-function'.
+Append newline if NO-NEWLINE is nil."
(pcase-let ((`(,key . ,val) reg))
(let* ((key-str (propertize (single-key-description key) 'face
'consult-key))
(len (max 3 (length key-str))))
@@ -110,24 +107,30 @@ This function can be used as `register-preview-function'."
(consult--format-location (buffer-name) (line-number-at-pos)
(consult--line-with-cursor val))))))
;; Default printing for the other types
- (t (register-describe-oneline key)))))))
+ (t (register-describe-oneline key)))
+ (and (not no-newline) "\n")))))
-(defun consult-register--alist ()
- "Return register list or raise an error if the list is empty."
+(defun consult-register--alist (&optional noerror)
+ "Return sorted register list.
+Raise an error if the list is empty and NOERROR is nil."
;; Sometimes, registers are made without a `cdr'.
;; Such registers don't do anything, and can be ignored.
- (or (seq-filter #'cdr register-alist) (user-error "All registers are
empty")))
+ (or (sort (seq-filter #'cdr register-alist) #'car-less-than-car)
+ (and (not noerror) (user-error "All registers are empty"))))
(defun consult-register--candidates ()
"Return list of formatted register candidates."
(mapcar (lambda (reg)
- (propertize
- (consult-register--format reg)
- 'consult--candidate (car reg)
- 'consult--type
- (car (seq-find (lambda (x) (funcall (caddr x) (cdr reg)))
- consult-register-narrow))))
- (sort (consult-register--alist) #'car-less-than-car)))
+ (let ((str (consult-register-format reg 'no-newline)))
+ (add-text-properties
+ 0 (length str)
+ (list 'consult--candidate (car reg)
+ 'consult--type
+ (car (seq-find (lambda (x) (funcall (caddr x) (cdr reg)))
+ consult-register-narrow)))
+ str)
+ str))
+ (consult-register--alist)))
;;;###autoload
(defun consult-register (&optional arg)