

Emacs packages for programmers - nic-ferrier
http://nic.ferrier.me.uk/blog/2012_07/emacs-packages-for-programmers

======
zrail
I recently refactored my Emacs config[1] to use el-get[2], which lets you
install from the official package list from random git repos, and even from
the emacs wiki if you're so inclined. My config is quite a bit simpler and
easier to back on than it was before.

[1]: <https://github.com/peterkeen/dotfiles> [2]:
<https://github.com/dimitri/el-get>

~~~
mechanical_fish
I had el-get installing stuff from emacs wiki until someone pointed out that
it's completely insecure. Anyone who edits the wiki can inject arbitrary
commands on your machine.

The only safe way to use emacs wiki code is to audit it first, and el-get
can't do that for you.

~~~
zrail
Wow, that's a good point. I'm going to pull the stuff I use directly into my
dotfiles repo.

~~~
nic-ferrier
Again, that's why we want to add signatures to packages. This is probably
always going to be a two tier system though (some people are likely to not add
a signature). There are other possible security systems as well, like MELPA
could use github and say "yes, this package is authorative from there".

------
tikhonj
Automatic package management is great. Now I just have to sit down and convert
all the (quite numerous) extensions I've installed to using the package
manager though :P.

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 :).

~~~
Derbasti
I have set up my Emacs so that it will automatically download and install all
my favourite plugins if they are not installed yet.

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!

~~~
chilie
Would you mind sharing your .emacs so we can see how you have that set up?

~~~
mahcuz
The way people typically do this is by VCing their configurations in a
"dotfiles" repository. New machine? Pull your dotfiles, and create the
symlinks in your homedir.

~~~
chilie
I currently do this with my entire .emacs.d directory, but it sounds like
Derbasti only pulls his .emacs, and then has code to check for installed
packages and get any that are missing.

~~~
tcas
It's pretty easy using package. Here's what I just copied and pasted from my
init.el

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

~~~
nic-ferrier
this is really neat. what would be cool is to keep the package list up to date
automatically (possibly by advising package installation -
[https://github.com/nicferrier/emacs-package-
store/blob/maste...](https://github.com/nicferrier/emacs-package-
store/blob/master/package-store.el)).

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.

------
FrojoS
Very interesting but I was expecting something else when I read the title. I
was hoping there will be packages that are useful for programers. For
instance, I'd love to see a good C# package. I tried to install a emacs-lisp
script manually (csharp-mode-0.8.5.el) but failed since I am a total emacs
rookie.

~~~
nic-ferrier
You're right. I have renamed the article "Packages for Emacs Programmers"

------
dfc
Is there any advantage to MELPA? Why publish to MELPA instead of marmalade or
elpa proper?

~~~
barik
I've often wondered the same. You basically end up having to have all three in
your init.el file, since there doesn't appear to be a good rhyme or reason are
to which packages are contained in which repositories.

~~~
nic-ferrier
As I've said elsewhere, we will sort this out in the end. Right now MELPA
tends to be the latest and greatest and marmalade is more stable (read 'less
exciting') releases. It would be good to have this recognized per-package
though so hopefully we will merge the strategies of both repositories into a
single repository that can do any one of those things for any package
configuration.

