From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.devel Subject: Re: [WIP PATCH] Adding keys to keymaps in alphabetical order (for use with `mode-line-mode-menu') Date: Tue, 22 Jun 2021 22:17:34 -0700 Message-ID: <44969496-4f6c-e299-9fee-7bad01c17815@gmail.com> References: <87tulu11f1.fsf@gnus.org> <87bl7ztn4p.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------660B771DAD6E0C9C81712CA7" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26263"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Jun 23 07:18:47 2021 Return-path: Envelope-to: ged-emacs-devel@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 1lvvHi-0006jM-Vg for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Jun 2021 07:18:47 +0200 Original-Received: from localhost ([::1]:48360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvvHi-00070P-1J for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Jun 2021 01:18:46 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvvGe-00068J-Bw for emacs-devel@gnu.org; Wed, 23 Jun 2021 01:17:40 -0400 Original-Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:36711) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvvGb-0006O8-91 for emacs-devel@gnu.org; Wed, 23 Jun 2021 01:17:40 -0400 Original-Received: by mail-pf1-x42c.google.com with SMTP id 21so1405111pfp.3 for ; Tue, 22 Jun 2021 22:17:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=WmshPIiSdksn+83Q7ucF9dP7qja69J4x3/acWxxRfBk=; b=Sx4/qnzjXnUfvHfio+G/g7Vn8A+g9jmKwMulOL4kYVcV2HC9cM1mfxBn84uIsGOmox RfbyxzTpGFILOnb2jMMpgkE13YyUD9G3f9msYIqsxnlylMuZN4V4XHJZH4pLMrSC8TjS eQZfyzqUS5i+KT5Kx74S4RhmTkWrzKkrWWBpnk7sPbr5Mb9ysCTc9KE1dJ7ApqY+zArY LfacVrl3uEc/dtD/2iG3yiHPtGeMZ31ehLd5lypzXlYwnVWy0qtqLn5UfksN1HeydnWA kTyMSWEPGUrfSsjKwVxZ6niIS09yuO4pEg6VxfX/9ZkbTDUoq4GZTkT8QSYF0R+2acZ2 JJfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=WmshPIiSdksn+83Q7ucF9dP7qja69J4x3/acWxxRfBk=; b=OcUhoesoR0/6VIOpTLi3IQ4IUInY1Htn4QEVBsOmTWDFAOkfWiozrKsGRKunECMIVf /nXQ4TTyQhV4Bgu22bLJONe+vmdoVfr74U6MHAvYmpUzHnP2mki9KWDuw7friAnsc/zb +PEsxWmPD//MO5blNn2WlXUiSmq2NNW5rDA0BLCx1gQGtkVY/HcOr43Sqq5PxTW8iQB4 pmTAOSftEd9Zzxr2anG8ZJghvfGEXc690fvyg3z7zoESOpmV+e2BuG/X05z3tMHBCFmz n1mxsr75fT1r/0/R4yQj7bJTC7FRLQb91rUDb3sG5UL382o3V+o+5rnpze+s/JEOwW3j Rt4A== X-Gm-Message-State: AOAM531maxh/I0fGc3aK+1/T1yIgWfvtW+yHLUFshSStlWN+75Pk+7Cw 6twgMdaXttEEOZKQqVn5TQcAx8vAL9Q= X-Google-Smtp-Source: ABdhPJx6GdRmsaIPw3QB0MHQVUKfzwFmKAz/z/B8jvp0hk4JA45l/TFL0NSI/MsRMR4FLkT7+/7e5w== X-Received: by 2002:a62:7e8a:0:b029:2f8:183:8aa2 with SMTP id z132-20020a627e8a0000b02902f801838aa2mr7159605pfc.58.1624425455224; Tue, 22 Jun 2021 22:17:35 -0700 (PDT) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id o72sm1113420pfg.102.2021.06.22.22.17.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 22 Jun 2021 22:17:34 -0700 (PDT) In-Reply-To: <87bl7ztn4p.fsf@gnus.org> Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=jporterbugs@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:270984 Archived-At: This is a multi-part message in MIME format. --------------660B771DAD6E0C9C81712CA7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 6/21/2021 5:31 AM, Lars Ingebrigtsen wrote: > Jim Porter writes: > >> I'll look into the best way to trigger a sort just before opening the >> menu. Ideally, we could avoid re-sorting every time (unless the list >> has changed), but that might be more work than it's worth, given that >> the list is unlikely to be more than a few dozen elements. > > Yeah, menus are usually short, so just sorting should be fine, I think. Attached is a patch that I think should do this. I've only tested the new functions with `mode-line-mode-menu', so they might not work on all menus (hence, I've made them private for now). It's possible these functions would be more broadly useful, though. Performance-wise, the cost is negligible for the default value of `mode-line-mode-menu': ~10ms for the first time and 0.02ms for subsequent calls. - Jim --------------660B771DAD6E0C9C81712CA7 Content-Type: text/plain; charset=UTF-8; name="0001-Sort-the-items-in-mode-line-mode-menu-before-display.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Sort-the-items-in-mode-line-mode-menu-before-display.pa"; filename*1="tch" RnJvbSBmMjViYTE1ZGExMTQ4ZWUyNGM3MGU0NGYzZDE0NGZkZjg3OWVkYjBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFR1ZSwgMjIgSnVuIDIwMjEgMjE6NTI6MzcgLTA3MDAKU3ViamVjdDogW1BB VENIXSBTb3J0IHRoZSBpdGVtcyBpbiAnbW9kZS1saW5lLW1vZGUtbWVudScgYmVmb3JlIGRp c3BsYXlpbmcgdGhlCiBtZW51CgoqIGxpc3AvYmluZGluZ3MuZWwgKGJpbmRpbmdzLS1tZW51 LWl0ZW0tc3RyaW5nLCBiaW5kaW5ncy0tc29ydC1rZXltYXApOgpOZXcgZnVuY3Rpb25zLgoo bW9kZS1saW5lLW1ham9yLW1vZGUta2V5bWFwLCBtb2RlLWxpbmUtbWlub3ItbW9kZS1rZXlt YXApOgpTb3J0ICdtb2RlLWxpbmUtbW9kZS1tZW51Jy4KLS0tCiBsaXNwL2JpbmRpbmdzLmVs IHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNo YW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC9iaW5kaW5ncy5lbCBiL2xpc3AvYmluZGluZ3MuZWwKaW5kZXggNGU1NDk3Y2M3OS4u ZjNjNGY0MmY3OCAxMDA2NDQKLS0tIGEvbGlzcC9iaW5kaW5ncy5lbAorKysgYi9saXNwL2Jp bmRpbmdzLmVsCkBAIC0zMzAsMjIgKzMzMCw1MSBAQCBiaW5kaW5ncy0tZGVmaW5lLWtleQog KGRlZnZhciBtb2RlLWxpbmUtbW9kZS1tZW51IChtYWtlLXNwYXJzZS1rZXltYXAgIk1pbm9y IE1vZGVzIikgIlwKIE1lbnUgb2YgbW9kZSBvcGVyYXRpb25zIGluIHRoZSBtb2RlIGxpbmUu IikKIAorKGRlZnVuIGJpbmRpbmdzLS1tZW51LWl0ZW0tc3RyaW5nIChpdGVtKQorICAiUmV0 dXJuIHRoZSBtZW51LWl0ZW0gc3RyaW5nIGZvciBJVEVNLCBvciBuaWwgaWYgbm90IGEgbWVu dS1pdGVtLiIKKyAgKGNvbmQKKyAgICgobm90IChjb25zcCBpdGVtKSkgbmlsKSAgICAgICAg ICAgICA7IE5vdCBhIG1lbnUtaXRlbS4KKyAgICgoZXEgJ21lbnUtaXRlbSAoY2FyIGl0ZW0p KQorICAgIChldmFsIChjYWRyIGl0ZW0pKSkKKyAgICgoc3RyaW5ncCAoY2FyIGl0ZW0pKQor ICAgIChjYXIgaXRlbSkpCisgICAodCBuaWwpKSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBOb3QgYSBtZW51LWl0ZW0gZWl0aGVyLgorCisoZGVmdW4gYmluZGluZ3MtLXNvcnQt a2V5bWFwIChrZXltYXApCisgICJTb3J0IHRoZSBiaW5kaW5ncyBpbiBLRVlNQVAgaW4gYWxw aGFiZXRpY2FsIG9yZGVyLgorVGhlIG9yZGVyIG9mIGJpbmRpbmdzIGluIGEga2V5bWFwIG1h dHRlcnMgb25seSB3aGVuIGl0IGlzIHVzZWQgYXMKK2EgbWVudSwgc28gdGhpcyBmdW5jdGlv biBpcyBub3QgdXNlZnVsIGZvciBub24tbWVudSBrZXltYXBzLiIKKyAgKG9yIChrZXltYXBw IGtleW1hcCkKKyAgICAgIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ2tl eW1hcHAga2V5bWFwKSkpCisgIChsZXQgKChtZW51LWl0ZW1zCisgICAgICAgICAoc29ydCAo Y2RyIGtleW1hcCkKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGEgYikKKyAgICAgICAgICAg ICAgICAgKHN0cmluZzwgKGJpbmRpbmdzLS1tZW51LWl0ZW0tc3RyaW5nIChjZHItc2FmZSBh KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJpbmRpbmdzLS1tZW51LWl0ZW0tc3Ry aW5nIChjZHItc2FmZSBiKSkpKSkpKQorICAgIChzZXRjZHIga2V5bWFwIG1lbnUtaXRlbXMp CisgICAga2V5bWFwKSkKKwogKGRlZnZhciBtb2RlLWxpbmUtbWFqb3ItbW9kZS1rZXltYXAK ICAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAgKGJpbmRpbmdzLS1k ZWZpbmUta2V5IG1hcCBbbW9kZS1saW5lIGRvd24tbW91c2UtMV0KICAgICAgIGAobWVudS1p dGVtICJNZW51IEJhciIgaWdub3JlCiAgICAgICAgIDpmaWx0ZXIgLChsYW1iZGEgKF8pICht b3VzZS1tZW51LW1ham9yLW1vZGUtbWFwKSkpKQogICAgIChkZWZpbmUta2V5IG1hcCBbbW9k ZS1saW5lIG1vdXNlLTJdICdkZXNjcmliZS1tb2RlKQotICAgIChkZWZpbmUta2V5IG1hcCBb bW9kZS1saW5lIGRvd24tbW91c2UtM10gbW9kZS1saW5lLW1vZGUtbWVudSkKKyAgICAoYmlu ZGluZ3MtLWRlZmluZS1rZXkgbWFwIFttb2RlLWxpbmUgZG93bi1tb3VzZS0zXQorICAgICAg YChtZW51LWl0ZW0gIk1lbnUgQmFyIiAsbW9kZS1saW5lLW1vZGUtbWVudQorICAgICAgICA6 ZmlsdGVyIGJpbmRpbmdzLS1zb3J0LWtleW1hcCkpCiAgICAgbWFwKSAiXAogS2V5bWFwIHRv IGRpc3BsYXkgb24gbWFqb3IgbW9kZS4iKQogCiAoZGVmdmFyIG1vZGUtbGluZS1taW5vci1t b2RlLWtleW1hcAotICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKKyAgKGxl dCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkKKyAgICAgICAgKG1vZGUtbWVudS1iaW5k aW5nCisgICAgICAgICBgKG1lbnUtaXRlbSAiTWVudSBCYXIiICxtb2RlLWxpbmUtbW9kZS1t ZW51CisgICAgICAgICAgIDpmaWx0ZXIgYmluZGluZ3MtLXNvcnQta2V5bWFwKSkpCiAgICAg KGRlZmluZS1rZXkgbWFwIFttb2RlLWxpbmUgZG93bi1tb3VzZS0xXSAnbW91c2UtbWlub3It bW9kZS1tZW51KQogICAgIChkZWZpbmUta2V5IG1hcCBbbW9kZS1saW5lIG1vdXNlLTJdICdt b2RlLWxpbmUtbWlub3ItbW9kZS1oZWxwKQotICAgIChkZWZpbmUta2V5IG1hcCBbbW9kZS1s aW5lIGRvd24tbW91c2UtM10gbW9kZS1saW5lLW1vZGUtbWVudSkKLSAgICAoZGVmaW5lLWtl eSBtYXAgW2hlYWRlci1saW5lIGRvd24tbW91c2UtM10gbW9kZS1saW5lLW1vZGUtbWVudSkK KyAgICAoZGVmaW5lLWtleSBtYXAgW21vZGUtbGluZSBkb3duLW1vdXNlLTNdIG1vZGUtbWVu dS1iaW5kaW5nKQorICAgIChkZWZpbmUta2V5IG1hcCBbaGVhZGVyLWxpbmUgZG93bi1tb3Vz ZS0zXSBtb2RlLW1lbnUtYmluZGluZykKICAgICBtYXApICJcCiBLZXltYXAgdG8gZGlzcGxh eSBvbiBtaW5vciBtb2Rlcy4iKQogCi0tIAoyLjI1LjEKCg== --------------660B771DAD6E0C9C81712CA7--