From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#61227: 29.0.60; Customize UI for customization of keys Date: Thu, 02 Feb 2023 15:59:16 +0200 Message-ID: <838rhgxj63.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26119"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Lars Ingebrigtsen , Stefan Monnier To: 61227@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Feb 02 15:00:37 2023 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 1pNa8i-0006eJ-Vd for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 02 Feb 2023 15:00:37 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pNa8C-0000qf-Ah; Thu, 02 Feb 2023 09:00:04 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNa8A-0000pq-NU for bug-gnu-emacs@gnu.org; Thu, 02 Feb 2023 09:00:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pNa8A-0000YT-EJ for bug-gnu-emacs@gnu.org; Thu, 02 Feb 2023 09:00:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pNa8A-000317-B8 for bug-gnu-emacs@gnu.org; Thu, 02 Feb 2023 09:00:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 Feb 2023 14:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 61227 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.167534636011515 (code B ref -1); Thu, 02 Feb 2023 14:00:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 2 Feb 2023 13:59:20 +0000 Original-Received: from localhost ([127.0.0.1]:32936 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pNa7T-0002ze-Fy for submit@debbugs.gnu.org; Thu, 02 Feb 2023 08:59:19 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:45032) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pNa7R-0002zU-Qr for submit@debbugs.gnu.org; Thu, 02 Feb 2023 08:59:18 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNa7Q-00082L-FP for bug-gnu-emacs@gnu.org; Thu, 02 Feb 2023 08:59:16 -0500 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNa7P-0000Sq-7b; Thu, 02 Feb 2023 08:59:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:Subject:To:From:Date:in-reply-to: references; bh=28G1cvhJjibBNwoHDR0dBJEMZQQ/DC7xTmGpqnoxH5Y=; b=D11U4B3569TTUw WdvRqCs0ok+Sd6UIMdJlx1eU/IaK180nRngv9IHq2GBR1mURsD71ll686q+H1kVvyHFRjyoMjmtC9 kC2wnjQCn3EBbwT+UL7yAxOQVx6tx6BdLYlQbYmdL6iHmf5WyGxWaegkHwPO9uaNeVaadMcBm4bXS PauSge05AcIu8yh2IktKK8qlfp0w4V3oxvYVZi/sMiLGwETR7Msj4uiZg4l2LVKp8UwYeGCnepubt jTUj+qwtidA89vmhJajJ//bn3YATJJlF2UaLcJVFLlx3VneUlAxmIbsOYwgwCfCutgKPvpa2h8SHT /5G8RZhUWZ+esZ9ECt5g==; Original-Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNa7O-0008Fi-Lo; Thu, 02 Feb 2023 08:59:14 -0500 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:254654 Archived-At: To reproduce, try to customize any variable whose value should be a key. For example: emacs -Q M-x load-library RET repeat RET M-x customize-variable RET repeat-exit-key RET You are now presented with the Customize UI, where the Value Menu shows two possibilities: No special key to exit repeating sequence Kbd keys that exit repeating sequence Click on the second one, and Emacs displays an editable field: Kbd keys that exit repeating sequence: _______________________ Now what? It is completely unclear how to specify a key for this customization. I tried to type the key I wanted (which was RET) as a quoted character: "C-q RET" (which is already quite tricky). That says in the minibuffer Key is translated to RET -- use RET? (y or n) Pressing 'y' then inserts "RET" into the field, but trying to set this customization for the current session produces an error message: Invalid key: "RET " And I'm somehow expected to guess that I need to remove the trailing blank. It took me a while... If you are an Emacs hacker, you might be able to look in the sources and see this: (defcustom repeat-exit-key nil "Key that stops the modal repeating of keys in sequence. For example, you can set it to like `isearch-exit'." :type '(choice (const :tag "No special key to exit repeating sequence" nil) (key :tag "Kbd keys that exit repeating sequence")) ^^^ which will tell you that the custom type here is 'key'. The look it up in the ELisp manual: ‘key’ The value is a valid key according to ‘key-valid-p’, and suitable for use with, for example ‘keymap-set’. Then call up the documentation of key-valid-p and see this: (key-valid-p KEYS) Say whether KEYS is a valid key. A key is a string consisting of one or more key strokes. The key strokes are separated by single space characters. And now we finally know what is expected: a _string_ that describes a key. So, for example, if you want RET as the key, you need to type the literal string "" (without the quotes. My questions are: is this a reasonable UI for easy customization? Do we really expect our users to guess how to specify keys in this situation? Wouldn't it be better if some hint(s) to that effect were displayed by Custom? In GNU Emacs 29.0.60 (build 268, i686-pc-mingw32) of 2023-02-02 built on HOME-C4E4A596F7 Repository revision: be304bb3286eb27e1aa8248eb3904925ed73dfcb Repository branch: emacs-29 Windowing system distributor 'Microsoft Corp.', version 5.1.2600 System Description: Microsoft Windows XP Service Pack 3 (v5.1.0.2600) Configured using: 'configure -C --prefix=/d/usr --with-wide-int --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3'' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB Important settings: value of $LANG: ENU locale-coding-system: cp1255 Major mode: Custom Minor modes in effect: tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils tabify repeat find-func thingatpt help-fns radix-tree help-mode cus-edit pp cus-start cus-load icons wid-edit cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 67786 12255) (symbols 48 8168 0) (strings 16 22174 3089) (string-bytes 1 536088) (vectors 16 11452) (vector-slots 8 166311 16003) (floats 8 31 23) (intervals 40 384 92) (buffers 888 13))