39 lines
1.5 KiB
EmacsLisp
39 lines
1.5 KiB
EmacsLisp
(require 'package)
|
|
|
|
;; Repositories
|
|
;; ================
|
|
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
|
|
(not (gnutls-available-p))))
|
|
(proto (if no-ssl "http" "https")))
|
|
;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired
|
|
(add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t)
|
|
;;(add-to-list 'package-archives (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t)
|
|
(when (< emacs-major-version 24)
|
|
;; For important compatibility libraries like cl-lib
|
|
(add-to-list 'package-archives '("gnu" . (concat proto "://elpa.gnu.org/packages/")))))
|
|
;; =================
|
|
|
|
;;; Find packages if not installed
|
|
|
|
;; =================
|
|
;;; On-demand installation of packages
|
|
(defun require-package (package &optional min-version no-refresh)
|
|
"Install given PACKAGE, optionally requiring MIN-VERSION.
|
|
If NO-REFRESH is non-nil, the available package lists will not be
|
|
re-downloaded in order to locate PACKAGE."
|
|
(if (package-installed-p package min-version)
|
|
t
|
|
(if (or (assoc package package-archive-contents) no-refresh)
|
|
(if (boundp 'package-selected-packages)
|
|
;; Record this as a package the user installed explicitly
|
|
(package-install package nil)
|
|
(package-install package))
|
|
(progn
|
|
(package-refresh-contents)
|
|
(require-package package min-version t)))))
|
|
;; =================
|
|
|
|
(package-initialize)
|
|
|
|
(provide 'init-elpa)
|