Subject: bug#30072: closed (Re: bug#30072: 27.0.50; completing-read-multiple chokes on list of default values)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 12 Apr 2018 20:39:02 +0000

Your bug report

#30072: 27.0.50; completing-read-multiple chokes on list of default values

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
30072: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=30072
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#30072: 27.0.50; completing-read-multiple chokes on list of default values
From: Juri Linkov <[email-masked]>
To: "Basil L. Contovounesios" <[email-masked]>
Cc: [email-masked]
Date: Thu, 12 Apr 2018 23:37:17 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

>> I attach a fix which follows the implementation of
>> completing-read-default.
>
> Updated to include bug ticket number.

Thanks, pushed to master as 3d6fa0b.

Subject: 27.0.50; completing-read-multiple chokes on list of default values
From: "Basil L. Contovounesios" <[email-masked]>
To: [email-masked]
Date: Wed, 10 Jan 2018 21:37:51 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

>From dac3aeb9a53efa53851b588d599f990cba592e49 Mon Sep 17 00:00:00 2001
From: "Basil L. Contovounesios" <[email-masked]>
Date: Wed, 10 Jan 2018 20:21:25 +0000
Subject: [PATCH] Support list of default values in completing-read-multiple

* lisp/emacs-lisp/crm.el (completing-read-multiple):
Consider head of DEF argument when specified as a list,
as per completing-read-default.
---
 lisp/emacs-lisp/crm.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el
index 5aa856f467..1a67494d3c 100644
--- a/lisp/emacs-lisp/crm.el
+++ b/lisp/emacs-lisp/crm.el
@@ -263,7 +263,8 @@ completing-read-multiple
 	       (input (read-from-minibuffer
 		       prompt initial-input map
 		       nil hist def inherit-input-method)))
-	  (and def (string-equal input "") (setq input def))
+          (when (and def (string-equal input ""))
+            (setq input (if (consp def) (car def) def)))
           ;; Remove empty strings in the list of read strings.
 	  (split-string input crm-separator t)))
     (remove-hook 'choose-completion-string-functions
-- 
2.15.1

Steps to reproduce:

1) emacs -Q
2) Evaluate the following form:

   (let ((l '("a" "b")))
     (completing-read-multiple "" l nil nil nil nil l))

3) C-m

I expect this to result in the string "a", as is the case when
completing-read-multiple is replaced with completing-read in step 2,
given the following excerpt from the docstring of c-r-m:

  The arguments are the same as those of `completing-read'.

Instead, the following error is signalled:

Debugger entered--Lisp error: (wrong-type-argument stringp ("a" "b"))
  string-match("[ \011]*,[ \011]*" ("a" "b") 0)
  split-string(("a" "b") "[ \011]*,[ \011]*" t)
  completing-read-multiple("" ("a" "b") nil nil nil nil ("a" "b"))

I attach a fix which follows the implementation of
completing-read-default.

Thanks,

-- 
Basil

In GNU Emacs 27.0.50 (build 14, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2018-01-10 built on thunk
Repository revision: b877e9aa0225ad186b544f127702e16c61b08444
Windowing system distributor 'The X.Org Foundation', version 11.0.11905000
System Description: Debian GNU/Linux testing (buster)