diff lisp/cus-edit.el @ 23190:0fe0fe296153

(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.
author Karl Heuer <kwzh@gnu.org>
date Fri, 04 Sep 1998 20:48:11 +0000
parents a47a69af14c8
children da40016c8767
line wrap: on
line diff
--- a/lisp/cus-edit.el	Fri Sep 04 20:46:30 1998 +0000
+++ b/lisp/cus-edit.el	Fri Sep 04 20:48:11 1998 +0000
@@ -868,6 +868,28 @@
 (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))
+	  file)
+      ;; See if it is autoloaded from some library.
+      (when loaddefs-file
+	(with-temp-buffer
+	  (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))))