Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 5102bc5

Browse files
committed
Stop recommending the use of package.el.
1 parent 07e2235 commit 5102bc5

File tree

1 file changed

+29
-23
lines changed

1 file changed

+29
-23
lines changed

README.markdown

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ look to fix it.
1616

1717
I've since come to realize users are better suited by small, focused
1818
packages which provide specific pieces of new functionality. So rather
19-
than putting up in a big pile of code, the Starter Kit has shifted to
19+
than putting up a big pile of code, the Starter Kit has shifted to
2020
become merely a guide. As an Emacs user, you're going to have to get
2121
comfortable seeking out new pieces of elisp, bringing them in,
2222
configuring them, and eventually writing your own. The Starter Kit can
@@ -26,46 +26,52 @@ personal journey for which you must take the first steps.
2626

2727
## Getting Started
2828

29-
If you do nothing else, start by adding
30-
[Marmalade](https://marmalade-repo.org/) to your packages list and
31-
installing the
32-
[better-defaults package](https://github.com/technomancy/better-defaults).
33-
Place this in your `~/.emacs.d/init.el` file:
29+
I strongly recommend keeping your dotfiles under version control and
30+
installing Emacs packages inside it using [git subtree](https://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/).
31+
32+
This avoids many [common](https://glyph.twistedmatrix.com/2015/11/editor-malware.html)
33+
[problems](https://github.com/melpa/melpa/issues/2342) with
34+
`package.el`, and it allows you to seamlessly roll back upgrades which
35+
introduce breaking changes as well as guaranteeing that all machines you
36+
work on share the same versions.
3437

3538
```lisp
36-
(require 'package)
37-
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
39+
(defun pnh-reinit-libs ()
40+
(interactive)
41+
(let ((generated-autoload-file (concat user-emacs-directory "my-autoload.el")))
42+
(dolist (d (directory-files (concat user-emacs-directory "lib") t "^[^\.]"))
43+
(dolist (f (directory-files d t "\\.el$"))
44+
(byte-compile-file f))
45+
(update-directory-autoloads d))))
46+
47+
(dolist (l (directory-files (concat user-emacs-directory "lib") nil "^[^\.]"))
48+
(add-to-list 'load-path (concat user-emacs-directory "lib/" l))
49+
(autoload (intern l) (concat l ".el")))
50+
51+
(when (not (file-exists-p (concat user-emacs-directory "my-autoload.el")))
52+
(pnh-reinit-libs))
53+
54+
(load (concat user-emacs-directory "my-autoload.el")))
3855
```
3956

40-
Evaluate it with `M-x eval-buffer` and run `M-x package-install [RET] better-defaults`.
41-
4257
### If you liked ... you might also like
4358

4459
These are all libraries that focus on doing one thing and do it consistently well.
4560

61+
* [better-defaults](https://github.com/technomancy/better-defaults) fix bad built-in behavior.
4662
* [magit](https://magit.vc) use git without being driven insane.
4763
* [smex](https://github.com/nonsequitur/smex) for getting ido-style feedback in M-x.
4864
* [ido-ubiquitous](https://github.com/DarwinAwardWinner/ido-ubiquitous) for geting ido goodness everywhere else.
4965
* [paredit](http://www.emacswiki.org/emacs/ParEdit) keeps parentheses under control.
5066
* [idle-highlight-mode](https://github.com/nonsequitur/idle-highlight-mode) for seeing everywhere else an identifier is used at a glance.
5167
* [find-file-in-project](https://github.com/technomancy/find-file-in-project) quick project-scoped navigation
5268
* [scpaste](http://p.hagelb.org) the pastebin of champions.
53-
54-
You can drop some code into `init.el` to install these automatically when they are missing:
55-
56-
```lisp
57-
(defvar my-packages '(better-defaults paredit idle-highlight-mode ido-ubiquitous
58-
find-file-in-project magit smex scpaste))
59-
60-
(package-initialize)
61-
(dolist (p my-packages)
62-
(when (not (package-installed-p p))
63-
(package-install p)))
64-
```
69+
* [elisp-slime-nav](https://github.com/purcell/elisp-slime-nav) nicer navigation for emacs lisp code.
70+
* [exwm](https://github.com/ch11ng/exwm) a tiling window manager for X.
6571

6672
## Copyright
6773

68-
Copyright © 2008-2014 Phil Hagelberg and contributors
74+
Copyright © 2008-2017 Phil Hagelberg and contributors
6975

7076
Files are licensed under the same license as Emacs unless otherwise
7177
specified. See the file COPYING for details.

0 commit comments

Comments
 (0)