Created
October 3, 2012 08:38
-
-
Save danielsz/3825823 to your computer and use it in GitHub Desktop.
Towards a declarative dependency management solution for emacs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; canonical list | |
(defvar my-packages | |
'(ack haskell-mode ruby-mode coffee-mode deft expand-region | |
gist inf-ruby magit yaml-mode) | |
"Canonical list of packages.") | |
(el-get-cleanup my-packages) | |
(el-get 'sync my-packages) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require 'cl) | |
(defvar my-packages | |
'(ack haskell-mode ruby-mode coffee-mode deft expand-region | |
gist inf-ruby magit yaml-mode) | |
"Canonical list of packages.") | |
(defun my-packages-installed-p () | |
(every 'package-installed-p my-packages)) | |
(unless (my-packages-installed-p) | |
(message "%s" "Emacs is now refreshing its package database...") | |
(package-refresh-contents) | |
(message "%s" " done.") | |
;; install the missing packages | |
(loop for p in my-packages | |
unless (package-installed-p p) | |
do (package-install p))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun el-get-cleanup (packages) | |
"Remove packages not explicitly declared" | |
(let* ((packages-to-keep (el-get-dependencies (mapcar 'el-get-as-symbol packages))) | |
(packages-to-remove (set-difference (mapcar 'el-get-as-symbol | |
(el-get-list-package-names-with-status | |
"installed")) packages-to-keep))) | |
(mapc 'el-get-remove packages-to-remove))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* | |
!init.el | |
!.gitignore |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; So the idea is that you copy/paste this code into your *scratch* buffer, | |
;; hit C-j, and you have a working developper edition of el-get. | |
(url-retrieve | |
"https://raw.github.com/dimitri/el-get/master/el-get-install.el" | |
(lambda (s) | |
(let (el-get-master-branch) | |
(goto-char (point-max)) | |
(eval-print-last-sexp)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment