<h1>Getting started</h1>
<section>
      <a name="installing"></a>
      <h2>Installing</h2>

      <p>To use the MELPA repository, you'll need an Emacs with
        <code>package.el</code>. Emacs 24 has <code>package.el</code>
        bundled with it, and there's also
        a <a href="http://repo.or.cz/w/emacs.git/blob_plain/ba08b24186711eaeb3748f3d1f23e2c2d9ed0d09:/lisp/emacs-lisp/package.el">version
        you can use with Emacs 23</a>.
      </p>

      <p>
        Enable installation of packages from MELPA by adding an entry
        to <code>package-archives</code> after <code>(require
        'package)</code> and before the call
        to <code>package-initialize</code> in
        your <code>init.el</code> or <code>.emacs</code> file:
      </p>

      <pre><code>(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line</code></pre>

      <p>
        or to add the stable package repository, use this instead
        of <code>"melpa"</code>:
      </p>

      <pre><code>(add-to-list 'package-archives
             '("melpa-stable" . "http://stable.melpa.org/packages/") t)</code></pre>

      <h3>Customizations</h3>
      <p>
        What if you only want some of your packages to be installed
        from MELPA, and the rest from Marmalade or elsewhere?
      </p>
      <p>
        Only in the very latest Emacs snapshots is there a way to
        exclude or include versions according to their source
        (see <code>package-pinned-packages</code>). For all other
        users, we provide a <code>package-filter.el</code> package (available
        in MELPA) that will allow you to enable only certain packages
        or exclude certain packages.
        You can install the package
        manually by pasting this into your <code>*scratch*</code>
        buffer and evaluating it.
      </p>
      <pre><code>(progn
  (switch-to-buffer
    (url-retrieve-synchronously
      "https://raw.github.com/milkypostman/package-filter/master/package-filter.el"))
  (package-install-from-buffer  (package-buffer-info) 'single))</code></pre>

      <p>You can then customize two variables:</p>
      <dl>
        <dt><code>package-archive-enable-alist</code></dt>
        <dd>
          <p>
            Optional Alist of enabled packages used
            by <code>package-filter</code>. The format
            is <code>(ARCHIVE . PACKAGE ...)</code>,
            where <code>ARCHIVE</code> is a string matching an archive
            name in<code>package-archives</code>, <code>PACKAGE</code>
            is a symbol of a package in <code>ARCHIVE</code> to
            enable.
          </p>
          <p>
            If no <code>ARCHIVE</code> exists in the alist, all
            packages are enabled.
          </p>
        </dd>
        <dt><code>package-archive-exclude-alist</code></dt>
        <dd>
          <p>
            Alist of packages excluded by <code> package-filter
            </code>. The format is <code>(ARCHIVE . PACKAGE
            ...)</code>, where <code>ARCHIVE</code> is a string
            matching an archive name
            in</code>package-archives</code>, <code>PACKAGE</code> is
            a symbol of a package in that archive to exclude.</p>
          <p>
            Any specified package is excluded regardless of the value
            of <code>package-archive-enable-alist</code>
          </p>
        </dd>
      </dl>
    </section>
    <section>
      <a name="known-issues"></a>
      <h2>Known Issues</h2>
      <p>
        <strong>Note:</strong> <em>These fixes are included in
        the <code>package-filter.el</code> package.</em>
      </p>
      <p>
        There is a small bug in Emacs24’s <code>package.el</code> such
        that the dependency order comes out backwards. The problem is
        patched by some <em>advice</em>.
      </p>

      <pre><code> (defadvice package-compute-transaction
  (before package-compute-transaction-reverse (package-list requirements) activate compile)
    "reverse the requirements"
    (setq requirements (reverse requirements))
    (print requirements))</code></pre>
    </section>
    <section>
      <a name="updating"></a>
      <h2>Updating Packages</h2>
      <p>
        <code>package.el</code> now includes a mechanism to upgrade
        packages. After running <code>package-list-packages</code>,
        type <em>U</em> (mark Upgradable packages) and then <em>x</em>
        (eXecute the installs and deletions). When it’s done
        installing all the packages it will ask if you want to delete
        the obsolete packages and so you can hit <em>y</em> (Yes).
      </p>
      <p>
        If you run into a problem installing or upgrading, you may
        need to go into your <code>~/.emacs.d/elpa/</code> directory
        and delete packages that are installed multiple times. This
        can happen when the install times out.
      </p>
      <a name="development"></a>
      <h2>Development</h2>
      <p><a href="https://github.com/milkypostman/melpa">https://github.com/milkypostman/melpa</a></p>
      <p>
        Contributions are welcome. Currently, the builder supports
        packages using git, subversion, mercurial, bzr, cvs, darcs, fossil and
        emacswiki.
      </p>
    </section>