1 #+OPTIONS: creator:nil author:nil toc:nil inline-images:t H:4 todo:nil
2 #+TITLE: README for elinstall
9 There are other package installers and there is "autoload.el", bundled
10 with emacs. Why use elinstall? Because:
12 * It works with my-site-start (which I highly recommend)
14 * It supports slash-style paths, like
15 : (require 'emtest/testhelp/tagnames)
17 * Unlike autoload.el, it can also set up load-path and
18 Info-default-directory-list (that's like load-path for info files)
20 * Unlike some other installers, it works with canonical
21 loaddefs.el-style autoload files.
23 * Unlike other installers, what you install doesn't have to be
24 pre-packaged, and there are no restrictions on what means you can
25 use to get the elisp files - elinstall doesn't care, it obeys the
26 motto "do one thing well".
28 But it also works well for packages.
30 * Because internally it works in articulated stages, it's easier to
31 hack and extend than autoload.el
37 * To install a single file (Unsupported yet)
41 * To install a directory (Unsupported yet)
45 * To install a directory tree (Unsupported yet)
48 * For general, flexible install (Unsupported yet)
52 *** For package maintainers
54 Write a call like this:
56 #+BEGIN_src emacs-lisp
59 (elinstall-directory-true-name)
60 '(def-file "project-buffer-loaddefs.el"
64 (dir "extensions/"))))
67 It can actually be executed every time, because elinstall checks for
68 already-installed packages.
70 CAUTION: `elinstall-directory-true-name' is sensitive to where it's
71 called. That's the point of it
73 ** How it works internally
75 It works in stages. For the autoload functionality, I basically
76 pulled apart autoload.el and rearranged it into clean stages.
78 1. Figure out what actions to do.
80 2. Segregate the actions by target (eg "loaddefs.el")
82 3. Do the actions for each target
84 * Create any autoloads (cleaning up old ones)
86 * Arrange for load-path to contain appropriate directories.
88 * Symlink loaddefs files into a site-start.d directory
92 * Kill any buffers we made
98 * Making the other entry points more interactive
99 * Implementing the other SPEC forms