From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 01:04:31 2017 Received: (at submit) by debbugs.gnu.org; 31 Aug 2017 05:04:31 +0000 Received: from localhost ([127.0.0.1]:35819 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnHeZ-0008Nd-9G for submit@debbugs.gnu.org; Thu, 31 Aug 2017 01:04:31 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46734) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnHeX-0008NO-2M for submit@debbugs.gnu.org; Thu, 31 Aug 2017 01:04:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnHeQ-00055v-7h for submit@debbugs.gnu.org; Thu, 31 Aug 2017 01:04:23 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:53014) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dnHeQ-00055r-3v for submit@debbugs.gnu.org; Thu, 31 Aug 2017 01:04:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37705) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnHeO-0004ia-To for bug-gnu-emacs@gnu.org; Thu, 31 Aug 2017 01:04:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnHeL-00055C-QD for bug-gnu-emacs@gnu.org; Thu, 31 Aug 2017 01:04:20 -0400 Received: from mail-qt0-x22a.google.com ([2607:f8b0:400d:c0d::22a]:37047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dnHeL-000554-Lg for bug-gnu-emacs@gnu.org; Thu, 31 Aug 2017 01:04:17 -0400 Received: by mail-qt0-x22a.google.com with SMTP id h15so20402542qta.4 for ; Wed, 30 Aug 2017 22:04:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=A+NTuddJ8/QEZw9oGXnGLch7vZkNSQ6MIhm6slrrfZg=; b=XJZ5c5xXkGuDqYNZfk03I+IBz4qk5f8HNehxYcsdXz8q4elWjyQFUG8W5bcoXbOalJ MMmCmBH4TcCWOIkWt26l5RyO5ugqfz86P7sxdTK/XR32SYVl9gOxS85JIgtBUeURdPBG eNG1bo181uiGaxceTT6qV9+ega8AMYME4kJl84K2+JNROXP5aFcpJ1VvjIkNPqFBOX29 29afFgP9p6KGIvrXu8uuBsHdJeFcgeL46Vp0omQOJwT8LVz8umTlITiJFVWZCpO/pFao hB1KAYxXPEyUkU0v1wZVxMxKOlA8kFknIO9U35vDjMxggytlLr8qP9enzyJ2IzbYPNah ziww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=A+NTuddJ8/QEZw9oGXnGLch7vZkNSQ6MIhm6slrrfZg=; b=SQrJUqPUdrkJAGhvx/W8OEmPUDqiESmPTvHuaZpPYQKkv1qCfFZNG85fETvZSK7vlK rzhk05H81Ajtlf1g9z9P2kseyfU/sDPxFfHI6npmM+zAs14vfBKZfzBIUzKg6wh35s6U JlhLfNR/5OG91Ybkq9KkvDGFhNQbiEQywqXv2X0kBn4TfkCJlsst1TtdYe1pL0ANx4Re qmonh0CZVxrNe9KX9MmE4lZjVcNiELne30Aq1qItX2llLxLEzx1zivZEzq4olOu72eUt 9Fj9+wsDN/eZetdfg/UQhzNifmFsKtumswIGVxyB0kaVXfzURBgxlytGr/lb22+DVw5b Dwww== X-Gm-Message-State: AHYfb5hNvcw6Cc1pgEkEyp51UiYYJDcNWC/3unzHcLLN1eN7JsRyYKsW Wkp0C4d5JZwwp1OYM80JZg== X-Received: by 10.200.41.15 with SMTP id y15mr5248921qty.82.1504155856681; Wed, 30 Aug 2017 22:04:16 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id g54sm5023284qtk.60.2017.08.30.22.04.15 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 30 Aug 2017 22:04:15 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 2FEC96877C; Thu, 31 Aug 2017 01:04:15 -0400 (EDT) From: Mark Oteiza To: bug-gnu-emacs@gnu.org Subject: 26.0.50; [PATCH] Make ucs-names a hash table Date: Thu, 31 Aug 2017 01:04:15 -0400 Message-ID: <87r2vsqqeo.fsf@holos> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.3 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.3 (----) Hi, I seem to remember there having been complaints about ucs-names preview being slow. I was curious about how much of that time was spent assoc'ing every element of a roughly n = 42k element long alist, and so tried making it a hash table instead. The result is a drastic speedup of C-x 8 RET TAB, presumably this makes the operation O(n) vs O(n^2). diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 338ca6a6e3..8c5fcf319b 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2923,10 +2923,10 @@ nonascii-translation-table (make-obsolete-variable 'nonascii-translation-table "do not use it." "23.1") (defvar ucs-names nil - "Alist of cached (CHAR-NAME . CHAR-CODE) pairs.") + "Hash table of cached (CHAR-NAME . CHAR-CODE) pairs.") (defun ucs-names () - "Return alist of (CHAR-NAME . CHAR-CODE) pairs cached in `ucs-names'." + "Return hash table of (CHAR-NAME . CHAR-CODE) pairs cached in `ucs-names'." (or ucs-names (let ((ranges '((#x0000 . #x33FF) @@ -2954,7 +2954,7 @@ ucs-names ;; (#x20000 . #xDFFFF) CJK Ideograph Extension A, B, etc, unused (#xE0000 . #xE01FF))) (gc-cons-threshold 10000000) - names) + (names (make-hash-table :size 42943 :test #'equal))) (dolist (range ranges) (let ((c (car range)) (end (cdr range))) @@ -2965,27 +2965,28 @@ ucs-names ;; shadows a "new-name" but in practice every time an ;; `old-name' conflicts with a `new-name', the newer one has a ;; higher code, so it gets pushed later! - (if new-name (push (cons new-name c) names)) - (if old-name (push (cons old-name c) names)) + (if new-name (puthash new-name c names)) + (if old-name (puthash old-name c names)) (setq c (1+ c)))))) ;; Special case for "BELL" which is apparently the only char which ;; doesn't have a new name and whose old-name is shadowed by a newer ;; char with that name. - (setq ucs-names `(("BELL (BEL)" . 7) ,@names))))) + (puthash "BELL (BEL)" ?\a names) + (setq ucs-names names)))) (defun mule--ucs-names-annotation (name) ;; FIXME: It would be much better to add this annotation before rather than ;; after the char name, so the annotations are aligned. ;; FIXME: The default behavior of displaying annotations in italics ;; doesn't work well here. - (let ((char (assoc name ucs-names))) - (when char (format " (%c)" (cdr char))))) + (let ((char (gethash name ucs-names))) + (when char (format " (%c)" char)))) (defun char-from-name (string &optional ignore-case) "Return a character as a number from its Unicode name STRING. If optional IGNORE-CASE is non-nil, ignore case in STRING. Return nil if STRING does not name a character." - (or (cdr (assoc-string string (ucs-names) ignore-case)) + (or (gethash (if ignore-case (upcase string) string) (ucs-names)) (let ((minus (string-match-p "-[0-9A-F]+\\'" string))) (when minus ;; Parse names like "VARIATION SELECTOR-17" and "CJK From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 06:05:59 2017 Received: (at 28302) by debbugs.gnu.org; 31 Aug 2017 10:05:59 +0000 Received: from localhost ([127.0.0.1]:36203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnMMJ-00076a-1Z for submit@debbugs.gnu.org; Thu, 31 Aug 2017 06:05:59 -0400 Received: from mail-wr0-f176.google.com ([209.85.128.176]:34107) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnMMG-00076N-T3 for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 06:05:57 -0400 Received: by mail-wr0-f176.google.com with SMTP id z91so774101wrc.1 for <28302@debbugs.gnu.org>; Thu, 31 Aug 2017 03:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:gmane-reply-to-list:date:in-reply-to :message-id:user-agent:mime-version; bh=HWAlkLMKZYi7SR5AhQhVtyqw5L2XDxLyeQe9dvl53LI=; b=cS6i6w/4LFO/E88Mu9YBKzaZQYpjlEg4N4CNw9yo3wVifU/Cpxa7T+D2jLIJD5MiF3 wXMbpOgAL48PpXibOyZ8wNG3+01ZozYOcewdwqHD2tkTexVGijuKQ5C++g352I40AmO6 z6xvUDj0GfXigWhPU4nPbhAh/Wdwq7a8Rs9V1asUfiX2NR8tkAMnV1R+MLcBc5ojbmuM 5aAyvrXWFDlE7GKe79dfVQVLs5a4PJ9G41BC+IIxIGeF5+fX3cBlPmRl8Evwmldq9Bm9 MaQcbICoCHuuwn3P8El9BOunmLDLnWxdGl33LFtnRQgi9V71thx359zVJUg9cy4cwKqN CGHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references :gmane-reply-to-list:date:in-reply-to:message-id:user-agent :mime-version; bh=HWAlkLMKZYi7SR5AhQhVtyqw5L2XDxLyeQe9dvl53LI=; b=P8Jgi/2oZr0YSpCje21fKphobo8PutN1aw+f2P9he6mstiwibiwL5wu/dpt1DD7gIR bVEazrPwl8ajkNoqjnHKTT34GehWS9URxHrdfsRj9D501nMXd9kA+tvthiMDRm3zZzxO vParnESR77lbg4t6hDbOc+FSyudsvNwBAC/7gCiYLvRr3Egh7tyiLcFGp71qsC9FjKlQ 9fZw9a7MpvUhKIxhLBjtVuB/lpzS/OpLQGZsTwkUPGgd59mdhgXtbMKlXFGfiN3H6Fe3 7at+vxusw2n3ZhpdTY/e4F2+ZAiEUPmCDIBeleYNfX02t1IVz2+hHEqF8NdtLoquyKJp WF1A== X-Gm-Message-State: AHYfb5htTaA3VP8mavibggGjmqstSD0j3wbw07DNy7VXuOddie+gBxI6 RlJg+cRcFAW6lfW5A0A= X-Google-Smtp-Source: ADKCNb7MOev0bg7nKRzWpvTtJdZkKtp3jmnXfDi1NohvMj/ezuDJ0dcgdWpqvDAjEPKHoc9I9oLrEw== X-Received: by 10.223.130.37 with SMTP id 34mr2139239wrb.334.1504173950694; Thu, 31 Aug 2017 03:05:50 -0700 (PDT) Received: from rpluim-ubuntu ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id 73sm5318433wrl.56.2017.08.31.03.05.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Aug 2017 03:05:49 -0700 (PDT) From: Robert Pluim To: Mark Oteiza Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> X-Debbugs-No-Ack: yes Gmane-Reply-To-List: yes Date: Thu, 31 Aug 2017 12:05:46 +0200 In-Reply-To: <87r2vsqqeo.fsf@holos> (Mark Oteiza's message of "Thu, 31 Aug 2017 01:04:15 -0400") Message-ID: <871snscarp.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 28302 Cc: 28302@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Mark Oteiza writes: > Hi, > > I seem to remember there having been complaints about ucs-names preview > being slow. I was curious about how much of that time was spent > assoc'ing every element of a roughly n = 42k element long alist, and so > tried making it a hash table instead. The result is a drastic speedup > of C-x 8 RET TAB, presumably this makes the operation O(n) vs O(n^2). I haven't timed it exactly, but it makes a *very* noticeable difference here. Thanks for this. Regards Robert From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 10:01:04 2017 Received: (at 28302) by debbugs.gnu.org; 31 Aug 2017 14:01:04 +0000 Received: from localhost ([127.0.0.1]:37646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQ1o-0003pO-Ei for submit@debbugs.gnu.org; Thu, 31 Aug 2017 10:01:04 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46519) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQ1l-0003on-Sx for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 10:01:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnQ1Z-0008BL-0X for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 10:00:56 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34633) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnQ1Y-0008Ay-O6; Thu, 31 Aug 2017 10:00:48 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3081 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dnQ1W-00009t-LC; Thu, 31 Aug 2017 10:00:48 -0400 Date: Thu, 31 Aug 2017 17:00:19 +0300 Message-Id: <83tw0n25xo.fsf@gnu.org> From: Eli Zaretskii To: Mark Oteiza In-reply-to: <87r2vsqqeo.fsf@holos> (message from Mark Oteiza on Thu, 31 Aug 2017 01:04:15 -0400) Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 28302 Cc: 28302@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Mark Oteiza > Date: Thu, 31 Aug 2017 01:04:15 -0400 > > I seem to remember there having been complaints about ucs-names preview > being slow. I was curious about how much of that time was spent > assoc'ing every element of a roughly n = 42k element long alist, and so > tried making it a hash table instead. The result is a drastic speedup > of C-x 8 RET TAB, presumably this makes the operation O(n) vs O(n^2). Thanks, this is a very good change. Please make sure (if you haven't already) that it survives bootstrap. Also, there are other places which assume that ucs-names is an alist, so I guess this is not the full final patch? And this should be mentioned in NEWS under incompatible Lisp changes, as ucs-names debuted in Emacs 23.1, and there could be some uses of it outside Emacs proper. From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 10:01:37 2017 Received: (at 28302) by debbugs.gnu.org; 31 Aug 2017 14:01:38 +0000 Received: from localhost ([127.0.0.1]:37649 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQ2L-0003q7-MS for submit@debbugs.gnu.org; Thu, 31 Aug 2017 10:01:37 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46618) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQ2J-0003pu-Qj for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 10:01:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnQ2A-0008Ru-Tz for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 10:01:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34646) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnQ2A-0008Rq-QW; Thu, 31 Aug 2017 10:01:26 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3082 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dnQ29-0001ui-Oe; Thu, 31 Aug 2017 10:01:26 -0400 Date: Thu, 31 Aug 2017 17:01:10 +0300 Message-Id: <83shg725w9.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-reply-to: <871snscarp.fsf@gmail.com> (message from Robert Pluim on Thu, 31 Aug 2017 12:05:46 +0200) Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> <871snscarp.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 28302 Cc: mvoteiza@udel.edu, 28302@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Robert Pluim > Date: Thu, 31 Aug 2017 12:05:46 +0200 > Cc: 28302@debbugs.gnu.org > > I haven't timed it exactly, but it makes a *very* noticeable > difference here. About ten-fold, according to my measurements. From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 10:46:26 2017 Received: (at 28302) by debbugs.gnu.org; 31 Aug 2017 14:46:26 +0000 Received: from localhost ([127.0.0.1]:37685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQjh-0004ro-MT for submit@debbugs.gnu.org; Thu, 31 Aug 2017 10:46:25 -0400 Received: from mail-qt0-f169.google.com ([209.85.216.169]:38778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnQjg-0004rc-6Z for 28302@debbugs.gnu.org; Thu, 31 Aug 2017 10:46:24 -0400 Received: by mail-qt0-f169.google.com with SMTP id w42so3845633qtg.5 for <28302@debbugs.gnu.org>; Thu, 31 Aug 2017 07:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=bEX5GTcUXRbnfRS7s/4lOpZkmmtLWwyWMTSFpii9ATw=; b=DeXrzo6s5KD9pGWG/o8SQ+5RdiYHLkPAKNbU7bB21xaBaIj8+s/TjUso0fgrvA+TwM A9dMljVz7OvFiYPlU8QlVludrhut99VCWl4A2zKJcCjlfYNR+lKwvRZQ/Dru8rSEraAU /osNL5t9hWs8slNFZc/Zjm/b5tnnC9XmKko4YrnMMsz921PStycHbCQu2zOwQk71G1uK JZ/lPpOrPgxeP9xpbKAomyDclVJQh6N8K30Hdioe8ppUOlTnPy1YodbPnkSK4Tpq4uw6 Bv4NfMwbalIRd6fjmgqmRJnuJnK5M28NSYCRNRPuaChWJCcwFHKcvv/7CJIKOe43488Q mSTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=bEX5GTcUXRbnfRS7s/4lOpZkmmtLWwyWMTSFpii9ATw=; b=MxG+2/HH8L8gglpZ/I5qZozZ1YGcH+wMpSmpbeq125SKRBwOEbGcc4MIoT6XIII++q F0iV0ab8WyR6ZtWOpx0ZgWVfO2Y+mx4iY0Rdp/hMqnvu+V76+dgp1PMhmWGIfWHouemB PuJwEs5gp28V2uwMD1d0AYAf89OPQb2OBY52zcr7dGjKdel3WnoVJJeCJW0sA7Pyzt3x nShdgiiZu388xB5UqUdU29RL5ZfAOXQ+kO1tiEJleUvrlfWJcoFl1Q+DC7R4UCRvdsIX sIzWYXRz0N7KgGWlVoURiDEvEWrKLEJtaitl2cEVuUGwFyvxpGr7VusIUhWQ+atA7dLh TWIA== X-Gm-Message-State: AHPjjUjgpMDqXdU3xL2md/2lZiQZb8n6CM6QSVES3mBDXfelGuYzMSfy fCKQL8mwZ57y3UWiIVdJAg== X-Google-Smtp-Source: ADKCNb5Q97UMLfM5LQlOMKKE9E+FtLYTqMesTaynSjF8a098ibDwj0nvj1Jc5EpOZanatQT0PrbnTg== X-Received: by 10.200.55.233 with SMTP id e38mr7288167qtc.12.1504190778257; Thu, 31 Aug 2017 07:46:18 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id g54sm5692177qtk.60.2017.08.31.07.46.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 31 Aug 2017 07:46:17 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 6032A6877C; Thu, 31 Aug 2017 10:46:16 -0400 (EDT) From: Mark Oteiza To: Eli Zaretskii Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> <83tw0n25xo.fsf@gnu.org> Date: Thu, 31 Aug 2017 10:46:16 -0400 In-Reply-To: <83tw0n25xo.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 31 Aug 2017 17:00:19 +0300") Message-ID: <87tw0n4wxz.fsf@holos> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 28302 Cc: 28302@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) Eli Zaretskii writes: >> From: Mark Oteiza >> Date: Thu, 31 Aug 2017 01:04:15 -0400 >> >> I seem to remember there having been complaints about ucs-names preview >> being slow. I was curious about how much of that time was spent >> assoc'ing every element of a roughly n = 42k element long alist, and so >> tried making it a hash table instead. The result is a drastic speedup >> of C-x 8 RET TAB, presumably this makes the operation O(n) vs O(n^2). > > Thanks, this is a very good change. Please make sure (if you haven't > already) that it survives bootstrap. > > Also, there are other places which assume that ucs-names is an alist, > so I guess this is not the full final patch? Yes, since posting I found the other two places where ucs-names is used and have made changes there. > And this should be mentioned in NEWS under incompatible Lisp changes, > as ucs-names debuted in Emacs 23.1, and there could be some uses of it > outside Emacs proper. Thanks, patch with additional changes attached. I don't really like repeating the string in descr-text.el, but BEL is the only outlier and I think it would be overkill to write a rassoc analog. diff --git a/etc/NEWS b/etc/NEWS index e8d6ea9c6d..e8f6aec9ef 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1153,6 +1153,9 @@ table implementation. This uses a new bytecode op 'switch', which isn't compatible with previous Emacs versions. This functionality can be disabled by setting 'byte-compile-cond-use-jump-table' to nil. +--- +** The variable 'ucs-names' is now a hash table. + ** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term mode to send the same escape sequences that xterm does. This makes things like forward-word in readline work. diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 6f36bbed68..b3c96988dd 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -617,16 +617,16 @@ describe-char (list (let* ((names (ucs-names)) (name - (or (when (= char 7) + (or (when (= char ?\a) ;; Special case for "BELL" which is ;; apparently the only char which ;; doesn't have a new name and whose ;; old-name is shadowed by a newer char ;; with that name (bug#25641). - (car (rassoc char names))) + "BELL (BEL)") (get-char-code-property char 'name) (get-char-code-property char 'old-name)))) - (if (and name (assoc-string name names)) + (if (and name (gethash name names)) (format "type \"C-x 8 RET %x\" or \"C-x 8 RET %s\"" char name) diff --git a/lisp/leim/quail/latin-ltx.el b/lisp/leim/quail/latin-ltx.el index 6c5afcd4f9..778706a451 100644 --- a/lisp/leim/quail/latin-ltx.el +++ b/lisp/leim/quail/latin-ltx.el @@ -75,20 +75,20 @@ (`(,seq ,re) (let ((count 0) (re (eval re t))) - (dolist (pair (ucs-names)) - (let ((name (car pair)) - (char (cdr pair))) - (when (and (characterp char) ;; Ignore char-ranges. - (string-match re name)) - (let ((keys (if (stringp seq) - (replace-match seq nil nil name) - (funcall seq name char)))) - (if (listp keys) - (dolist (x keys) - (setq count (1+ count)) - (push (list x char) newrules)) - (setq count (1+ count)) - (push (list keys char) newrules)))))) + (maphash + (lambda (name char) + (when (and (characterp char) ;; Ignore char-ranges. + (string-match re name)) + (let ((keys (if (stringp seq) + (replace-match seq nil nil name) + (funcall seq name char)))) + (if (listp keys) + (dolist (x keys) + (setq count (1+ count)) + (push (list x char) newrules)) + (setq count (1+ count)) + (push (list keys char) newrules))))) + (ucs-names)) ;; (message "latin-ltx: %d mappings for %S" count re) )))) (setq newrules (delete-dups newrules)) @@ -206,7 +206,7 @@ ((lambda (name char) (let* ((base (concat (match-string 1 name) (match-string 3 name))) - (basechar (cdr (assoc base (ucs-names))))) + (basechar (gethash base (ucs-names)))) (when (latin-ltx--ascii-p basechar) (string (if (match-end 2) ?^ ?_) basechar)))) "\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)") From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 17:30:57 2017 Received: (at 28302-done) by debbugs.gnu.org; 31 Aug 2017 21:30:58 +0000 Received: from localhost ([127.0.0.1]:38201 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnX3B-0003Dx-MV for submit@debbugs.gnu.org; Thu, 31 Aug 2017 17:30:57 -0400 Received: from mail-qk0-f178.google.com ([209.85.220.178]:38779) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnX3A-0003Dk-G3 for 28302-done@debbugs.gnu.org; Thu, 31 Aug 2017 17:30:57 -0400 Received: by mail-qk0-f178.google.com with SMTP id a21so3800702qkg.5 for <28302-done@debbugs.gnu.org>; Thu, 31 Aug 2017 14:30:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=PpFlconjte8/fn4pghEEAvuFOhIAhJ0FoIwLE0SQloI=; b=kvqEdKRINDoD+lX9ASOKJqtDIMdks0v1sowY/7wQhgwIHqQxNJo+U8pGSORu3FYl4G gVqwl0xSAyeY+07uEp0PCHHCKsQt6etZ9urtuZRS6+htVOnWPxcRK1fUZLQ3KeWNJmHW vZA04P1DPkcIXEhTj+zCU/EgG2O2otd18x0t4Ey5jcttIvxPDPAqdXUmcTyuLAdoCglN InCYA1DqPGQjMiNdRIYav4yFNglp7R3ZS+einwkqjf0bQUjXhlZQuDs1sQfUfuVWCj3Z YxWrhWKti/rchCF62BGI0cgKy5VoJMP38AzkOE+yL/myhu6fxNDaBzem6lBOWHLR2EKN p1Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=PpFlconjte8/fn4pghEEAvuFOhIAhJ0FoIwLE0SQloI=; b=E+T2vhiBmnPM+CzyWB1JENOeRXUG/8WSxSwqwRVovATGCvC/1gFfq4iRAq+XVUmtoD v8B4Leslj30Rcg+FzYqKCT1/Y6G8s75j88rZfyM7Zci2mgxVHAw30xbsGgK3vT+Uk8Xj 9L1xx8SKoihnOv5svYt57ldmjaVptHl+vE7mBf0uMTWSQSqgeWR7mWpZAJfrQGfSiJPb 4rWSvs143JkMRubZbx0amjGoa1WLAS4+R5LhKAHjmKZlfpiwjVhof7VUHjsooELKu9A2 BhFH+/vS4QjMg2VStN5CTn6w+ag7JvBM2w2DwLooT7BJXHq3y2ff9bNGWyCf8kOp4QFh MkKg== X-Gm-Message-State: AHPjjUi/NwQ5jiwshwwGznDW51ZjijEumlZjR+PAcfVfWzOwlI2WxPVo l06KEXHznS3Xj7Sj9XfjOw== X-Google-Smtp-Source: ADKCNb5R7pXaSmQBBJ658FDAUTxv1SB5hln9kZH+QYQ75A0qoQXtNQ4HGXUu/z//0C2Lv0Jn9grtlg== X-Received: by 10.55.39.73 with SMTP id n70mr5450128qkn.257.1504215050769; Thu, 31 Aug 2017 14:30:50 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id q11sm583815qtf.16.2017.08.31.14.30.49 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 31 Aug 2017 14:30:50 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 644C86877C; Thu, 31 Aug 2017 17:30:49 -0400 (EDT) Date: Thu, 31 Aug 2017 17:30:49 -0400 From: Mark Oteiza To: Eli Zaretskii Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table Message-ID: <20170831213049.GA5321@holos.localdomain> References: <87r2vsqqeo.fsf@holos> <83tw0n25xo.fsf@gnu.org> <87tw0n4wxz.fsf@holos> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87tw0n4wxz.fsf@holos> User-Agent: Mutt/1.8.3 (2017-05-23) X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 28302-done Cc: 28302-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) Pushed as 96c2c09. From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 31 18:15:20 2017 Received: (at 28302-done) by debbugs.gnu.org; 31 Aug 2017 22:15:20 +0000 Received: from localhost ([127.0.0.1]:38261 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnXk8-0004F7-GY for submit@debbugs.gnu.org; Thu, 31 Aug 2017 18:15:20 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:44802) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnXk7-0004Eu-71 for 28302-done@debbugs.gnu.org; Thu, 31 Aug 2017 18:15:19 -0400 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v7VMFBul017530 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 31 Aug 2017 22:15:11 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v7VMFAmm024606 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 31 Aug 2017 22:15:10 GMT Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id v7VMF90t022239; Thu, 31 Aug 2017 22:15:09 GMT MIME-Version: 1.0 Message-ID: Date: Thu, 31 Aug 2017 15:15:07 -0700 (PDT) From: Drew Adams To: Mark Oteiza , Eli Zaretskii Subject: RE: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> <83tw0n25xo.fsf@gnu.org> <87tw0n4wxz.fsf@holos> <20170831213049.GA5321@holos.localdomain> In-Reply-To: <20170831213049.GA5321@holos.localdomain> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6774.5000 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Source-IP: userv0022.oracle.com [156.151.31.74] X-Spam-Score: -5.1 (-----) X-Debbugs-Envelope-To: 28302-done Cc: 28302-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.1 (-----) > Pushed as 96c2c09. Judging only by the Subject line, without looking at the code, I'd guess that this will break user code that counts on `ucs-names' being an alist. I, for one, have 3 libraries that do that: `ucs-cmds.el', `apu.el', and Icicles. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 01 02:23:28 2017 Received: (at 28302) by debbugs.gnu.org; 1 Sep 2017 06:23:28 +0000 Received: from localhost ([127.0.0.1]:38842 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnfMW-0000sw-1B for submit@debbugs.gnu.org; Fri, 01 Sep 2017 02:23:28 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59665) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnfMU-0000sh-Kf for 28302@debbugs.gnu.org; Fri, 01 Sep 2017 02:23:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnfML-00020a-3b for 28302@debbugs.gnu.org; Fri, 01 Sep 2017 02:23:21 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48800) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnfML-00020W-11; Fri, 01 Sep 2017 02:23:17 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3811 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dnfMK-0006KB-B3; Fri, 01 Sep 2017 02:23:16 -0400 Date: Fri, 01 Sep 2017 09:23:05 +0300 Message-Id: <83mv6f0wfq.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-reply-to: (message from Drew Adams on Thu, 31 Aug 2017 15:15:07 -0700 (PDT)) Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> <83tw0n25xo.fsf@gnu.org> <87tw0n4wxz.fsf@holos> <20170831213049.GA5321@holos.localdomain> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 28302 Cc: mvoteiza@udel.edu, 28302@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Date: Thu, 31 Aug 2017 15:15:07 -0700 (PDT) > From: Drew Adams > Cc: 28302-done@debbugs.gnu.org > > Judging only by the Subject line, without looking at the code, > I'd guess that this will break user code that counts on `ucs-names' > being an alist. Yes, which is why it is mentioned as an incompatible change in NEWS. > I, for one, have 3 libraries that do that: `ucs-cmds.el', `apu.el', > and Icicles. I suggest to update them to support a hash table as well as an alist. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 01 06:38:54 2017 Received: (at 28302) by debbugs.gnu.org; 1 Sep 2017 10:38:55 +0000 Received: from localhost ([127.0.0.1]:39217 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnjLh-0007AV-GR for submit@debbugs.gnu.org; Fri, 01 Sep 2017 06:38:54 -0400 Received: from mail.agora-net.com ([67.59.132.6]:59790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnjLg-0007AO-4y for 28302@debbugs.gnu.org; Fri, 01 Sep 2017 06:38:52 -0400 Received: from ttn by mail.agora-net.com with local (Exim 4.82) (envelope-from ) id 1dnjLf-0008Hd-L7 for 28302@debbugs.gnu.org; Fri, 01 Sep 2017 06:38:51 -0400 Received: from ttn by zigzag.favinet with local (Exim 4.80) (envelope-from ) id 1dnjQ9-0001OV-6P for 28302@debbugs.gnu.org; Fri, 01 Sep 2017 12:43:29 +0200 From: Thien-Thi Nguyen To: 28302@debbugs.gnu.org Subject: Re: bug#28302: 26.0.50; [PATCH] Make ucs-names a hash table References: <87r2vsqqeo.fsf@holos> <83tw0n25xo.fsf@gnu.org> <87tw0n4wxz.fsf@holos> <20170831213049.GA5321@holos.localdomain> <83mv6f0wfq.fsf@gnu.org> Date: Fri, 01 Sep 2017 12:43:16 +0200 In-Reply-To: <83mv6f0wfq.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 01 Sep 2017 09:23:05 +0300") Message-ID: <87tw0m1yyj.fsf@zigzag> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: ttn@gnuvola.org X-SA-Exim-Scanned: No (on mail.agora-net.com); SAEximRunCond expanded to false X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 28302 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable () Eli Zaretskii () Fri, 01 Sep 2017 09:23:05 +0300 I suggest to update them to support a hash table as well as an alist. Tangent: Maybe we could extend =E2=80=98ucs-names=E2=80=99 (the function) to take args and DTRT accordingly. Something like: ;; backward compatible (ucs-names) =3D> ALIST ;; lookup (ucs-names 'forward-lookup CHAR-NAME) =3D> CHAR-CODE (ucs-names 'reverse-lookup CHAR-CODE) =3D> CHAR-NAME ;; bonus: reflection (ucs-names 'as-alist) =3D> ALIST (ucs-names 'as-hash-table) =3D> HASH-TABLE Admittedly, this is not very idiomatic Emacs Lisp. OTOH, i would guess the vast majority of callers use it for lookup, so centralizing that functionality would be a net win, despite the style drift. Really, given the rise of lexical binding and w/ niceties like =E2=80=98apply-partially=E2=80=99 already in the mix, i expect that sooner = or later, someone will put into place something like: (defun callable-hash-table (source) (let ((ht (ELABORATE source))) ;; rv (lambda (&optional cmd) (case cmd (as-hash-table ht) (as-alist ...) (forward-lookup ...) (reverse-lookup ...) ...)))) (fset ucs-names (callable-hash-table ucs-names)) IOW: Style drift be damned! Up the idioms! HOP things now! (Insert more FP slogans here. :-D) Or maybe this is already done? What am i missing? More coffee! =2D-=20 Thien-Thi Nguyen ----------------------------------------------- (defun responsep (query) (pcase (context query) (`(technical ,ml) (correctp ml)) ...)) 748E A0E8 1CB8 A748 9BFA =2D-------------------------------------- 6CE4 6703 2224 4C80 7502 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAlmpOcoACgkQZwMiJEyAdQK70wCgyIzbtm18oSRiUtkKVPh9T6Ro HC4AoOC7DoASCjzllW9KB3hB3d5v6621 =Hzib -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Aug 16 18:38:03 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 29 Sep 2017 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator