(require 'riece-misc)
(defgroup riece-addon-list nil
- "Add-on management"
- :tag "Addon"
- :prefix "riece-"
+ "Add-on listing."
+ :tag "Addon list"
+ :prefix "riece-addon-list-"
:group 'riece)
(defgroup riece-addon-list-faces nil
- "Faces for riece-addon-list-mode"
+ "Faces for riece-addon-list-mode."
:tag "Faces"
- :prefix "riece-addon-list"
- :group 'riece-addon)
+ :prefix "riece-addon-list-"
+ :group 'riece-addon-list)
(defface riece-addon-list-enabled-face
'((((class color) (background dark))
(let* ((entry (assq (car pointer) dependencies))
(count (1- (nth 1 entry))))
(if (zerop count)
- (progn
- (setq dependencies (delq entry dependencies)
- queue (nconc queue (list entry))))
+ (setq dependencies (delq entry dependencies)
+ queue (nconc queue (list entry)))
(setcar (cdr entry) count)))
(setq pointer (cdr pointer)))
(setq queue (cdr queue)))
(if dependencies
- (error "Circular add-on dependency found"))
+ (error "Circular add-on dependency found: %S" dependency))
(nreverse addons)))
(defun riece-resolve-addons (addons)
(append addons
(mapcar
(lambda (name)
- (unless (file-directory-p 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))