]> code.delx.au - gnu-emacs/blobdiff - man/widget.texi
autoupdate
[gnu-emacs] / man / widget.texi
index 3a30f56c814888043d5a8d66d2047131a2e788f3..79ec7ab0d0b89f69d0091b12dd3d8f00d56a20be 100644 (file)
 @c %**end of header
 
 @copying
-Copyright @copyright{} 2000, 2002, 2003 Free Software Foundation, Inc.
+Copyright @copyright{} 2000, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
+under the terms of the GNU Free Documentation License, Version 1.2 or
 any later version published by the Free Software Foundation; with the
 Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
 ``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
@@ -112,7 +113,7 @@ supposed to fill out a number of fields, each of which has a specific
 meaning.  The user is not supposed to change or delete any of the text
 between the fields.  Examples of forms in Emacs are the @file{forms}
 package (of course), the customize buffers, the mail and news compose
-modes, and the @sc{html} form support in the @file{w3} browser.
+modes, and the @acronym{HTML} form support in the @file{w3} browser.
 
 @cindex widget library, why use it
 The advantages for a programmer of using the @code{widget} package to
@@ -140,7 +141,7 @@ extended to use the GUI features.  This means that your code using the
 widget library will also use the new graphic features automatically.
 @end enumerate
 
-In order to minimize the code that is loaded by users who does not
+In order to minimize the code that is loaded by users who do not
 create any widgets, the code has been split in two files:
 
 @cindex widget library, files
@@ -157,7 +158,7 @@ it will be autoloaded when needed.
 @comment  node-name,  next,  previous,  up
 @section User Interface
 
-A form consist of read only text for documentation and some fields,
+A form consists of read only text for documentation and some fields,
 where each field contains two parts, a tag and a value.  The tags are
 used to identify the fields, so the documentation can refer to the
 @samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an
@@ -194,7 +195,7 @@ Select one:
 @b{[Apply Form]} @b{[Reset Form]}
 @end example
 
-The top level widgets in is example are tagged @samp{Name},
+The top level widgets in this example are tagged @samp{Name},
 @samp{Choose}, @samp{Address}, @samp{_other work_}, @samp{Numbers},
 @samp{Select multiple}, @samp{Select one}, @samp{[Apply Form]}, and
 @samp{[Reset Form]}.  There are basically two things the user can do
@@ -213,14 +214,19 @@ middle of another field is prohibited.
 
 Editable text fields are created by the @code{editable-field} widget.
 
-An editable field must be surrounded by static text on both sides, that
-is, text that does not change in the lifetime of the widget.  If the
-field extends to the end of the line, the terminating line-feed character
-will count as the necessary static text on that end, but you will have
-to provide the static text before the field yourself.  The
-@code{:format} keyword is useful for generating the static text; for
-instance, if you give it a value of @code{"Name: %v"}, the "Name: " part
-will count as the static text.
+@strong{Warning:} In an @code{editable-field} widget, the editable
+field must not be adjacent to another widget---that won't work.
+You must put some text in between.  Either make this text part of
+the @code{editable-field} widget itself, or insert it with
+@code{widget-insert}.
+
+The @code{:format} keyword is useful for generating the necessary
+text; for instance, if you give it a value of @code{"Name: %v "},
+the @samp{Name: } part will provide the necessary separating text
+before the field and the trailing space will provide the
+separating text after the field.  If you don't include the
+@code{:size} keyword, the field will extend to the end of the
+line, and the terminating newline will provide separation after.
 
 The editing text fields are highlighted with the
 @code{widget-field-face} face, making them easy to find.
@@ -271,19 +277,19 @@ The list is created by the @code{editable-list} widget.
 @cindex embedded buttons
 @item Embedded Buttons
 The @samp{@b{_other work_}} is an example of an embedded
-button.  Embedded buttons are not associated with a fields, but can serve
+button.  Embedded buttons are not associated with any fields, but can serve
 any purpose, such as implementing hypertext references.  They are
 usually created by the @code{link} widget.
 @item The @samp{@b{[ ]}} and @samp{@b{[X]}} buttons
 Activating one of these will convert it to the other.  This is useful
