* riece-addon.el (riece-resolve-addons): Check the existence of
[riece] / lisp / riece-addon.el
index 4379095..7cf6bd4 100644 (file)
 
 ;;; Code:
 
+(require 'font-lock)
+(require 'riece-options)
+(require 'riece-compat)
+(require 'riece-misc)
+
 (defgroup riece-addon-list nil
   "Add-on management"
   :tag "Addon"
       (setq addons (cdr addons)))
     dependencies))
 
-(defun riece-resolve-addons (addons)
+(defun riece-resolve-addon-dependencies (addons)
   (let ((pointer addons)
        dependencies queue)
     ;; Uniquify, first.
        (error "Circular add-on dependency found"))
     (nreverse addons)))
 
+(defun riece-resolve-addons (addons)
+  (riece-resolve-addon-dependencies
+   (if (file-directory-p riece-addon-directory)
+       (append addons
+              (mapcar
+               (lambda (name)
+                 (intern (file-name-sans-extension name)))
+               (directory-files riece-addon-directory nil "\\`[^.]" t)))
+     addons)))
+
 (defun riece-insinuate-addon (addon &optional verbose)
   (require addon)              ;implicit dependency
   (funcall (intern (concat (symbol-name addon) "-insinuate")))
@@ -214,7 +229,7 @@ All normal editing commands are turned off."
   (kill-all-local-variables)
   (buffer-disable-undo)
   (setq major-mode 'riece-addon-list-mode
-        mode-name "AddOns"
+       mode-name "AddOns"
        mode-line-buffer-identification
        (riece-mode-line-buffer-identification '("Riece: %12b"))
        truncate-lines t
@@ -283,18 +298,18 @@ Useful keys:
    (list
     (or (if (eq major-mode 'riece-addon-list-mode)
            (get-text-property (point) 'riece-addon))
-       (completing-read "Add-on: "
-                        (mapcar (lambda (addon)
-                                  (list (symbol-name addon)))
-                                riece-addons)
-                        (lambda (pointer)
-                          (let ((enabled
-                                 (intern-soft (concat (symbol-name
-                                                       (car pointer))
-                                                      "-enabled"))))
-                            (and enabled
-                                 (null (symbol-value enabled)))))
-                        t))))
+       (intern-soft
+        (completing-read "Add-on: "
+                         (mapcar (lambda (addon)
+                                   (list (symbol-name addon)))
+                                 riece-addons)
+                         (lambda (pointer)
+                           (let ((enabled
+                                  (intern-soft (concat (car pointer)
+                                                       "-enabled"))))
+                             (and enabled
+                                  (null (symbol-value enabled)))))
+                         t)))))
   (riece-enable-addon addon t)
   (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
     (if (and (eq major-mode 'riece-addon-list-mode)
@@ -314,18 +329,18 @@ Useful keys:
    (list
     (or (if (eq major-mode 'riece-addon-list-mode)
            (get-text-property (point) 'riece-addon))
-       (completing-read "Add-on: "
-                        (mapcar (lambda (addon)
-                                  (list (symbol-name addon)))
-                                riece-addons)
-                        (lambda (pointer)
-                          (let ((enabled
-                                 (intern-soft (concat (symbol-name
-                                                       (car pointer))
-                                                      "-enabled"))))
-                            (and enabled
-                                 (symbol-value enabled))))
-                        t))))
+       (intern-soft
+        (completing-read "Add-on: "
+                         (mapcar (lambda (addon)
+                                   (list (symbol-name addon)))
+                                 riece-addons)
+                         (lambda (pointer)
+                           (let ((enabled
+                                  (intern-soft (concat (car pointer)
+                                                       "-enabled"))))
+                             (and enabled
+                                  (symbol-value enabled))))
+                         t)))))
   (riece-disable-addon addon t)
   (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
     (if (and (eq major-mode 'riece-addon-list-mode)
@@ -339,7 +354,7 @@ Useful keys:
            (delete-char 1)
            (insert "-")
            (put-text-property point (point) 'riece-addon addon))))))
-    
+
 (provide 'riece-addon)
 
 ;;; riece-addon.el ends here