(require 'cus-face)
(require 'wid-edit)
-(require 'easymenu)
(eval-when-compile
- (require 'cl)
(defvar custom-versions-load-alist)) ; from cus-load
(condition-case nil
regexp))
(defun custom-variable-prompt ()
- ;; Code stolen from `help.el'.
"Prompt for a variable, defaulting to the variable at point.
Return a list suitable for use in `interactive'."
(let ((v (variable-at-point))
(and (boundp symbol)
(or (get symbol 'custom-type)
(get symbol 'custom-loads)
- (user-variable-p symbol)))) t))
+ (get symbol 'standard-value)))) t))
(list (if (equal val "")
(if (symbolp v) v nil)
(intern val)))))
(sort (copy-sequence items)
(lambda (a b)
(let ((typea (nth 1 a)) (typeb (nth 1 b))
- (namea (symbol-name (nth 0 a))) (nameb (symbol-name (nth 0 b))))
+ (namea (nth 0 a)) (nameb (nth 0 b)))
(cond ((not order-groups)
;; Since we don't care about A and B order, maybe sort.
(when sort-alphabetically
"Set changes in all modified options."
(interactive)
(let ((children custom-options))
- (mapcar (lambda (child)
- (when (eq (widget-get child :custom-state) 'modified)
- (widget-apply child :custom-set)))
+ (mapc (lambda (child)
+ (when (eq (widget-get child :custom-state) 'modified)
+ (widget-apply child :custom-set)))
children)))
(defun Custom-save ()
"Set all modified group members and save them."
(interactive)
(let ((children custom-options))
- (mapcar (lambda (child)
- (when (memq (widget-get child :custom-state)
- '(modified set changed rogue))
- (widget-apply child :custom-save)))
+ (mapc (lambda (child)
+ (when (memq (widget-get child :custom-state)
+ '(modified set changed rogue))
+ (widget-apply child :custom-save)))
children))
(custom-save-all))
"Reset all modified group members to their current value."
(interactive)
(let ((children custom-options))
- (mapcar (lambda (widget)
- (and (default-boundp (widget-value widget))
- (if (memq (widget-get widget :custom-state)
- '(modified changed))
- (widget-apply widget :custom-reset-current))))
+ (mapc (lambda (widget)
+ (and (default-boundp (widget-value widget))
+ (if (memq (widget-get widget :custom-state)
+ '(modified changed))
+ (widget-apply widget :custom-reset-current))))
children)))
(defun Custom-reset-saved (&rest ignore)
"Reset all modified or set group members to their saved value."
(interactive)
(let ((children custom-options))
- (mapcar (lambda (widget)
- (and (get (widget-value widget) 'saved-value)
- (if (memq (widget-get widget :custom-state)
- '(modified set changed rogue))
- (widget-apply widget :custom-reset-saved))))
+ (mapc (lambda (widget)
+ (and (get (widget-value widget) 'saved-value)
+ (if (memq (widget-get widget :custom-state)
+ '(modified set changed rogue))
+ (widget-apply widget :custom-reset-saved))))
children)))
(defun Custom-reset-standard (&rest ignore)
making them as if they had never been customized at all."
(interactive)
(let ((children custom-options))
- (mapcar (lambda (widget)
- (and (get (widget-value widget) 'standard-value)
- (if (memq (widget-get widget :custom-state)
- '(modified set changed saved rogue))
- (widget-apply widget :custom-reset-standard))))
+ (mapc (lambda (widget)
+ (and (get (widget-value widget) 'standard-value)
+ (if (memq (widget-get widget :custom-state)
+ '(modified set changed saved rogue))
+ (widget-apply widget :custom-reset-standard))))
children)))
;;; The Customize Commands
(interactive "sCustomize options changed, since version (default all versions): ")
(if (equal since-version "")
- (setq since-version nil))
+ (setq since-version nil)
+ (unless (condition-case nil
+ (numberp (read since-version))
+ (error nil))
+ (signal 'wrong-type-argument (list 'numberp since-version))))
(unless since-version
(setq since-version customize-changed-options-previous-release))
(let ((found nil)
"*Customize Changed Options*"))))
(defun customize-version-lessp (version1 version2)
+ ;; Why are the versions strings, and given that they are, why aren't
+ ;; they converted to numbers and compared as such here? -- fx
+
;; In case someone made a mistake and left out the quotes
;; in the :version value.
(if (numberp version2)
(setq version2 (prin1-to-string version2)))
(let (major1 major2 minor1 minor2)
- (string-match "\\([0-9]+\\)[.]\\([0-9]+\\)" version1)
- (setq major1 (read (match-string 1 version1)))
- (setq minor1 (read (match-string 2 version1)))
- (string-match "\\([0-9]+\\)[.]\\([0-9]+\\)" version2)
- (setq major2 (read (match-string 1 version2)))
- (setq minor2 (read (match-string 2 version2)))
+ (string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version1)
+ (setq major1 (read (or (match-string 1 version1)
+ "0")))
+ (setq minor1 (read (or (match-string 3 version1)
+ "0")))
+ (string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version2)
+ (setq major2 (read (or (match-string 1 version2)
+ "0")))
+ (setq minor2 (read (or (match-string 3 version2)
+ "0")))
(or (< major1 major2)
(and (= major1 major2)
(< minor1 minor2)))))
:action #'Custom-buffer-done)
(widget-insert "\n\n")
(message "Creating customization items...")
+ (buffer-disable-undo)
(setq custom-options
(if (= (length options) 1)
(mapcar (lambda (entry)
(widget-insert "\n"))
(message "Creating customization items ...%2d%%done" 100)
(unless (eq custom-buffer-style 'tree)
- (mapcar 'custom-magic-reset custom-options))
+ (mapc 'custom-magic-reset custom-options))
(message "Creating customization setup...")
(widget-setup)
+ (buffer-enable-undo)
(goto-char (point-min))
(message "Creating customization buffer...done"))
(defface custom-button-face
'((((type x) (class color)) ; Like default modeline
- (:box (:line-width 2 :style released-button) :background "lightgrey"))
+ (:box (:line-width 2 :style released-button)
+ :background "lightgrey" :foreground "black"))
(((type w32) (class color)) ; Like default modeline
- (:box (:line-width 2 :style released-button) :background "lightgrey"))
+ (:box (:line-width 2 :style released-button)
+ :background "lightgrey" :foreground "black"))
(t
nil))
"Face used for buttons in customization buffers."
(defface custom-button-pressed-face
'((((type x) (class color))
- (:box (:line-width 2 :style pressed-button) :background "lightgrey"))
+ (:box (:line-width 2 :style pressed-button)
+ :background "lightgrey" :foreground "black"))
(((type w32) (class color))
- (:box (:line-width 2 :style pressed-button) :background "lightgrey"))
+ (:box (:line-width 2 :style pressed-button)
+ :background "lightgrey" :foreground "black"))
(t
(:inverse-video t)))
"Face used for buttons in customization buffers."
"Customize face."
:sample-face 'custom-face-tag-face
:help-echo "Set or reset this face."
- :documentation-property '(lambda (face)
- (face-doc-string face))
+ :documentation-property #'face-doc-string
:value-create 'custom-face-value-create
:action 'custom-face-action
:custom-category 'face
:value-get 'widget-value-value-get
:validate 'widget-children-validate
:action 'widget-face-action
- :match '(lambda (widget value) (symbolp value)))
+ :match (lambda (widget value) (symbolp value)))
(defun widget-face-value-create (widget)
"Create a `custom-face' child."
;; things like `find-file-hook' or even more basic ones, to avoid
;; chaos.
:set (lambda (symbol value)
- (mapc (lambda (elt)
- (if (fboundp elt)
- (add-hook symbol elt)))
- value))
+ (dolist (elt value)
+ (if (fboundp elt)
+ (add-hook symbol elt))))
:convert-widget 'custom-hook-convert-widget
:tag "Hook")
(widget-insert "\n"))))
members)))
(message "Creating group magic...")
- (mapcar 'custom-magic-reset children)
+ (mapc 'custom-magic-reset children)
(message "Creating group state...")
(widget-put widget :children children)
(custom-group-state-update widget)
(defun custom-group-set (widget)
"Set changes in all modified group members."
(let ((children (widget-get widget :children)))
- (mapcar (lambda (child)
- (when (eq (widget-get child :custom-state) 'modified)
- (widget-apply child :custom-set)))
+ (mapc (lambda (child)
+ (when (eq (widget-get child :custom-state) 'modified)
+ (widget-apply child :custom-set)))
children )))
(defun custom-group-save (widget)
"Save all modified group members."
(let ((children (widget-get widget :children)))
- (mapcar (lambda (child)
- (when (memq (widget-get child :custom-state) '(modified set))
- (widget-apply child :custom-save)))
+ (mapc (lambda (child)
+ (when (memq (widget-get child :custom-state) '(modified set))
+ (widget-apply child :custom-save)))
children )))
(defun custom-group-reset-current (widget)
"Reset all modified group members."
(let ((children (widget-get widget :children)))
- (mapcar (lambda (child)
- (when (eq (widget-get child :custom-state) 'modified)
- (widget-apply child :custom-reset-current)))
+ (mapc (lambda (child)
+ (when (eq (widget-get child :custom-state) 'modified)
+ (widget-apply child :custom-reset-current)))
children )))
(defun custom-group-reset-saved (widget)
"Reset all modified or set group members."
(let ((children (widget-get widget :children)))
- (mapcar (lambda (child)
- (when (memq (widget-get child :custom-state) '(modified set))
- (widget-apply child :custom-reset-saved)))
+ (mapc (lambda (child)
+ (when (memq (widget-get child :custom-state) '(modified set))
+ (widget-apply child :custom-reset-saved)))
children )))
(defun custom-group-reset-standard (widget)
"Reset all modified, set, or saved group members."
(let ((children (widget-get widget :children)))
- (mapcar (lambda (child)
- (when (memq (widget-get child :custom-state)
- '(modified set saved))
- (widget-apply child :custom-reset-standard)))
+ (mapc (lambda (child)
+ (when (memq (widget-get child :custom-state)
+ '(modified set saved))
+ (widget-apply child :custom-reset-standard)))
children )))
(defun custom-group-state-update (widget)