From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.devel Subject: Getting more info on a variable in Customize buffers Date: Sat, 1 Jan 2005 22:41:38 -0800 Message-ID: NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1104648170 4045 80.91.229.6 (2 Jan 2005 06:42:50 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 2 Jan 2005 06:42:50 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jan 02 07:42:44 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CkzRr-0003qj-00 for ; Sun, 02 Jan 2005 07:42:44 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Ckzcw-0005Y3-RX for ged-emacs-devel@m.gmane.org; Sun, 02 Jan 2005 01:54:10 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Ckzco-0005X4-UX for emacs-devel@gnu.org; Sun, 02 Jan 2005 01:54:03 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Ckzcn-0005WF-Ct for emacs-devel@gnu.org; Sun, 02 Jan 2005 01:54:01 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Ckzcn-0005WC-8D for emacs-devel@gnu.org; Sun, 02 Jan 2005 01:54:01 -0500 Original-Received: from [141.146.126.231] (helo=agminet04.oracle.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1CkzR6-0006qF-As for emacs-devel@gnu.org; Sun, 02 Jan 2005 01:41:56 -0500 Original-Received: from agminet04.oracle.com (localhost [127.0.0.1]) by agminet04.oracle.com (Switch-3.1.4/Switch-3.1.0) with ESMTP id j026ftcV007266 for ; Sat, 1 Jan 2005 22:41:55 -0800 Original-Received: from rgmsgw301.us.oracle.com (rgmsgw301.us.oracle.com [138.1.191.50]) by agminet04.oracle.com (Switch-3.1.4/Switch-3.1.0) with ESMTP id j026fsWg007245 for ; Sat, 1 Jan 2005 22:41:54 -0800 Original-Received: from rgmsgw301.us.oracle.com (localhost [127.0.0.1]) by rgmsgw301.us.oracle.com (Switch-3.1.4/Switch-3.1.0) with ESMTP id j026frvu025334 for ; Sat, 1 Jan 2005 23:41:53 -0700 Original-Received: from dradamslap (dhcp-amer-csvpn-gw2-141-144-81-107.vpn.oracle.com [141.144.81.107]) by rgmsgw301.us.oracle.com (Switch-3.1.4/Switch-3.1.0) with SMTP id j026fpTF025322 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Sat, 1 Jan 2005 23:41:53 -0700 Original-To: X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 Importance: Normal X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:31678 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:31678 Customize is the preferred way to alter user variables. It also provides information about user variables. But it seems to me that it is in some ways less helpful than `C-h v'. If I do `C-h v ediff-before-setup-windows-hook', the *Help* buffer gives me, in addition to the variable's value and the doc string: 1) a link to Customize the variable and 2) a link to the source code. And I can search on the variable name in Info and in the source code to learn more about the variable. However: 1) If I click Customize in the *Help* buffer from `C-h v', I arrive at a Customize buffer for only that variable, where there is no link to the custom group of the variable, so I can't see how it might be related to other variables in the group. It might be that what I really need is a similarly named variable, but I can't browse the group to find it. In fact, I can't even see what custom group the variable belongs to (no group name is indicated). 2) If I somehow get to the Customize group (ediff-hook) to customize the same variable, without coming from the `C-h v' *Help* buffer: 2a) The variable name does not appear as such. Instead, the name is prettified using title-case and replacing dashes with spaces. A variable with a mixed-case name like `Info-enable-edit' is indistiguishable in this format from one that is all lowercase. There is nothing that indicates to a user what the real name of the variable is and that the displayed name is a transformation of the real name. This is important because it is the real variable name that is the user's link to more information; the title-case headline name is, at best, just a pretty face. It is only with the real variable name that you can use apropos or search the Info doc or the source code or even the rest of the Customize buffer (for references from other doc strings). It is the real variable name that serves everywhere to refer to the variable. If you understand that there _is_ a variable named similarly to the pretty title (already not that obvious), and you understand the name transformation (again, not that obvious), then you can search for more information on the variable. But you can't use `C-s C-w' to grab the name for searching, and you can't use `C-h v' with the cursor on the pretty name to pick up the real name. For me, it would be more useful to show the real variable name than the title-case headline-style pretty name. 2b) There is no link to the source code that defines the variable. You need to derive the real variable name from the pretty name and type that into `C-h v', just to get a link to the source code. Getting to the definition of a variable or function is one of the great strengths of Emacs over other programs. Doc strings are great, but they don't always substitute for looking at the real definitions. In Emacs, there is a progression from doc to code, and the two reinforce each other. Lack of a link to the defining code is an obstacle to that reinforcement. 2c) The variable value does not appear in its Lisp form. In some cases, it is possible to see the Lisp form, but in other cases it cannot be seen. Since many Emacs users also program Emacs Lisp, it would be good to provide a link (button) that displays the Lisp value, exactly as shown in `C-v'. Yes, Customize was designed so you don't have to be a Lisp programmer, but it wouldn't hurt to make Lisp info available on demand. All of this means that you are handicapped using Customize: you have less information accessible to help you understand a variable and its relations to commands and other variables. Customize should provide more information than `C-h v', not less, even if that info is revealed only on demand. The variable name is the most important piece of info in the Customize buffer. With it, you can obtain most of the other info displayed there (`C-h v'). If there is one thing the Customize buffer should show clearly, literally, it's the variable name. So, I suggest: - To the Customize buffer for a group containing a variable, we add: 1) the real variable name, in such a way that it can be copied for pasting and searching and picked up by variable-at-point 2) a link to the variable definition in the source code 3) a button to display the Lisp value of the variable (Hide/ Show/Show Lisp would do the trick). 4) perhaps a link to the variable's explanation in Info (when appropriate) These could all be hidden under the More button, but it would be better if the variable name were not hidden, so it can be the target of a search. Alternatively, if the real name were hidden under More, we could add a single button to expand all the More buttons, to enable search across all the More information. Expand All for values might also be useful (though less so), for the same reason. - To the Customize buffer for an individual variable only, we add: 1) everything listed above for the Customize group buffer 2) a link to the Customize group buffer Alternatively, we could eliminate the Customize buffer for an individual variable altogether. Clicking the Customize link in *Help* would instead take you to the correct entry in the Customize group buffer. That would have the advantage of providing more context and related information.