bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#14054: completing against a hash-table doesn't work as documented


From: Stefan Monnier
Subject: bug#14054: completing against a hash-table doesn't work as documented
Date: Wed, 27 Mar 2013 15:55:07 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

> (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))







reply via email to

[Prev in Thread] Current Thread [Next in Thread]