How to automatically install Emacs packages by specifying a list of package names?

后端 未结 11 2612
隐瞒了意图╮
隐瞒了意图╮ 2020-12-22 15:22

I am using package to manage my Emacs extensions. In order to synchronize my Emacs settings on different computers, I\'d like a way to specify a list of package

11条回答
  •  失恋的感觉
    2020-12-22 15:43

    Here's the code I use for Emacs Prelude:

    (require 'package)
    (require 'melpa)
    (add-to-list 'package-archives
                 '("melpa" . "http://melpa.milkbox.net/packages/") t)
    (package-initialize)
    
    (setq url-http-attempt-keepalives nil)
    
    (defvar prelude-packages
      '(ack-and-a-half auctex clojure-mode coffee-mode deft expand-region
                       gist haml-mode haskell-mode helm helm-projectile inf-ruby
                       magit magithub markdown-mode paredit projectile
                       python sass-mode rainbow-mode scss-mode solarized-theme
                       volatile-highlights yaml-mode yari yasnippet zenburn-theme)
      "A list of packages to ensure are installed at launch.")
    
    (defun prelude-packages-installed-p ()
      (loop for p in prelude-packages
            when (not (package-installed-p p)) do (return nil)
            finally (return t)))
    
    (unless (prelude-packages-installed-p)
      ;; check for new packages (package versions)
      (message "%s" "Emacs Prelude is now refreshing its package database...")
      (package-refresh-contents)
      (message "%s" " done.")
      ;; install the missing packages
      (dolist (p prelude-packages)
        (when (not (package-installed-p p))
          (package-install p))))
    
    (provide 'prelude-packages)
    

    If you're not using MELPA you don't need to require it (and if you do melpa.el has got to be on your load-path (or installed via MELPA). The package db is not refreshed each time (as this would slow down the startup significantly) - only where there are uninstalled packages present.

提交回复
热议问题