* riece-addon.el (riece-command-insinuate-addon)
[elisp/riece.git] / lisp / riece.el
index 8f80cec..400404d 100644 (file)
@@ -31,8 +31,6 @@
 (require 'riece-addon)
 (require 'riece-signal)
 
-(autoload 'derived-mode-class "derived")
-
 (defvar riece-channel-list-mode-map (make-sparse-keymap))
 (defvar riece-user-list-mode-map (make-sparse-keymap))
 
@@ -238,12 +236,21 @@ If optional argument SAFE is nil, overwrite previous definitions."
   (let ((files (if file
                   (setq riece-variables-file file
                         riece-variables-files (list file))
-                riece-variables-files)))
+                riece-variables-files))
+       (variables riece-saved-forms))
     (while files
       (condition-case nil
          (load (expand-file-name (car files)))
        (file-error nil))
-      (setq files (cdr files)))))
+      (setq files (cdr files)))
+    (while variables
+      (if (fboundp 'custom-reevaluate-setting)
+         (custom-reevaluate-setting (car variables))
+       (funcall (or (get (car variables) 'custom-set) 'set-default)
+                (car variables)
+                (eval (car (or (get (car variables) 'saved-value)
+                               (get (car variables) 'standard-value))))))
+      (setq variables (cdr variables)))))
 
 (defvar print-quoted)
 (defvar print-escape-multibyte)
@@ -259,12 +266,14 @@ If optional argument SAFE is nil, overwrite previous definitions."
          print-level
          print-length
          (variables riece-saved-forms))
+      (insert "(custom-set-variables\n")
       (while variables
-       (prin1 `(setq ,(car variables)
-                     ',(symbol-value (car variables)))
+       (insert " '")
+       (prin1 `(,(car variables) ',(symbol-value (car variables)))
               (current-buffer))
        (insert "\n")
-       (setq variables (cdr variables)))))
+       (setq variables (cdr variables)))
+      (insert ")")))
   (message (riece-mcat "Saving %s...done") riece-saved-variables-file)
   (setq riece-save-variables-are-dirty nil))
 
@@ -388,9 +397,12 @@ For a list of the generic commands type \\[riece-command-generic] ? RET.
     (setq riece-command-mode-syntax-table
          (copy-syntax-table (syntax-table)))
     (set-syntax-table riece-command-mode-syntax-table)
-    (mapcar
-     (lambda (c) (modify-syntax-entry c "w"))
-     "^[]{}'`"))
+    (let* ((chars "^[]{}'`")
+          (length (length chars))
+          (index 0))
+      (while (< index length)
+       (modify-syntax-entry (aref chars index) "w")
+       (setq index (1+ index)))))
 
   (run-hooks 'riece-command-mode-hook))
 
@@ -480,7 +492,7 @@ All normal editing commands are turned off."
         riece-mode-line-buffer-identification)
        truncate-lines t
        buffer-read-only t)
-  (make-local-hook 'riece-update-buffer-functions)
+  (riece-make-local-hook 'riece-update-buffer-functions)
   (add-hook 'riece-update-buffer-functions
            'riece-update-channel-list-buffer nil t)
   (use-local-map riece-channel-list-mode-map)
@@ -511,7 +523,7 @@ Instead, these commands are available:
        buffer-read-only t)
   (if (boundp 'transient-mark-mode)
       (set (make-local-variable 'transient-mark-mode) t))
-  (make-local-hook 'riece-update-buffer-functions)
+  (riece-make-local-hook 'riece-update-buffer-functions)
   (add-hook 'riece-update-buffer-functions
            'riece-update-user-list-buffer nil t)
   (use-local-map riece-user-list-mode-map)