Emacs packages for programmers
nic.ferrier.me.uk
nic.ferrier.me.uk
[1]: https://github.com/peterkeen/dotfiles [2]: https://github.com/dimitri/el-get
1) it's standard emacs
2) although it doesn't have yet it will be able to support digital signatures for packages (as well as other security mechanisms)
As a developer of Emacs packages (it seems to be the only code I've written this year, outside of work) I am sticking with package.
I don't know how much the tips here might be relevant to el-get, I think not very.
The only safe way to use emacs wiki code is to audit it first, and el-get can't do that for you.
And now people realize why I'm a luddite and just keep all my dependencies rolled into my dotfiles repo directly and have done so for years.
A robust process for auditing packages is going to be hard to establish. In practice most developers seem to be happy to install any and all updates as long as they're reasonably sure they came from the original author. By using verified upstream source repositories both el-get and MELPA ensure this is the case, as long as one steers clear of libraries originating from the EmacsWiki.
Emacs is no different.
Apt, Yum, etc., require trust in the repository infrastructure and those select few with write access to a given repository. Emacs Wiki requires trust in the entire internet.
This should help with keeping everything updated and going from computer to computer. My current system just has everything in a private git repository, but this isn't really ideal.
I should also probably submit the one major mode I've written. However, it's specific to a particular course taught by one professor, so nobody is going to be needing it for at least one semester :).
So to set up a new machine, I simply copy my .emacs over and start Emacs. Emacs will then fetch and install all my plugins automatically. Quite handy!
(require 'package)
(dolist (source '(("technomancy" . "http://repo.technomancy.us/emacs/)
("elpa" . "http://tromey.com/elpa/)))
(add-to-list 'package-archives source t))
(package-initialize)
(defvar my-packages '(starter-kit zenburn-theme auctex color-theme-solarized csharp-mode ecb_snap find-file-in-project flymake-css flymake-php idle-highlight ido-ubiquitous ipython python-mode magit markdown-mode paredit pastels-on-dark-theme php-mode rainbow-mode smex solarized-theme starter-kit-js zenburn-theme)
"A list of packages to ensure are installed at launch.")
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-install p)))
Where you add the package name to my-packages. It's kinda cool to see it download and compile everything on a new install.Then everytime you installed a package it would get written into the list and everytime you moved your init it would all happen automatically.
That would be cool. And not hard to do either. You could just keep a customization variable of the "base packages" or something and have it saved by the standard custom stuff.