From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#47294: 27.1; completing-read: History handling and sorting Date: Sat, 25 Jun 2022 17:12:46 +0200 Message-ID: <87tu88hj4h.fsf@gnus.org> References: <00acdb37-028d-10c2-7130-95ae03e3a662@posteo.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23474"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: 47294@debbugs.gnu.org To: Clemens Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jun 25 17:14:28 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o57UR-0005v4-97 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 25 Jun 2022 17:14:27 +0200 Original-Received: from localhost ([::1]:48732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o57UP-0005qE-LT for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 25 Jun 2022 11:14:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54390) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o57U2-0005pP-Lw for bug-gnu-emacs@gnu.org; Sat, 25 Jun 2022 11:14:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52131) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o57U2-0002Qv-DY for bug-gnu-emacs@gnu.org; Sat, 25 Jun 2022 11:14:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o57U2-0007Zp-8R for bug-gnu-emacs@gnu.org; Sat, 25 Jun 2022 11:14:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Jun 2022 15:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47294 X-GNU-PR-Package: emacs Original-Received: via spool by 47294-submit@debbugs.gnu.org id=B47294.165616998229022 (code B ref 47294); Sat, 25 Jun 2022 15:14:02 +0000 Original-Received: (at 47294) by debbugs.gnu.org; 25 Jun 2022 15:13:02 +0000 Original-Received: from localhost ([127.0.0.1]:46025 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o57T3-0007Xw-Oo for submit@debbugs.gnu.org; Sat, 25 Jun 2022 11:13:02 -0400 Original-Received: from quimby.gnus.org ([95.216.78.240]:46324) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o57Sy-0007Xa-RA for 47294@debbugs.gnu.org; Sat, 25 Jun 2022 11:13:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=cHaoohCBhisLoavUf2UvQrZT/cHvm7fkVeYHUUzyXZA=; b=OwM6/dH7ZLSh9H6hVFWzKYPKpr c7lhIZWj3hJ8UYmAyrAkLJ26BkuUhEMzXGO7HmxRLouk930GGZP8Ovy63tNNH5Fxt/0ybnl9WxzY1 K6S++Jj21QO65APgOqkkKdFjRxppWHwSor8dwuylG+XmSmFy7TYe2XkGoe7TRQcLpuwI=; Original-Received: from 77.19.134.30.tmi.telenormobil.no ([77.19.134.30] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o57Sp-0007nG-Gm; Sat, 25 Jun 2022 17:12:50 +0200 In-Reply-To: <00acdb37-028d-10c2-7130-95ae03e3a662@posteo.net> (Clemens's message of "Sun, 21 Mar 2021 15:29:49 +0100") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:235275 Archived-At: Clemens writes: > One can pass `t` to ignore history to `read-from-minibuffer`. I > assumed this is also true for `completing-read` and discovered this > would throw an error (for example when using icomplete > `completion-all-sorted-completions` is called which doesn't handle the > `t` value). Can we change things to allow this API also for > `completing-read`? (I'm going through old bug reports that unfortunately weren't resolved at the time.) I'm unable to reproduce this in Emacs 27.1 and the current trunk. (completing-read "foo" nil nil nil nil t) doesn't throw an error for me. Do you have a complete recipe to reproduce the problem? > Another observation is that the implementation of > `completion-all-sorted-completions` could be made faster by using a > hash table as Daniel Mendler implemented it for Selectrum: > > ```elisp > (let* ((list (and (not (eq minibuffer-history-variable t)) > (symbol-value minibuffer-history-variable))) > (hist (make-hash-table :test #'equal > :size (length list)))) > ;; Store the history position first in a hashtable in order to > ;; keep the sorting fast and the complexity at O(n*log(n)). > (seq-do-indexed (lambda (elem idx) > (unless (gethash elem hist) > (puthash elem idx hist))) > list) > (sort candidates > (lambda (c1 c2) > (let ((h1 (gethash c1 hist most-positive-fixnum)) > (h2 (gethash c2 hist most-positive-fixnum)) > (l1 (length c1)) > (l2 (length c2))) > (or (< h1 h2) > (and (= h1 h2) > (or (< l1 l2) > (and (= l1 l2) (string< c1 c2))))))))) It's not immediately obvious to me what this code is supposed to replace. Do you have a patch for this instead? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no