[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 2d97fe2710: * lisp/minibuffer.el (minibuffer-complete-history): D
From: |
Juri Linkov |
Subject: |
master 2d97fe2710: * lisp/minibuffer.el (minibuffer-complete-history): Define sorting by metadata |
Date: |
Mon, 18 Jul 2022 03:24:07 -0400 (EDT) |
branch: master
commit 2d97fe271039358d24a779e5468a313ffcf6059a
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-complete-history): Define sorting by
metadata
(minibuffer-complete-history, minibuffer-complete-defaults):
Use completion metadata to disable sorting of the completion table
(bug#56613)
---
lisp/minibuffer.el | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 5389e0b9ad..d139e094eb 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -4408,8 +4408,7 @@ minibuffer, but don't quit the completions window."
Like `minibuffer-complete' but completes on the history items
instead of the default completion table."
(interactive)
- (let* ((completions-sort nil)
- (history (symbol-value minibuffer-history-variable))
+ (let* ((history (symbol-value minibuffer-history-variable))
(completions
(if (listp history)
;; Support e.g. `C-x ESC ESC TAB' as
@@ -4419,21 +4418,31 @@ instead of the default completion table."
history)
(user-error "No history available"))))
;; FIXME: Can we make it work for CRM?
- (completion-in-region (minibuffer--completion-prompt-end) (point-max)
- completions nil)))
+ (completion-in-region
+ (minibuffer--completion-prompt-end) (point-max)
+ (lambda (string pred action)
+ (if (eq action 'metadata)
+ '(metadata (display-sort-function . identity)
+ (cycle-sort-function . identity))
+ (complete-with-action action completions string pred))))))
(defun minibuffer-complete-defaults ()
"Complete minibuffer defaults as far as possible.
Like `minibuffer-complete' but completes on the default items
instead of the completion table."
(interactive)
- (let ((completions-sort nil))
- (when (and (not minibuffer-default-add-done)
- (functionp minibuffer-default-add-function))
- (setq minibuffer-default-add-done t
- minibuffer-default (funcall minibuffer-default-add-function)))
- (completion-in-region (minibuffer--completion-prompt-end) (point-max)
- (ensure-list minibuffer-default) nil)))
+ (when (and (not minibuffer-default-add-done)
+ (functionp minibuffer-default-add-function))
+ (setq minibuffer-default-add-done t
+ minibuffer-default (funcall minibuffer-default-add-function)))
+ (let ((completions (ensure-list minibuffer-default)))
+ (completion-in-region
+ (minibuffer--completion-prompt-end) (point-max)
+ (lambda (string pred action)
+ (if (eq action 'metadata)
+ '(metadata (display-sort-function . identity)
+ (cycle-sort-function . identity))
+ (complete-with-action action completions string pred))))))
(define-key minibuffer-local-map [?\C-x up] 'minibuffer-complete-history)
(define-key minibuffer-local-map [?\C-x down] 'minibuffer-complete-defaults)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 2d97fe2710: * lisp/minibuffer.el (minibuffer-complete-history): Define sorting by metadata,
Juri Linkov <=