[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/crdt 6726c7f2d0 30/44: Add special cases for completion
From: |
ELPA Syncer |
Subject: |
[elpa] externals/crdt 6726c7f2d0 30/44: Add special cases for completions when there are 0 or 1 candidates |
Date: |
Sat, 2 Jul 2022 22:57:34 -0400 (EDT) |
branch: externals/crdt
commit 6726c7f2d07092b04964bb13b1cf4bb5c8ce29b9
Author: Qiantan Hong <qhong@alum.mit.edu>
Commit: Qiantan Hong <qhong@alum.mit.edu>
Add special cases for completions when there are 0 or 1 candidates
---
crdt.el | 56 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 24 deletions(-)
diff --git a/crdt.el b/crdt.el
index 31bb761cf1..c3aea42877 100644
--- a/crdt.el
+++ b/crdt.el
@@ -688,26 +688,35 @@ Otherwise, return the list of names for client sessions."
(cl-find name crdt--session-list
:test 'equal :key #'crdt--session-urlstr))
+(defsubst crdt--completing-read (prompt collection &optional initial-input)
+ "Like (completing-read PROMPT COLLECTION nil t INITIAL-INPUT).
+Do better when there are 0 or 1 candidates."
+ (if collection
+ (if (cdr collection)
+ (completing-read prompt collection nil t initial-input)
+ (car collection))
+ (signal 'quit "No candidates")))
+
(defun crdt--read-session (&optional filter)
"Prompt for a session name and return the corresponding session.
FILTER can be nil, 'server or 'client."
(crdt--get-session
- (completing-read (format "Choose a%s session: "
- (cl-ecase filter
- ((server) " server")
- ((client) " client")
- ((nil) "")))
- (cl-ecase filter
- ((server) (crdt--get-session-names t))
- ((client) (crdt--get-session-names nil))
- ((nil) (mapcar #'crdt--session-urlstr
crdt--session-list)))
- nil t
- (when (and crdt--session
- (cl-ecase filter
- ((server) (crdt--server-p))
- ((client) (not (crdt--server-p)))
- ((nil) t)))
- (crdt--session-urlstr crdt--session)))))
+ (crdt--completing-read
+ (format "Choose a%s session: "
+ (cl-ecase filter
+ ((server) " server")
+ ((client) " client")
+ ((nil) "")))
+ (cl-ecase filter
+ ((server) (crdt--get-session-names t))
+ ((client) (crdt--get-session-names nil))
+ ((nil) (mapcar #'crdt--session-urlstr crdt--session-list)))
+ (when (and crdt--session
+ (cl-ecase filter
+ ((server) (crdt--server-p))
+ ((client) (not (crdt--server-p)))
+ ((nil) t)))
+ (crdt--session-urlstr crdt--session)))))
(defun crdt--read-session-maybe (&optional filter)
"Prompt for a session name and return the corresponding session.
@@ -782,12 +791,12 @@ If DISPLAY-BUFFER is provided, display the output there."
(defun crdt--read-buffer (session)
"Prompt for a buffer network name in SESSION."
- (completing-read "Choose a buffer: "
- (hash-table-keys (crdt--session-buffer-table session))
- nil t
- (when (and (eq crdt--session session)
- crdt--buffer-network-name)
- crdt--buffer-network-name)))
+ (crdt--completing-read
+ "Choose a buffer: "
+ (hash-table-keys (crdt--session-buffer-table session))
+ (when (and (eq crdt--session session)
+ crdt--buffer-network-name)
+ crdt--buffer-network-name)))
(defun crdt--read-buffer-maybe (session)
"Prompt for a buffer network name in SESSION.
@@ -876,8 +885,7 @@ Directly return the buffer network name under point if in
the buffer menu."
(push (format "%s %s" k (crdt--contact-metadata-name v)) candidates))
(crdt--session-contact-table session))
(let ((name
- (completing-read "Choose a user: "
- candidates nil t)))
+ (crdt--completing-read "Choose a user: " candidates)))
(string-to-number (car (split-string name))))))
(defun crdt--read-user-maybe (session)
- [elpa] externals/crdt b421e4e679 10/44: Merge branch 'fix' into development, (continued)
- [elpa] externals/crdt b421e4e679 10/44: Merge branch 'fix' into development, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 94b0c488b5 09/44: bump version number, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 3dcc9958f6 11/44: cleanup, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 10f423bbef 15/44: Merge branch 'fix' into development, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 900abacbdd 16/44: Use the term "user-command-functions" instead of proxy, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 38fdfc5557 07/44: semver, and various fixes, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 270a4099bb 14/44: return -> cl-return, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt d46be72920 05/44: remove base64 mangling and fix a stupid bug, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 3a78c8a615 24/44: Improve settings form when CRDT-USE-STUNNEL is nil, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 569486e6c6 25/44: Lots of changes, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 6726c7f2d0 30/44: Add special cases for completions when there are 0 or 1 candidates,
ELPA Syncer <=
- [elpa] externals/crdt 0a351b4ce2 35/44: Add crdt-default-tls. Don't use tls by default, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 39c308368e 36/44: Also add (kbd "d") binding for *-kill-*, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt dfc98d3525 38/44: add crdt-goto-{next, prev}-user, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt dc9ec07fbd 43/44: Revise README, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 5d90bf0ce2 03/44: generate uninteresting process buffers instead, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 1dfa6f7c30 02/44: many changes, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 2c68377c15 01/44: Merge branch 'master' into development, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 102498e84f 12/44: remove tramp for now, keep it simple, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 357f4b7174 18/44: more sensible version message, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt b222966674 19/44: fix DEL key in forms mode, ELPA Syncer, 2022/07/02