### widget-example: Create the Widgets from the Widget Manual Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Programming-Example.html This Emacs Lisp function creates a buffer named "*Widget Example*" and populates it with various widgets: editable fields, a menu choice, a link, an editable list, checkboxes, a radio button choice, and push buttons. It requires the 'widget and 'wid-edit libraries. The function is interactive and sets up the widget keymap and setup. ```Emacs Lisp (require 'widget) (eval-when-compile (require 'wid-edit)) (defvar widget-example-repeat) (defun widget-example () "Create the widgets from the Widget manual." (interactive) (switch-to-buffer "*Widget Example*") (kill-all-local-variables) (make-local-variable 'widget-example-repeat) (let ((inhibit-read-only t)) (erase-buffer)) (remove-overlays) (widget-insert "Here is some documentation.\n\n") (widget-create 'editable-field :size 13 :format "Name: %v " ; Text after the field! "My Name") (widget-create 'menu-choice :tag "Choose" :value "This" :help-echo "Choose me, please!" :notify (lambda (widget &rest ignore) (message "%s is a good choice!" (widget-value widget))) '(item :tag "This option" :value "This") '(choice-item "That option") '(editable-field :menu-tag "No option" "Thus option")) (widget-create 'editable-field :format "Address: %v" "Some Place\nIn some City\nSome country.") (widget-insert "\nSee also ") (widget-create 'link :notify (lambda (&rest ignore) (widget-value-set widget-example-repeat '("En" "To" "Tre")) (widget-setup)) "other work") (widget-insert " for more information.\n\nNumbers: count to three below\n") (setq widget-example-repeat (widget-create 'editable-list :entry-format "%i %d %v" :notify (lambda (widget &rest ignore) (let ((old (widget-get widget ':example-length)) (new (length (widget-value widget)))) (unless (eq old new) (widget-put widget ':example-length new) (message "You can count to %d." new)))) :value '("One" "Eh, two?" "Five!") '(editable-field :value "three"))) (widget-insert "\n\nSelect multiple:\n\n") (widget-create 'checkbox t) (widget-insert " This\n") (widget-create 'checkbox nil) (widget-insert " That\n") (widget-create 'checkbox :notify (lambda (&rest ignore) (message "Tickle")) t) (widget-insert " Thus\n\nSelect one:\n\n") (widget-create 'radio-button-choice :value "One" :notify (lambda (widget &rest ignore) (message "You selected %s" (widget-value widget))) '(item "One") '(item "Another One.") '(item "A Final One.")) (widget-insert "\n") (widget-create 'push-button :notify (lambda (&rest ignore) (if (= (length (widget-value widget-example-repeat)) 3) (message "Congratulation!") (error "Three was the count!"))) "Apply Form") (widget-insert " ") (widget-create 'push-button :notify (lambda (&rest ignore) (widget-example)) "Reset Form") (widget-insert "\n") (use-local-map widget-keymap) (widget-setup)) ``` -------------------------------- ### Example: Create emacs-library-link widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/emacs_002dlibrary_002dlink.html Creates an emacs-library-link widget using widget-create. The example sets button prefix and suffix to empty strings, sets a tag, and links to the file 'wid-edit.el'. ```lisp (widget-create 'emacs-library-link :button-prefix "" :button-suffix "" :tag "Show yourself, Widget Library!" "wid-edit.el") ``` -------------------------------- ### Creating an info-link widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/info_002dlink.html An example of creating an info-link widget using widget-create. ```lisp (widget-create 'info-link :button-prefix "" :button-suffix "" :tag "Browse this manual" "(widget) info-link"))) ``` -------------------------------- ### Example: Creating an item widget with widget-create Source: https://www.gnu.org/software/emacs/manual/html_node/widget/item.html Example of using widget-create to create an item widget with a tag and a formatted time string as its value. ```lisp (widget-create 'item :tag "Today is" :format "%t: %v\n" (format-time-string "%d-%m-%Y")) ``` -------------------------------- ### Example: widget-create with function-link Source: https://www.gnu.org/software/emacs/manual/html_node/widget/function_002dlink.html Creates a function-link widget with a custom tag and button prefix/suffix, and sets the action to describe the function. ```lisp (widget-create 'function-link :button-prefix "" :button-suffix "" :tag "Describe the function that gets called" #'widget-function-link-action) ``` -------------------------------- ### Create a link Widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/link.html An example of creating a link widget that triggers a mail composition window when clicked. ```elisp (widget-create 'link :button-prefix "" :button-suffix "" :tag "Mail yourself" :action #'(lambda (widget &optional _event) (compose-mail-other-window (widget-value widget))) user-mail-address) ``` -------------------------------- ### Example: Creating a toggle widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/toggle.html An example that inserts a toggle widget and an editable-field widget. The toggle's `:notify` function activates or deactivates the editable field based on the toggle's value. ```emacs-lisp (widget-insert "Press the button to activate/deactivate the field: ") (widget-create 'toggle :notify (lambda (widget &rest _ignored) (widget-apply widget-example-field (if (widget-value widget) :activate :deactivate)))) (widget-insert "\n") ``` ```emacs-lisp (setq widget-example-field (widget-create 'editable-field :deactivate (lambda (widget) (widget-specify-inactive widget (widget-field-start widget) (widget-get widget :to))))) (widget-apply widget-example-field :deactivate))) ``` -------------------------------- ### Create a variable-link widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/variable_002dlink.html An example of creating a variable-link widget that links to the widget-button-prefix variable. ```elisp (widget-create 'variable-link :button-prefix "" :button-suffix "" :tag "What setting controls button-prefix?" 'widget-button-prefix) ``` -------------------------------- ### Example: create file-link widgets for .el files Source: https://www.gnu.org/software/emacs/manual/html_node/widget/file_002dlink.html Creates a file-link widget for each .el file in the user's Emacs directory, using empty button prefixes and suffixes, and inserts a newline after each widget. ```lisp (let ((elisp-files (directory-files user-emacs-directory t ".el$"))) (dolist (file elisp-files) (widget-create 'file-link :button-prefix "" :button-suffix "" file) (widget-insert "\n"))) ``` -------------------------------- ### Example: creating a checklist widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/checklist.html Creates a checklist widget with two items (tool-bar-mode and menu-bar-mode). The :notify function toggles the value of the sibling widget. The :value specifies the initially checked items. ```lisp (widget-create 'checklist :notify (lambda (widget child &optional _event) (funcall (widget-value (widget-get-sibling child)) 'toggle)) :value (list 'tool-bar-mode 'menu-bar-mode) '(item :tag "Tool-bar" tool-bar-mode) '(item :tag "Menu-bar" menu-bar-mode))) ``` -------------------------------- ### Create a face-link widget with widget-create Source: https://www.gnu.org/software/emacs/manual/html_node/widget/face_002dlink.html Example of creating a face-link widget using widget-create. It sets button prefix and suffix to empty strings, provides a tag, and uses the widget-button symbol. ```lisp (widget-create 'face-link :button-prefix "" :button-suffix "" :tag "Which face is this one?" 'widget-button) ``` -------------------------------- ### info-link Widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/info_002dlink.html A widget to represent a link to an info file. It overrides the :action property to start the built-in Info reader on the given address when invoked. ```APIDOC ## info-link Widget ### Description A widget to represent a link to an info file. Its super is the `link` widget. It overrides the `:action` property to a function that starts the built-in Info reader on the given address when invoked. ### Syntax ``` type ::= (info-link [keyword argument]... address) ``` ### Parameters - **address** (string) - Required - The address of the info file to open. - **keyword arguments** - Optional - Additional keyword arguments accepted by the widget, such as `:button-prefix`, `:button-suffix`, and `:tag`. ### Example ```elisp (widget-create 'info-link :button-prefix "" :button-suffix "" :tag "Browse this manual" "(widget) info-link") ``` ``` -------------------------------- ### Create an emacs-commentary-link widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/emacs_002dcommentary_002dlink.html Creates an emacs-commentary-link widget pointing to the Comment section of 'cus-edit.el'. The example sets button prefixes/suffixes to empty strings and uses a custom tag. ```lisp (widget-create 'emacs-commentary-link :button-prefix "" :button-suffix "" :tag "Check our good friend Customize" "cus-edit.el") ``` -------------------------------- ### widget-echo-help Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Utilities.html Displays help-echo text for the widget at position pos. Uses the value of :help-echo; if it is a function, calls it to get a string, otherwise evals it. ```APIDOC ## widget-echo-help ### Description Display help-echo text for the widget at pos. Uses the value of :help-echo. If it is a function, it calls it to get a string. Otherwise, it evals it. ### Function Signature `widget-echo-help` pos ### Parameters - **pos** - The position of the widget. ### Return Value - None specified. ``` -------------------------------- ### url-link widget creation Source: https://www.gnu.org/software/emacs/manual/html_node/widget/url_002dlink.html Creates a url-link widget that displays a button linking to a web page. The example shows how to customize the button face, format, and action to mark the link as visited and open the URL. ```APIDOC ## url-link widget ### Description A widget to represent a link to a web page. Its super is the `link` widget. It overrides the `:action` property to open up the url specified. ### Syntax ``` type ::= (url-link [keyword argument]... url) ``` ### Example ``` (widget-create 'url-link :button-prefix "" :button-suffix "" ;; Return appropriate face. :button-face-get (lambda (widget) (if (widget-get widget :visited) 'link-visited 'link)) :format "%[%t%]" :tag "Browse this manual" :action (lambda (widget &optional _event) (widget-put widget :visited t) ;; Takes care of redrawing the widget. (widget-value-set widget (widget-value widget)) ;; And then call the original function. (widget-url-link-action widget)) "https://www.gnu.org/software/emacs/manual/html_mono/widget.html") ``` ### Parameters - **url** (string) - Required - The URL of the web page to link to. - **:button-prefix** (string) - Optional - Prefix for the button. - **:button-suffix** (string) - Optional - Suffix for the button. - **:button-face-get** (function) - Optional - Function to determine the face of the button. - **:format** (string) - Optional - Format string for the widget. - **:tag** (string) - Optional - Tag text for the widget. - **:action** (function) - Optional - Function to call when the widget is activated. ``` -------------------------------- ### widget-setup Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Setting-Up-the-Buffer.html Sets up the current buffer so that editable widgets can be edited. Should be called after creating all widgets and before allowing user interaction. ```APIDOC ## widget-setup ### Description Setup the current buffer, so that editable widgets can be edited. This should be called after creating all the widgets and before allowing the user to edit them. ### Function Signature widget-setup ### Parameters None. ### Returns None. ``` -------------------------------- ### :deactivate Source: https://www.gnu.org/software/emacs/manual/html_node/widget/default.html Function that takes a widget and makes it inactive for user modifications. If you modify a widget that is not active, you should make sure the :deactivate function gets called again after the modifications. ```APIDOC ## :deactivate ### Description Function that takes a widget and makes it inactive for user modifications. If you modify a widget that is not active, you should make sure the :deactivate function gets called again after the modifications. ### Parameters - **widget** - The widget to deactivate. ``` -------------------------------- ### url-link widget syntax Source: https://www.gnu.org/software/emacs/manual/html_node/widget/url_002dlink.html Defines the syntax for the url-link widget type: a list starting with the symbol url-link, followed by optional keyword arguments and a url string. ```lisp type ::= (url-link [keyword argument]... url) ``` -------------------------------- ### widget-browse-at Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Inspecting-Widgets.html Creates a widget browser for the widget at a given buffer position. When called interactively, uses the position of point. ```APIDOC ## widget-browse-at ### Description Creates a widget browser for the widget at the specified position. When called interactively, uses the position of point. ### Method Command ### Signature `widget-browse-at pos` ### Parameters - **pos** - Buffer position where the widget is located. ### Usage - **Interactive**: Uses the position of point. - **Lisp**: Pass the position as an argument. ### Notes Provides a way to inspect the widget at a specific location in the buffer. ``` -------------------------------- ### Syntax for emacs-library-link widget type Source: https://www.gnu.org/software/emacs/manual/html_node/widget/emacs_002dlibrary_002dlink.html Defines the syntax for the emacs-library-link widget type. The type is a list starting with the symbol emacs-library-link, followed by optional keyword arguments and a file argument. ```lisp type ::= (emacs-library-link [keyword argument]... file) ``` -------------------------------- ### widget-describe Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Inspecting-Widgets.html Describes the widget at point, or a specified widget or position when called from Lisp. Sets up a help buffer with information about the widget's action functions and links to browse it. ```APIDOC ## widget-describe ### Description Describes the widget at point, or a specified widget or position when called from Lisp. Sets up a help buffer with information about the widget's `:action` and `:mouse-down-action` functions, and provides links to browse it in more detail. ### Method Command ### Signature `widget-describe &optional widget-or-pos` ### Parameters - **widget-or-pos** (optional) - The widget to describe or a buffer position where a widget is present. If `nil`, the widget at point is described. ### Usage - **Interactive**: Describes the widget at point. - **Lisp**: Pass a widget or position as `widget-or-pos`. ### Notes Provides a help buffer with details about the widget's action functions and links to `widget-browse` commands. ``` -------------------------------- ### define-widget equivalence: widget-create name vs apply widget-create class args Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Defining-New-Widgets.html Shows that after defining a widget type with define-widget, the two calls create identical widgets. The first uses the new name, the second applies the class with the same args. ```emacs-lisp (widget-create name) ``` ```emacs-lisp (apply widget-create class args) ``` -------------------------------- ### widget-at Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Working-with-Widgets.html Returns the widget at a given position, or at point if position is nil. ```APIDOC ## widget-at ### Description Returns the widget at the given position, or at point if position is nil. ### Function Signature `widget-at &optional pos` ### Parameters - **pos** (optional) - The position to look for a widget. If nil, uses point. ### Returns The widget at the position, or nil if none. ``` -------------------------------- ### widget-choose Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Utilities.html Prompts the user to choose an item from a list of options. Uses a popup menu if the event is a mouse event and the number of items is less than widget-menu-max-size; otherwise uses the minibuffer. ```APIDOC ## widget-choose ### Description Prompt the user to choose an item from a list of options. title is the name of the list of options. items should be a menu, with its items in the simple format or in the extended format. The optional event is an input event. If event is a mouse event and the number of elements in items is less than the user option widget-menu-max-size, then widget-choose uses a popup menu to prompt the user. Otherwise, widget-choose uses the minibuffer. ### Function Signature `widget-choose` title items &optional event ### Parameters - **title** - The name of the list of options. - **items** - A menu, with items in the simple format or extended format. - **event** (optional) - An input event. ### Return Value - When items is a keymap menu, the returned value is the symbol in the key vector, as in the argument of define-key. When items is a list whose selectable items are of the form (name . value) (simplified format), the return value is the value of the chosen element. ``` -------------------------------- ### Create a url-link widget with custom button face and action Source: https://www.gnu.org/software/emacs/manual/html_node/widget/url_002dlink.html Creates a url-link widget that displays a button with a custom face (visited or unvisited) and, when clicked, marks the widget as visited, redraws it, and opens the URL using the original action. ```lisp (widget-create 'url-link :button-prefix "" :button-suffix "" ;; Return appropriate face. :button-face-get (lambda (widget) (if (widget-get widget :visited) 'link-visited 'link)) :format "%[%t%]" :tag "Browse this manual" :action (lambda (widget &optional _event) (widget-put widget :visited t) ;; Takes care of redrawing the widget. (widget-value-set widget (widget-value widget)) ;; And then call the original function. (widget-url-link-action widget)) "https://www.gnu.org/software/emacs/manual/html_mono/widget.html") ``` -------------------------------- ### Define ranged-integer widget type Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Defining-New-Widgets.html Defines a new widget type 'ranged-integer' derived from 'integer', with :min-value and :max-value defaults and a custom keymap. The :convert-widget property is not used here, but the example illustrates define-widget usage. ```emacs-lisp (define-widget 'ranged-integer 'integer "A ranged integer widget." :min-value most-negative-fixnum :max-value most-positive-fixnum :keymap widget-ranged-integer-map) ``` -------------------------------- ### widget-browse Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Inspecting-Widgets.html Creates a widget browser for a specified widget. When called interactively, prompts for the widget. ```APIDOC ## widget-browse ### Description Creates a widget browser for the given widget. When called interactively, prompts for the widget. ### Method Command ### Signature `widget-browse widget` ### Parameters - **widget** - The widget to browse. ### Usage - **Interactive**: Prompts for the widget. - **Lisp**: Pass the widget as an argument. ### Notes Uses the `wid-browse.el` package to show widget keyword values, with links for cyclic structures like `:parent`. ``` -------------------------------- ### widget-image-find Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Utilities.html Creates a graphical button from an image or a file name sans extension. The file should be in widget-image-directory or in a place where find-image will find it. ```APIDOC ## widget-image-find ### Description Create a graphical button from image, an image or a file name sans extension. If image is a file name, the file should be in widget-image-directory, or in a place where find-image will find it. ### Function Signature `widget-image-find` image ### Parameters - **image** - An image or a file name sans extension. ### Return Value - A graphical button created from the image. ``` -------------------------------- ### widget-create Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Setting-Up-the-Buffer.html Creates and returns a widget of a specified type, converting the specification. Accepts keyword arguments to override default properties and additional arguments for type-specific handling. ```APIDOC ## widget-create ### Description Create and return a widget of type type, converting it. type is a symbol that specifies a widget type. keyword may be one of the properties supported by the widget type, and argument specify the value for that property. These keyword arguments can be used to overwrite the keyword arguments that are part of type by default, as well as to provide other properties not present in type by default. args holds additional information for the creation of type and each widget type is responsible for handling that information in a specific way. ### Function Signature widget-create type [keyword argument]… args ### Parameters - **type** (symbol) - Required - The widget type. - **keyword** (property) - Optional - A property supported by the widget type. - **argument** (value) - Optional - The value for the keyword property. - **args** (additional) - Optional - Additional information for the creation of type. ### Returns A widget object. ``` -------------------------------- ### widget-browse-other-window Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Inspecting-Widgets.html Creates a widget browser for a specified widget and displays it in another window. When called interactively, prompts for the widget. ```APIDOC ## widget-browse-other-window ### Description Creates a widget browser for the given widget and shows it in another window. When called interactively, prompts for the widget. ### Method Command ### Signature `widget-browse-other-window widget` ### Parameters - **widget** - The widget to browse. ### Usage - **Interactive**: Prompts for the widget. - **Lisp**: Pass the widget as an argument. ### Notes Similar to `widget-browse` but displays the browser in another window. ``` -------------------------------- ### widget-create 'link Source: https://www.gnu.org/software/emacs/manual/html_node/widget/link.html Creates a link widget with the given keyword arguments and an optional value. The value is a string inserted into the buffer and used to initialize the :value property. ```APIDOC ## widget-create 'link ### Description Creates a link widget. The value, if present, is used to initialize the `:value` property. The value should be a string, which will be inserted in the buffer. ### Syntax ``` (widget-create 'link [keyword argument]... [value]) ``` ### Parameters #### Keyword Arguments - `:button-prefix` - The value of `widget-link-prefix`. - `:button-suffix` - The value of `widget-link-suffix`. - `:keymap` - A custom keymap for the link widget, so that it can respond to mouse clicks. - `:follow-link` - Allows the link to respect the value of `mouse-1-click-follows-link`. - `:format` - Buttonizes the link, to make it clickable. Must include '%[' and '%]' escape sequences. By default the link is shown in brackets. #### Value - `value` (string) - Optional - The value to initialize the `:value` property. Inserted into the buffer. ### Example ``` (widget-create 'link :button-prefix "" :button-suffix "" :tag "Mail yourself" :action #'(lambda (widget &optional _event) (compose-mail-other-window (widget-value widget))) user-mail-address) ``` ### Notes - The super of the `link` widget is the `item` widget. - By default, the link is shown in brackets. ``` -------------------------------- ### widget-value-convert-widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Working-with-Widgets.html Initializes the :value property of a widget from :args. ```APIDOC ## widget-value-convert-widget ### Description Initializes the `:value` property of the widget from `:args`. Sets `:args` to nil and returns the modified widget. ### Function Signature `widget-value-convert-widget widget` ### Parameters - **widget** - The widget to convert. ### Returns The modified widget. ``` -------------------------------- ### file-link widget syntax Source: https://www.gnu.org/software/emacs/manual/html_node/widget/file_002dlink.html The syntax for the file-link widget type. It takes a file argument and optional keyword arguments. ```lisp type ::= (file-link [keyword argument]... file) ``` -------------------------------- ### Syntax of the item widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/item.html The syntax for the item widget type, showing that it accepts a value and optional keyword arguments. ```lisp type ::= (item [keyword argument]... value) ``` -------------------------------- ### widget-create-child-and-convert Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Setting-Up-the-Buffer.html Creates a widget as a child of a parent, converting the type with provided keyword arguments. Adds the :indent property if not present, setting it to the sum of :indent and :offset from parent and :extra-offset from type. ```APIDOC ## widget-create-child-and-convert ### Description Create a widget of type type as a child of parent. Before creating it, converts type using the keyword arguments provided in args. Adds the :indent property, unless it is already present, and sets it to the sum of the values of: :indent and :offset from parent and :extra-offset from type. Returns a widget object, with the property :parent set to PARENT. ### Function Signature widget-create-child-and-convert parent type &rest args ### Parameters - **parent** (widget) - Required - The parent widget. - **type** (symbol) - Required - The widget type. - **args** (keyword arguments) - Optional - Keyword arguments for conversion. ### Returns A widget object with :parent set to parent. ``` -------------------------------- ### :prompt-value Source: https://www.gnu.org/software/emacs/manual/html_node/widget/default.html Function to prompt for a value in the minibuffer. The function should take four arguments, a widget, a prompt (a string), a value and a boolean, and should return a value for the widget, entered by the user. The prompt is the prompt to use. The value is the default value to use, unless the fourth argument is non-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. ```APIDOC ## :prompt-value ### Description Function to prompt for a value in the minibuffer. The function should take four arguments, a widget, a prompt (a string), a value and a boolean, and should return a value for the widget, entered by the user. The prompt is the prompt to use. The value is the default value to use, unless the fourth argument is non-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. ### Parameters - **widget** - The widget for which to prompt. - **prompt** (string) - The prompt to use. - **value** - The default value to use. - **no-default** (boolean) - If non-nil, there is no default value. ### Returns The value entered by the user. ``` -------------------------------- ### widget-minor-mode-keymap Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Widget-Minor-Mode.html Keymap used in widget-minor-mode. ```APIDOC ## widget-minor-mode-keymap ### Description Keymap used in widget-minor-mode. ### Variable widget-minor-mode-keymap ``` -------------------------------- ### widget-forward Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Widgets-and-the-Buffer.html Moves point forward by a specified number of buttons or editing fields. Optionally suppresses echo of help text. ```APIDOC ## Command: widget-forward count &optional suppress-echo ### Description Move point count buttons or editing fields forward. The optional suppress-echo argument suppresses showing in the echo-area the help-echo text, if any, for the final position after the move; it is always nil in interactive invocations. ### Parameters - **count** (integer) - Required - Number of buttons or editing fields to move forward. - **suppress-echo** (boolean) - Optional - If non-nil, suppress echo of help text. ### Usage Call as a command or from Lisp code. ``` -------------------------------- ### Syntax definition for info-link Source: https://www.gnu.org/software/emacs/manual/html_node/widget/info_002dlink.html The syntax definition for the info-link widget type. ```lisp type ::= (info-link [keyword argument]... address) ``` -------------------------------- ### widget-copy Source: https://www.gnu.org/software/emacs/manual/html_node/widget/Setting-Up-the-Buffer.html Makes a copy of a widget and returns it, using the function stored in the :copy property. ```APIDOC ## widget-copy ### Description Makes a copy of widget widget and returns it. It uses the function stored in the :copy property of widget and returns the widget that that function returns. ### Function Signature widget-copy widget ### Parameters - **widget** (widget) - Required - The widget to copy. ### Returns A new widget object. ``` -------------------------------- ### Syntax of the link Widget Source: https://www.gnu.org/software/emacs/manual/html_node/widget/link.html The formal syntax definition for the link widget type. ```text type ::= (link [keyword argument]... [ value ]) ``` -------------------------------- ### Checklist widget syntax Source: https://www.gnu.org/software/emacs/manual/html_node/widget/checklist.html The syntax for the checklist widget type. It takes keyword arguments and a list of type arguments. ```lisp type ::= (checklist [keyword argument]... type ... ) ``` -------------------------------- ### directory Source: https://www.gnu.org/software/emacs/manual/html_node/widget/atoms.html A widget for editing directory names. Its super is the file widget, and it overrides the :completions property to offer completions only for directories. ```APIDOC ## Widget: directory ### Description A widget for editing directory names. Its super is the file widget, and it overrides the :completions property to offer completions only for directories. ### Properties - **:completions** - Overridden to offer completions only for directories. ``` -------------------------------- ### :activate Source: https://www.gnu.org/software/emacs/manual/html_node/widget/default.html Function that takes a widget and makes it active for user modifications. ```APIDOC ## :activate ### Description Function that takes a widget and makes it active for user modifications. ### Parameters - **widget** - The widget to activate. ```