unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#15889: 24.3; mysterious (cons nil features) in read-feature
@ 2013-11-14  5:31 Leo Liu
  2013-11-14 19:42 ` Stefan Monnier
  2013-11-15  6:56 ` Leo Liu
  0 siblings, 2 replies; 3+ messages in thread
From: Leo Liu @ 2013-11-14  5:31 UTC (permalink / raw)
  To: 15889; +Cc: Johan Bockgård

[-- Attachment #1: Type: text/plain, Size: 1468 bytes --]

So apparently try-/all-/test-completion(s) functions test if COLLECTION
is a function imprecisely. I propose we fix these functions. Objections?

=== modified file 'src/minibuf.c'
--- src/minibuf.c	2013-11-06 04:11:04 +0000
+++ src/minibuf.c	2013-11-14 05:23:53 +0000
@@ -1199,9 +1199,7 @@
     type = (HASH_TABLE_P (collection) ? hash_table
 	    : VECTORP (collection) ? obarray_table
 	    : ((NILP (collection)
-		|| (CONSP (collection)
-		    && (!SYMBOLP (XCAR (collection))
-			|| NILP (XCAR (collection)))))
+		|| (CONSP (collection) && !FUNCTIONP (collection)))
 	       ? list_table : function_table));
   ptrdiff_t idx = 0, obsize = 0;
   int matchcount = 0;
@@ -1460,9 +1458,7 @@
   Lisp_Object allmatches;
   int type = HASH_TABLE_P (collection) ? 3
     : VECTORP (collection) ? 2
-    : NILP (collection) || (CONSP (collection)
-			    && (!SYMBOLP (XCAR (collection))
-				|| NILP (XCAR (collection))));
+    : NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
   ptrdiff_t idx = 0, obsize = 0;
   ptrdiff_t bindcount = -1;
   Lisp_Object bucket, tem, zero;
@@ -1691,9 +1687,7 @@
 
   CHECK_STRING (string);
 
-  if ((CONSP (collection)
-       && (!SYMBOLP (XCAR (collection)) || NILP (XCAR (collection))))
-      || NILP (collection))
+  if ((CONSP (collection) && !FUNCTIONP (collection)) || NILP (collection))
     {
       tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
       if (NILP (tem))




[-- Attachment #2: Type: message/rfc822, Size: 5746 bytes --]

From: "Johan Bockgård" <bojohan@gnu.org>
To: emacs-devel@gnu.org
Subject: Re: mysterious (cons nil features) in read-feature
Date: Wed, 13 Nov 2013 23:30:06 +0100
Message-ID: <87ppq4ylxt.fsf@gnu.org>

Leo Liu <sdl.web@gmail.com> writes:

> I have asked Stefan and Kim and neither has a definite answer. Kim
> pointed me to
> http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00251.html. I
> have read that and checked the commit logs but I have no answer either.
>
> Anyone else know why (cons nil features)? If not, I plan to remove nil
> and its checking in read-feature.

If you remove it, you will get an error when you try to complete.

The documentation (info "(elisp) Basic Completion") used to allow a list
of symbols as a completion table,

     If COLLECTION is an alist (*note Association Lists::), the
     permissible completions are the elements of the alist that are
     either strings, symbols, or conses whose CAR is a string or symbol.
     Symbols are converted to strings using `symbol-name'.  Other
     elements of the alist are ignored. (Remember that in Emacs Lisp,
     the elements of alists do not _have_ to be conses.)  In
     particular, a list of strings or symbols is allowed, even though
     we usually do not think of such lists as alists.

However this did (and still does) in fact only work if the first symbol
in the list is `nil' (or is not a symbol at all).

Later the documentation was "fixed" to say,

     If COLLECTION is an list [sic], the permissible completions are
     specified by the elements of the list, each of which should be
     either a string, or a cons cell whose CAR is either a string or a
     symbol (a symbol is converted to a string using `symbol-name').
     If the list contains elements of any other type, those are ignored.

But this is not true either, since symbols are not ignored. (If the
first symbol is `nil', completion works. With any other symbol (except
`lambda'), it gives an invalid-function error.)



^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#15889: 24.3; mysterious (cons nil features) in read-feature
  2013-11-14  5:31 bug#15889: 24.3; mysterious (cons nil features) in read-feature Leo Liu
@ 2013-11-14 19:42 ` Stefan Monnier
  2013-11-15  6:56 ` Leo Liu
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Monnier @ 2013-11-14 19:42 UTC (permalink / raw)
  To: Leo Liu; +Cc: 15889, Johan Bockgård

> So apparently try-/all-/test-completion(s) functions test if COLLECTION
> is a function imprecisely. I propose we fix these functions. Objections?

None here,


        Stefan





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#15889: 24.3; mysterious (cons nil features) in read-feature
  2013-11-14  5:31 bug#15889: 24.3; mysterious (cons nil features) in read-feature Leo Liu
  2013-11-14 19:42 ` Stefan Monnier
@ 2013-11-15  6:56 ` Leo Liu
  1 sibling, 0 replies; 3+ messages in thread
From: Leo Liu @ 2013-11-15  6:56 UTC (permalink / raw)
  To: 15889-done

Fixed in 24.4





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-11-15  6:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-14  5:31 bug#15889: 24.3; mysterious (cons nil features) in read-feature Leo Liu
2013-11-14 19:42 ` Stefan Monnier
2013-11-15  6:56 ` Leo Liu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).