1. ホーム
  2. emacs

[解決済み] パッケージ名のリストを指定して、Emacsのパッケージを自動的にインストールするには?

2022-07-04 23:39:58

質問

私は package を使ってEmacsの拡張機能を管理しています。異なるコンピュータで私の Emacs 設定を同期させるために、パッケージ名のリストを .emacs ファイルでパッケージ名のリストを指定し、次に package を呼び出せば、自動的にパッケージを検索してインストールすることができますので、手動で M-x package-list-packages . どうすればいいのでしょうか?

どのように解決するには?

Profpatsch氏のコメントと以下の回答に基づいています。

(defun ensure-package-installed (&rest packages)
  "Assure every package is installed, ask for installation if it’s not.

Return a list of installed packages or nil for every skipped package."
  (mapcar
   (lambda (package)
     ;; (package-installed-p 'evil)
     (if (package-installed-p package)
         nil
       (if (y-or-n-p (format "Package %s is missing. Install it? " package))
           (package-install package)
         package)))
   packages))

;; make sure to have downloaded archive description.
;; Or use package-archive-contents as suggested by Nicolas Dudebout
(or (file-exists-p package-user-dir)
    (package-refresh-contents))

(ensure-package-installed 'iedit 'magit) ;  --> (nil nil) if iedit and magit are already installed

;; activate installed packages
(package-initialize)