GNU bug report logs -
#14054
completing against a hash-table doesn't work as documented
Previous Next
Reported by: Jonas Bernoulli <jonas <at> bernoul.li>
Date: Tue, 26 Mar 2013 02:59:01 UTC
Severity: normal
Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 14054 <at> debbugs.gnu.org (full text, mbox):
> (1) To my this implies that all other keys are simply ignored, as it
> doesn't say that all keys _have to by_ strings or symbols.
> (2) It explicity sais that a key can be a symbol.
Indeed, test-completion was too strict. The patch below should
fix this. Can you confirm?
Stefan
=== modified file 'src/minibuf.c'
--- src/minibuf.c 2013-01-02 16:13:04 +0000
+++ src/minibuf.c 2013-03-27 19:52:34 +0000
@@ -1800,17 +1800,21 @@
{
struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
i = hash_lookup (h, string, NULL);
+ Lisp_Object key = Qnil;
if (i >= 0)
tem = HASH_KEY (h, i);
else
for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
if (!NILP (HASH_HASH (h, i))
+ && (key = HASH_KEY (h, i),
+ SYMBOLP (key) ? key = Fsymbol_name (key) : key,
+ STRINGP (key))
&& EQ (Fcompare_strings (string, make_number (0), Qnil,
- HASH_KEY (h, i), make_number (0) , Qnil,
+ key, make_number (0) , Qnil,
completion_ignore_case ? Qt : Qnil),
Qt))
{
- tem = HASH_KEY (h, i);
+ tem = key;
break;
}
if (!STRINGP (tem))
This bug report was last modified 12 years and 41 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.