From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: transient Date: Mon, 18 May 2020 22:38:12 -0700 (PDT) Message-ID: References: <5230692c-c665-a330-7a12-e59fa25d97dd@gmail.com> <70bb51fd-447d-928c-4d69-1c9673a44471@online.de> <871rnnvmdx.fsf@red-bean.com> <87pnb7sira.fsf@red-bean.com> <06bcddd4-6991-e4f7-e944-93de14af263d@yandex.ru> <87h7wjsd8o.fsf@red-bean.com> <20897f01-122d-7f91-eac2-70f5ad75796f@yandex.ru> <87d077qfmm.fsf@red-bean.com> <806193B0-1248-4522-83F1-21FA8206C5A8@traduction-libre.org> <87imgtlofi.fsf@fastmail.fm> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="78190"; mail-complaints-to="usenet@ciao.gmane.io" To: Howard Melman , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue May 19 07:39:02 2020 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 1jauxx-000KDV-Sn for ged-emacs-devel@m.gmane-mx.org; Tue, 19 May 2020 07:39:01 +0200 Original-Received: from localhost ([::1]:42234 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jauxw-0007w5-Uv for ged-emacs-devel@m.gmane-mx.org; Tue, 19 May 2020 01:39:00 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jauxI-0007XA-3N for emacs-devel@gnu.org; Tue, 19 May 2020 01:38:20 -0400 Original-Received: from userp2120.oracle.com ([156.151.31.85]:59814) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jauxG-0000iw-IX for emacs-devel@gnu.org; Tue, 19 May 2020 01:38:19 -0400 Original-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04J5bxhb059274; Tue, 19 May 2020 05:38:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : message-id : date : from : sender : to : subject : references : in-reply-to : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=I5gH70CKOLDbuuElmTybms4Ds3vK5euRn1Q2bMEEDmI=; b=vEj4kjhYtb+l0+54a+aZFY7Ktw3Khb7sfKn++tTKNpy9+nITfxwghv+/BwD79rtINiqN /XsaHJzwsJOl5bJ4uoPXhjPVsqDAZySxd5mwW0n767xRrIAZRkcSm/6mcR7XP/CDu5/Y VDYXPlr91+pNWOKiJlEXcvjPlovUiUh2EzYw+LEiACoTjqq5HQ7Q6L+sXsMvleyf4mtY gG+xoQad8G5uj0r4yQ8L4/MjHgYUXsUCu3Sm3C245AP1ytPOEHTjD5M7w7QfVfbVxoXs h0QvmQlIlXVLR73eblLntxXE8IGBXBbqQFK3ifKBZhLHs2Z9vx1hlTfCU7H/CBODcjRo EA== Original-Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 3128tnaqce-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 19 May 2020 05:38:14 +0000 Original-Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04J5X5Vm104995; Tue, 19 May 2020 05:38:14 GMT Original-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 312sxrxf2d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 19 May 2020 05:38:14 +0000 Original-Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 04J5cDjf024529; Tue, 19 May 2020 05:38:13 GMT In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 16.0.4993.0 (x86)] X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9625 signatures=668686 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=18 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005190048 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9625 signatures=668686 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0 bulkscore=0 spamscore=0 clxscore=1011 cotscore=-2147483648 suspectscore=18 lowpriorityscore=0 adultscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 priorityscore=1501 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005190049 Received-SPF: pass client-ip=156.151.31.85; envelope-from=drew.adams@oracle.com; helo=userp2120.oracle.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 01:38:16 X-ACL-Warn: Detected OS = Linux 3.1-3.10 [fuzzy] X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN 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:250877 Archived-At: > >>> I like it very much because it helps see the rationale behind > >>> keybinding. After a while you get to learn the bindings for the > >>> commands you use the most and you can easily explore > >>> new commands. >=20 > ... which-key let's me explore existing bindings with > no effort. Type C-x r and wait a second and see all > the rectangle and register commands. It was great for > learning the M-s and M-g keymaps when they were added. > which-key has been very helpful for learning bindings... FWIW - Icicles key completion is similar, but there are notable differences: 1. You can use it on-demand (as well as just automatically) - complete only when you want to, and without a delay. 2. Because of that you can also use it at top level, not just after hitting a prefix key. Use it to see what key bindings are available in the current context (e.g. active modes). 3. Completion candidates have 2 parts: key and command name: `KEY =3D COMMAND'. You can match either or both. Prefix keys have `...' instead of `COMMAND: `PREFIX-KEY =3D ...'. 4. Choosing a candidate with a COMMAND invokes it. Choosing a prefix-key candidate changes the set of candidates to its completions. E.g., choosing `C-h =3D ...' shows candidates such as `f =3D describe-function'. 5. You can filter the current matches, by typing input that matches key or command names, or both. You can filter multiple times (multiple patterns). Remove your current pattern from the minibuffer and type another one to see a different set of matches at the same level (same prefix key or top level). 6. When completing a prefix key, the first candidate shown is `..', which you can choose to go back up a level (completions above that prefix key). Then you can go down another prefix key - explore the entire key-sequence forest. 7. That forest includes menus, as prefix-key candidates (`menu-bar =3D ...'). So you can explore menus in the same way. [*] 8. You can sort candidates in these ways: * local bindings first, then non-local, each group in alphabetic order by key name * prefix keys first, then non-prefix, again, in key-name alphabetic order * alphabetic order by command name You can cycle among those sort orders anytime, using `C-,'. 9. Local bindings are highlighted differently from non-local - two faces. Menus get two other faces (local, non-local). 10. You can show full help (`C-h f' help) for any candidate, anytime, without ending completion. (Use `C-M-RET' on it.) 11. Being able to match minibuffer input against key and command names means that, unlike the approach of `which-key' and similar, when completing a prefix key you don't just hit keys that complete the key sequence, to invoke its command. A workaround for that is to hit `M-q' and then hit a key, to insert its name in the minibuffer and then choose it. E.g., `M-q C-M-f' inserts the text `C-M-f' in the minibuffer. _____ [*] Exploring menu-bar menus this way is one step (menu level) at a time, the same as exploring other key sequences. A better way to explore menu-bar menus is to use library La Carte. Then you can match menu items or submenus directly, at any level. I.e., you can type a single pattern that dives down into the menu hierarchy - like file-name completion. (But you can also navigate stepwise.)