(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)
+ (unless (file-directory-p
+ (expand-file-name name riece-addon-directory))
+ (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")))
- (if verbose
- (message "Add-on %S is insinuated" addon)))
+ (if (get addon 'riece-addon-insinuated)
+ (if verbose
+ (message "Add-on %S is alread insinuated" addon))
+ (funcall (intern (concat (symbol-name addon) "-insinuate")))
+ (put addon 'riece-addon-insinuated t)
+ (if verbose
+ (message "Add-on %S is insinuated" addon))))
(defun riece-enable-addon (addon &optional verbose)
(let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
(message "Add-on %S doesn't support enable/disable" addon))
(if (symbol-value enabled)
(if verbose
- (message "Can't enable add-on %S" addon))
+ (message "Add-on %S is already enabled" addon))
(funcall (intern (concat (symbol-name addon) "-enable")))
(if verbose
(message "Add-on %S enabled" addon))))))
(if verbose
(message "Add-on %S disabled" addon)))
(if verbose
- (message "Can't disable add-on %S" addon))))))
+ (message "Add-on %S is already enabled" addon))))))
(put 'riece-addon-list-mode 'font-lock-defaults
'(riece-addon-list-font-lock-keywords t))
(use-local-map riece-addon-list-mode-map)
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(riece-addon-list-font-lock-keywords t))
- ;; In XEmacs, auto-initialization of font-lock is not affective
- ;; when buffer-file-name is not set.
+ ;; In XEmacs, auto-initialization of font-lock is not effective
+ ;; if buffer-file-name is not set.
(font-lock-set-defaults)
(run-hooks 'riece-addon-list-mode-hook))
(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)
(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)