+ (message (riece-mcat "Add-on %S is insinuated") addon))
+ (unless (get addon 'riece-addon-default-disabled)
+ (riece-enable-addon addon t))))
+
+(defun riece-insinuate-addon (addon &optional verbose)
+ (unless (assq addon riece-addon-dependencies)
+ (setq riece-addons (cons addon riece-addons)
+ riece-save-variables-are-dirty t
+ riece-addon-dependencies
+ (riece-resolve-addons
+ (cons addon (mapcar #'car riece-addon-dependencies)))))
+ (let ((pointer riece-addon-dependencies)
+ addons)
+ (while pointer
+ (unless (get (car (car pointer)) 'riece-addon-insinuated)
+ (setq addons (cons (car (car pointer)) addons)))
+ (if (eq (car (car pointer)) addon)
+ (setq pointer nil)
+ (setq pointer (cdr pointer))))
+ (setq addons (nreverse addons))
+ (if (and (> (length addons) 1)
+ (eq verbose 'ask)
+ (not (y-or-n-p (format (riece-mcat
+ "%s will be insinuated. Continue? ")
+ (mapconcat #'symbol-name addons ", ")))))
+ (error "Insinuate operation was cancelled"))
+ (while addons
+ (riece-insinuate-addon-1 (car addons) verbose)
+ (setq addons (cdr addons)))))