Commit 41b3e67c authored by Karl Heuer's avatar Karl Heuer
Browse files

(customize-option): Refuse to customize

a variable that has no defcustom.  But if variable is autoloaded,
first try to load the library that defines it.
parent 85c92c40
......@@ -868,6 +868,28 @@ are shown; the contents of those subgroups are initially hidden."
(defun customize-option (symbol)
"Customize SYMBOL, which must be a user option variable."
(interactive (custom-variable-prompt))
;; If we don't have SYMBOL's real definition loaded,
;; try to load it.
(unless (get symbol 'custom-type)
(let ((loaddefs-file (locate-library "loaddefs.el" t))
;; See if it is autoloaded from some library.
(when loaddefs-file
(insert-file-contents loaddefs-file)
(when (re-search-forward (concat "^(defvar " (symbol-name symbol))
nil t)
(search-backward "\n;;; Generated autoloads from ")
(goto-char (match-end 0))
(setq file (buffer-substring (point)
(progn (end-of-line) (point)))))))
;; If it is, load that library.
(when file
(when (string-match "\\.el\\'" file)
(setq file (substring file 0 (match-beginning 0))))
(load file))))
(unless (get symbol 'custom-type)
(error "Variable %s cannot be customized" symbol))
(custom-buffer-create (list (list symbol 'custom-variable))
(format "*Customize Option: %s*"
(custom-unlispify-tag-name symbol))))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment