(setq jwall:package-list '( company go-mode go-eldoc go-rename rust-mode racer flycheck-rust company-go clojure-mode clojure-test-mode color-theme csharp-mode ess evil flycheck flymake highlight-80+ js2-mode json jtags log4j-mode magit monky melpa multi-web-mode omnisharp paredit scad-mode slime slime-repl swank-clojure tex-math-preview yaml-mode org-bullets )) (condition-case nil (progn (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) (package-initialize) (package-refresh-contents)) (error nil)) (defun jwall:clear-install-log () (save-excursion (set-buffer (get-buffer-create "*MY-INSTALLS*")) (erase-buffer))) (defmacro jwall:log-install (fmt &rest args) `(save-excursion (set-buffer (get-buffer-create "*MY-INSTALLS*")) (let ((msg (cond ((or (null ',args) (<= (safe-length ',args) 0)) ,fmt) (t (format ,fmt ,@args))))) (insert msg) (insert "\n") (when (called-interactively-p) (message msg))))) (defun jwall:elpa-installed-list () (interactive) (when (called-interactively-p) (message (format "package list: %s" package-alist))) package-alist) (defun jwall:elpa-installed-p (p) (interactive "Spackage-name: ") (when (called-interactively-p) (message (format "package %s install status: %s" p (or (assq p package-alist) nil)))) (or (assq p package-alist) nil)) (defun jwall:maybe-install-package (p) (interactive "Spackage-name: ") (cond ((jwall:elpa-installed-p p) (jwall:log-install "package %s already installed" p)) (t (progn (jwall:log-install "package %s installing" p) (condition-case nil (package-install p) (error nil)) (jwall:log-install "package %s installed: %s" p (jwall:elpa-installed-p p)))))) (defun jwall:install-package-list (p-lst) "Install a list of packages using ELPA." (dolist (pkg p-lst) (condition-case nil (jwall:maybe-install-package pkg) (error nil)))) (defun jwall:install-all-packages () "Install all of my standard ELPA packages in a new setup." (interactive) (jwall:clear-install-log) (jwall:log-install "Building world...") (jwall:install-package-list jwall:package-list) (jwall:log-install "Finished Build")) (jwall:install-all-packages)