|
32 | 32 | ;; Boston, MA 02110-1301, USA.
|
33 | 33 |
|
34 | 34 | ;;; Code:
|
| 35 | +(require 'cl-lib) |
35 | 36 | (require 'package)
|
36 | 37 | (add-to-list 'package-archives
|
37 | 38 | '("melpa" . "http://melpa.milkbox.net/packages/") t)
|
|
40 | 41 | (package-initialize)
|
41 | 42 |
|
42 | 43 | (defvar prelude-packages
|
43 |
| - '(ace-jump-mode ack-and-a-half diminish elisp-slime-nav |
| 44 | + '(ace-jump-mode ack-and-a-half dash diminish elisp-slime-nav |
44 | 45 | expand-region flycheck gist
|
45 | 46 | git-commit-mode gitconfig-mode gitignore-mode
|
46 | 47 | guru-mode helm helm-projectile
|
|
50 | 51 | "A list of packages to ensure are installed at launch.")
|
51 | 52 |
|
52 | 53 | (defun prelude-packages-installed-p ()
|
53 |
| - (-all? #'package-installed-p prelude-packages)) |
| 54 | + "Check if all packages in `prelude-packages' are installed." |
| 55 | + (cl-every #'package-installed-p prelude-packages)) |
54 | 56 |
|
55 | 57 | (defun prelude-install-packages ()
|
| 58 | + "Install all packages listed in `prelude-packages'." |
56 | 59 | (unless (prelude-packages-installed-p)
|
57 | 60 | ;; check for new packages (package versions)
|
58 | 61 | (message "%s" "Emacs Prelude is now refreshing its package database...")
|
59 | 62 | (package-refresh-contents)
|
60 | 63 | (message "%s" " done.")
|
61 | 64 | ;; install the missing packages
|
62 |
| - (-each |
63 |
| - (-reject #'package-installed-p prelude-packages) |
64 |
| - #'package-install))) |
| 65 | + (mapc #'package-install |
| 66 | + (cl-remove-if #'package-installed-p prelude-packages)))) |
65 | 67 |
|
66 | 68 | (prelude-install-packages)
|
67 | 69 |
|
68 | 70 | (defmacro prelude-auto-install (extension package mode)
|
| 71 | + "When file with EXTENSION is opened triggers auto-install of PACKAGE. |
| 72 | +PACKAGE is installed only if not already present. The file is opened in MODE." |
69 | 73 | `(add-to-list 'auto-mode-alist
|
70 | 74 | `(,extension . (lambda ()
|
71 | 75 | (unless (package-installed-p ',package)
|
|
99 | 103 | (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
|
100 | 104 | (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)))
|
101 | 105 |
|
102 |
| -(-each prelude-auto-install-alist |
103 |
| - (lambda (entry) |
104 |
| - (let ((extension (car entry)) |
105 |
| - (package (cadr entry)) |
106 |
| - (mode (cadr (cdr entry)))) |
107 |
| - (unless (package-installed-p package) |
108 |
| - (prelude-auto-install extension package mode))))) |
| 106 | +;; build auto-install mappings |
| 107 | +(mapc |
| 108 | + (lambda (entry) |
| 109 | + (let ((extension (car entry)) |
| 110 | + (package (cadr entry)) |
| 111 | + (mode (cadr (cdr entry)))) |
| 112 | + (unless (package-installed-p package) |
| 113 | + (prelude-auto-install extension package mode)))) |
| 114 | + prelude-auto-install-alist) |
109 | 115 |
|
110 | 116 | (defun prelude-ensure-module-deps (packages)
|
111 |
| - (-each (-remove #'package-installed-p packages) #'package-install)) |
| 117 | + "Ensure PACKAGES are installed. |
| 118 | +Missing packages are installed automatically." |
| 119 | + (mapc #'package-install (cl-remove-if #'package-installed-p packages))) |
112 | 120 |
|
113 | 121 | (provide 'prelude-packages)
|
114 | 122 | ;;; prelude-packages.el ends here
|
0 commit comments