dotfiles/.emacs.d/conf.d/001-packages.el

105 lines
3.4 KiB
EmacsLisp

(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)