* -*- outline-minor -*- Version: 1.9958. * Make `widget-field-add-space' work on 20.3. * See if `customize-save-variable' should be used in other places. * Send bug report for `previous-overlay-change' in Emacs. * Write a mouse-1 vs. mouse-2 letter to custom, rms, and pretester lists. * w3: RET and mouse-2 doesn't work in editable fields. * Make TAB faster. Use `next-overlay-change'. * Push RET on [toggle] moves point to before the toggle. * Documentation: ** Document `widget-get-indirect'. ** Document `widget-convert-button' and `widget-convert-text'. ** Document `widget-map-buttons'. ** Document :complete :complete-function ** Document `widget-complete', `widget-complete-field', `widget-complete- ** Document `visibility' and `documentation-string' widgets. ** Document :documentation-shown keyword. ** Document :documentation-indent keyword. ** Undocument :widget-doc keyword. ** Document `hook' widget. ** Document `color' and `face' sexp widgets. ** Document `coding-system' sexp widget. ** Document `emacs-library-link', `emacs-commentary-link', and `file-link' widgets. * Don't save options whose value is identical to its standard setting, iff :require was specified. Perhaps make this an option, with values `never', `always', and `when-has-require'. * Add support for context sensitive menu. `widget-keymap' should overwrite [(control down-mouse-3)] on Emacs and button3 on XEmacs. The function should invoke the first of the following that applies: - The `:button-menu' widget property if non-nil and the mouse is above a button. - The `:action' widget property if non-nil and the mouse is above a button, and the `:mouse-down-action' property gives non-nil when called. - The `:field-menu' widget property if non-nil and the mouse is above a field. - The `:menu' widget property above a widget. - `mouse-major-mode-menu' on Emacs. - `popup-mode-menu' on XEmacs. The value of `:button-menu', `:field-menu', and `:menu' widget properties should be a menu specification in easy-menu format, or a function returning such a specification. * Move point to beginning of option when you unhide it. Try to make an area visible when unhiding. In general: Move point to mouse when you click. * Don't change sexp widgets (i.e. :custom-hidden) from cus-edit.el. Move the changes to wid-edit.el * Add command/option to activate/deactivate mouse help in Emacs. * `RET' should imply `set' in the last field, instead of entering the mini-buf. In the other field, it should validate and move to the next field. Pushing the tag should enter the minibuffer. * Create indirect child widget for making aliases and recursive definitions. (define-widget 'foo 'default "Foo" :tag "Foo" :format "%v" :offset 5 :match 'foo-match :value-get 'foo-value-get :value-create 'foo-value-create :value-delete 'widget-children-value-delete) (defun foo-match (widget value) (or (symbolp value) (stringp value) (and (listp value) (eq (length value) 2) (integerp (nth 0 value)) (foo-match nil (nth 1 value))))) (defun foo-value-get (widget) (widget-value (car (widget-get widget :children)))) (defun foo-value-create (widget) (widget-put widget :children (list (widget-create-child-and-convert widget '(choice string symbol (list :value (0 nil) integer foo)) :value (widget-get widget :value) :tag (widget-get widget :tag))))) (defcustom xyz nil "xyz" :type 'foo) * Lazier loading. Print all group members to `cus-load.el'. Also store `where' for all customization options. Never load `where' for menus. Load `where' for buffers. * A `display-table' widget. * Better variable and symbol widgets. - create variable-symbol - variable should be a) a radio with the :options as `function-item' and a variable-symbol. b) just variable-symbol if there are no :options. - create function-symbol - function should be a) a radio with the :options as `function-item' and a lambda-expression, function-symbol, and sexp entries. b) a choice between lambda-expression, function-symbol, and sexp if there is no :options. (define-widget 'lambda-expression 'list "A lambda expression." :tag "Lambda" :format "%{%t%}: %v" :args '((const :format "" lambda) (repeat :format "\n%v%i\n" (symbol :format "%v")) (option (string :format "%t:%n%v" :tag "Documentation")) (option (list :format "%v" (const :format "" interactive) (choice :inline t :tag "Interactive" (const :inline t :tag "no argument" nil) (string :menu-tag "format string" :format "%v") (sexp :format "%v" :menu-tag "form" :value (list))))) (repeat :format "%v%i\n" :inline t (sexp :format "%v")))) (define-widget 'function 'choice "A function." :args '((function-symbol :tag "Symbol" :format "%v") (lambda-expression :format "%v") (sexp :menu-tag "Other" :format "%v"))) * Implement everything in the wishlists :-).