# HG changeset patch # User Richard M. Stallman # Date 892020414 0 # Node ID 28157e58238aaaae9e97464b9c40401ecf625c2a # Parent b5a5ac47474167f01136cb28bec97e5d06137c69 (default, widget-default-default-get): Define it. (group, widget-group-default-get): Define it. (menu-choice, widget-choice-default-get): Define it. (widget-default-get): New function. (widget-choice-action): Call it. (widget-editable-list-entry-create): Call it. diff -r b5a5ac474741 -r 28157e58238a lisp/wid-edit.el --- a/lisp/wid-edit.el Wed Apr 08 07:25:05 1998 +0000 +++ b/lisp/wid-edit.el Wed Apr 08 07:26:54 1998 +0000 @@ -470,6 +470,11 @@ :value-set (widget-apply widget :value-to-internal value))) +(defun widget-default-get (widget) + "Extract the defaylt value of WIDGET." + (or (widget-get widget :value) + (widget-apply widget :default-get))) + (defun widget-match-inline (widget vals) ;; In WIDGET, match the start of VALS. (cond ((widget-get widget :inline) @@ -1334,6 +1339,7 @@ :delete 'widget-default-delete :value-set 'widget-default-value-set :value-inline 'widget-default-value-inline + :default-get 'widget-default-default-get :menu-tag-get 'widget-default-menu-tag-get :validate (lambda (widget) nil) :active 'widget-default-active @@ -1530,6 +1536,10 @@ (widget-value widget) (list (widget-value widget)))) +(defun widget-default-default-get (widget) + ;; Get `:value'. + (widget-get widget :value)) + (defun widget-default-menu-tag-get (widget) ;; Use tag or value for menus. (or (widget-get widget :menu-tag) @@ -1903,6 +1913,7 @@ :value-delete 'widget-children-value-delete :value-get 'widget-choice-value-get :value-inline 'widget-choice-value-inline + :default-get 'widget-choice-default-get :mouse-down-action 'widget-choice-mouse-down-action :action 'widget-choice-action :error "Make a choice" @@ -1947,6 +1958,10 @@ ;; Get value of the child widget. (widget-apply (car (widget-get widget :children)) :value-inline)) +(defun widget-choice-default-get (widget) + ;; Get default for the first choice. + (widget-default-get (car (widget-get widget :args)))) + (defcustom widget-choice-toggle nil "If non-nil, a binary choice will just toggle between the values. Otherwise, the user will explicitly have to choose between the values @@ -2023,9 +2038,9 @@ (when this-explicit (widget-put widget :explicit-choice current) (widget-put widget :explicit-choice-value (widget-get widget :value))) - (widget-value-set widget - (widget-apply current :value-to-external - (widget-get current :value))) + (let ((value (widget-default-get current))) + (widget-value-set widget + (widget-apply current :value-to-external value))) (widget-setup) (widget-apply widget :notify widget event))) (run-hook-with-args 'widget-edit-functions widget)) @@ -2635,7 +2650,8 @@ (if conv (setq child (widget-create-child-value widget type value)) - (setq child (widget-create-child widget type)))) + (setq child (widget-create-child-value + widget type (widget-default-get type))))) (t (error "Unknown escape `%c'" escape))))) (widget-put widget @@ -2661,6 +2677,7 @@ :value-create 'widget-group-value-create :value-delete 'widget-children-value-delete :value-get 'widget-editable-list-value-get + :default-get 'widget-group-default-get :validate 'widget-children-validate :match 'widget-group-match :match-inline 'widget-group-match-inline) @@ -2687,6 +2704,10 @@ children)) (widget-put widget :children (nreverse children)))) +(defun widget-group-default-get (widget) + ;; Get the default of the components. + (mapcar 'widget-default-get (widget-get widget :args))) + (defun widget-group-match (widget values) ;; Match if the components match. (and (listp values)