X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-addon.el;h=b2dfe75886ce7b68961a38b284d5a7c38e937cc5;hb=ea26c9283b9a4aff978f21cfeb519a0daa7fc213;hp=7cf6bd48aad6f5530aefbd27f07e0295ca348631;hpb=6b1aab3774b6acaa20dd01336dd3a17755dd90fc;p=riece diff --git a/lisp/riece-addon.el b/lisp/riece-addon.el index 7cf6bd4..b2dfe75 100644 --- a/lisp/riece-addon.el +++ b/lisp/riece-addon.el @@ -30,16 +30,16 @@ (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)) @@ -169,14 +169,13 @@ (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) @@ -185,15 +184,20 @@ (append addons (mapcar (lambda (name) - (intern (file-name-sans-extension 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")))) @@ -202,7 +206,7 @@ (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)))))) @@ -218,7 +222,7 @@ (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)) @@ -237,8 +241,8 @@ All normal editing commands are turned off." (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))