-for implementing multiple-choice fields.  You can create it with the
+for implementing multiple-choice fields.  You can create them with the
 @code{checkbox} widget.
 @item The @samp{@b{( )}} and @samp{@b{(*)}} buttons
 Only one radio button in a @code{radio-button-choice} widget can be
 selected at any time.  When you invoke one of the unselected radio
 buttons, it will be selected and the previous selected radio button will
 become unselected.
-@item The @samp{@b{[Apply Form]}} @samp{@b{[Reset Form]}} buttons
+@item The @samp{@b{[Apply Form]}} and @samp{@b{[Reset Form]}} buttons
 These are explicit buttons made with the @code{push-button} widget.  The
 main difference from the @code{link} widget is that the buttons will be
 displayed as GUI buttons when possible.
@@ -310,7 +316,8 @@ buffer, plus you will have these additional commands:
 @deffn Command widget-forward &optional count
 Move point @var{count} buttons or editing fields forward.
 @end deffn
-@item @key{M-TAB}
+@item @kbd{M-@key{TAB}}
+@itemx @kbd{S-@key{TAB}}
 @deffn Command widget-backward &optional count
 Move point @var{count} buttons or editing fields backward.
 @end deffn
@@ -341,9 +348,11 @@ Interface}).
   (make-local-variable 'widget-example-repeat)
   (let ((inhibit-read-only t))
     (erase-buffer))
+  (remove-overlays)
   (widget-insert "Here is some documentation.\n\nName: ")
   (widget-create 'editable-field
                 :size 13
+                :format "%v " ; Text after the field!
                 "My Name")
   (widget-create 'menu-choice
                 :tag "Choose"
@@ -471,11 +480,11 @@ when not on a button.  By default this is @code{global-map}.
 @comment  node-name,  next,  previous,  up
 @section Basic Types
 
-The syntax of a type specification is given below:
+This is the general syntax of a type specification:
 
 @example
-NAME ::= (NAME [KEYWORD ARGUMENT]... ARGS)
-     |   NAME
+@var{name} ::= (@var{name} [@var{keyword} @var{argument}]... @var{args})
+     |   @var{name}
 @end example
 
 Where, @var{name} is a widget name, @var{keyword} is the name of a
@@ -483,7 +492,7 @@ property, @var{argument} is the value of the property, and @var{args}
 are interpreted in a widget specific way.
 
 @cindex keyword arguments
-The following keyword arguments that apply to all widgets:
+The following keyword arguments apply to all widgets:
 
 @table @code
 @vindex value@r{ keyword}
@@ -586,6 +595,11 @@ is either a string to display, a function of one argument, the widget,
 which should return a string to display, or a form that evaluates to
 such a string.
 
+@vindex follow-link@r{ keyword}
+@item :follow-link
+Specifies how to interpret a @key{mouse-1} click on the widget.
+@xref{Links and Mouse-1,,, elisp, the Emacs Lisp Reference Manual}.
+
 @vindex indent@r{ keyword}
 @item :indent
 An integer indicating the absolute number of spaces to indent children
@@ -680,7 +694,7 @@ image, with either a @file{.xpm} (if supported) or @file{.xbm} extension.
 @end deffn
 
 @deffn{User Option} widget-glyph-enable
-If non-nil, allow glyphs to appear on displays where they are supported.
+If non-@code{nil}, allow glyphs to appear on displays where they are supported.
 @end deffn
 
 
@@ -710,7 +724,7 @@ If non-nil, allow glyphs to appear on displays where they are supported.
 Syntax:
 
 @example
-TYPE ::= (link [KEYWORD ARGUMENT]...  [ VALUE ])
+@var{type} ::= (link [@var{keyword} @var{argument}]...  [ @var{value} ])
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -735,11 +749,11 @@ String to suffix links.
 Syntax:
 
 @example
-TYPE ::= (url-link [KEYWORD ARGUMENT]...  URL)
+@var{type} ::= (url-link [@var{keyword} @var{argument}]...  @var{url})
 @end example
 
 @findex browse-url-browser-function@r{, and @code{url-link} widget}
-When this link is invoked, the @sc{www} browser specified by
+When this link is invoked, the @acronym{WWW} browser specified by
 @code{browse-url-browser-function} will be called with @var{url}.
 
 @node info-link, push-button, url-link, Basic Types
@@ -750,7 +764,7 @@ When this link is invoked, the @sc{www} browser specified by
 Syntax:
 
 @example
-TYPE ::= (info-link [KEYWORD ARGUMENT]...  ADDRESS)
+@var{type} ::= (info-link [@var{keyword} @var{argument}]...  @var{address})
 @end example
 
 When this link is invoked, the built-in Info reader is started on
@@ -764,7 +778,7 @@ When this link is invoked, the built-in Info reader is started on
 Syntax:
 
 @example
-TYPE ::= (push-button [KEYWORD ARGUMENT]...  [ VALUE ])
+@var{type} ::= (push-button [@var{keyword} @var{argument}]...  [ @var{value} ])
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -789,11 +803,11 @@ String to suffix push buttons.
 Syntax:
 
 @example
-TYPE ::= (editable-field [KEYWORD ARGUMENT]... [ VALUE ])
+@var{type} ::= (editable-field [@var{keyword} @var{argument}]... [ @var{value} ])
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
-property.  The value should be a string, which will be inserted in
+property.  The value should be a string, which will be inserted in the
 field.  This widget will match all string values.
 
 The following extra properties are recognized:
@@ -813,7 +827,7 @@ Face used for highlighting the editable field.  Default is
 @item :secret
 Character used to display the value.  You can set this to e.g.@: @code{?*}
 if the field contains a password or other secret information.  By
-default, this is nil, and the value is not secret.
+default, this is @code{nil}, and the value is not secret.
 
 @vindex valid-regexp@r{ keyword}
 @item :valid-regexp
@@ -849,7 +863,7 @@ does not rebind the @key{RET} key.
 Syntax:
 
 @example
-TYPE ::= (menu-choice [KEYWORD ARGUMENT]... TYPE ... )
+@var{type} ::= (menu-choice [@var{keyword} @var{argument}]... @var{type} ... )
 @end example
 
 The @var{type} argument represents each possible choice.  The widget's
@@ -865,12 +879,12 @@ specified @var{type} arguments.
 
 @vindex case-fold@r{ keyword}
 @item :case-fold
-Set this to nil if you don't want to ignore case when prompting for a
+Set this to @code{nil} if you don't want to ignore case when prompting for a
 choice through the minibuffer.
 
 @vindex children@r{ keyword}
 @item :children
-A list whose @code{car} is the widget representing the currently chosen
+A list whose @sc{car} is the widget representing the currently chosen
 type in the buffer.
 
 @vindex choice@r{ keyword}
@@ -890,13 +904,13 @@ The list of types.
 Syntax:
 
 @example
-TYPE ::= (radio-button-choice [KEYWORD ARGUMENT]...  TYPE ... )
+@var{type} ::= (radio-button-choice [@var{keyword} @var{argument}]...  @var{type} ... )
 @end example
 
-The @var{type} argument represents each possible choice.  The widget's
-value will be that of the chosen @var{type} argument.  This widget will
-match any value matching at least one of the specified @var{type}
-arguments.
+The component types specify the choices, with one radio button for
+each.  The widget's value will be that of the chosen @var{type}
+argument.  This widget matches any value that matches at least one of
+the specified @var{type} arguments.
 
 The following extra properties are recognized.
 
@@ -957,7 +971,7 @@ you call @code{widget-delete}.
 Syntax:
 
 @example
-ITEM ::= (item [KEYWORD ARGUMENT]... VALUE)
+@var{item} ::= (item [@var{keyword} @var{argument}]... @var{value})
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -972,7 +986,7 @@ buffer.  This widget will only match the specified value.
 Syntax:
 
 @example
-ITEM ::= (choice-item [KEYWORD ARGUMENT]... VALUE)
+@var{item} ::= (choice-item [@var{keyword} @var{argument}]... @var{value})
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -989,7 +1003,7 @@ the specified value.
 Syntax:
 
 @example
-TYPE ::= (toggle [KEYWORD ARGUMENT]...)
+@var{type} ::= (toggle [@var{keyword} @var{argument}]...)
 @end example
 
 The widget has two possible states, @samp{on} and @samp{off}, which
@@ -1025,7 +1039,7 @@ This widget has two possible states, @samp{selected} and
 Syntax:
 
 @example
-TYPE ::= (checkbox [KEYWORD ARGUMENT]...)
+@var{type} ::= (checkbox [@var{keyword} @var{argument}]...)
 @end example
 
 @node checklist, editable-list, checkbox, Basic Types
@@ -1036,7 +1050,7 @@ TYPE ::= (checkbox [KEYWORD ARGUMENT]...)
 Syntax:
 
 @example
-TYPE ::= (checklist [KEYWORD ARGUMENT]...  TYPE ... )
+@var{type} ::= (checklist [@var{keyword} @var{argument}]...  @var{type} ... )
 @end example
 
 The @var{type} arguments represent each checklist item.  The widget's
@@ -1064,9 +1078,9 @@ Insert a literal @samp{%}.
 @item :greedy
 Usually a checklist will only match if the items are in the exact
 sequence given in the specification.  By setting @code{:greedy} to
-non-nil, it will allow the items to come in any sequence.  However, if
-you extract the value they will be in the sequence given in the
-checklist, i.e.@: the original sequence is forgotten.
+non-@code{nil}, it will allow the items to come in any sequence.
+However, if you extract the value they will be in the sequence given
+in the checklist, i.e.@: the original sequence is forgotten.
 
 @vindex button-args@r{ keyword}
 @item :button-args
@@ -1094,7 +1108,7 @@ The list of types.
 Syntax:
 
 @example
-TYPE ::= (editable-list [KEYWORD ARGUMENT]... TYPE)
+@var{type} ::= (editable-list [@var{keyword} @var{argument}]... @var{type})
 @end example
 
 The value is a list, where each member represents one widget of type
@@ -1141,7 +1155,7 @@ The widgets representing the elements of the list.
 
 @vindex args@r{ keyword}
 @item :args
-List whose @code{car} is the type of the list elements.
+List whose @sc{car} is the type of the list elements.
 @end table
 
 @node group,  , editable-list, Basic Types
@@ -1154,7 +1168,7 @@ This widget simply group other widgets together.
 Syntax:
 
 @example
-TYPE ::= (group [KEYWORD ARGUMENT]... TYPE...)
+@var{type} ::= (group [@var{keyword} @var{argument}]... @var{type}...)
 @end example
 
 The value is a list, with one member for each @var{type}.
@@ -1164,7 +1178,7 @@ The value is a list, with one member for each @var{type}.
 @section Sexp Types
 @cindex sexp types
 
-A number of widgets for editing @dfn{s-expressions} (lisp types), sexp
+A number of widgets for editing @dfn{s-expressions} (Lisp types), sexp
 for short, are also available.  These basically fall in several
 categories described in this section.
 
@@ -1180,14 +1194,14 @@ categories described in this section.
 @subsection The Constant Widgets
 @cindex constant widgets
 
-The @code{const} widget can contain any lisp expression, but the user is
+The @code{const} widget can contain any Lisp expression, but the user is
 prohibited from editing it, which is mainly useful as a component of one
 of the composite widgets.
 
 The syntax for the @code{const} widget is:
 
 @example
-TYPE ::= (const [KEYWORD ARGUMENT]...  [ VALUE ])
+@var{type} ::= (const [@var{keyword} @var{argument}]...  [ @var{value} ])
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -1217,13 +1231,13 @@ An immutable symbol that is bound as a function.
 @subsection Generic Sexp Widget
 @cindex generic sexp widget
 
-The @code{sexp} widget can contain any lisp expression, and allows the
+The @code{sexp} widget can contain any Lisp expression, and allows the
 user to edit it inline in the buffer.
 
 The syntax for the @code{sexp} widget is:
 
 @example
-TYPE ::= (sexp [KEYWORD ARGUMENT]...  [ VALUE ])
+@var{type} ::= (sexp [@var{keyword} @var{argument}]...  [ @var{value} ])
 @end example
 
 @deffn Widget sexp
@@ -1247,7 +1261,7 @@ following widgets.
 The syntax for all the atoms are:
 
 @example
-TYPE ::= (NAME [KEYWORD ARGUMENT]...  [ VALUE ])
+@var{type} ::= (@var{construct} [@var{keyword} @var{argument}]...  [ @var{value} ])
 @end example
 
 The @var{value}, if present, is used to initialize the @code{:value}
@@ -1270,16 +1284,14 @@ Allows you to enter a character in an editable field.
 @end deffn
 
 @deffn Widget file
-Allows you to edit a file name in an editable field.  If you invoke
-the tag button, you can edit the file name in the mini-buffer with
-completion.
+Allows you to edit a file name in an editable field.
 
 Keywords:
 @table @code
 @vindex must-match@r{ keyword}
 @item :must-match
-If this is set to non-nil, only existing file names will be allowed in
-the minibuffer.
+If this is set to non-@code{nil}, only existing file names will be
+allowed in the minibuffer.
 @end table
 @end deffn
 
@@ -1289,7 +1301,7 @@ Similar to the @code{file} widget.
 @end deffn
 
 @deffn Widget symbol
-Allows you to edit a lisp symbol in an editable field.
+Allows you to edit a Lisp symbol in an editable field.
 @end deffn
 
 @deffn Widget function
@@ -1309,8 +1321,8 @@ Allows you to edit a number in an editable field.
 @end deffn
 
 @deffn Widget boolean
-Allows you to edit a boolean.  In lisp this means a variable which is
-either nil meaning false, or non-nil meaning true.
+Allows you to edit a boolean.  In Lisp this means a variable which is
+either @code{nil} meaning false, or non-@code{nil} meaning true.
 @end deffn
 
 
@@ -1319,10 +1331,10 @@ either nil meaning false, or non-nil meaning true.
 @subsection Composite Sexp Widgets
 @cindex composite sexp widgets
 
-The syntax for the composite widget is:
+The syntax for the composite widget construct is:
 
 @example
-TYPE ::= (NAME [KEYWORD ARGUMENT]...  COMPONENT...)
+@var{type} ::= (@var{construct} [@var{keyword} @var{argument}]...  @var{component}...)
 @end example
 
 @noindent
@@ -1330,30 +1342,54 @@ where each @var{component} must be a widget type.  Each component widget
 will be displayed in the buffer, and will be editable by the user.
 
 @deffn Widget cons
-The value of a @code{cons} widget is a cons-cell where the @code{car} is
-the value of the first component and the @code{cdr} is the value of the
-second component.  There must be exactly two components.
+The value of a @code{cons} widget must be a cons-cell whose @sc{car} 
+and @sc{cdr} have two specified types.  It uses this syntax:
+
+@example
+@var{type} ::= (cons [@var{keyword} @var{argument}]...  @var{car-type} @var{cdr-type})
+@end example
+@end deffn
+
+@deffn Widget choice
+The value matched by a @code{choice} widget must have one of a fixed
+set of types.  The widget's syntax is as follows:
+
+@example
+@var{type} ::= (choice [@var{keyword} @var{argument}]...  @var{type} ... )
+@end example
+
+The value of a @code{choice} widget can be anything that matches any of the
+@var{types}.
 @end deffn
 
 @deffn Widget list
-The value of a @code{list} widget is a list containing the value of
-each of its component.
+The value of a @code{list} widget must be a list whose element types
+match the specified component types:
+
+@example
+@var{type} ::= (list [@var{keyword} @var{argument}]...  @var{component-type}...)
+@end example
+
+Thus, @code{(list string number)} matches lists of two elements,
+the first being a string and the second being a number.
 @end deffn
 
 @deffn Widget vector
-The value of a @code{vector} widget is a vector containing the value of
-each of its component.
+The @code{vector} widget is like the @code{list} widget but matches
+vectors instead of lists.  Thus, @code{(vector string number)} matches
+vectors of two elements, the first being a string and the second being
+a number.
 @end deffn
 
 The above suffice for specifying fixed size lists and vectors.  To get
 variable length lists and vectors, you can use a @code{choice},
-@code{set}, or @code{repeat} widgets together with the @code{:inline}
-keywords.  If any component of a composite widget has the @code{:inline}
-keyword set, its value must be a list which will then be spliced into
-the composite.  For example, to specify a list whose first element must
-be a file name, and whose remaining arguments should either by the
-symbol @code{t} or two files, you can use the following widget
-specification:
+@code{set}, or @code{repeat} widget together with the @code{:inline}
+keyword.  If any component of a composite widget has the
+@code{:inline} keyword set, its value must be a list which will then
+be spliced into the composite.  For example, to specify a list whose
+first element must be a file name, and whose remaining elements should
+either be the symbol @code{t} or two strings (file names), you can use
+the following widget specification:
 
 @example
 (list file
@@ -1364,29 +1400,32 @@ specification:
 @end example
 
 The value of a widget of this type will either have the form
-@code{(file t)} or @code{(file string string)}.
-
-This concept of inline is probably hard to understand.  It was certainly
-hard to implement, so instead of confusing you more by trying to explain
-it here, I'll just suggest you meditate over it for a while.
+@code{(file t)} or @code{(file @var{string} @var{string})}.
 
-@deffn Widget choice
-Allows you to edit a sexp which may have one of a fixed set of types.
-It is currently implemented with the @code{choice-menu} basic widget,
-and has a similar syntax.
-@end deffn
+This concept of @code{:inline} may be hard to understand.  It was
+certainly hard to implement, so instead of confusing you more by
+trying to explain it here, I'll just suggest you meditate over it for
+a while.
 
 @deffn Widget set
-Allows you to specify a type which must be a list whose elements all
-belong to given set.  The elements of the list are not significant.
-This is implemented on top of the @code{checklist} basic widget, and has
-a similar syntax.
+Specifies a type whose values are the lists whose elements all belong
+to a given set.  The order of elements of the list is not significant.
+Here's the syntax:
+
+@example
+@var{type} ::= (set [@var{keyword} @var{argument}]...  @var{permitted-element} ... )
+@end example
+
+Use @code{const} to specify each permitted element, like this:
+@code{(set (const a) (const b))}.
 @end deffn
 
 @deffn Widget repeat
-Allows you to specify a variable length list whose members are all of
-the same type.  Implemented on top of the @code{editable-list} basic
-widget, and has a similar syntax.
+Specifies a list of any number of elements that fit a certain type.
+
+@example
+@var{type} ::= (repeat [@var{keyword} @var{argument}]...  @var{type})
+@end example
 @end deffn
 
 @node Widget Properties, Defining New Widgets, Sexp Types, Top
@@ -1432,7 +1471,8 @@ In @var{widget} return the value for @var{property}.
 @end defun
 
 @defun widget-member widget property
-Non-nil if @var{widget} has a value (even nil) for property @var{property}.
+Non-@code{nil} if @var{widget} has a value (even @code{nil}) for
+property @var{property}.
 @end defun
 
 Occasionally it can be useful to know which kind of widget you have,
@@ -1475,7 +1515,7 @@ all its ancestors.
 @end lisp
 
 You can check if a widget has been made inactive by examining the value
-of the @code{:inactive} keyword.  If this is non-nil, the widget itself
+of the @code{:inactive} keyword.  If this is non-@code{nil}, the widget itself
 has been deactivated.  This is different from using the @code{:active}
 keyword, in that the latter tells you if the widget @strong{or} any of
 its ancestors have been deactivated.  Do not attempt to set the
@@ -1500,7 +1540,7 @@ Define a new widget type named @var{name} from @code{class}.
 @var{name} and class should both be symbols, @code{class} should be one
 of the existing widget types.
 
-The third argument @var{DOC} is a documentation string for the widget.
+The third argument @var{doc} is a documentation string for the widget.
 
 After the new widget has been defined, the following two calls will
 create identical widgets:
@@ -1653,7 +1693,7 @@ Function to prompt for a value in the minibuffer.  The function should
 take four arguments, @var{widget}, @var{prompt}, @var{value}, and
 @var{unbound} and should return a value for widget entered by the user.
 @var{prompt} is the prompt to use.  @var{value} is the default value to
-use, unless @var{unbound} is non-nil, in which case there is no default
+use, unless @var{unbound} is non-@code{nil}, in which case there is no default
 value.  The function should read the value using the method most natural
 for this widget, and does not have to check that it matches.
 @end table
@@ -1719,7 +1759,7 @@ Keymap used in @code{widget-minor-mode}.
 @defun widget-prompt-value widget prompt [ value unbound ]
 Prompt for a value matching @var{widget}, using @var{prompt}.
 The current value is assumed to be @var{value}, unless @var{unbound} is
-non-nil.@refill
+non-@code{nil}.@refill
 @end defun
 
 @defun widget-get-sibling widget