diff --git a/README.org b/README.org index 9437b18..fa1e886 100644 --- a/README.org +++ b/README.org @@ -51,6 +51,8 @@ commands: - =devdocs-install=: Download and install (or reinstall) a document distributed by [[https://devdocs.io]]. +- =devdocs-ensure-docs-installed=: Check if documents are already + installed and install them if necessary. - =devdocs-delete=: Remove an installed document. - =devdocs-update-all=: Download and reinstall all installed documents for which a newer version is available. diff --git a/devdocs.el b/devdocs.el index ab5e646..8a2accb 100644 --- a/devdocs.el +++ b/devdocs.el @@ -275,6 +275,16 @@ already installed, reinstall it." (rename-file (file-name-as-directory temp) dest)) (message "Document `%s' installed" slug))) +;;;###autoload +(defun devdocs-ensure-docs-installed (desired-docs) + "Ensure that every devdoc listed in DESIRED-DOCS is installed, without reinstalling." + (let ((installed (mapcar (lambda (installed-doc) + (cdr (assoc 'slug installed-doc))) + (devdocs--installed-docs)))) + (dolist (desired-doc desired-docs) + (unless (cl-member desired-doc installed :test #'string=) + (devdocs-install desired-doc))))) + ;;;###autoload (defun devdocs-update-all () "Reinstall all documents with a new version available."