diff --git a/README.md b/README.md
index c8cf38d..e061436 100644
--- a/README.md
+++ b/README.md
@@ -90,13 +90,15 @@ You'd do well to replace `~/.emacs.d` with the value of
## Updating Prelude
+### Manual update
+
The update procedure is fairly straightforward and consists of 3 steps:
-### Update all bundled packages
+#### Update all bundled packages
-Just run M-x package-list-packages RET U x. Unfortunately this step cannot be automated.
+Just run M-x package-list-packages RET U x.
-### Update Prelude's code
+#### Update Prelude's code
```bash
cd path/to/prelude/installation
@@ -106,14 +108,16 @@ git pull
The `path/to/prelude/installation` is usually `~/.emacs.d` (at least
on Unix systems).
-Alternatively you can run M-x prelude-update from Emacs itself.
-
-### Restart Prelude
+#### Restart Prelude
It's generally a good idea to stop Emacs after you do the update. The
next time Prelude starts it will install any new dependencies (if
there are such).
+### Automatic update
+
+Simply run M-x prelude-update from Emacs itself and restart Emacs afterwards.
+
## Enabling additional modules
By default most of the modules that ship with Prelude are not loaded. For more information on the functionality provided by these modules visit the [docs](modules/doc/README.md).
@@ -428,16 +432,17 @@ If you're not fond of spellchecking on the fly:
### Updating bundled packages
-Currently there is no Emacs Lisp API for updating packages, so you'll
-have to update manually the packages that came with Prelude from time
-to time.
+Generally it's a good idea to do a package update before running
+updating Prelude, since the latest Prelude code might depend on newer
+versions of the bundled packages than you would currently have
+installed.
+
+If you're doing manual Prelude updates you should always do a package update first.
`M-x package-list-packages RET U x`
-Generally it's a good idea to do a package update before running
-`prelude-update`, since the latest Prelude code might depend on newer
-versions of the bundled packages than you would currently have
-installed.
+That's not necessary if you're using `M-x prelude-update`, since it
+will automatically update the installed packages.
### Problems with flyspell-mode
diff --git a/core/prelude-core.el b/core/prelude-core.el
index cce55f2..e58cded 100644
--- a/core/prelude-core.el
+++ b/core/prelude-core.el
@@ -450,10 +450,14 @@ Doesn't mess with special buffers."
(exchange-point-and-mark)
(deactivate-mark nil))
+(require 'epl)
+
(defun prelude-update ()
"Update Prelude to its latest version."
(interactive)
(when (y-or-n-p "Do you want to update Prelude? ")
+ (message "Updating installed packages...")
+ (epl-upgrade)
(message "Updating Prelude...")
(cd prelude-dir)
(shell-command "git pull")
diff --git a/core/prelude-packages.el b/core/prelude-packages.el
index be853dd..82499a4 100644
--- a/core/prelude-packages.el
+++ b/core/prelude-packages.el
@@ -42,7 +42,7 @@
(defvar prelude-packages
'(ace-jump-mode ack-and-a-half anzu dash diminish elisp-slime-nav
- expand-region flx-ido flycheck gist
+ epl expand-region flx-ido flycheck gist
git-commit-mode gitconfig-mode gitignore-mode grizzl
guru-mode helm helm-projectile ido-ubiquitous
key-chord magit move-text rainbow-mode